//BOUNCE
var Bounce={
	easeIn:function(t,b,c,d) {return c-this.easeOut(d-t,0,c,d)+b;},	
	easeOut:function(t,b,c,d) {
		if ((t/=d) < (1/2.75)) {
			return c*(7.5625*t*t) + b;
		} else if (t < (2/2.75)) {
			return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
		} else if (t < (2.5/2.75)) {
			return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
		} else {
			return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
		}
	},
	easeInOut:function (t, b, c, d) {
		if (t < d/2) return this.easeIn(t*2, 0, c, d) * .5 + b;
		return this.easeOut(t*2-d, 0, c, d) * .5 + c*.5 + b;
	}
};

// QUAD
var Quad = {
	easeIn : function(t,b,c,d) {return c*(t/=d)*t + b;},
	easeOut : function(t,b,c,d) {return -c *(t/=d)*(t-2) + b;},
	easeInOut: function(t, b, c, d){
		if ((t /= d / 2) < 1) 
			return c / 2 * t * t + b;
		return -c / 2 * ((--t) * (t - 2) - 1) + b;
	}
};

// LINEAIR

function easeNoneLinear( t, b, c, d)
{
	return c*t/d + b;
};
/*/////////////////////////////////////////////////////////////////*/

var Slide={	
	_cleanEffect : function(el) {
		
		if( typeof el["SLIDE_it"] != 'undefined' ) {
			
			clearInterval( el.SLIDE_it );
		}
	},

	on : function(el,position,oncomplete) {
		Slide._cleanEffect( el );
		el.SLt=0;
		el.SLIDE_it = setInterval(function() {
			Slide.setSlideOn(el,position,oncomplete)
		},30);										
	},
										
	setSlideOn : function (el, position, oncomplete) {
		el.SLto = position;
		el.SLfr = el.offsetLeft;
		if(el.SLt >= 1){
			clearInterval(el.SLIDE_it);
			if( oncomplete ) {
				oncomplete.call( el );
			}
		} else {
			el.SLfr = Quad.easeInOut( el.SLt, el.SLfr, el.SLto - el.SLfr, 1 );
			el.SLt += .05;
			el.style.left = el.SLfr + "px";
		}
	},
	
	horizontalLineair : function(el,position,oncomplete) {
		Slide._cleanEffect( el );
		el.SLt=0;
		el.SLIDE_it = setInterval(function() {
			Slide.setSlideOn(el,position,oncomplete)
		},50);										
	},
										
	setSlideHorizontalLineair : function (el, position, oncomplete) {
		el.SLto = position;
		el.SLfr = el.offsetLeft;
		if(el.SLt >= 1){
			clearInterval(el.SLIDE_it);
			if( oncomplete ) {
				oncomplete.call( el );
			}
		} else {
			el.SLfr = easeNoneLinear( el.SLt, el.SLfr, el.SLto - el.SLfr, 1 );
			el.SLt += .05;
			el.style.left = el.SLfr + "px";
		}
	},
	
	out : function(el,position,oncomplete) {
		Slide._cleanEffect( el );
		el.SLt=0;
		el.SLIDE_it = setInterval(function() {
			Slide.setSlideOut(el,position,oncomplete)
		},30);										
	},
										
	setSlideOut : function (el,position,oncomplete){
		el.SLto = position;
		el.SLfr = el.offsetLeft ;
		
		if(el.SLt >= 1){
			clearInterval(el.SLIDE_it);
			if( oncomplete ) {
				oncomplete.call( el );
			}
		} else {
		
			el.SLfr = Quad.easeInOut( el.SLt, el.SLfr, el.SLto - el.SLfr, 1 )
			el.SLt += .05;
			el.style.left = el.SLfr + "px";
			
		}
	},
	
	up : function(el,position,oncomplete) {
		Slide._cleanEffect( el );
		el.SLt=0;
		el.SLIDE_it = setInterval(function() {
			Slide.setSlideUp(el,position,oncomplete)
		},30);										
	},
										
	setSlideUp : function (el,position,oncomplete){
		el.SLto = position;
		el.SLfr = el.offsetTop ;
		//console.log( "slide out  " + el.offsetLeft + " " + position );
		if(el.SLt >= 1){
			clearInterval(el.SLIDE_it);
			if( oncomplete ) {
				oncomplete.call( el );
			}
		} else {
		
			el.SLfr = Quad.easeInOut( el.SLt, el.SLfr, el.SLto - el.SLfr, 1 )
			el.SLt += .05;
			el.style.top = el.SLfr + "px";
			
		}
	},
	
	down : function(el,position,oncomplete) {
		Slide._cleanEffect( el );
		el.SLt=0;
		el.SLIDE_it = setInterval(function() {
			Slide.setSlideUp(el,position,oncomplete)
		},30);										
	},
										
	setSlideDown : function (el,position,oncomplete){
		el.SLto = position;
		el.SLfr = el.offsetTop ;
		if(el.SLt >= 1){
			clearInterval(el.SLIDE_it);
			if( oncomplete ) {
				oncomplete.call( el );
			}
		} else {
		
			el.SLfr = Quad.easeInOut( el.SLt, el.SLfr, el.SLto - el.SLfr, 1 )
			el.SLt += .05;
			el.style.top = el.SLfr + "px";
			
		}
	},
	
	
	
	diagonal : function(el,position1,position2,oncomplete) {
		Slide._cleanEffect( el );
		el.SLt=0;
		el.SLIDE_it = setInterval(function() {
			Slide.setSlideDiagonal(el,position1,position2,oncomplete)
		},30);										
	},
										
	setSlideDiagonal : function (el,position1,position2, oncomplete) {
		el.SLto = position1;
		el.SLto2 = position2;
		el.SLfr = el.offsetLeft;
		el.SLfr2 = el.offsetTop ;
		if(el.SLt >= 1){
			clearInterval(el.SLIDE_it);
			if( oncomplete ) {
				oncomplete.call( el );
			}
		} else {
			el.SLfr = Quad.easeInOut( el.SLt, el.SLfr, el.SLto - el.SLfr, 1 );
			el.SLfr2 = Quad.easeInOut( el.SLt, el.SLfr2, el.SLto2 - el.SLfr2, 1 );
			el.SLt += .05;
			el.style.left = el.SLfr + "px";
			el.style.top = el.SLfr2 + "px";
		}
	}
	
	
};



var Let={	

	_cleanEffect : function(el) {
		
		if( typeof el["LET_it"] != 'undefined' ) {
			
			clearInterval( el.LET_it );
		}
	},

	out : function(el,size,oncomplete) {
		Let._cleanEffect( el );
		el.SLt=0;
		el.LET_it = setInterval(function() {
			Let.setLetOut(el,size,oncomplete)
		},30);										
	},
										
	setLetOut : function (el, size, oncomplete) {
		el.SLto = size;
		el.SLfr = el.width;
		
		if(el.SLt >= 1){
			clearInterval(el.SLIDE_it);
			if( oncomplete ) {
				oncomplete.call( el );
			}
		} else {
			el.SLfr = Quad.easeInOut( el.SLt, el.SLfr, el.SLto - el.SLfr, 1 );
			el.SLt += .05;
			el.style.width = el.SLfr + "px";
		}
	}
};

/*//////////////////////////////////////////////////////////////////////*/



function Cron(gap) {
	this.anim = -1;
	this.time = 0;
	this.gap = gap || .05;
};

Cron.prototype.start = function( anims, period, oncomplete ) {
	var self = this;
	clearInterval(this.anim);
	this.anim = setInterval(function() {
		if( self.time > 1){
			clearInterval( self.anim );
			if( oncomplete ) {
				oncomplete.call(self);
			}
		} else {
			var i=anims.length;
			while( i-- ) {
				anims[i].tic.call(anims[i],self.time);
			}
		
			self.time += self.gap;
		}
	},period);
};


function AnimSlideTop(element,from,to) {
	this.element = element;
	this.to=to;
	this.from=from;
};

AnimSlideTop.prototype.tic = function( time ) {
	this.from = Quad.easeInOut( time, this.from, this.to - this.from, 1 );
	this.element.style.top = this.from + "px";
};

function AnimSlideLeft(element,from,to) {
	this.element = element;
	this.to=to;
	this.from=from;
};

AnimSlideLeft.prototype.tic = function( time ) {
	this.from = Quad.easeInOut( time, this.from, this.to - this.from, 1 );
	this.element.style.left = this.from + "px";
};

function AnimSlideLeftLinear(element,from,to) {
	this.element = element;
	this.to=to;
	this.from=from;
};

AnimSlideLeftLinear.prototype.tic = function( time ) {
	this.from = easeNoneLinear( time, this.from, this.to - this.from, 1 );
	this.element.style.left = this.from + "px";
};


function AnimLetOut(element,from,to) {
	this.element = element;
	this.to=to;
	this.from=from;
};

AnimLetOut.prototype.tic = function( time ) {
	this.from = Quad.easeInOut( time, this.from, this.to - this.from, 1 );
	this.element.style.width = this.from + "px";
};

function AnimLetOutHeight(element,from,to) {
	this.element = element;
	this.to=to;
	this.from=from;
};

AnimLetOutHeight.prototype.tic = function( time ) {
	this.from = Quad.easeInOut( time, this.from, this.to - this.from, 1 );
	this.element.style.height = this.from + "px";
};
