var AJS=AJS||{};AJS.animation={running:[],queue:[],timer:null,duration:300,period:20,add:function(A){this.queue.push(A)},start:function(){if(this.timer!=null){return }this.running=this.queue;this.queue=[];jQuery.each(this.running,function(){if(this.onStart){this.onStart()}});var C=this;var B=new Date().getTime();var A=B+this.duration;this.timer=setInterval(function(){var D=new Date().getTime();var E=(D-B)/(A-B);if(E<=1){C.animate(E)}if(E>=1&&C.timer!=null){C.finish()}},this.period);return this.timer},finish:function(){clearInterval(this.timer);jQuery.each(this.running,function(){if(this.onFinish){this.onFinish()}});this.running=[];this.timer=null;if(this.queue.length>0){this.start()}},animate:function(A){jQuery.each(this.running,function(){if(this.animate){this.animate(AJS.animation.interpolate(A,this.start,this.end,this.reverse))}})},interpolate:function(D,C,A,B){if(typeof C!="undefined"&&typeof A!="undefined"){if(B){return A+D*(C-A)}else{return C+D*(A-C)}}return D},combine:function(A){return{animations:A,append:function(B){this.animations.push(B);return this},onStart:function(){jQuery.each(this.animations,function(){if(this.onStart){this.onStart()}})},onFinish:function(){jQuery.each(this.animations,function(){if(this.onFinish){this.onFinish()}})},animate:function(B){jQuery.each(this.animations,function(){if(this.animate){this.animate(AJS.animation.interpolate(B,this.start,this.end,this.reverse))}})}}}};