var DELAY = 10000;
var ROTATORS = {};
var SPONSOR_ROOT = '/static/sponsors/';
var SPONSOR_FILES = ['coreit172.png', 'clavister172.png', 'kramfors172.png', 'kramnet172.png', 'npn104.png', 'thcca172.png'];

var index = Math.floor(Math.random() * SPONSOR_FILES.length);

var STATE_WAITING = 0; var STATE_FADING_OUT = 1; var STATE_FADING_IN = 2; var STATE_LOADING = 3;

function initializeSponsorRotator(id) {
	var element = $(id);
	var width = element.getWidth();
	var image = new Element('img', {'src': SPONSOR_ROOT + SPONSOR_FILES[index++]});
	ROTATORS[id] = {};
	
	ROTATORS[id].width = width;
	
	image.onload = function () {
		element.appendChild(image);
		ROTATORS[id].image = image;
		ROTATORS[id].state = STATE_WAITING;
		image.style.left = (width/2 - image.width/2) + 'px';
		setTimeout(function () { incrementSponsorRotator(id); }, DELAY);
	};
}

function incrementSponsorRotator(id) {
	if (ROTATORS[id].state != STATE_WAITING) {
		setTimeout(function () { incrementSponsorRotator(id); }, DELAY/2);
	}
	
	ROTATORS[id].state = STATE_LOADING;
	index %= SPONSOR_FILES.length;
	var newImage = new Element('img', {'src': SPONSOR_ROOT + SPONSOR_FILES[index++]});
	newImage.onload = function () {
		newImage.style.top = '30px';
		newImage.style.opacity = '0';
		ROTATORS[id].state = STATE_FADING_OUT;
		new Effect.Morph(ROTATORS[id].image, 
			{'style': {'top': '-30px', 'opacity': '0'}, 'duration': 2.0,
			 'afterFinish': function () { 
				$(id).removeChild(ROTATORS[id].image);
				ROTATORS[id].image = newImage;
				$(id).appendChild(newImage);
				newImage.style.left = (ROTATORS[id].width/2 - newImage.width/2) + 'px';
				ROTATORS[id].state = STATE_FADING_IN;
				new Effect.Morph(newImage,
					{'style': {'top': '0px', 'opacity': '1'}, 'duration': 2.0,
					 'afterFinish': function () { 
						ROTATORS[id].state = STATE_WAITING;
						setTimeout(function () { incrementSponsorRotator(id); }, DELAY/2);
					}});
			}});
	};
}
