//class Animate
//----------Animation engine--------------------------------
function Animate(){
}//end function

Animate.prototype.setAnimation=function setAnimation(objectname,time,steps,easing,startpos,distance,func){
var obj,step,t,v,cmd,level,startOffset;

obj=div(objectname);
startOffset=0;
if(obj.animationTimeout){
	if(obj.animationTimeout>now()){
		startOffset=obj.animationTimeout-now()+200;
	}//end if
}//end if
for(var step=0;step<=steps;step=step+1){
t=startOffset+time*step/steps;
v=startpos+distance*easeOut(step/steps,easing);
cmd=func+"('"+objectname+"',"+Math.floor(v+0.5)+","+(step/steps)+")";
setTimeout(cmd,t);
}//next
obj.animationTimeout=now()+t;
}//end function

function easeOut(t,easing){
if(t>=1.0){
	return 1.0;
}else{
	switch(easing){
	case "linear":return easeOutLinear(t);
	case "accelerate":return easeOutAccelerate(t);
	case "break":return easeOutBreak(t);
	case "elastic":return easeOutElastic(t);
	case "bounce":return easeOutBounce(t);
	default:return easeOutAccelerate(t);
	}//end switch
}//end if
}//end function

function easeOutLinear(t){
return t;
}//end function

function easeOutAccelerate(t){
return (0.375+Math.sin(Math.PI*(1.8+0.7*t*t))/1.6);
}//end function

function easeOutBreak(t){
return (0.375+Math.sin(Math.PI*(1.81+0.8*t*t))/1.5);
}//end function

function easeOutElastic(t){
p=0.6;
if(t<=p){
	return 0.375+(Math.sin(Math.PI*(1.8+0.6*t*t/p/p))/1.6);
}else{
	return 1+(1-t)*0.08*Math.cos(Math.PI*(t*t-p)*10);
}//end if
}//end function

function easeOutBounce(t){
var p=0.25;
if(t<=p){
	return 0.375+(Math.sin(Math.PI*(1.8+0.6*t*t/p/p))/1.6);
}else{
	return 1-Math.abs((1-t)*0.2*Math.cos(Math.PI*(t*t-p+0.3)*5));
}//end if
}//end function

//end class