//-----------------------------------------------------------------------------
// File:	banners.js
//			Copyright(C) 2007 LightScape Interactive, Inc. All rights reserved.
//-----------------------------------------------------------------------------

var bannerIx = -1;
var animStage = 4;
var betweenDuration = 0.5;
var fadeDuration = 0.75;
var bannerDuration = 6.5;
var fps = 30.0;
var fraction = 0.0;
var startTime = 0.0;
var animDone = true;
var animDir = 1;
var intervalID = null;
var frameLock = false;

window.onload = function() {
	if (!document.images) return;
	if (!document.getElementById) return;
	startFade(-1);
	preloadImages();
	intervalID = setInterval(onFrame, 1.0/fps*1000.0);
}

window.onunload = function() {
	if (intervalID) clearInterval(intervalID);
}

function preloadImages() {
	// TODO: Implement.
}

function getTime() {
	return (new Date()).getTime() * 0.001;
}

function onFrame() {
	if (frameLock) return;
	else frameLock = true;
	var now = getTime();
	switch (animStage) {
		case 1: // WAIT BETWEEN.
			fraction = (now - startTime) / betweenDuration;
			if (fraction >= 1.0) {
				fraction = 1.0;
				startFade(1);
				animStage = 2;
			}
			break;
		case 2: // FADE IN.
			fraction = (now - startTime) / fadeDuration;
			if (fraction >= 1.0) {
				fraction = 1.0;
				animStage = 3;
			}
			changeOpacity();
			break;
		case 3: // WAIT BANNER.
			fraction = (now - startTime) / bannerDuration;
			if (fraction >= 1.0) {
				fraction = 1.0;
				startFade(-1);
				animStage = 4;
			}
			break;
		case 4: // FADE OUT.
			fraction = (now - startTime) / fadeDuration;
			if (fraction >= 1.0) {
				fraction = 1.0;
				changeOpacity();
				animStage = 1;
				bannerIx++;
				if (bannerIx >= bannerSpecs.names.length) bannerIx = 0;
				document.images["banner_image"].src = "banners/" + bannerSpecs.names[bannerIx];
				startFade(1);
			} else changeOpacity();
			break;
	}
	frameLock = false;
}

function changeOpacity() {
	var opacity = (animDir == 1 ? fraction : 1.0 - fraction);
	var banner = document.getElementById("banner");
	if (banner) setOpacity(banner, opacity);
}

function setOpacity(element, value) {
	if (value < 0.0) value = 0.0;
	if (value > 1.0) value = 1.0;
	element.style.opacity = value;
	element.style.zoom = 1; // Necessary for IE.
	element.style.filter = 'alpha(opacity=' + value*100 + ')'; // Necessary for IE.
}

function startFade(dir) {
	startTime = getTime();
	animDir = dir;
	animDone = false;
	fraction = 0.0;
}

function banner_link() {
	var lnk = bannerSpecs.links[bannerIx];
	if (lnk) location.href = lnk;
}

