/*
All scripts "based" on "An Introduction to Javascript Animation"
http://www.hesido.com/web.php?page=javascriptanimation
by www.hesido.com
*/

//Opacity must be set from 0 to 10 it is then multiplied or divided depending on the browser 
function doImgFade(elem,swpImg, startOpacity,endOpacity,steps,intervals,powr) {
	if (elem.imgFadeInt) window.clearInterval(elem.imgFadeInt);
	var actStep = 0;
	elem.imgFadeInt = window.setInterval(
		function() {	
			elem.src=swpImg;			
			elem.currentOpacity = easeInOut(startOpacity,endOpacity,steps,actStep,powr);
			elem.style.opacity = (elem.currentOpacity/10);	
			if (document.all) {		
				elem.style.filter ="alpha(opacity= "+elem.currentOpacity*10+")"
			}
			actStep++;
			if (actStep > steps) window.clearInterval(elem.imgFadeInt);			
		}
		,intervals)
}



function doTxtFade(elem,startRGB,endRGB,steps,intervals,powr) {
	if (elem.txtFadeInt) window.clearInterval(elem.txtFadeInt);
	var actStep = 0;
	elem.txtFadeInt = window.setInterval(
		function() {
			elem.currentbgRGB = [
				easeInOut(startRGB[0],endRGB[0],steps,actStep,powr),
				easeInOut(startRGB[1],endRGB[1],steps,actStep,powr),
				easeInOut(startRGB[2],endRGB[2],steps,actStep,powr)
				];
			elem.style.color = "rgb("+
				elem.currentbgRGB[0]+","+
				elem.currentbgRGB[1]+","+
				elem.currentbgRGB[2]+")";
			actStep++;
			if (actStep > steps) window.clearInterval(elem.txtFadeInt);
		}
		,intervals)
}

function doHeightChangeMem(elem,startHeight,endHeight,steps,intervals,powr) {
	var allMenuItems = document.getElementById("rightNav").getElementsByTagName("li")
	//If the menu is closed
	if(elem.offsetHeight < 20) {
		//close all menus
		for (i=0;i<allMenuItems.length;i++) { 	
			if (allMenuItems[i].className) {	
				//Must be the same height as the li element in the css and the  offsetHeight returned by the element
				allMenuItems[i].style.height = startHeight +"px";
			}		
		}
		if (elem.heightChangeMemInt) window.clearInterval(elem.heightChangeMemInt);
		var actStep = 0;
		elem.heightChangeMemInt = window.setInterval(
			function() {
				elem.currentHeight = easeInOut(startHeight,endHeight,steps,actStep,powr);
				elem.style.height = elem.currentHeight+"px";
				actStep++;
				if (actStep > steps) window.clearInterval(elem.heightChangeMemInt);
			}
			,intervals)
	}
	//If the menu is open
	else {
		if (elem.heightChangeMemInt) window.clearInterval(elem.heightChangeMemInt);
		var actStep = startHeight;
		elem.heightChangeMemInt = window.setInterval(
			function() {
				elem.currentHeight = easeInOut(startHeight,endHeight,steps,actStep,powr);
				elem.style.height = elem.currentHeight+"px";
				actStep--;
				
				if (actStep < 0) window.clearInterval(elem.heightChangeMemInt);
			}
			,intervals)
	}

}



function doPosChangeMem(elem,startPos,endPos,steps,intervals,powr) {
	if (elem.posChangeMemInt) window.clearInterval(elem.posChangeMemInt);
	var actStep = 0;
	elem.posChangeMemInt = window.setInterval(
		function() {
			elem.currentPos = [
				easeInOut(startPos[0],endPos[0],steps,actStep,powr),
				easeInOut(startPos[1],endPos[1],steps,actStep,powr)
				];
			elem.style.left = elem.currentPos[0]+"px";
			elem.style.top = elem.currentPos[1]+"px";
			actStep++;
			if (actStep > steps) window.clearInterval(elem.posChangeMemInt);
		}
		,intervals)

}

function easeInOut(minValue,maxValue,totalSteps,actualStep,powr) {
	var delta = maxValue - minValue;
	var stepp = minValue+(Math.pow(((1 / totalSteps)*actualStep),powr)*delta);
	return Math.ceil(stepp)
}