// JavaScript Document

/********************************************************************
 Crossfader
 (C) 2007 Will Cliffe
 --------------------------------------------------------------------

 Crossfader simply takes a div full of images and fades one over the
 other to create a 'cross fade' effect.

 In order to properly build a crossfade set, create a div and place in
 that div all the images you want to show up in the routine.

 Then set an onload to call a function such as 'crossfader' that will
 set up each set of fades.

 Example:

   jsFadeRoutine('myPics', 50, 1000, 3);


 ********************************************************************/
var fadeIds		= Array();

function jsFadeRoutine(div_id, fade_speed, fade_switch, interval)
{
	fadeObj					= new Object();
	fadeObj.id				= div_id;
	fadeObj.curIndex 		= 0;
	fadeObj.nextIndex 		= 1;
	fadeObj.curElement		= fadeObj.nextElement = false;

	// Get div with images.
	fadeObj.div				= document.getElementById(div_id);
	fadeObj.imgs			= fadeObj.div.getElementsByTagName('img');
	fadeObj.fade_speed		= fade_speed;
	fadeObj.fade_switch		= fade_switch;
	fadeObj.interval		= interval;

	if(fadeObj.imgs.length <= 1) return false;

	fadeIds.push(fadeObj);
	fadeIds.timeout = setTimeout('fadein(\''+div_id+'\')', fadeObj.fade_switch);
}

function jsFadeStop()
{
	while(fade = fadeIds.shift())
	{
		for (x = 0; x < fade.imgs.length; x++)
		{
			fade.imgs[x].style.opacity = '1';
			fade.imgs[x].style.filter = 'alpha(opacity=100)';
		}
		clearInterval(fade.fader);
		clearTimeout(fade.timeout);
	}

}

function fading(div_id)
{
	for(i = 0; i < fadeIds.length; i++)
	{
		if(fadeIds[i].id == div_id) {
			fader = fadeIds[i];
			break;
		}
	}
	fader.imgs[fader.curIndex].style.opacity 	= fader.currentOpacity / 100;
	fader.imgs[fader.curIndex].style.filter  	= 'alpha(opacity=' + fader.currentOpacity + ')';
	fader.currentOpacity						-= fader.interval;

	if(fader.currentOpacity <= 0) {
		fader.imgs[fader.nextIndex].style.zIndex = '10';
		fader.imgs[fader.curIndex].style.zIndex = '0';
		clearInterval(fader.fader);
		fader.curIndex = fader.nextIndex;
		if(fader.curIndex >= (fader.imgs.length - 1)) {
			fader.nextIndex = 0;
		} else {
			fader.nextIndex++;
		}
		fader.timeout = setTimeout('fadein(\''+div_id+'\')', fader.fade_switch);
	}
}

function fadein(div_id)
{
	for(i = 0; i < fadeIds.length; i++)
	{
		if(fadeIds[i].id == div_id) {
			fader = fadeIds[i];
			break;
		}
	}

	el = fader.imgs[fader.curIndex];
	el.style.zIndex = '10';

	for(i = 0; i < fader.imgs.length; i++)
	{
		if(el.id != fader.imgs[i].id) {
			fader.imgs[i].style.zIndex  = '0';
			fader.imgs[i].style.opacity = '1.0';
			fader.imgs[i].style.filter  = 'alpha(opacity=100)';
		}
	}

	fader.imgs[fader.nextIndex].style.opacity 	= '1';
	fader.imgs[fader.nextIndex].style.filter  	= 'alpha(opacity=100)';
	fader.imgs[fader.nextIndex].style.zIndex 	= '9';
	fader.imgs[fader.nextIndex].style.display 	= 'block';

	fader.curElement		= fader.imgs[fader.curIndex];
	fader.futElement		= fader.imgs[fader.nextIndex];;
	fader.currentOpacity 	= 100;
	fader.fader = setInterval('fading(\''+div_id+'\')', fader.fade_speed);
}



