﻿// JScript File
var zoomThumb;
var zoomThumbContainer;
var preloadTimer;
var navigationTimer;
var slideshowPreloadTimer;
var SlideShowNextTimer;

var spanPleaseWait;
var spanPleaseWaitThumbs;
var FromLabel
var ToLabel
var buttonNext
var buttonPrev
var spanGall;
var spanSlide;
var divPaused;
var divPlay;
var lbldesc;
var lbltitle;



		function initalize()
		{
		    zoomThumb = document.getElementById("zoomThumb");
			zoomThumbContainer = document.getElementById("thumbContainer");
			spanPleaseWait = document.getElementById("spanPleaseWait");
			spanPleaseWaitThumbs = document.getElementById("spanPleaseWaitThumbs");
			divPaused = document.getElementById("divPaused");
			divPlay = document.getElementById("divPlay");
			
			lbltitle = document.getElementById(title);
			lbldesc = document.getElementById(desc);
			
			FromLabel = document.getElementById(lblFrom); 
			ToLabel = document.getElementById(lblto); 
			
			buttonNext = document.getElementById(btnNext); 
            buttonPrev = document.getElementById(btnPrev); 
			
			spanGall = document.getElementById(ctrlGallery); 
			spanSlide = document.getElementById(ctrlSlideShow); 
		    attachEvents();
		    
		    if (isSlideShow())
		    {
		       initalizeSlideShow();
		    }
		    
		}	

		
		
		function initalizeSlideShow()
		{
		    clearTimeout(navigationTimer);
		    setSelected();
            var currentIndex = getCurrentIndex();

            ensureNextSlidesAreLoaded();
            ensureAllThumbsAreLoaded();
		    
		    if (AreNextSlidesAreLoaded() && AreAllThumbsLoaded() )
            {
            
                if (ispreloadMessageShownThumbs())
                {
                    hidepreloadMessageThumbs();
                }
                attachEvents();
                startSlideShow(true);
                
            }
            else
            {
                detachEvents();
                command = "initalizeSlideShow()";
                navigationTimer = setTimeout(command, 60);
                showpreloadMessageThumbs(getCurrentIndex());
		    }
		    
		}
		
		function startSlideShow(displayMessage)
		{
		    cleanUpTimers();
		
		    setSelected();
	        hidepauseMessage();
	        divPaused.style.visibility = 'hidden'
            showplayMessage(getCurrentIndex());
            
            SlideShowNextTimer = setTimeout("nextSlide()", getTimeOutValue());	
		}
		
		function getTimeOutValue()
        {
            speedDD = document.getElementById(ddSpeed);
            var returnVal;
            
            switch (parseInt(speedDD.selectedIndex))
            {
                case 0:
                    returnVal =  2000;
                    break;
                case 1:
                    returnVal =  5000;
                    break;                
                case 2:
                    returnVal =  9000;
                    break;  
            }
            return returnVal;
        }
		
		
		
		function nextSlide()
		{
		    currentMainImage = document.getElementById(mainimg[getCurrentIndex()]);
			currentMainImage.style.display = 'none';
		    currentMainImage.style.visibility = 'hidden';
		    
		    ensureNextSlidesAreLoaded();

		    
		    if (indexofThisImagePlus(1) == 0)
		    { 
		    
		        cleanUpTimers();
		    
		        detachEvents();
		        setCurrentIndex(0);
		        gotoPage(1, "backwards", false)
		        
		        currentMainImage = document.getElementById(mainimg[0]);
		        setText(0)
	            currentMainImage.style.visibility = 'visible'
	            currentMainImage.style.display = 'block';		        
		        
		        return null;
		    }
		    else if ((indexofThisImagePlus(1)) % PageSize == 0)
		    {
		    
		        cleanUpTimers();
		    
		        setCurrentIndex(indexofThisImagePlus(1));
		        gotoPage((getCurrentPageNumber() + 1), "forward", false)
		        
		        currentMainImage = document.getElementById(mainimg[getCurrentIndex()]);
		        setText(getCurrentIndex())
	            currentMainImage.style.visibility = 'visible'
	            currentMainImage.style.display = 'block';
		        
		        return null;
		    }
		    
		    
		    setCurrentIndex(indexofThisImagePlus(1));
		    setSelected();
		    ensureAllThumbsAreLoaded();

		    currentMainImage = document.getElementById(mainimg[getCurrentIndex()]);
		        
	        currentMainImage.style.visibility = 'visible'
	        currentMainImage.style.display = 'block';
	        
	        setText(getCurrentIndex())
	        document.getElementById(mainspan[getCurrentIndex()]).style.visibility = 'visible';
	        SlideShowNextTimer = setTimeout("nextSlide()", getTimeOutValue());

		}
		
		
		function pauseSlideShow()
		{
		cleanUpTimers();
		hideplayMessage();
		    if (isSlideShow())
		    {
	            hideplayMessage();
                showpauseMessage(getCurrentIndex());
                
                //clearTimeout(SlideShowNextTimer);
            }   
		}		
		
		function unpauseSlideShow()
		{
		
		cleanUpTimers();
		if (isSlideShow())
		    {
		        //detachEvents();
		        hidepauseMessage()
	            showplayMessage(getCurrentIndex())
                SlideShowNextTimer = setTimeout("nextSlide()", 650);	
                //SlideShowNextTimer = setTimeout("attachEvents()", 1000);	
            }
		}
		
		
		function showplayMessage(index)
		{
		    MainCoordinates = whereAmI(document.getElementById(mainimg[index]), true)
		    divPlay.style.left = (MainCoordinates[0] + 10) + "px"
		    divPlay.style.top = (MainCoordinates[1] + 10) + "px";
		    divPlay.style.visibility = 'visible'
		    setTimeout("divPlay.style.visibility = 'hidden'", 600);	
		    
		}
		
		function hideplayMessage()
		{
		    divPlay.style.visibility = 'hidden'
		}
		
		function showpauseMessage(index)
		{
		    MainCoordinates = whereAmI(document.getElementById(mainimg[index]), true)
		    divPaused.style.left = (MainCoordinates[0] + 10) + "px"
		    divPaused.style.top = (MainCoordinates[1] + 10) + "px";
		    divPaused.style.visibility = 'visible'
		    //setTimeout("divPlay.style.visibility = 'hidden'", 600);	
		    
		}	
		
		function hidepauseMessage()
		{
		    divPaused.style.visibility = 'hidden'
		}
		
		function ensureNextSlidesAreLoaded()
		{
		   var currentIndex = getCurrentIndex();
	        for (i = 0; i < 3; i++)
	        {
	            ensureImageIsLoaded(indexofThisImagePlus(i));
	            
	        }
		}
		
		function ensureAllThumbsAreLoaded()
		{
		    var currentIndex = getCurrentIndex();
	        for (i = 0; i < 11; i++)
	        {
	            ensureThumbNailImageIsLoaded(indexofThisImagePlus(i));
	        }
		}
		
		
		function AreNextSlidesAreLoaded()
		{
		    var currentIndex = getCurrentIndex();
		    var returnValue = true;
	        for (i = 0; i < 3; i++)
	        {   
	            if(! isImageOk(document.getElementById(mainimg[indexofThisImagePlus(i)])))
		        {
		            return false;
		        }
	            
	        }
	        return true;
		}		
		
		function AreAllThumbsLoaded()
		{
		    var returnValue = true;
		    var currentIndex = getCurrentIndex();
	        for (i = 0; i < 11; i++)
	        {
	            if(! isImageOk(document.getElementById(thumbimg[indexofThisImagePlus(i)])))
		        {
		            return false;
		        }
	            
	        }
	        return true;
		}
		
		
		function indexofThisImagePlus(plusValue)
		{
		    var currentIndex = getCurrentIndex();
		    var returnVal = (parseInt(currentIndex) + parseInt(plusValue) >= thumbimg.length ? (parseInt(currentIndex) + parseInt(plusValue)) - thumbimg.length :  parseInt(currentIndex) + parseInt(plusValue) )
		    if (returnVal > thumbimg.length - 1)
		    {
		        returnVal = 0;
		    }
		    return returnVal;
		}
		
		
		function setSelected()
        {
            for (i = 0; i < thumbimg.length; i++)
		    {
		       if (document.getElementById(thumbimg[i]).className = "photoSelected")
		       {
		            document.getElementById(thumbimg[i]).className = "photo"
		       }
		    }
        
            var CurrentThumb = getThumbFromCurrentIndex();
            CurrentThumb.className = "photoSelected";
        }
		
		
		function getThumbFromCurrentIndex()
		{
		    return document.getElementById(thumbimg[getCurrentIndex()]);
		}
		
		function viewGallery()
		{
		    detachEvents();
		
            cleanUpTimers();
            
            for (i = 0; i < thumbimg.length; i++)
		    {
		       if (document.getElementById(thumbimg[i]).className = "photoSelected")
		       {
		            document.getElementById(thumbimg[i]).className = "photo"
		       }
		    }		
		    spanSlide.style.display = 'none';
		    spanGall.style.display = 'block';

		    attachEvents();
		}
		
		function viewSlideShow()
		{
		    detachEvents();
            cleanUpTimers();
		    initalizeSlideShow();
		    spanGall.style.display = 'none';
		    spanSlide.style.display = 'block';
		    
		    attachEvents();
		}
		
		
		
		function thumbNailClicked(theEvent)
		{
		    cleanUpTimers();
		    var index = getThumbIndexfromID(theEvent.srcElement)
		    zoomThumbNail(index);
		}
			
		
		function zoomThumbNail(index)
		{
		
		        detachEvents();
		        var currentIndex = getCurrentIndex();
		        var currentMainImage = document.getElementById(mainimg[currentIndex]);
		        
		        // if the please wait message is displayed hide it
		        hidepreloadMessage()
		        clearTimeout(preloadTimer);
		        
		        // hide the current image
		        currentMainImage.style.display = 'none';
		        currentMainImage.style.visibility = 'hidden';
		        
		        setCurrentIndex(index)
		        currentIndex = index;
		        
		        
		        currentMainImage = document.getElementById(mainimg[currentIndex]);
		        
		        currentMainImage.style.visibility = 'hidden'
		        currentMainImage.style.display = 'block';
		        document.getElementById(mainspan[currentIndex]).style.visibility = 'visible';
		        
		        var thumbImage =  document.getElementById(thumbimg[currentIndex])
 

			    zoomThumbContainer.style.left = "-200px";
			    zoomThumbContainer.style.top = "-200px";

    	        
			    zoomThumb.src = document.getElementById(thumbimg[currentIndex]).src;
			    zoomThumb.style.height = document.getElementById(thumbimg[currentIndex]).style.height;
			    zoomThumb.style.width = document.getElementById(thumbimg[currentIndex]).style.width;
    			
    			ensureImageIsLoaded(currentIndex)
    			
			    MainCoordinates = whereAmI(currentMainImage, true)
			    thumbcoordinates = whereAmI(thumbImage, true)

			    for (i = 0; i < aStyles.length ; i++)
			    {
				    var newX, newY, newHeight, newWidth;
    				
				    newX = parseInt((MainCoordinates[0] - thumbcoordinates[0]) / (10 - i)) + thumbcoordinates[0]
				    newY = parseInt((MainCoordinates[1] - thumbcoordinates[1]) / (10 - i)) + thumbcoordinates[1]

				    newHeight = parseInt((currentMainImage.height - thumbImage.height) / (10 - i)) + thumbImage.height;
				    newWidth = parseInt((currentMainImage.width - thumbImage.width) / (10 - i)) + thumbImage.width;
				    //transition(newX, newY, i, newHeight, newWidth)
    				
				    command = "transition(" + newX + ", " + newY + ", " + i + ", " + newHeight + ", " + newWidth + ")";
				    setTimeout(command, i * 55);	
			    }
			    command = "cleanUp(" + index + ")";
			    preloadTimer = setTimeout(command, 12 * 55);	  		
		}
	
		
		function transition(xCord, yCord, StyleIndex, newheight, newWidth)
		{
			zoomThumbContainer.style.visibility = 'visible';
			zoomThumbContainer.style.left = xCord + "px";
			zoomThumbContainer.style.top = yCord + "px";
			zoomThumb.style.height = newheight + "px";
			zoomThumb.style.width = newWidth + "px";
			zoomThumb.className = aStyles[StyleIndex]
		}

	
		
		function cleanUp(index)
		{
		    if (isImageOk(document.getElementById(mainimg[index])))
		    {
		        zoomThumbContainer.style.visibility = 'hidden';
			    document.getElementById(mainimg[index]).style.visibility = 'visible'
			    hidepreloadMessage();
			    clearTimeout(preloadTimer);
			    attachEvents();
			    if (isSlideShow())
			    {
			        initalizeSlideShow();
			    }
			    setText(index);
		    }
		    else
		    {
		       ensureImageIsLoaded(index)
		       if (!ispreloadMessageShown())
		       {
		            showpreloadMessage(index)
		       }
		       command = "cleanUp(" + index + ")";
			   preloadTimer = setTimeout(command, 60);
			   
		    }
		}
		
		function NextAction()
		{
		    detachEvents();
		    var pgNumber = getCurrentPageNumber() + 1;
		    var totalImages = thumbimg.length;
		    var startindex = (pgNumber - 1) * PageSize; 
		    var endIndex
		    var okToProgress = true;
		    
		    if ((startindex + PageSize - 1) > (totalImages - 1))
		    {
		        endIndex = totalImages -1 
		    }
		    else
		    {
		        endIndex = (startindex + PageSize - 1);
		    }
		    
		    for (i = startindex; i <= endIndex; i++)
		    {
		        ensureThumbNailImageIsLoaded(i);
		    }
		    
		    ensureImageIsLoaded(startindex)
		    
		    
		    for (i = startindex; i <= endIndex; i++)
		    {
		        if(! isImageOk(document.getElementById(thumbimg[i])))
		        {
		            okToProgress = false;
		        }
		    }
		    
		    if(! isImageOk(document.getElementById(mainimg[startindex])))
		    {
		        okToProgress = false;
	        }
		    
            if (!okToProgress)
            {
                command = "NextAction()";
			    navigationTimer = setTimeout(command, 60);
			    showpreloadMessageThumbs(getCurrentIndex())
			}
			else
			{
			    if (ispreloadMessageShownThumbs())
			    {
			        hidepreloadMessageThumbs();
			    }
			    gotoPage(pgNumber, "forward", true);
			    
			    document.getElementById(mainimg[getCurrentIndex()]).style.display = 'none';
		        document.getElementById(mainimg[getCurrentIndex()]).style.visibility = 'hidden';
			    
			    document.getElementById(mainimg[startindex]).style.display = 'block'
			    document.getElementById(mainimg[startindex]).style.visibility = 'visible'
			    setText(startindex)
			    setCurrentIndex(startindex);
			}
            
		}
		
		
		
	
		function Next()
		{
		    cleanUpTimers();
		    clearTimeout(navigationTimer);
		    NextAction();
		}
	
		
		
		function PrevAction()
		{
		    detachEvents();
		    var pgNumber = getCurrentPageNumber() - 1;
		    var totalImages = thumbimg.length;
		    var startindex = (pgNumber - 1) * PageSize; 
		    var endIndex
		    var okToProgress = true;
		    if ((startindex + PageSize - 1) > (totalImages - 1))
		    {
		        endIndex = totalImages -1 
		    }
		    else
		    {
		        endIndex = (startindex + PageSize - 1);
		    }
		    
		    for (i = startindex; i <= endIndex; i++)
		    {
		        ensureThumbNailImageIsLoaded(i);
		    }
		    
		    ensureImageIsLoaded(startindex)
		    
		    for (i = startindex; i <= endIndex; i++)
		    {
		        if(! isImageOk(document.getElementById(thumbimg[i])))
		        {
		            okToProgress = false;
		        }
		    }
		    
		    if(! isImageOk(document.getElementById(mainimg[startindex])))
		    {
		        okToProgress = false;
	        }
		    
            if (!okToProgress)
            {
                command = "PrevAction()";
                navigationTimer = setTimeout(command, 60);
                showpreloadMessageThumbs(getCurrentIndex())
            }
            else
            {
                if (ispreloadMessageShownThumbs())
                {
                    hidepreloadMessageThumbs();
                }
                gotoPage(pgNumber, "back", true);
                
			    document.getElementById(mainimg[getCurrentIndex()]).style.display = 'none';
		        document.getElementById(mainimg[getCurrentIndex()]).style.visibility = 'hidden';
			    
			    document.getElementById(mainimg[startindex]).style.display = 'block'
			    document.getElementById(mainimg[startindex]).style.visibility = 'visible'
			    setText(startindex)
                setCurrentIndex(startindex);
                
                

                
            }
		}
		
		
		function Prev()
		{
		    cleanUpTimers();
		    clearTimeout(navigationTimer);
		    PrevAction();
		}
		
		
		

		
