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);}});
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;}