/********************************************************************
 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);
}

window.onload = function() { jsFadeRoutine('banner', 50, 3500, 3); }