var page = {
	init: null
};

var timer = {
	quoteCounter: null,
	fade: null,
	animateFade: null,
	fadeOut: null
};

//***global variables***//
var amountOfQuotes = 4;
var timeOfQuoteVisible = 3700;	// in milliseconds
var fadeTime = 700;	// 2 x fadeTime MUST be smaller than timeOfQuoteVisible
var quoteNumber = 1;
var quoteID;
var latency = 33; //lower better but harder for CPU

timer.fade = function(quoteID) {
	//document.getElementById('test').value = quoteID;
	var element = document.getElementById(quoteID);
	if(element === null){
		return;
	}
	
	if(element.FadeState === null){
		if(element.style.opacity === null || element.style.opacity === '' || element.style.opacity == '1'){
			element.FadeState = -2;
		}
	}
	
	if(element.FadeState == 1 || element.FadeState == -1){
		if(element.FadeState == 1){
			element.FadeState = -1;
		}
		else{
			element.FadeState = 1;
		}
		element.FadeTimeLeft = fadeTime - element.FadeTimeLeft;
	}
	else{
		if(element.FadeState == 2){
			element.FadeState = -1;
		}
		else{
			element.FadeState = 1;
		}
		element.FadeTimeLeft = fadeTime;
		setTimeout("timer.animateFade("+new Date().getTime()+",'"+quoteID+"')", latency);
	}
};

timer.animateFade = function(lastTick, quoteID) {
	var curTick = new Date().getTime();
	var elapsedTicks = curTick - lastTick;	
	var element = document.getElementById(quoteID);
	var newOpVal;
	
	if(element.FadeTimeLeft <= elapsedTicks){
		if(element.FadeState == 1){
			element.style.opacity = 1;
			element.style.filter = 'alpha(opacity = 100)';
			element.FadeState = 2;
			setTimeout('timer.fadeOut()', (timeOfQuoteVisible-(2*fadeTime)));
			return;
		}
		else{
			element.style.opacity = 0;
			element.style.filter = 'alpha(opacity = 0)';
			element.FadeState = -2;
			
			if(quoteNumber >= amountOfQuotes){
				quoteNumber = 1;
			}
			else{
				quoteNumber = quoteNumber + 1;
			}
			page.init();
			return;
		}		
	}
	
	element.FadeTimeLeft -= elapsedTicks;
	newOpVal = element.FadeTimeLeft/fadeTime;
	if(element.FadeState == 1){
		newOpVal = 1 - newOpVal;
	}		
	element.style.opacity = newOpVal;
	element.style.filter = 'alpha(opacity = '+(newOpVal*100)+')';
	
	setTimeout("timer.animateFade("+curTick+",'"+quoteID+"')", latency);
	
};

timer.fadeOut = function() {
	var element = document.getElementById('quote'+quoteNumber);
	element.FadeState = -1;
	element.FadeTimeLeft = fadeTime;
	setTimeout("timer.animateFade("+new Date().getTime()+",'"+quoteID+"')", latency);
};

page.init = function() {
	quoteID = 'quote'+quoteNumber;
	timer.fade(quoteID);
};

window.onload = page.init;
