var Class={create:function(){return function(){this.initialize.apply(this,arguments)}}};Object.extend=function(a,c){for(var b in c){a[b]=c[b]}return a};Function.prototype.bind=function(b){var a=this;return function(){return a.apply(b,arguments)}};if(!Array.prototype.forEach){Array.prototype.forEach=function(b,c){for(var a=0;a<this.length;a++){b.call(c,this[a],a)}}}Array.prototype.each=Array.prototype.forEach;String.prototype.camelize=function(){return this.replace(/-\D/gi,function(a){return a.charAt(a.length-1).toUpperCase()})};var $A=function(c){var b=[];for(var a=0;a<c.length;a++){b.push(c[a])}return b};function $(){if(arguments.length==1){return b(arguments[0])}var a=[];$c(arguments).each(function(c){a.push(b(c))});return a;function b(c){if(typeof c=="string"){c=document.getElementById(c)}return c}}if(!window.Element){var Element={}}Object.extend(Element,{remove:function(a){a=$(a);a.parentNode.removeChild(a)},hasClassName:function(a,b){a=$(a);return !!a.className.match(new RegExp("\\b"+b+"\\b"))},addClassName:function(a,b){a=$(a);if(!Element.hasClassName(a,b)){a.className=(a.className+" "+b)}},removeClassName:function(a,b){a=$(a);if(Element.hasClassName(a,b)){a.className=a.className.replace(b,"")}}});document.getElementsByClassName=function(b){var c=[];var a=document.getElementsByTagName("*");$A(a).each(function(d){if(Element.hasClassName(d,b)){c.push(d)}});return c};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},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.camelize()},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.Transitions={linear:function(e,a,g,f){return g*e/f+a},sineInOut:function(e,a,g,f){return -g/2*(Math.cos(Math.PI*e/f)-1)+a}};