window.addEventListener ? window.addEventListener('load', so_init, false) : window.attachEvent('onload', so_init);

var d = document, imgs = new Array(), zInterval = null, current = 0, nxt = -1, pause = false, fadeTimer = 0;

function so_init() {
	if (!d.getElementById || !d.createElement) return;

	imgs = d.getElementById('rotator').getElementsByTagName('img');
	for(i = 1; i < imgs.length; i++) imgs[i].xOpacity = 0;
	imgs[0].style.display = 'block';
	imgs[0].xOpacity = .99;

	fadeTimer = setTimeout(so_xfade, 3000);
}

function now_xfade(new_nxt) {
	clearTimeout(fadeTimer);
	fadeTimer = 0;

	for(i = 0; i < imgs.length; i++) {
		imgs[i].xOpacity = 0;
		imgs[i].style.display = 'none';
	}
	imgs[current].style.display = 'block';
	imgs[current].xOpacity = 0.99;

	nxt = new_nxt;
	so_xfade();
}

function so_xfade() {
	if (nxt != -1) 
		nIndex = nxt;
	else
		nIndex = imgs[current + 1] ? current + 1 : 0;

	cOpacity = imgs[current].xOpacity;
	nOpacity = imgs[nIndex].xOpacity;

	cOpacity -= .05;
	nOpacity += .05;

	imgs[nIndex].style.display = 'block';
	imgs[current].xOpacity = cOpacity;
	imgs[nIndex].xOpacity = nOpacity;

	setOpacity(imgs[current]);
	setOpacity(imgs[nIndex]);

	if (cOpacity <= 0) {
		imgs[current].style.display = 'none';
		current = nIndex;
		nxt = -1;
		fadeTimer = setTimeout(so_xfade, 3000);
	} else {
		fadeTimer = setTimeout(so_xfade, 50);
	}

	function setOpacity(obj) {
		if(obj.xOpacity > .99) {
			obj.xOpacity = .99;
			return;
		}

		obj.style.opacity = obj.xOpacity;
		obj.style.MozOpacity = obj.xOpacity;
		obj.style.filter = 'alpha(opacity=' + (obj.xOpacity * 100) + ')';
	}
}