window.onload = bannersInit;

function bannersInit() {
	var item;
	var bannersX = document.getElementById('banners').getElementsByTagName('a');
	
	fadeInSpeed = 40;
	FadeInQueue = new Array;
	isRunningFadeIn = false;
	bannerGroups = new Array;

	for (var group=0; group<bannersX.length; group++) {
		var imgs = bannersX[group].getElementsByTagName('img');
		
		if (imgs.length < 2) continue;
		
		item = new Array;
		item.imgs    = imgs;
		item.currentImg = 0;
		item.opacity = 0;
		setTimeout('showNextBanner(' + group + ');', getRandomDelay()-1000);
		
		bannerGroups[group] = item;	
	}
	
}

function showNextBanner(group) {
	var imgs = bannerGroups[group].imgs;
	
	var prevImgIndex = bannerGroups[group].currentImg;
	var prevImg = bannerGroups[group].imgs[prevImgIndex];
	
	bannerGroups[group].currentImg++;
	if (bannerGroups[group].currentImg >= imgs.length) {
		bannerGroups[group].currentImg = 0;
	}
	
	var img = bannerGroups[group].imgs[bannerGroups[group].currentImg];
	setOpacity(img, 0);
	img.style.visibility = 'visible';
	img.style.zIndex = 100;
	prevImg.style.zIndex = 99;
	
	
	for (var i=0; i<imgs.length; i++) {		
		if (i != bannerGroups[group].currentImg && i != prevImgIndex) {
			var img = bannerGroups[group].imgs[i];
			setOpacity(img, 0);
			img.style.zIndex = 0;
		}
	}
	
	bannerGroups[group].opacity = 0;
	
	if (isRunningFadeIn) {
		FadeInQueue.push(Array(group, bannerGroups[group].currentImg));
	} else {
		isRunningFadeIn = true;
		bannerGroups[group].interval = setInterval('bannerFadeIn(' + group + ', ' + bannerGroups[group].currentImg + ')', fadeInSpeed);
	}
}


function bannerFadeIn(group, i) {

	bannerGroups[group].opacity += 5;
	
	var img = bannerGroups[group].imgs[i];
	setOpacity(img, bannerGroups[group].opacity);

	
	if (bannerGroups[group].opacity >= 100) {
		clearInterval(bannerGroups[group].interval);
		isRunningFadeIn = false;
		
		setTimeout('showNextBanner(' + group + ');', getRandomDelay());
		
		if (FadeInQueue.length) {
			isRunningFadeIn = true;
			var next = FadeInQueue.shift();
			bannerGroups[next[0]].interval = setInterval('bannerFadeIn(' + next[0] + ', ' + next[1] + ')', fadeInSpeed);
		}
	}
}

function setOpacity(elem, value) {
	elem.style.opacity = value/100;
	elem.style.filter  = 'alpha(opacity=' + value + ')';
}


function getRandomDelay() {
	return Math.floor(Math.random()*3000) + 3000;
}
		