
Effect.ShakeVertical=function(element){element=$(element);var oldStyle={top:Element.getStyle(element,'top'),left:Element.getStyle(element,'left')};return new Effect.Move(element,{x:0,y:20,duration:0.05,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:0,y:-40,duration:0.1,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:0,y:40,duration:0.1,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:0,y:-40,duration:0.1,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:0,y:40,duration:0.1,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:0,y:-20,duration:0.05,afterFinishInternal:function(effect){with(Element){undoPositioned(effect.element);setStyle(effect.element,oldStyle);}}})}})}})}})}})}});}
Effect.Bounce=Class.create();Object.extend(Object.extend(Effect.Bounce.prototype,Effect.Base.prototype),{initialize:function(element){this.element=$(element);var options=Object.extend({x:0,y:50,acceleration:9.81,transition:Effect.Transitions.linear,mode:'relative'},arguments[1]||{});this.start(options);},setup:function(){Element.makePositioned(this.element);this.originalLeft=parseFloat(Element.getStyle(this.element,'left')||'0');this.originalTop=parseFloat(Element.getStyle(this.element,'top')||'0');if(this.options.mode=='absolute'){this.options.x=this.options.x-this.originalLeft;}},mytransition:function(pos){var temp=(pos<0.5?0.5-pos:0.5+(1-pos));return(pos<0.5?this.options.acceleration/2*temp*temp:this.options.acceleration/2*(1-temp)*(1-temp))*8/this.options.acceleration-1;},update:function(position){Element.setStyle(this.element,{left:this.options.x*position+this.originalLeft+'px',top:this.originalTop+this.options.y*this.mytransition(position)+'px'});}});Effect.Center=function(element)
{try
{element=$(element);}
catch(e)
{return;}
var my_width=0;var my_height=0;if(typeof(window.innerWidth)=='number')
{my_width=window.innerWidth;my_height=window.innerHeight;}
else if(document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight))
{my_width=document.documentElement.clientWidth;my_height=document.documentElement.clientHeight;}
else if(document.body&&(document.body.clientWidth||document.body.clientHeight))
{my_width=document.body.clientWidth;my_height=document.body.clientHeight;}
element.style.position='absolute';element.style.display='block';element.style.zIndex=99;var scrollY=0;if(document.documentElement&&document.documentElement.scrollTop)
{scrollY=document.documentElement.scrollTop;}
else if(document.body&&document.body.scrollTop)
{scrollY=document.body.scrollTop;}
else if(window.pageYOffset)
{scrollY=window.pageYOffset;}
else if(window.scrollY)
{scrollY=window.scrollY;}
var elementDimensions=Element.getDimensions(element);var setX=(my_width-elementDimensions.width)/2;var setY=(my_height-elementDimensions.height)/2+scrollY;setX=(setX<0)?0:setX;setY=(setY<0)?0:setY;element.style.left=setX+"px";element.style.top=setY+"px";}
Effect.CenterHorizontal=function(element)
{try
{element=$(element);}
catch(e)
{return;}
var my_width=0;if(typeof(window.innerWidth)=='number')
{my_width=window.innerWidth;}
else if(document.documentElement&&(document.documentElement.clientWidth))
{my_width=document.documentElement.clientWidth;}
else if(document.body&&(document.body.clientWidth))
{my_width=document.body.clientWidth;}
element.style.position='absolute';element.style.display='block';element.style.zIndex=99;var elementDimensions=Element.getDimensions(element);var setX=(my_width-elementDimensions.width)/2;setX=(setX<0)?0:setX;element.style.left=setX+"px";}
Effect.PhaseIn=function(element){element=$(element);new Effect.BlindDown(element,arguments[1]||{});new Effect.Appear(element,arguments[2]||arguments[1]||{});}
Effect.PhaseOut=function(element){element=$(element);new Effect.Fade(element,arguments[1]||{});new Effect.BlindUp(element,arguments[2]||arguments[1]||{});}
Effect.Phase=function(element){element=$(element);if(element.style.display=='none')
new Effect.PhaseIn(element,arguments[1]||{},arguments[2]||arguments[1]||{});else new Effect.PhaseOut(element,arguments[1]||{},arguments[2]||arguments[1]||{});}
Effect.MoveAndResizeTo=Class.create();Object.extend(Object.extend(Effect.MoveAndResizeTo.prototype,Effect.Base.prototype),{initialize:function(element,toTop,toLeft,toWidth,toHeight){this.element=$(element);this.toTop=toTop;this.toLeft=toLeft;this.toWidth=toWidth;this.toHeight=toHeight;this.originalTop=parseFloat(Element.getStyle(this.element,'top')||0);this.originalLeft=parseFloat(Element.getStyle(this.element,'left')||0);this.originalWidth=parseFloat(Element.getStyle(this.element,'width')||0);this.originalHeight=parseFloat(Element.getStyle(this.element,'height')||0);this.effectiveTop=this.toTop;this.effectiveLeft=this.toLeft;this.effectiveWidth=this.toWidth
-parseFloat(Element.getStyle(this.element,'margin-left')||0)
-parseFloat(Element.getStyle(this.element,'margin-right')||0)
-(document.compatMode=='BackCompat'?0:parseFloat(Element.getStyle(this.element,'padding-left')||0)
+parseFloat(Element.getStyle(this.element,'padding-right')||0)
+parseFloat(Element.getStyle(this.element,'border-left-width')||0)
+parseFloat(Element.getStyle(this.element,'border-right-width')||0));this.effectiveHeight=this.toHeight
-parseFloat(Element.getStyle(this.element,'margin-top')||0)
-parseFloat(Element.getStyle(this.element,'margin-bottom')||0)
-(document.compatMode=='BackCompat'?0:parseFloat(Element.getStyle(this.element,'padding-top')||0)
+parseFloat(Element.getStyle(this.element,'padding-bottom')||0)
+parseFloat(Element.getStyle(this.element,'border-top-width')||0)
+parseFloat(Element.getStyle(this.element,'border-bottom-width')||0));this.options=arguments[5]||{};if(this.effectiveWidth<0)this.effectiveWidth=0;if(this.effectiveHeight<0)this.effectiveHeight=0;if(this.originalTop==this.effectiveTop&&this.originalLeft==this.effectiveLeft&&this.originalWidth==this.effectiveWidth&&this.originalHeight==this.effectiveHeight){return;}
this.start(this.options);},update:function(position){topd=this.effectiveTop*(position)+this.originalTop*(1-position);leftd=this.effectiveLeft*(position)+this.originalLeft*(1-position);widthd=this.effectiveWidth*(position)+this.originalWidth*(1-position);heightd=this.effectiveHeight*(position)+this.originalHeight*(1-position);this.setPosition(topd,leftd,widthd,heightd);},setPosition:function(topd,leftd,widthd,heightd){this.element.style.top=topd+'px';this.element.style.left=leftd+'px';this.element.style.width=widthd+'px';this.element.style.height=heightd+'px';}});var DragScrollable=Class.create();DragScrollable.prototype={initialize:function(element){this.element=$(element);this.active=false;this.scrolling=false;this.eventMouseDown=this.startScroll.bindAsEventListener(this);this.eventMouseUp=this.endScroll.bindAsEventListener(this);this.eventMouseMove=this.scroll.bindAsEventListener(this);Event.observe(this.element,'mousedown',this.eventMouseDown);Event.observe(document,'mouseup',this.eventMouseUp);Event.observe(document,'mousemove',this.eventMouseMove);},destroy:function(){Event.stopObserving(this.element,'mousedown',this.eventMouseDown);Event.stopObserving(document,'mouseup',this.eventMouseUp);Event.stopObserving(document,'mousemove',this.eventMouseMove);},startScroll:function(event){this.startX=Event.pointerX(event);this.startY=Event.pointerY(event);if(Event.isLeftClick(event)&&(this.startX<this.element.offsetLeft+this.element.clientWidth)&&(this.startY<this.element.offsetTop+this.element.clientHeight)){this.active=true;Event.stop(event);}},endScroll:function(event){this.active=false;Event.stop(event);},scroll:function(event){if(this.active){this.element.scrollTop+=(this.startY-Event.pointerY(event));this.element.scrollLeft+=(this.startX-Event.pointerX(event));this.startX=Event.pointerX(event);this.startY=Event.pointerY(event);}
Event.stop(event);}}
