var imageArray;
slideShowArray = new Array();
var timeoutID;
var currentImage = 0;
var slideShowOn = false;
var startIndex = 0;
var initialized = false;

function initialiseImageViewer(resultIndex,mainImageUrl){
    if(!initialized){
    	slideShowArray = new Array();
		currentImage = 0;
		slideShowOn = false;
		startIndex = resultIndex ;
	    initialized = true;
    }
    
    	slideShowObj = new Object();
	    slideShowObj.mainImage = document.images['mainImage_'+resultIndex];
	    slideShowObj.id = resultIndex;
	    slideShowObj.imageArray = new Array();
	    slideShowObj.imageArray.push(mainImageUrl);    
	    
	    slideShowObj.mainImage.src=mainImageUrl;    
	    slideShowArray.push(slideShowObj);
}

function addToImageArray(resultIndex,imageUrl){
  if(slideShowArray[resultIndex-startIndex].imageArray == null || slideShowArray[resultIndex-startIndex].imageArray == 'undefined' || slideShowArray[resultIndex-startIndex].imageArray == ''){
  	slideShowArray[resultIndex-startIndex].imageArray = new Array();  	
  }
  slideShowArray[resultIndex-startIndex].imageArray.push(imageUrl);  
}

function initializeNavigation(resultIndex){
	document.getElementById('previousImage_'+resultIndex).style.display = 'none';
	if(slideShowArray[resultIndex-startIndex].imageArray.length == 2){
        	document.getElementById('image3Link_'+resultIndex).style.display = 'none';
    }else if(slideShowArray[resultIndex-startIndex].imageArray.length == 1){
		    document.getElementById('previousImage_'+resultIndex).style.display = 'none';
	        document.getElementById('image3Link_'+resultIndex).style.display = 'none';
			document.getElementById('image2Link_'+resultIndex).style.display = 'none';
			document.getElementById('image1Link_'+resultIndex).style.display = 'none';
			document.getElementById('nextImage_'+resultIndex).style.display = 'none';
	}
		
    document.getElementById('image1Link_'+resultIndex).style.fontWeight = 'bolder';
}

function runSlideShow(resultIndex){
    currentImage = -1;
    slideit(resultIndex);
}

function slideit(resultIndex){
  if (currentImage<slideShowArray[resultIndex-startIndex].imageArray.length - 1){
      currentImage++;
  } else{
      slideShowOn = false;      
      return;   
  }
  slideShowArray[resultIndex-startIndex].mainImage.src=slideShowArray[resultIndex-startIndex].imageArray[currentImage];
  slideShowOn = true;
  
  //call function "slideit()" every 3 seconds
  timeoutID = setTimeout("slideit("+resultIndex+")",3000 );
}

function changeImage(index,resultIndex)
{
	stopSlideShow();
  slideShowArray[resultIndex-startIndex].mainImage.src = slideShowArray[resultIndex-startIndex].imageArray[index - 1];
  currentImage = index - 1;
  updateImageViewerControls(resultIndex);
}

function goToPrevious(resultIndex){

	stopSlideShow();
	if(!currentImage - 1 < 0){
		slideShowArray[resultIndex-startIndex].mainImage.src = slideShowArray[resultIndex-startIndex].imageArray[--currentImage];
		updateImageViewerControls(resultIndex);		
	}
}

function goToNext(resultIndex){
	stopSlideShow();
	if(!(currentImage + 1 == slideShowArray[resultIndex-startIndex].imageArray.length)){
		slideShowArray[resultIndex-startIndex].mainImage.src = slideShowArray[resultIndex-startIndex].imageArray[++currentImage];
		updateImageViewerControls(resultIndex);
	}
  
}

function updateImageViewerControls(resultIndex){
	
  var link1 = document.getElementById('image1Link_'+resultIndex);
  var link2 = document.getElementById('image2Link_'+resultIndex);
  var link3 = document.getElementById('image3Link_'+resultIndex);  
  
  //Handle case if two images are just available for the viewer
  if(slideShowArray[resultIndex-startIndex].imageArray.length == 2){
    if(currentImage == 0){
        link1.style.fontWeight = 'bolder';
        link2.style.fontWeight = 'normal'; 
         document.getElementById('previousImage_'+resultIndex).style.display = 'none';
         document.getElementById('nextImage_'+resultIndex).style.display = 'inline';      
    }
    if(currentImage == 1){
        link1.style.fontWeight = 'normal';
        link2.style.fontWeight = 'bolder';
        document.getElementById('previousImage_'+resultIndex).style.display = 'inline';
        document.getElementById('nextImage_'+resultIndex).style.display = 'none';      
    }
    return;
  }
  
  
  //The following set of if..else statements renders the back and next controls on the image viewer
  //when necessary, e.g.- Next does not need rendering when you are at the last image in the gallery
  if(currentImage <= 0){
        document.getElementById('previousImage_'+resultIndex).style.display = 'none';
        link1.style.fontWeight = 'bolder';
        link2.style.fontWeight = 'normal';
        link3.style.fontWeight = 'normal';
        
    }
    else{
        document.getElementById('previousImage_'+resultIndex).style.display = 'inline';
    }
    if(currentImage >= slideShowArray[resultIndex-startIndex].imageArray.length - 1){
        document.getElementById('nextImage_'+resultIndex).style.display = 'none';  
        link1.style.fontWeight = 'normal';
        link2.style.fontWeight = 'normal';        
        link3.style.fontWeight = 'bolder';
        
    }
    else{
        document.getElementById('nextImage_'+resultIndex).style.display = 'inline';   
    }
    
    //Highlight the currently selected image number in red
    
    
    //The following code updates the image numbers used for image navigation relative to the image being viewed.
    //For example if viewing image 4 then a link image number 3 will be to the left and a link for image number 4
    //will be to the right.
    var centreImageNumber = currentImage + 1;
	var leftImageNumber = centreImageNumber - 1;
	var rightImageNumber = centreImageNumber + 1;
	
	if(leftImageNumber > 0 && rightImageNumber <= slideShowArray[resultIndex-startIndex].imageArray.length)
	{
		var link1 = document.getElementById('image1Link_'+resultIndex);
		var link2 = document.getElementById('image2Link_'+resultIndex);
		var link3 = document.getElementById('image3Link_'+resultIndex);

		link1.innerHTML = leftImageNumber;
		link2.innerHTML = centreImageNumber;
		link3.innerHTML = rightImageNumber;
		
		link1.href = 'javascript:changeImage(' + leftImageNumber +','+resultIndex+')';
		link2.href = 'javascript:changeImage(' + centreImageNumber +','+resultIndex+ ')';
		link3.href = 'javascript:changeImage(' + rightImageNumber +','+resultIndex+ ')';
    
        link1.style.fontWeight = 'normal';
        link2.style.fontWeight = 'bolder';
        link3.style.fontWeight = 'normal';         
	}
}

function stopSlideShow(){
	if(slideShowOn){
		slideShowOn = false;
		clearTimeout(timeoutID);
		currentImage = 0;		
	}
}
