
XWK.Animation = function(step) {
	this.func = null;
	this.funcArgs = null;
	this.callback = null;
	this.callbackArgs = null;
	this.id = null
	this.every = 1;
	this.count = 0;

	this.list = new Array();
	this.proz = 0;
	this.val = 0;
	this.step = step;
	this.rev = false;
	this.ready = false;
	this.func = [this,"reCalc"];
}

var _pt = XWK.Animation.prototype = new XWK.RenderObject();

_pt.reCalc = function() {
	var dir = (this.rev)  ? -1 : 1;
	this.proz += this.step*dir;
	if (this.proz <= 0)
		this.proz = 0;
	if (this.proz >= 1) 
		this.proz = 1;
	this.calc();
	var res =  XWK.sendCallback(this.aniFunc,this.aniFuncArgs);
	if (res == "stop")
		return false
	return !(this.proz == 1 || this.proz == 0);
}

_pt.setFunction = function (func) {
	this.aniFunc = func;
//	alert(arguments);
	this.aniFuncArgs = new Array(this);//.concat(slice(1));
	this.func = [this,"reCalc"];
}

_pt.calc = function() {
	var res = this.proz;
	var temp;
	var args;
	for (var i=0; i<this.list.length; i++){
		temp = this.list[i];
		args = new Array().concat([this.proz],temp.args);
		switch(temp.mode) {
		case "+":
			res += sendCallback(temp.func,args);
			break;
		case "-":
			res -= sendCallback(temp.func,args);
			break;
		case "*":
			res *=  sendCallback(temp.func,args);
			break;
		case "=*":
			res = sendCallback(temp.func,res);
			break;
		case "/":
			res /= sendCallback(temp.func,args);
			break;
		default:
			res = sendCallback(temp.func,args);
		}
	}
	this.val = res;
}


/*************************************************************/
/*
_global.MathAni = new Object();
Animation.sinus = function (eingangswert,length,offset) {
	var ausgangswert; 
	if (length == undefined) length = 1;
	if (offset == undefined) offset = 0;
	ausgangswert = Math.sin (offset+ length*Math.PI*eingangswert);
	return (ausgangswert);
}

Animation.liniar = function (eingangswert,rev) {
	return ((rev) ? 1-eingangswert : eingangswert)
}

Animation.daempfer = function (eingangswert,stufe) {
	var ausgangswert;
	if (stufe == undefined) stufe = 2;
	var max = Math2.sqr(1,5);
	ausgangswert = max-Math2.sqr(1-eingangswert,stufe) ;
	return (ausgangswert);
}

Animation.verzoegerung = function (eingangswert,stufe) {
	var ausgangswert;
	ausgangswert = Math2.sqr(eingangswert,stufe) ;
	return (ausgangswert);
}

Animation.skurve = function (rein,stufe) {
	if (stufe == undefined) stufe = 3;
	var raus;
	var kurve = 1 - (Math.cos(rein*Math.PI)+1 )/2;
	kurve -= rein;
	var versch = 1-Math.abs(rein-.5)*2;
	raus = rein + kurve*(1+versch*versch*stufe);
	return raus;
}

Animation.skurve2 = function (rein,stufe) {
	if (stufe == undefined) stufe = 3;
	var raus;
	var kurve = 1 - (Math.cos(rein*Math.PI)+1 )/2;
	kurve -= rein;
	var versch = 1-Math.abs(rein-.5)*2;
	raus = rein + kurve*(1+Math2.sqr(versch,stufe));
	return raus;
}
*/

