- // If a callback was provided, execute it
- if( done && z.o.complete && z.o.complete.constructor == Function )
- // Execute the complete function
- z.o.complete.apply( z.el );
- } else {
- var n = t - this.startTime;
- // Figure out where in the animation we are and set the number
- var p = n / z.o.duration;
- //if the easing exists the use it else use default linear easing
- if (jQuery.easing[z.o.easing])
- z.now = jQuery.easing[z.o.easing](p, n, firstNum, (lastNum-firstNum), z.o.duration);
- else
- z.now = jQuery.easingLinear(p, n, firstNum, (lastNum-firstNum), z.o.duration);
-
- // Perform the next step of the animation
- z.a();
- }
- };
-
- },
-
- easingLinear : function(p, n, firstNum, delta, duration) {
- var nm, m, a, s;
- return ((-Math.cos(p*Math.PI)/2) + 0.5) * delta + firstNum;
- },
-
- /**
- *
- * @param Integer p period step in animation
- * @param Integer n current time
- * @param Mixed firstNum begin value
- * @param Mixed delta change in
- * @param Integer duration duration
- */
- easing : {
- linear: function(p, n, firstNum, delta, duration) {
- var nm, m, a, s;
- return ((-Math.cos(p*Math.PI)/2) + 0.5) * delta + firstNum;
- },
-
- easein: function(p, n, firstNum, delta, duration) {
- return delta*(n/=duration)*n*n + firstNum;
- },
-
- easeou: function(p, n, firstNum, delta, duration) {
- return -delta * ((n=n/duration-1)*n*n*n - 1) + firstNum;
- },
-
- easeboth: function(p, n, firstNum, delta, duration) {
- if ((n/=duration/2) < 1)
- return delta/2*n*n*n*n + firstNum;
- return -delta/2 * ((n-=2)*n*n*n - 2) + firstNum;
- },
-
- bounceout: function(p, n, firstNum, delta, duration) {
- if ((n/=duration) < (1/2.75)) {
- return delta*(7.5625*n*n) + firstNum;
- } else if (n < (2/2.75)) {
- return delta*(7.5625*(n-=(1.5/2.75))*n + .75) + firstNum;
- } else if (n < (2.5/2.75)) {
- return delta*(7.5625*(n-=(2.25/2.75))*n + .9375) + firstNum;
- } else {
- return delta*(7.5625*(n-=(2.625/2.75))*n + .984375) + firstNum;
- }
- },
-
- bouncein: function(p, n, firstNum, delta, duration) {
- if (jQuery.easing.bounceout)
- return delta - jQuery.easing.bounceout (p, duration - n, 0, delta, duration) + firstNum;
- return firstNum + delta;
- },
-
- bounceboth: function(p, n, firstNum, delta, duration) {
- if (jQuery.easing.bouncein && jQuery.easing.bounceout)
- if (n < duration/2)
- return jQuery.easing.bouncein(p, n*2, 0, delta, duration) * .5 + firstNum;
- return jQuery.easing.bounceout(p, n*2-duration, 0, delta, duration) * .5 + delta*.5 + firstNum;
- return firstNum + delta;
- },
-
- elasticin: function(p, n, firstNum, delta, duration) {
- var nm, m, a, s;
- if (n == 0)
- return firstNum;
- if ((n/=duration)==1)
- return firstNum+delta;
- a = delta * 0.3;
- p=duration*.3;
- if (a < Math.abs(delta)) {
- a=delta;
- s=p/4;
- } else {
- s = p/(2*Math.PI) * Math.asin (delta/a);
- }
- return -(a*Math.pow(2,10*(n-=1)) * Math.sin( (n*duration-s)*(2*Math.PI)/p )) + firstNum;
- },
-
- elasticout:function(p, n, firstNum, delta, duration) {
- var nm, m, a, s;
- if (n==0)
- return firstNum;
- if ((n/=duration/2)==2)
- return firstNum + delta;
- a = delta * 0.3;
- p=duration*.3;
- if (a < Math.abs(delta)){
- a = delta;
- s=p/4;
- } else {
- s = p/(2*Math.PI) * Math.asin (delta/a);
- }
- return a*Math.pow(2,-10*n) * Math.sin( (n*duration-s)*(2*Math.PI)/p ) + delta + firstNum;
- },
-
- elasticboth: function(p, n, firstNum, delta, duration) {
- var nm, m, a, s;
- if (n==0)
- return firstNum;
- if ((n/=duration/2)==2)
- return firstNum + delta;
- a = delta * 0.3;
- p=duration*.3;
- if (a < Math.abs(delta)){
- a = delta;
- s=p/4;
- } else {
- s = p/(2*Math.PI) * Math.asin (delta/a);
- }
- if (n < 1) {
- return -.5*(a*Math.pow(2,10*(n-=1)) * Math.sin( (n*duration-s)*(2*Math.PI)/p )) + firstNum;