Effect={};Effect2=Effect;Effect.Transitions={};Effect.Transitions.linear=function(a){return a};Effect.Transitions.sinoidal=function(a){return(-Math.cos(a*Math.PI)/2)+0.5};Effect.Transitions.reverse=function(a){return 1-a};Effect.Transitions.flicker=function(a){return((-Math.cos(a*Math.PI)/4)+0.75)+Math.random(0.25)};Effect.Transitions.wobble=function(a){return(-Math.cos(a*Math.PI*(9*a))/2)+0.5};Effect.Transitions.pulse=function(a){return(Math.floor(a*10)%2==0?(a*10-Math.floor(a*10)):1-(a*10-Math.floor(a*10)))};Effect.Transitions.none=function(a){return 0};Effect.Transitions.full=function(a){return 1};Element.makePositioned=function(a){a=$(a);if(a.style.position==""){a.style.position="relative"}};Element.makeClipping=function(a){a=$(a);a._overflow=a.style.overflow||"visible";if(a._overflow!="hidden"){a.style.overflow="hidden"}};Element.undoClipping=function(a){a=$(a);if(a._overflow!="hidden"){a.style.overflow=a._overflow}};Effect.Base=function(){};Effect.Base.prototype={setOptions:function(a){this.options=Object.extend({transition:Effect.Transitions.sinoidal,duration:0.5,fps:25,sync:false,from:0,to:1},a||{})},start:function(a){this.setOptions(a||{});this.currentFrame=0;this.startOn=new Date().getTime();this.finishOn=this.startOn+(this.options.duration*1000);if(this.options.beforeStart){this.options.beforeStart(this)}if(!this.options.sync){this.loop()}},loop:function(){var c=new Date().getTime();if(c>=this.finishOn){this.render(1);if(this.finish){this.finish()}if(this.options.afterFinish){this.options.afterFinish(this)}return}var b=(c-this.startOn)/(this.finishOn-this.startOn);var a=Math.round(b*this.options.fps*this.options.duration);if(a>this.currentFrame){this.render(b);this.currentFrame=a}this.timeout=setTimeout(this.loop.bind(this),10)},render:function(a){if(this.options.transition){a=this.options.transition(a)}a*=(this.options.to-this.options.from);a+=this.options.from;if(this.options.beforeUpdate){this.options.beforeUpdate(this)}if(this.update){this.update(a)}if(this.options.afterUpdate){this.options.afterUpdate(this)}},cancel:function(){if(this.timeout){clearTimeout(this.timeout)}}};Effect.Parallel=Class.create();Object.extend(Object.extend(Effect.Parallel.prototype,Effect.Base.prototype),{initialize:function(a){this.effects=a||[];this.start(arguments[1])},update:function(a){for(var b=0;b<this.effects.length;b++){this.effects[b].render(a)}},finish:function(a){for(var b=0;b<this.effects.length;b++){if(this.effects[b].finish){this.effects[b].finish(a)}}}});Effect.Opacity=Class.create();Object.extend(Object.extend(Effect.Opacity.prototype,Effect.Base.prototype),{initialize:function(a){this.element=$(a);options=Object.extend({from:0,to:1},arguments[1]||{});this.start(options)},update:function(a){this.setOpacity(a)},setOpacity:function(a){a=(a==1)?0.99999:a;this.element.style.opacity=a;this.element.style.filter="alpha(opacity:"+a*100+")"}});Effect.MoveBy=Class.create();Object.extend(Object.extend(Effect.MoveBy.prototype,Effect.Base.prototype),{initialize:function(b,a,c){this.element=$(b);this.originalTop=parseFloat(this.element.style.top||"0");this.originalLeft=parseFloat(this.element.style.left||"0");this.toTop=a;this.toLeft=c;Element.makePositioned(this.element);this.start(arguments[3])},update:function(a){topd=this.toTop*a+this.originalTop;leftd=this.toLeft*a+this.originalLeft;this.setPosition(topd,leftd)},setPosition:function(b,a){this.element.style.top=b+"px";this.element.style.left=a+"px"}});Effect.Scale=Class.create();Object.extend(Object.extend(Effect.Scale.prototype,Effect.Base.prototype),{initialize:function(a,b){this.element=$(a);options=Object.extend({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:"box",scaleFrom:100},arguments[2]||{});this.originalTop=this.element.offsetTop;this.originalLeft=this.element.offsetLeft;if(this.element.style.fontSize==""){this.sizeEm=1}if(this.element.style.fontSize&&this.element.style.fontSize.indexOf("em")>0){this.sizeEm=parseFloat(this.element.style.fontSize)}this.factor=(b/100)-(options.scaleFrom/100);if(options.scaleMode=="box"){this.originalHeight=this.element.clientHeight;this.originalWidth=this.element.clientWidth}else{if(options.scaleMode=="contents"){this.originalHeight=this.element.scrollHeight;this.originalWidth=this.element.scrollWidth}else{this.originalHeight=options.scaleMode.originalHeight;this.originalWidth=options.scaleMode.originalWidth}}this.start(options)},update:function(a){currentScale=(this.options.scaleFrom/100)+(this.factor*a);if(this.options.scaleContent&&this.sizeEm){this.element.style.fontSize=this.sizeEm*currentScale+"em"}this.setDimensions(this.originalWidth*currentScale,this.originalHeight*currentScale)},setDimensions:function(b,a){if(this.options.scaleX){this.element.style.width=b+"px"}if(this.options.scaleY){this.element.style.height=a+"px"}if(this.options.scaleFromCenter){topd=(a-this.originalHeight)/2;leftd=(b-this.originalWidth)/2;if(this.element.style.position=="absolute"){if(this.options.scaleY){this.element.style.top=this.originalTop-topd+"px"}if(this.options.scaleX){this.element.style.left=this.originalLeft-leftd+"px"}}else{if(this.options.scaleY){this.element.style.top=-topd+"px"}if(this.options.scaleX){this.element.style.left=-leftd+"px"}}}}});Effect.Highlight=Class.create();Object.extend(Object.extend(Effect.Highlight.prototype,Effect.Base.prototype),{initialize:function(d){this.element=$(d);var a="#ffffff";var f=this.element.style.backgroundColor;if(f&&f.slice(0,4)=="rgb("){a="#";var e=f.slice(4,f.length-1).split(",");var c=0;do{a+=parseInt(e[c]).toColorPart()}while(++c<3)}var b=Object.extend({startcolor:"#ffff99",endcolor:a,restorecolor:f},arguments[1]||{});this.colors_base=[parseInt(b.startcolor.slice(1,3),16),parseInt(b.startcolor.slice(3,5),16),parseInt(b.startcolor.slice(5),16)];this.colors_delta=[parseInt(b.endcolor.slice(1,3),16)-this.colors_base[0],parseInt(b.endcolor.slice(3,5),16)-this.colors_base[1],parseInt(b.endcolor.slice(5),16)-this.colors_base[2]];this.start(b)},update:function(a){var b=[Math.round(this.colors_base[0]+(this.colors_delta[0]*a)),Math.round(this.colors_base[1]+(this.colors_delta[1]*a)),Math.round(this.colors_base[2]+(this.colors_delta[2]*a))];this.element.style.backgroundColor="#"+b[0].toColorPart()+b[1].toColorPart()+b[2].toColorPart()},finish:function(){this.element.style.backgroundColor=this.options.restorecolor}});Effect.ScrollTo=Class.create();Object.extend(Object.extend(Effect.ScrollTo.prototype,Effect.Base.prototype),{initialize:function(b){this.element=$(b);Position.prepare();var c=Position.cumulativeOffset(this.element);var a=window.innerHeight?window.height-window.innerHeight:document.body.scrollHeight-(document.documentElement.clientHeight?document.documentElement.clientHeight:document.body.clientHeight);this.scrollStart=Position.deltaY;this.delta=(c[1]>a?a:c[1])-this.scrollStart;this.start(arguments[1]||{})},update:function(a){Position.prepare();window.scrollTo(Position.deltaX,this.scrollStart+(a*this.delta))}});Effect.Fade=function(a){options=Object.extend({from:1,to:0,afterFinish:function(b){Element.hide(b.element);b.setOpacity(1)}},arguments[1]||{});return new Effect.Opacity(a,options)};Effect.Appear=function(a){options=Object.extend({from:0,to:1,beforeStart:function(b){b.setOpacity(0);Element.show(b.element)},afterUpdate:function(b){Element.show(b.element)}},arguments[1]||{});return new Effect.Opacity(a,options)};Effect.Puff=function(a){return new Effect.Parallel([new Effect.Scale(a,200,{sync:true,scaleFromCenter:true}),new Effect.Opacity(a,{sync:true,to:0,from:1})],{duration:1,afterUpdate:function(b){b.effects[0].element.style.position="absolute"},afterFinish:function(b){Element.hide(b.effects[0].element)}})};Effect.BlindUp=function(a){Element.makeClipping(a);return new Effect.Scale(a,0,Object.extend({scaleContent:false,scaleX:false,afterFinish:function(b){Element.hide(b.element);Element.undoClipping(b.element)}},arguments[1]||{}))};Effect.BlindDown=function(a){$(a).style.height="0px";Element.makeClipping(a);Element.show(a);return new Effect.Scale(a,100,Object.extend({scaleContent:false,scaleX:false,scaleMode:"contents",scaleFrom:0,afterFinish:function(b){Element.undoClipping(b.element)}},arguments[1]||{}))};Effect.SwitchOff=function(a){return new Effect.Appear(a,{duration:0.4,transition:Effect.Transitions.flicker,afterFinish:function(b){b.element.style.overflow="hidden";new Effect.Scale(b.element,1,{duration:0.3,scaleFromCenter:true,scaleX:false,scaleContent:false,afterUpdate:function(c){if(c.element.style.position==""){c.element.style.position="relative"}},afterFinish:function(c){Element.hide(c.element)}})}})};Effect.DropOut=function(a){return new Effect.Parallel([new Effect.MoveBy(a,100,0,{sync:true}),new Effect.Opacity(a,{sync:true,to:0,from:1})],{duration:0.5,afterFinish:function(b){Element.hide(b.effects[0].element)}})};Effect.Shake=function(a){return new Effect.MoveBy(a,0,20,{duration:0.05,afterFinish:function(b){new Effect.MoveBy(b.element,0,-40,{duration:0.1,afterFinish:function(c){new Effect.MoveBy(c.element,0,40,{duration:0.1,afterFinish:function(d){new Effect.MoveBy(d.element,0,-40,{duration:0.1,afterFinish:function(e){new Effect.MoveBy(e.element,0,40,{duration:0.1,afterFinish:function(f){new Effect.MoveBy(f.element,0,-20,{duration:0.05,afterFinish:function(g){}})}})}})}})}})}})};Effect.SlideDown=function(a){a=$(a);a.style.height="0px";Element.makeClipping(a);Element.cleanWhitespace(a);Element.makePositioned(a.firstChild);Element.show(a);return new Effect.Scale(a,100,Object.extend({scaleContent:false,scaleX:false,scaleMode:"contents",scaleFrom:0,afterUpdate:function(b){b.element.firstChild.style.bottom=(b.originalHeight-b.element.clientHeight)+"px"},afterFinish:function(b){Element.undoClipping(b.element)}},arguments[1]||{}))};Effect.SlideUp=function(a){a=$(a);Element.makeClipping(a);Element.cleanWhitespace(a);Element.makePositioned(a.firstChild);Element.show(a);return new Effect.Scale(a,0,Object.extend({scaleContent:false,scaleX:false,afterUpdate:function(b){b.element.firstChild.style.bottom=(b.originalHeight-b.element.clientHeight)+"px"},afterFinish:function(b){Element.hide(b.element);Element.undoClipping(b.element)}},arguments[1]||{}))};Effect.Squish=function(a){return new Effect.Scale(a,0,{afterFinish:function(b){Element.hide(b.element)}})};Effect.Grow=function(i){i=$(i);var k=arguments[1]||{};var c=i.clientWidth;var h=i.clientHeight;i.style.overflow="hidden";Element.show(i);var j=k.direction||"center";var b=k.moveTransition||Effect.Transitions.sinoidal;var a=k.scaleTransition||Effect.Transitions.sinoidal;var l=k.opacityTransition||Effect.Transitions.full;var g,f;var e,d;switch(j){case"top-left":g=f=e=d=0;break;case"top-right":g=c;f=d=0;e=-c;break;case"bottom-left":g=e=0;f=h;d=-h;break;case"bottom-right":g=c;f=h;e=-c;d=-h;break;case"center":g=c/2;f=h/2;e=-c/2;d=-h/2;break}return new Effect.MoveBy(i,f,g,{duration:0.01,beforeUpdate:function(m){$(i).style.height="0px"},afterFinish:function(m){new Effect.Parallel([new Effect.Opacity(i,{sync:true,to:1,from:0,transition:l}),new Effect.MoveBy(i,d,e,{sync:true,transition:b}),new Effect.Scale(i,100,{scaleMode:{originalHeight:h,originalWidth:c},sync:true,scaleFrom:0,scaleTo:100,transition:a})],k)}})};Effect.Shrink=function(g){g=$(g);var i=arguments[1]||{};var c=g.clientWidth;var f=g.clientHeight;g.style.overflow="hidden";Element.show(g);var h=i.direction||"center";var b=i.moveTransition||Effect.Transitions.sinoidal;var a=i.scaleTransition||Effect.Transitions.sinoidal;var j=i.opacityTransition||Effect.Transitions.none;var e,d;switch(h){case"top-left":e=d=0;break;case"top-right":e=c;d=0;break;case"bottom-left":e=0;d=f;break;case"bottom-right":e=c;d=f;break;case"center":e=c/2;d=f/2;break}return new Effect.Parallel([new Effect.Opacity(g,{sync:true,to:0,from:1,transition:j}),new Effect.Scale(g,0,{sync:true,transition:b}),new Effect.MoveBy(g,d,e,{sync:true,transition:a})],i)};Effect.Pulsate=function(b){var a=arguments[1]||{};var d=a.transition||Effect.Transitions.sinoidal;var c=function(e){return d(1-Effect.Transitions.pulse(e))};c.bind(d);return new Effect.Opacity(b,Object.extend(Object.extend({duration:3,afterFinish:function(e){Element.show(e.element)}},a),{transition:c}))};Effect.Fold=function(a){$(a).style.overflow="hidden";return new Effect.Scale(a,5,Object.extend({scaleContent:false,scaleTo:100,scaleX:false,afterFinish:function(b){new Effect.Scale(a,1,{scaleContent:false,scaleTo:0,scaleY:false,afterFinish:function(c){Element.hide(c.element)}})}},arguments[1]||{}))};Element.setContentZoom=function(a,b){var a=$(a);a.style.fontSize=(b/100)+"em";if(navigator.appVersion.indexOf("AppleWebKit")>0){window.scrollBy(0,0)}};