﻿var	currentImageNumber	=	0;
var	displayGap	=	1000 * 3;
var	fadeStepPercent	=	4;
var	fadeSpeed	=	40;
var	cto;
var	fto;
var	inFade	=	false;
var	stopOnComplete	=	false;
var	endAll	=	false;
var	initalPause	=	1000 * 2;
var	fadeupId1	=	"mainimage";
var	fadeupId2	=	"fadeupimage";
var	fadeOverCallback	=	null;
var	endallCallback		=	null;

function	displayNextImage()	{

	clearTimeout(cto);

	if( inFade )	{
		cto = setTimeout("displayNextImage()", 100);	
		return;
	}

	nextTimer	=	100;

	if( currentImageNumber >= allImages.length)	{
		if( stopOnComplete == true )	{
			endAll	=	true;
		}
		currentImageNumber = 0;
	}

	if( (cin	=	showImage( allImages, currentImageNumber, imgRoot)) != -1 )	{
		currentImageNumber	=	cin;
		nextTimer	=	displayGap;
		if( fadeOverCallback != null )	{
			fadeOverCallback();
		}
	}

	// Restart the timer with nextTimer
	if( endAll == false )	{
	     cto = setTimeout("displayNextImage()", nextTimer);
	}
	else	{
		if( endallCallback != null )	{
			endallCallback();
		}
	}
}

var	loadedImages;
var	currentLoadingImage;
var	loadingComplete;

function	showImage( imgarray, imgnum, imgroot )	{
		
	if( !loadedImages[ imgnum ] )	{
		if( currentLoadingImage	== null )	{

			loadingComplete	=	false;

			currentLoadingImage	=	new	Image();
			currentLoadingImage.onload = function() { loadingComplete = true; };
			currentLoadingImage.src 	= imgRoot + allImages[ imgnum ];

			return	-1;
		}
		else if( loadingComplete == false )		{
			return	-1;
		}

		// Image has loaded
		loadingComplete	=	false;
		loadedImages[ imgnum ]	=	imgRoot + allImages[ imgnum ]
		currentLoadingImage	=	null;
	}

	startFade( fadeupId2, imgnum);

	textarea		=	document.getElementById('imageCounter');
	textarea.innerHTML	=	(imgnum + 1) + "/" + imgarray.length;

	// Now return the next image number
	if( ++imgnum >=	imgarray.length )	{
		if( stopOnComplete == true )	{
			endAll	=	true;
		}
		imgnum	=	0;
	}

	return	imgnum;
}



function	startSlideshow()	{

	clearTimeout( fto );
	fto = null;

	clearTimeout( cto );
	cto	=	null;

	loadedImages	=	new	Array();
	currentLoadingImage	=	null;
	loadingComplete	=	false;

	cto 			= setTimeout("displayNextImage()", 1 + initalPause);
	initalPause		=	0;
	endAll			=	false;
}


function startFade( imageId, imgnum ) {

	if( imageId != null )	{

		inFade = true;
		theimage = document.getElementById( imageId );
		setOpacity( theimage, 0);
 		theimage.style.visibility = 'visible';

	    obj = document.getElementById( imageId );
	    obj.src	=	loadedImages[ imgnum ];

		fadeIn( imageId, 0, imgnum );
	}
}


function	fadeComplete( objId, imgnum )	{

	// Set the main image to be the new faded up image

	if( fadeupId1 != null )	{

		mainimg		=	document.getElementById( fadeupId1  );
		mainimg.src	=	loadedImages[ imgnum ];
		setOpacity(mainimg, 100);
	}
	inFade = false;

	// Hide the faded up image
//	picarea		=	document.getElementById( objId );
//	picarea.style.visibility = 'hidden';

}


// Thanks to - http://clagnut.com/sandbox/imagefades/

function fadeIn( objId, opacity, imgnum ) {

  if ( document.getElementById ) {

    obj = document.getElementById( objId );

    if (opacity <= 100) {
    
      setOpacity(obj, opacity);

	 if( fadeupId1 != null )	{
	      setOpacity( document.getElementById( fadeupId1 ), 100 - opacity );
    	}  
      opacity += fadeStepPercent;
      fto = window.setTimeout("fadeIn('"+objId+"',"+opacity+","+imgnum+")", fadeSpeed );
    }
    else	{
    	fadeComplete( objId, imgnum );
    }
  }
}


// Thanks to - http://clagnut.com/sandbox/imagefades/

function setOpacity( obj, opacity) {

  opacity = (opacity == 100) ? 99.999:opacity;

  // IE/Win
  obj.style.filter = "alpha(opacity:"+opacity+")";

  // Safari<1.2, Konqueror
  obj.style.KHTMLOpacity = opacity/100;
  
  // Older Mozilla and Firefox
  obj.style.MozOpacity = opacity/100;
  
  // Safari 1.2, newer Firefox and Mozilla, CSS3
  obj.style.opacity = opacity/100;
}

