window.onload = faderInit;

var flashCards;

var layerShow = 0;
var layerFade = -1;

var durationShow = 6;
var durationFade = 0.1;
var faderSpeed = 20;

var opacity = 0;

var timerNext;
var timerFade;

var fade = false;

function faderInit() {
	durationShow = durationShow * 1000;
	durationFade = durationFade * 1000 / faderSpeed;
	//alert(durationFade);

	flashCards = $('media').childElements();
	flashCards.each(function(flashCard, fidx) {
		if (fidx == layerShow) {
			flashCard.visible();
		} else {
			flashCard.hide();
		}
	});
	timerNext = setTimeout("faderNext()", durationShow);
}

function faderNext() {
	layerFade = layerShow + 1;
	if (layerFade >= flashCards.length)
		layerFade = 0;
	faderStart();
}

function faderStart() {
	fade = true;
	if (layerFade > layerShow) {
		opacity = 0;

		flashCards[layerFade].setOpacity(opacity);
		flashCards[layerFade].show();

		timerFade = setTimeout("faderFadeIn()", durationFade);
	} else {
		opacity = 1;

		flashCards[layerFade].setOpacity(opacity);
		flashCards[layerFade].show();

		timerFade = setTimeout("faderFadeOut()", durationFade);
	}
}

function faderFadeIn() {
	opacity += 1/faderSpeed;
	flashCards[layerFade].setOpacity(opacity);
	if (opacity < 1) {
		timerFade = setTimeout("faderFadeIn()", durationFade);
	} else {
		flashCards[layerShow].hide();
		layerShow = layerFade;
		fade = false;
		timerNext = setTimeout("faderNext()", durationShow);
	}
}

function faderFadeOut() {
	opacity -= 1/faderSpeed;
	flashCards[layerShow].setOpacity(opacity);
	if (opacity > 0) {
		timerFade = setTimeout("faderFadeOut()", durationFade);
	} else {
		flashCards[layerShow].hide();
		layerShow = layerFade;
		fade = false;
		timerNext = setTimeout("faderNext()", durationShow);
	}
}

function faderClick(id) {
	if (!fade && id != layerFade) {
		if (timerNext != undefined)
			clearTimeout(timerNext);
		if (timerFade != undefined)
			clearTimeout(timerFade);

		layerFade = id;
		faderStart();
	}
}
