var lpSettings = new Object();

function fadeItem(itemNum) {
	var element = lpSettings.itemList[itemNum];
	var num = lpSettings.itemCount;

	if(YAHOO.util.Dom.getStyle(element,"display") == "block") {
		var to = 0;

	}
	else {
		element.style.opacity = "0";
		element.style.display = "block";
		element.firstChild.style.left = "730px";
		
		var to = 1;
	}
	if(to == 0) {
		var toUse = "0.1";
		var toMove = "-700";
		var toTime = "1";
	}
	if(to == 1) {
		var toUse = "1";
		var toMove = "0";
		var toTime = "5"
	}
	
	var opacAnim = new YAHOO.util.ColorAnim(element, {opacity : { to: toUse} }, 0.2, YAHOO.util.Easing.easeOut);
	var moveAnim = new YAHOO.util.Anim(element.firstChild, {left : { to: toMove} }, toTime, YAHOO.util.Easing.easeOut);

	var fadeNext = function() {
		
		if(to == 1 ) {
			
			fadeItem(itemNum);	
		}
		else {
			if(itemNum >= num-1) {
				fadeItem(0);
			}
			else {
				fadeItem(itemNum + 1);
			}
		}	
	}

	var fadeNextTime = function() {
		// animation ended, set animating status to false
		lpSettings.isAnimating = false;
		
		// continue anim if item was not selected
		if(!lpSettings.isSelected) {
			
			// if animation was fading in (to 1), set timeout of x seconds
			if(to == 1 ) {
				lpSettings.timeoutLp = window.setTimeout(fadeNext, 2000);
			}
			// if animation was fading out, start fadein of next item without timeout
			else {
				lpSettings.timeoutLp = window.setTimeout(fadeNext, 0);
			}
		}
		else {
			// exit the function
			return;
		}
	}
	
	var hideItem = function() {
		element.style.display = "none";
	}
	// if item was fading out, hide the element at the end of the animation
	if(to == 0) {
		opacAnim.onComplete.subscribe(hideItem);
	}

	moveAnim.onComplete.subscribe(fadeNextTime);
	
	if(!lpSettings.isAnimating) {
		opacAnim.animate();
		moveAnim.animate();
		lpSettings.isAnimating = true;
	}
}

var initLp = function() {
	
	if(document.getElementById("lp")) {
		lpSettings.rootNode = document.getElementById("lp");
		lpSettings.itemList = YAHOO.util.Dom.getElementsByClassName("lpitem", "li", lpSettings.rootNode);
		lpSettings.itemCount = lpSettings.itemList.length;
		lpSettings.currentItem = 0;
		
		// start first fading
		if(lpSettings.itemCount > 0) {
			// hide list holder if no items
			fadeItem(lpSettings.currentItem);
		}
		else {
			lpSettings.rootNode.style.display = "none";
		}

		for(var i=0; i<lpSettings.itemCount; i++) {
			// set behaviour controls on a elements
			var controlNode = lpSettings.itemList[i].firstChild;
			
			YAHOO.util.Event.addListener(controlNode, "mouseover", freezeLp);
			YAHOO.util.Event.addListener(controlNode, "mouseout", continueLp);
		}
	}
	
}

var freezeLp = function() {
	lpSettings.isSelected = true;
	window.clearTimeout(lpSettings.timeoutLp);
	this.style.textDecoration = "underline";
	for(var i=0; i<lpSettings.itemCount; i++) {
		if(lpSettings.itemList[i] == this.parentNode) {
			lpSettings.currentItem = i;
		}
	}
}

var continueLp = function() {
 lpSettings.isSelected = false;
 this.style.textDecoration = "none";
 // continue admin
 fadeItem(lpSettings.currentItem);
}


YAHOO.util.Event.addListener(window, "load", initLp);
