fx.Scroll=Class.create();fx.Scroll.prototype=Object.extend(new fx.Base(),{initialize:function(options){this.setOptions(options);},scrollTo:function(el){var dest=Position.cumulativeOffset($(el))[1];var client=window.innerHeight||document.documentElement.clientHeight;var full=document.documentElement.scrollHeight;var top=window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop;if(dest+client>full)this.custom(top,dest-client+(full-dest));else this.custom(top,dest);},increase:function(){window.scrollTo(0,this.now);}});fx.Text=Class.create();fx.Text.prototype=Object.extend(new fx.Base(),{initialize:function(el,options){this.el=$(el);this.setOptions(options);if(!this.options.unit)this.options.unit="em";},increase:function(){this.el.style.fontSize=this.now+this.options.unit;}});fx.Combo=Class.create();fx.Combo.prototype={setOptions:function(options){this.options={opacity:true,height:true,width:false}
Object.extend(this.options,options||{});},initialize:function(el,options){this.el=$(el);this.setOptions(options);if(this.options.opacity){this.o=new fx.Opacity(el,options);options.onComplete=null;}
if(this.options.height){this.h=new fx.Height(el,options);options.onComplete=null;}
if(this.options.width)this.w=new fx.Width(el,options);},toggle:function(){this.checkExec('toggle');},hide:function(){this.checkExec('hide');},clearTimer:function(){this.checkExec('clearTimer');},checkExec:function(func){if(this.o)this.o[func]();if(this.h)this.h[func]();if(this.w)this.w[func]();},resizeTo:function(hto,wto){if(this.h&&this.w){this.h.custom(this.el.offsetHeight,this.el.offsetHeight+hto);this.w.custom(this.el.offsetWidth,this.el.offsetWidth+wto);}},customSize:function(hto,wto){if(this.h&&this.w){this.h.custom(this.el.offsetHeight,hto);this.w.custom(this.el.offsetWidth,wto);}}}
fx.Accordion=Class.create();fx.Accordion.prototype={setOptions:function(options){this.options={delay:100,opacity:false}
Object.extend(this.options,options||{});},initialize:function(togglers,elements,options){this.elements=elements;this.setOptions(options);var options=options||'';this.fxa=[];if(options&&options.onComplete)options.onFinish=options.onComplete;elements.each(function(el,i){options.onComplete=function(){if(el.offsetHeight>0)el.style.height='1%';if(options.onFinish)options.onFinish(el);}
this.fxa[i]=new fx.Combo(el,options);this.fxa[i].hide();}.bind(this));togglers.each(function(tog,i){if(typeof tog.onclick=='function')var exClick=tog.onclick;tog.onclick=function(){if(exClick)exClick();this.showThisHideOpen(elements[i]);}.bind(this);}.bind(this));},showThisHideOpen:function(toShow){this.elements.each(function(el,j){if(el.offsetHeight>0&&el!=toShow)this.clearAndToggle(el,j);if(el==toShow&&toShow.offsetHeight==0)setTimeout(function(){this.clearAndToggle(toShow,j);}.bind(this),this.options.delay);}.bind(this));},clearAndToggle:function(el,i){this.fxa[i].clearTimer();this.fxa[i].toggle();}}
var Remember=new Object();Remember=function(){};Remember.prototype={initialize:function(el,options){this.el=$(el);this.days=365;this.options=options;this.effect();var cookie=this.readCookie();if(cookie){this.fx.now=cookie;this.fx.increase();}},setCookie:function(value){var date=new Date();date.setTime(date.getTime()+(this.days*24*60*60*1000));var expires="; expires="+date.toGMTString();document.cookie=this.el+this.el.id+this.prefix+"="+value+expires+"; path=/";},readCookie:function(){var nameEQ=this.el+this.el.id+this.prefix+"=";var ca=document.cookie.split(';');for(var i=0;c=ca[i];i++){while(c.charAt(0)==' ')c=c.substring(1,c.length);if(c.indexOf(nameEQ)==0)return c.substring(nameEQ.length,c.length);}
return false;},custom:function(from,to){if(this.fx.now!=to){this.setCookie(to);this.fx.custom(from,to);}}}
fx.RememberHeight=Class.create();fx.RememberHeight.prototype=Object.extend(new Remember(),{effect:function(){this.fx=new fx.Height(this.el,this.options);this.prefix='height';},toggle:function(){if(this.el.offsetHeight==0)this.setCookie(this.el.scrollHeight);else this.setCookie(0);this.fx.toggle();},resize:function(to){this.setCookie(this.el.offsetHeight+to);this.fx.custom(this.el.offsetHeight,this.el.offsetHeight+to);},hide:function(){if(!this.readCookie()){this.fx.hide();}}});fx.RememberText=Class.create();fx.RememberText.prototype=Object.extend(new Remember(),{effect:function(){this.fx=new fx.Text(this.el,this.options);this.prefix='text';}});Array.prototype.iterate=function(func){for(var i=0;i<this.length;i++)func(this[i],i);}
if(!Array.prototype.each)Array.prototype.each=Array.prototype.iterate;fx.expoIn=function(pos){return Math.pow(2,10*(pos-1));}
fx.expoOut=function(pos){return(-Math.pow(2,-10*pos)+1);}
fx.quadIn=function(pos){return Math.pow(pos,2);}
fx.quadOut=function(pos){return-(pos)*(pos-2);}
fx.circOut=function(pos){return Math.sqrt(1-Math.pow(pos-1,2));}
fx.circIn=function(pos){return-(Math.sqrt(1-Math.pow(pos,2))-1);}
fx.backIn=function(pos){return(pos)*pos*((2.7)*pos-1.7);}
fx.backOut=function(pos){return((pos-1)*(pos-1)*((2.7)*(pos-1)+1.7)+1);}
fx.sineOut=function(pos){return Math.sin(pos*(Math.PI/2));}
fx.sineIn=function(pos){return-Math.cos(pos*(Math.PI/2))+1;}
fx.sineInOut=function(pos){return-(Math.cos(Math.PI*pos)-1)/2;}