var speed = 2000;

var imageIndex = 0;

var preLoad = new Array();

var opacityClock = null;
var slidePos = 100;
var imageSwitcher = 0;
var clientWidth = 0, clientHeight = 0;

var imageIndexList = new Array();

function GetClientResolution()
{
	var dimensions = new Array();
	
	if (typeof(window.innerWidth) == 'number') // Non-IE
	{
		dimensions[0]  = window.innerWidth;
		dimensions[1] = window.innerHeight;
	}
    else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) // IE 
    {
        dimensions[0]  = document.documentElement.clientWidth;
        dimensions[1] = document.documentElement.clientHeight;
    }
    else if (document.body && (document.body.clientWidth || document.body.clientHeight)) // IE 4 compatible
    {
        dimensions[0]  = document.body.clientWidth;
        dimensions[1] = document.body.clientHeight;
    }	
    
    return dimensions;
}

function UpdateClientResolution()
{
	var dimensions = GetClientResolution();
	
	if ((clientWidth != dimensions[0]) || (clientHeight != dimensions[1]))
	{
		clientWidth  = dimensions[0];
		clientHeight = dimensions[1];
		
		document.images.ImgSlideShow1.style.left = (clientWidth / 2)  - (photoList[imageIndexList[0]][1] / 2);
		document.images.ImgSlideShow1.style.top  = (clientHeight / 2) - (photoList[imageIndexList[0]][2] / 2);	

		document.images.ImgSlideShow2.style.left = (clientWidth / 2)  - (photoList[imageIndexList[1]][1] / 2);
		document.images.ImgSlideShow2.style.top  = (clientHeight / 2) - (photoList[imageIndexList[1]][2] / 2);	
	}
}

function RandOrd()
{
	return (Math.round(Math.random())-0.5); 
}

// loads an image and configures the image style properties
function SetNextImage(imageElement)
{
	if (preLoad[imageIndex] == null)
	{
		preLoad[imageIndex] = new Image();
		preLoad[imageIndex].src = photoList[imageIndex][0];
	}

	imageElement.src = preLoad[imageIndex].src;
	
	imageIndexList[imageIndex & 1]  = imageIndex;
	
	imageElement.style.left = (clientWidth / 2)  - (photoList[imageIndex][1] / 2);
	imageElement.style.top  = (clientHeight / 2) - (photoList[imageIndex][2] / 2);

	imageIndex = (imageIndex + 1) % photoList.length;
}

function ConvertOpacity(opacity)
{
	if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) // IE 
    {
        opacity;
    }
	
	return opacity * 0.01;
}

// handles the transition.
function DoOpacitySlide()
{
	if (imageSwitcher == 0)
	{
		document.images.ImgSlideShow1.style.opacity = ConvertOpacity(slidePos);
		document.images.ImgSlideShow2.style.opacity = ConvertOpacity(100 - slidePos);
		
		document.images.ImgSlideShow1.style.filter = 'Alpha(opacity=' + (slidePos) + ')';
		document.images.ImgSlideShow2.style.filter = 'Alpha(opacity=' + (100 - slidePos) + ')';
	}
	else
	{
		document.images.ImgSlideShow1.style.opacity = ConvertOpacity(100 - slidePos);
		document.images.ImgSlideShow2.style.opacity = ConvertOpacity(slidePos);
		
		document.images.ImgSlideShow1.style.filter = 'Alpha(opacity=' + (100 - slidePos) + ')';
		document.images.ImgSlideShow2.style.filter = 'Alpha(opacity=' + (slidePos) + ')';
	}
	
	slidePos -= 4;
	
	if (slidePos < 0)
	{
		if (imageSwitcher == 0)
		{
			document.images.ImgSlideShow1.style.opacity = 0;
			document.images.ImgSlideShow2.style.opacity = 1;
		}
		else
		{
			document.images.ImgSlideShow1.style.opacity = 1;
			document.images.ImgSlideShow2.style.opacity = 0;
		}
		
		slidePos = 100;
		
		clearInterval(opacityClock);
		
		RunSlideShow();
		
		setTimeout('StartOpacitySlide()', speed);
	}
}

// starts the transition
function StartOpacitySlide()
{
	opacityClock = setInterval('DoOpacitySlide()', 50);
}

// sets new picture
function RunSlideShow()
{
	if (imageSwitcher == 0)
	{
		SetNextImage(document.images.ImgSlideShow1);
	}
	else
	{
		SetNextImage(document.images.ImgSlideShow2);
	}
	
	imageSwitcher = (imageSwitcher + 1) & 1;
}

// starts the slide show. called from the onload event on the body tag
function StartSlideShow()
{
	var dimensions = GetClientResolution();
	
	clientWidth  = dimensions[0];
	clientHeight = dimensions[1];
	
	photoList.sort(RandOrd);
	
	SetNextImage(document.images.ImgSlideShow1);
	SetNextImage(document.images.ImgSlideShow2);
	
	document.images.ImgSlideShow1.style.opacity = 1;
	document.images.ImgSlideShow2.style.opacity = 0;
	
	document.images.ImgSlideShow1.style.filter = 'Alpha(opacity=100)';
	document.images.ImgSlideShow2.style.filter = 'Alpha(opacity=0)';
		
	document.images.ImgSlideShow1.style.visibility = 'visible';
	document.images.ImgSlideShow2.style.visibility = 'visible';
	
	setTimeout('StartOpacitySlide()', speed);
	setInterval('UpdateClientResolution()', 100);
}
