var Fx=fx={};Fx.Base=function(){};Fx.Base.prototype={setOptions:function(a){this.options=Object.extend({onStart:function(){},onComplete:function(){},transition:Fx.Transitions.sineInOut,duration:500,unit:"px",wait:true,fps:50},a||{})},step:function(){var a=new Date().getTime();if(a<this.time+this.options.duration){this.cTime=a-this.time;this.setNow()}else{setTimeout(this.options.onComplete.bind(this,this.element),10);this.clearTimer();this.now=this.to}this.increase()},setNow:function(){this.now=this.compute(this.from,this.to)},compute:function(c,b){var a=b-c;return this.options.transition(this.cTime,c,a,this.options.duration)},clearTimer:function(){clearInterval(this.timer);this.timer=null;return this},_start:function(b,a){if(!this.options.wait){this.clearTimer()}if(this.timer){return}setTimeout(this.options.onStart.bind(this,this.element),10);this.from=b;this.to=a;this.time=new Date().getTime();this.timer=setInterval(this.step.bind(this),Math.round(1000/this.options.fps));return this},start:function(a){return this._start(this.now||0,a)},custom:function(b,a){return this._start(b,a)},set:function(a){this.now=a;this.increase();return this},hide:function(){return this.set(0)},setStyle:function(c,b,a){if(b=="opacity"){if(a==0&&c.style.visibility!="hidden"){c.style.visibility="hidden"}else{if(c.style.visibility!="visible"){c.style.visibility="visible"}}if(window.ActiveXObject){c.style.filter="alpha(opacity="+a*100+")"}c.style.opacity=a}else{c.style[b]=a+this.options.unit}}};Fx.Style=Class.create();Fx.Style.prototype=Object.extend(new Fx.Base(),{initialize:function(b,c,a){this.element=$(b);this.setOptions(a);this.property=c},increase:function(){this.setStyle(this.element,this.property,this.now)}});Fx.Styles=Class.create();Fx.Styles.prototype=Object.extend(new Fx.Base(),{initialize:function(b,a){this.element=$(b);this.setOptions(a);this.now={}},setNow:function(){for(p in this.from){this.now[p]=this.compute(this.from[p],this.to[p])}},custom:function(a){if(this.timer&&this.options.wait){return}var c={};var b={};for(p in a){c[p]=a[p][0];b[p]=a[p][1]}return this._start(c,b)},increase:function(){for(var a in this.now){this.setStyle(this.element,a,this.now[a])}}});Fx.Height=Class.create();Fx.Height.prototype=Object.extend(new Fx.Base(),{initialize:function(b,a){this.element=$(b);this.setOptions(a);this.element.style.overflow="hidden"},toggle:function(){if(this.element.offsetHeight>0){return this.custom(this.element.offsetHeight,0)}else{return this.custom(0,this.element.scrollHeight)}},show:function(){return this.set(this.element.scrollHeight)},increase:function(){this.setStyle(this.element,"height",this.now)}});Fx.Width=Class.create();Fx.Width.prototype=Object.extend(new Fx.Base(),{initialize:function(b,a){this.element=$(b);this.setOptions(a);this.element.style.overflow="hidden";this.iniWidth=this.element.offsetWidth},toggle:function(){if(this.element.offsetWidth>0){return this.custom(this.element.offsetWidth,0)}else{return this.custom(0,this.iniWidth)}},show:function(){return this.set(this.iniWidth)},increase:function(){this.setStyle(this.element,"width",this.now)}});Fx.Opacity=Class.create();Fx.Opacity.prototype=Object.extend(new Fx.Base(),{initialize:function(b,a){this.element=$(b);this.setOptions(a);this.now=1},toggle:function(){if(this.now>0){return this.custom(1,0)}else{return this.custom(0,1)}},show:function(){return this.set(1)},increase:function(){this.setStyle(this.element,"opacity",this.now)}});Fx.Transitions={linear:function(e,a,g,f){return g*e/f+a},quadIn:function(e,a,g,f){return g*(e/=f)*e+a},quadOut:function(e,a,g,f){return -g*(e/=f)*(e-2)+a},quadInOut:function(e,a,g,f){if((e/=f/2)<1){return g/2*e*e+a}return -g/2*((--e)*(e-2)-1)+a},cubicIn:function(e,a,g,f){return g*(e/=f)*e*e+a},cubicOut:function(e,a,g,f){return g*((e=e/f-1)*e*e+1)+a},cubicInOut:function(e,a,g,f){if((e/=f/2)<1){return g/2*e*e*e+a}return g/2*((e-=2)*e*e+2)+a},quartIn:function(e,a,g,f){return g*(e/=f)*e*e*e+a},quartOut:function(e,a,g,f){return -g*((e=e/f-1)*e*e*e-1)+a},quartInOut:function(e,a,g,f){if((e/=f/2)<1){return g/2*e*e*e*e+a}return -g/2*((e-=2)*e*e*e-2)+a},quintIn:function(e,a,g,f){return g*(e/=f)*e*e*e*e+a},quintOut:function(e,a,g,f){return g*((e=e/f-1)*e*e*e*e+1)+a},quintInOut:function(e,a,g,f){if((e/=f/2)<1){return g/2*e*e*e*e*e+a}return g/2*((e-=2)*e*e*e*e+2)+a},sineIn:function(e,a,g,f){return -g*Math.cos(e/f*(Math.PI/2))+g+a},sineOut:function(e,a,g,f){return g*Math.sin(e/f*(Math.PI/2))+a},sineInOut:function(e,a,g,f){return -g/2*(Math.cos(Math.PI*e/f)-1)+a},expoIn:function(e,a,g,f){return(e==0)?a:g*Math.pow(2,10*(e/f-1))+a},expoOut:function(e,a,g,f){return(e==f)?a+g:g*(-Math.pow(2,-10*e/f)+1)+a},expoInOut:function(e,a,g,f){if(e==0){return a}if(e==f){return a+g}if((e/=f/2)<1){return g/2*Math.pow(2,10*(e-1))+a}return g/2*(-Math.pow(2,-10*--e)+2)+a},circIn:function(e,a,g,f){return -g*(Math.sqrt(1-(e/=f)*e)-1)+a},circOut:function(e,a,g,f){return g*Math.sqrt(1-(e=e/f-1)*e)+a},circInOut:function(e,a,g,f){if((e/=f/2)<1){return -g/2*(Math.sqrt(1-e*e)-1)+a}return g/2*(Math.sqrt(1-(e-=2)*e)+1)+a},elasticIn:function(g,e,k,j,f,i){if(g==0){return e}if((g/=j)==1){return e+k}if(!i){i=j*0.3}if(!f){f=1}if(f<Math.abs(k)){f=k;var h=i/4}else{var h=i/(2*Math.PI)*Math.asin(k/f)}return -(f*Math.pow(2,10*(g-=1))*Math.sin((g*j-h)*(2*Math.PI)/i))+e},elasticOut:function(g,e,k,j,f,i){if(g==0){return e}if((g/=j)==1){return e+k}if(!i){i=j*0.3}if(!f){f=1}if(f<Math.abs(k)){f=k;var h=i/4}else{var h=i/(2*Math.PI)*Math.asin(k/f)}return f*Math.pow(2,-10*g)*Math.sin((g*j-h)*(2*Math.PI)/i)+k+e},elasticInOut:function(g,e,k,j,f,i){if(g==0){return e}if((g/=j/2)==2){return e+k}if(!i){i=j*(0.3*1.5)}if(!f){f=1}if(f<Math.abs(k)){f=k;var h=i/4}else{var h=i/(2*Math.PI)*Math.asin(k/f)}if(g<1){return -0.5*(f*Math.pow(2,10*(g-=1))*Math.sin((g*j-h)*(2*Math.PI)/i))+e}return f*Math.pow(2,-10*(g-=1))*Math.sin((g*j-h)*(2*Math.PI)/i)*0.5+k+e},backIn:function(e,a,h,g,f){if(!f){f=1.70158}return h*(e/=g)*e*((f+1)*e-f)+a},backOut:function(e,a,h,g,f){if(!f){f=1.70158}return h*((e=e/g-1)*e*((f+1)*e+f)+1)+a},backInOut:function(e,a,h,g,f){if(!f){f=1.70158}if((e/=g/2)<1){return h/2*(e*e*(((f*=(1.525))+1)*e-f))+a}return h/2*((e-=2)*e*(((f*=(1.525))+1)*e+f)+2)+a},bounceIn:function(e,a,g,f){return g-Fx.Transitions.bounceOut(f-e,0,g,f)+a},bounceOut:function(e,a,g,f){if((e/=f)<(1/2.75)){return g*(7.5625*e*e)+a}else{if(e<(2/2.75)){return g*(7.5625*(e-=(1.5/2.75))*e+0.75)+a}else{if(e<(2.5/2.75)){return g*(7.5625*(e-=(2.25/2.75))*e+0.9375)+a}else{return g*(7.5625*(e-=(2.625/2.75))*e+0.984375)+a}}}},bounceInOut:function(e,a,g,f){if(e<f/2){return Fx.Transitions.bounceIn(e*2,0,g,f)*0.5+a}return Fx.Transitions.bounceOut(e*2-f,0,g,f)*0.5+g*0.5+a}};
