// slideshow functions

var xfadeOpacity = 0;
var xfadeOverPages = true;
var slideShowTimer = null;
var slideShowCurrIndex = 0;
var slideShowNextIndex = 1;
var slideShowImages = new Array();
var slideShowNextImage = new Image();
var slideShowStartTime = 0;
// configurable parameters:
var slideShowFadeBackImage = false;	// set to true if images are of different sizes; otherwise set to false
var slideShowFirstShowTime = 3000;
var slideShowNormalShowTime = 6000;
var slideShowFadeTime = 800;
var slideShowOnChangeCallback = null;
var slideShowOnChangeCallbackDone = false;
var slideShowPaused = false;

function addSlideToSlideshow (inUrl)
{
	slideShowImages.push (inUrl);
}

function disorderArray()
{
	var newArray = new Array();
	for (i = 0; i < slideShowImages.length; i++)
		newArray[i] = Math.random() + "x" + i;
	newArray.sort();
	for (i = 0; i < slideShowImages.length; i++)
	{
		idx = newArray[i].substr(newArray[i].indexOf("x")+1);
		temp = slideShowImages[i];
		slideShowImages[i] = slideShowImages[idx];
		slideShowImages[idx] = temp;
	}
}

function xfadeImages()
{
	var dateObj = new Date();
	xfadeOpacity = Math.round (100 * (dateObj.getTime() - slideShowStartTime) / slideShowFadeTime);
	if (xfadeOpacity > 100)
		xfadeOpacity = 100;

	document.getElementById("slideShowImage2").style.filter = "alpha(Opacity=" + xfadeOpacity + ")";
	document.getElementById("slideShowImage2").style.opacity = xfadeOpacity/100;

	if (slideShowFadeBackImage)
	{
		document.getElementById("slideShowImage1").style.filter = "alpha(Opacity=" + (100-xfadeOpacity) + ")";
		document.getElementById("slideShowImage1").style.opacity = (100-xfadeOpacity)/100;
	}

	if (slideShowOnChangeCallback)
		slideShowOnChangeCallback (slideShowCurrIndex, 100-xfadeOpacity, slideShowNextIndex, xfadeOpacity);
		
/*
	if (xfadeOpacity >= 50)
	{
		if (slideShowOnChangeCallback && !slideShowOnChangeCallbackDone)
		{
			slideShowOnChangeCallback (slideShowCurrIndex, slideShowNextIndex);
			slideShowOnChangeCallbackDone = true;
		}
		
	}
*/
	if (xfadeOpacity == 100)
	{
		document.getElementById("slideShowImage1").src = document.getElementById("slideShowImage2").src;
		if (slideShowFadeBackImage)
		{
			document.getElementById("slideShowImage1").style.filter = "alpha(Opacity=100)";
			document.getElementById("slideShowImage1").style.opacity = 1;
		}
		document.getElementById("slideShowImage2").style.filter = "alpha(Opacity=0)";
		document.getElementById("slideShowImage2").style.opacity = 0;
		
		slideShowCurrIndex = slideShowNextIndex;
		slideShowNextIndex++;
		if (slideShowNextIndex >= slideShowImages.length)
			slideShowNextIndex = 0;
		slideShowNextImage.src = slideShowImages[slideShowNextIndex];

//		slideShowOnChangeCallbackDone = false;

		if (!slideShowPaused)
			slideShowTimer = setTimeout ("changeImage()", slideShowNormalShowTime);
	}
	else
		slideShowTimer = setTimeout ("xfadeImages()", 5);
}

function changeImage()
{
	document.getElementById("slideShowImage2").src = slideShowNextImage.src;
	if (!slideShowFadeBackImage)
	{
		document.getElementById("slideShowImage2").style.filter = "alpha(Opacity=0)";
		document.getElementById("slideShowImage2").style.opacity = 0;
	}

	var dateObj = new Date();

	slideShowStartTime = dateObj.getTime();

	setCookie ("slideShowStart", slideShowStartTime, 1);
	setCookie ("slideShowIndex", slideShowNextIndex, 1);
//	setCookie ("slideShowImage", document.getElementById("slideShowImage2").src, 0);

	xfadeOpacity = 0;
	slideShowTimer = setTimeout ("xfadeImages()", 5);
}

function pauseSlideshow (inIndex)
{
	clearTimeout (slideShowTimer);
	slideShowPaused = true;

	slideShowNextIndex = inIndex;
	slideShowNextImage.src = slideShowImages[slideShowNextIndex];
		
	changeImage();
}

function resumeSlideshow (inDelay)
{
	if (slideShowPaused)
	{
		slideShowPaused = false;
		slideShowTimer = setTimeout ("changeImage()", inDelay);
	}
}

function initSlides (inShuffle)
{
	if (slideShowImages.length > 0)
	{
		if (inShuffle && typeof inShuffle != 'object')
			disorderArray();

		slideShowNextIndex = slideShowCurrIndex + 1;
		if (slideShowNextIndex >= slideShowImages.length)
			slideShowNextIndex = 0;
		slideShowNextImage.src = slideShowImages[slideShowNextIndex];

		var myDate = new Date();
		
		startTime = getCookie ("slideShowStart");
		if (startTime != null && xfadeOverPages)
		{
			slideShowFirstShowTime = slideShowFirstShowTime - (myDate.getTime()-startTime);
			if (slideShowFirstShowTime < 0)
				slideShowFirstShowTime = 100;
		}
		
		setCookie ("slideShowStart", myDate.getTime(), 1);
		setCookie ("slideShowIndex", slideShowCurrIndex, 1);
//		setCookie ("slideShowImage", document.getElementById("slideShowImage1").src, 1);

		slideShowOnChangeCallbackDone = false;

		slideShowTimer = setTimeout ('changeImage()', slideShowFirstShowTime);
	}
}

function exitSlides()
{
	if (slideShowTimer != null)
		clearTimeout (slideShowTimer);
}


