// JavaScript Document

/*****

Image Cross Fade Redux
Version 1.0
Last revision: 02.15.2006
steve@slayeroffice.com

Please leave this notice intact. 

Rewrite of old code found here: http://slayeroffice.com/code/imageCrossFade/index.html

*****/

// Edited for dynamic use by Logic IT

try {
	
var so = {
	imgs : new Array(),
	current : 0,
	fadeInterval : 5000,
	fadeSpeed : 35,
	callback : false
}

function so_init(container,element,callback,cindex) {
	if (!element) element="img";
	if(callback) so.callback=callback;
	//try {
	if(!document.getElementById || !document.createElement) return;
	imgs = document.getElementById(container).getElementsByTagName(element);
	so.imgs = imgs;
	for(i=1;i<imgs.length;i++) { imgs[i].xOpacity = 0; imgs[i].style.display = "none"; setOpacity(imgs[i]); }
	
	index=0;
	if(cindex) {
		index=cindex;
		thisfadeInterval=1500;
	}
	if(!imgs[index]) index=0;
	so.current = index;
	imgs[index].xOpacity = .99;
	setOpacity(imgs[index]);
	imgs[index].style.display = "block";
	if(so.callback) so.callback.apply(imgs[index],[index]);
	
	if(typeof(thisfadeInterval)!='undefined') setTimeout(so_xfade_start,thisfadeInterval);
	else setTimeout(so_xfade_start,so.fadeInterval);
	//} catch(err) { alert(err); }
}

function so_xfade_start() {
	so_xfade();
	nIndex = so.imgs[so.current+1]?so.current+1:0;
	if(so.callback) so.callback.apply(so.imgs[nIndex],[nIndex]);
}

function so_xfade() {
	try {
	cOpacity = so.imgs[so.current].xOpacity;
	nIndex = so.imgs[so.current+1]?so.current+1:0;

	nOpacity = so.imgs[nIndex].xOpacity;
	
	cOpacity-=.05; 
	nOpacity+=.05;
	
	so.imgs[nIndex].style.display = "block";
	so.imgs[so.current].xOpacity = cOpacity;
	so.imgs[nIndex].xOpacity = nOpacity;
	
	setOpacity(so.imgs[so.current]); 
	setOpacity(so.imgs[nIndex]);
	
	if(cOpacity<=0) {
		so.imgs[so.current].xOpacity = 0;
		so.imgs[nIndex].xOpacity = .99;
		setOpacity(so.imgs[so.current]); 
		setOpacity(so.imgs[nIndex]);
		
		so.imgs[so.current].style.display = "none";
		so.current = nIndex;
		setTimeout(so_xfade_start,so.fadeInterval);
	} else {
		setTimeout(so_xfade,so.fadeSpeed);
	}
	
	} catch(err) { alert(err); }
}

function setOpacity(obj) {
	if(obj.xOpacity>.99) {
		obj.xOpacity = .99;
	}
	obj.style.opacity = obj.xOpacity;
	obj.style.MozOpacity = obj.xOpacity;
	obj.style.filter = "alpha(opacity=" + (obj.xOpacity*100) + ")";
}

} catch(err) { alert(err); }
