var animationIntervalId = null;
var blurbs = [];
var currentBlurb = 0;
var imageAnim = null;
var imageAnimOld = null;
var inProgress = false;

window.onload = handleWindowOnLoad;

function handleWindowOnLoad(){
	var i = 0;
	var blurb;
	while(true){
		var blurb = document.getElementById("blurb" + i);
		if(!blurb)
			break;
		blurbs.push(new AnimatedElement(blurb));
		blurbs[i].setX(190);
		blurbs[i].setY(35);
		blurbs[i].setZ(100);
		i++;
	}

	blurbs[0].setAlpha(100);
	initNextAnimation(-1000, 200);
}

function handleNextLink(){
	if(inProgress){
		return;	
	}
	if(imageAnim){
		imageAnim.effects[0] = new AnimEffect(MOVE_X_EFFECT, imageAnim, 3000, 200); 
		imageAnimOld = imageAnim;
		imageAnim = null;
	}
	var blurb = blurbs[currentBlurb];
	blurb.effects[0] = new AnimEffect(FADE_EFFECT, blurb, 0, -14); 
	if(++currentBlurb == blurbs.length){
		currentBlurb = 0;
	}
	blurb = blurbs[currentBlurb];
	blurb.effects[0] = new AnimEffect(FADE_EFFECT, blurb, 90, 2);
	blurb.setZ(10);
	initNextAnimation(-1000, 200);
	
}

function handlePrevLink(){
	if(inProgress){
		return;	
	}
	if(imageAnim){
		imageAnim.effects[0] = new AnimEffect(MOVE_X_EFFECT, imageAnim, -1000, -200); 
		imageAnimOld = imageAnim;
		imageAnim = null;
	}
	var blurb = blurbs[currentBlurb];
	blurb.effects[0] = new AnimEffect(FADE_EFFECT, blurb, 0, -14); 
	if(--currentBlurb < 0){
		currentBlurb =  (blurbs.length - 1);
	}
	blurb = blurbs[currentBlurb];
	blurb.effects[0] = new AnimEffect(FADE_EFFECT, blurb, 85, 2);
	blurb.setZ(10);
	initNextAnimation(3000, -200);
	
}

function initNextAnimation(startX, velX){
	var imgElem = document.getElementById("blurb" + currentBlurb + "-0");
	if(imgElem){
		imageAnim = new AnimatedElement(imgElem);
		imageAnim.setX(startX);	
		imageAnim.setZ(1);	
		imageAnim.effects[0] = new AnimEffect(MOVE_X_EFFECT, imageAnim, 85, velX); 
	}

	initAnimation();
}

function initAnimation(){
	//inProgress = true;
	clearInterval(animationIntervalId);
	animationIntervalId = setInterval(doAnimation, 50);
}

//TODO: Not working right...
function endAnimation(){
	//alert("anim done");
	clearInterval(animationIntervalId);
	inProgress = false;
}

function doAnimation(){
	var i = blurbs.length;
	var count = 0;
	if(imageAnim && imageAnim.effects[0]){
		imageAnim.effects[0].update();
		count++;
	}
	
	if(imageAnimOld && imageAnimOld.effects[0]){
		imageAnimOld.effects[0].update();
		count++;
	}
	
	while(i){
		var anim = blurbs[--i];
		if(anim.effects[0]){
			if(anim.effects[0].update()){
				count++;
				continue;
			}
			else{
				anim.effects[0] = null;
			}
			if(!count){
				endAnimation();
			}
		}
	}
}
