// JavaScript Document

function doWidthChangeMem(elem,startWidth,endWidth,steps,intervals,powr) {
//Width changer with Memory by www.hesido.com
	if (elem.widthChangeMemInt) window.clearInterval(elem.widthChangeMemInt);
	var actStep = 0;
	elem.widthChangeMemInt = window.setInterval(
		function() {
			elem.currentWidth = easeInOut(startWidth,endWidth,steps,actStep,powr);
			elem.style.width = elem.currentWidth+"px";
			actStep++;
			if (actStep > steps) window.clearInterval(elem.widthChangeMemInt);
		}
		,intervals)

}


function easeInOut(minValue,maxValue,totalSteps,actualStep,powr) {
//Generic Animation Step Value Generator By www.hesido.com
	var delta = maxValue - minValue;
	var stepp = minValue+(Math.pow(((1 / totalSteps)*actualStep),powr)*delta);
	return Math.ceil(stepp)
}


function doPosChangeMem(elem,startPos,endPos,steps,intervals,powr) {
//Position changer with Memory by www.hesido.com
	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 doOpacChangeMem(elem,startPercent,endPercent,steps,intervals,powr){
	if (elem.opacChangeMemInt) window.clearInterval(elem.opacChangeMemInt);
	var actStep = 0;
	
	// prevent flickering by forcing the element to be either transparent or opaque before the animation starts
	if (startPercent == 0) {
	  elem.style.visibility = 'visible';
	  if (elem.style) {
		elem.style.filter='progid:DXImageTransform.Microsoft.Alpha(Opacity=0)'; //IE8
		//elem.style.filter = 'alpha(opacity=0)';
		elem.style.opacity = (0); 
	  }
	  else {
		  elem.filters.alpha.opacity = 0; //IE7 or older
	  }
	}
	if (startPercent == 100) {
	  elem.style.visibility = 'visible';
	  if (elem.style) {
		elem.style.filter='progid:DXImageTransform.Microsoft.Alpha(Opacity=100)'; //IE8
		//elem.style.filter = 'alpha(opacity=0)';
		elem.style.opacity = (100); 
	  }
	  else {
		  elem.filters.alpha.opacity = 1; //IE7 or older
	  }
	}
	
	
	elem.opacChangeMemInt = window.setInterval(
		function() {
			elem.currentOpac = easeInOut(startPercent,endPercent,steps,actStep,powr);
			if (elem.style) {
				elem.style.filter='progid:DXImageTransform.Microsoft.Alpha(Opacity=' + elem.currentOpac + ')'; //IE8
				//elem.style.filter = 'alpha(opacity=' + elem.currentOpac + ')';
				elem.style.opacity = (elem.currentOpac / 100); 
			}
			else {
				elem.filters.alpha.opacity = elem.currentOpac; //IE7 or older
				
			}
			actStep++;
			
			if (actStep > steps) {
				window.clearInterval(elem.opacChangeMemInt);
				if (elem.currentOpac < 1) elem.style.visibility = 'hidden';
				
				
			}
		}
		,intervals)
}
