﻿//MooTools More, <http://mootools.net/more>. Copyright (c) 2006-2009 Aaron Newton <http://clientcide.com/>, Valerio Proietti <http://mad4milk.net> & the MooTools team <http://mootools.net/developers>, MIT Style License.

//Contents: More, Lang, Log, Depender, Class.Refactor, Class.Binds, Class.Occlude, Chain.Wait, Array.Extras, Fx.Elements, Fx.Accordion, Element.Measure, Element.Position, Fx.Move, Element.Shortcuts, Fx.Reveal, Fx.Scroll, Fx.Slide, Fx.SmoothScroll, Fx.Sort, Drag, Slider, Request.Periodical, Tips

//This lib: http://www.clientcide.com/js/build.php?excludeLibs[]=mootools-core&require[]=More&require[]=Lang&require[]=Log&require[]=Depender&require[]=Class.Refactor&require[]=Class.Binds&require[]=Class.Occlude&require[]=Chain.Wait&require[]=Array.Extras&require[]=Fx.Elements&require[]=Fx.Accordion&require[]=Fx.Move&require[]=Fx.Reveal&require[]=Fx.Scroll&require[]=Fx.Slide&require[]=Fx.SmoothScroll&require[]=Fx.Sort&require[]=Slider&require[]=Request.Periodical&require[]=Tips&excludeLibs[]=clientcide&compression=jsmin


MooTools.More={'version':'1.2.4.4','build':'6f6057dc645fdb7547689183b2311063bd653ddf'};
(function(){var data={language:'en-US',languages:{'en-US':{}},cascades:['en-US']};var cascaded;MooTools.lang=new Events();$extend(MooTools.lang,{setLanguage:function(lang){if(!data.languages[lang])return this;data.language=lang;this.load();this.fireEvent('langChange',lang);return this;},load:function(){var langs=this.cascade(this.getCurrentLanguage());cascaded={};$each(langs,function(set,setName){cascaded[setName]=this.lambda(set);},this);},getCurrentLanguage:function(){return data.language;},addLanguage:function(lang){data.languages[lang]=data.languages[lang]||{};return this;},cascade:function(lang){var cascades=(data.languages[lang]||{}).cascades||[];cascades.combine(data.cascades);cascades.erase(lang).push(lang);var langs=cascades.map(function(lng){return data.languages[lng];},this);return $merge.apply(this,langs);},lambda:function(set){(set||{}).get=function(key,args){return $lambda(set[key]).apply(this,$splat(args));};return set;},get:function(set,key,args){if(cascaded&&cascaded[set])return(key?cascaded[set].get(key,args):cascaded[set]);},set:function(lang,set,members){this.addLanguage(lang);langData=data.languages[lang];if(!langData[set])langData[set]={};$extend(langData[set],members);if(lang==this.getCurrentLanguage()){this.load();this.fireEvent('langChange',lang);}
return this;},list:function(){return Hash.getKeys(data.languages);}});})();
(function(){var global=this;var log=function(){if(global.console&&console.log){try{console.log.apply(console,arguments);}catch(e){console.log(Array.slice(arguments));}}else{Log.logged.push(arguments);}
return this;};var disabled=function(){this.logged.push(arguments);return this;};this.Log=new Class({logged:[],log:disabled,resetLog:function(){this.logged.empty();return this;},enableLog:function(){this.log=log;this.logged.each(function(args){this.log.apply(this,args);},this);return this.resetLog();},disableLog:function(){this.log=disabled;return this;}});Log.extend(new Log).enableLog();Log.logger=function(){return this.log.apply(this,arguments);};})();
var Depender={options:{loadedSources:[],loadedScripts:['Core','Browser','Array','String','Function','Number','Hash','Element','Event','Element.Event','Class','DomReady','Class.Extras','Request','JSON','Request.JSON','More','Depender','Log'],useScriptInjection:true},loaded:[],sources:{},libs:{},include:function(libs){this.log('include: ',libs);this.mapLoaded=false;var loader=function(data){this.libs=$merge(this.libs,data);$each(this.libs,function(data,lib){if(data.scripts)this.loadSource(lib,data.scripts);},this);}.bind(this);if($type(libs)=='string'){this.log('fetching libs ',libs);this.request(libs,loader);}else{loader(libs);}
return this;},required:[],require:function(options){var loaded=function(){var scripts=this.calculateDependencies(options.scripts);if(options.sources){options.sources.each(function(source){scripts.combine(this.libs[source].files);},this);}
if(options.serial)scripts.combine(this.getLoadedScripts());options.scripts=scripts;this.required.push(options);this.fireEvent('require',options);this.loadScripts(options.scripts);};if(this.mapLoaded)loaded.call(this);else this.addEvent('mapLoaded',loaded.bind(this));return this;},cleanDoubleSlash:function(str){if(!str)return str;var prefix='';if(str.test(/^http:\/\//)){prefix='http://';str=str.substring(7,str.length);}
str=str.replace(/\/\//g,'/');return prefix+str;},request:function(url,callback){new Request.JSON({url:url,secure:false,onSuccess:callback}).send();},loadSource:function(lib,source){if(this.libs[lib].files){this.dataLoaded();return;}
this.log('loading source: ',source);this.request(this.cleanDoubleSlash(source+'/scripts.json'),function(result){this.log('loaded source: ',source);this.libs[lib].files=result;this.dataLoaded();}.bind(this));},dataLoaded:function(){var loaded=true;$each(this.libs,function(v,k){if(!this.libs[k].files)loaded=false;},this);if(loaded){this.mapTree();this.mapLoaded=true;this.calculateLoaded();this.lastLoaded=this.getLoadedScripts().getLength();this.fireEvent('mapLoaded');this.removeEvents('mapLoaded');}},calculateLoaded:function(){var set=function(script){this.scriptsState[script]=true;}.bind(this);if(this.options.loadedScripts)this.options.loadedScripts.each(set);if(this.options.loadedSources){this.options.loadedSources.each(function(lib){$each(this.libs[lib].files,function(dir){$each(dir,function(data,file){set(file);},this);},this);},this);}},deps:{},pathMap:{},mapTree:function(){$each(this.libs,function(data,source){$each(data.files,function(scripts,folder){$each(scripts,function(details,script){var path=source+':'+folder+':'+script;if(this.deps[path])return;this.deps[path]=details.deps;this.pathMap[script]=path;},this);},this);},this);},getDepsForScript:function(script){return this.deps[this.pathMap[script]]||[];},calculateDependencies:function(scripts){var reqs=[];$splat(scripts).each(function(script){if(script=='None'||!script)return;var deps=this.getDepsForScript(script);if(!deps){if(window.console&&console.warn)console.warn('dependencies not mapped: script: %o, map: %o, :deps: %o',script,this.pathMap,this.deps);}else{deps.each(function(scr){if(scr==script||scr=='None'||!scr)return;if(!reqs.contains(scr))reqs.combine(this.calculateDependencies(scr));reqs.include(scr);},this);}
reqs.include(script);},this);return reqs;},getPath:function(script){try{var chunks=this.pathMap[script].split(':');var lib=this.libs[chunks[0]];var dir=(lib.path||lib.scripts)+'/';chunks.shift();return this.cleanDoubleSlash(dir+chunks.join('/')+'.js');}catch(e){return script;}},loadScripts:function(scripts){scripts=scripts.filter(function(s){if(!this.scriptsState[s]&&s!='None'){this.scriptsState[s]=false;return true;}},this);if(scripts.length){scripts.each(function(scr){this.loadScript(scr);},this);}else{this.check();}},toLoad:[],loadScript:function(script){if(this.scriptsState[script]&&this.toLoad.length){this.loadScript(this.toLoad.shift());return;}else if(this.loading){this.toLoad.push(script);return;}
var finish=function(){this.loading=false;this.scriptLoaded(script);if(this.toLoad.length)this.loadScript(this.toLoad.shift());}.bind(this);var error=function(){this.log('could not load: ',scriptPath);}.bind(this);this.loading=true;var scriptPath=this.getPath(script);if(this.options.useScriptInjection){this.log('injecting script: ',scriptPath);var loaded=function(){this.log('loaded script: ',scriptPath);finish();}.bind(this);new Element('script',{src:scriptPath+(this.options.noCache?'?noCache='+new Date().getTime():''),events:{load:loaded,readystatechange:function(){if(['loaded','complete'].contains(this.readyState))loaded();},error:error}}).inject(this.options.target||document.head);}else{this.log('requesting script: ',scriptPath);new Request({url:scriptPath,noCache:this.options.noCache,onComplete:function(js){this.log('loaded script: ',scriptPath);$exec(js);finish();}.bind(this),onFailure:error,onException:error}).send();}},scriptsState:$H(),getLoadedScripts:function(){return this.scriptsState.filter(function(state){return state;});},scriptLoaded:function(script){this.log('loaded script: ',script);this.scriptsState[script]=true;this.check();var loaded=this.getLoadedScripts();var loadedLength=loaded.getLength();var toLoad=this.scriptsState.getLength();this.fireEvent('scriptLoaded',{script:script,totalLoaded:(loadedLength/toLoad*100).round(),currentLoaded:((loadedLength-this.lastLoaded)/(toLoad-this.lastLoaded)*100).round(),loaded:loaded});if(loadedLength==toLoad)this.lastLoaded=loadedLength;},lastLoaded:0,check:function(){var incomplete=[];this.required.each(function(required){var loaded=[];required.scripts.each(function(script){if(this.scriptsState[script])loaded.push(script);},this);if(required.onStep){required.onStep({percent:loaded.length/required.scripts.length*100,scripts:loaded});};if(required.scripts.length!=loaded.length)return;required.callback();this.required.erase(required);this.fireEvent('requirementLoaded',[loaded,required]);},this);}};$extend(Depender,new Events);$extend(Depender,new Options);$extend(Depender,new Log);Depender._setOptions=Depender.setOptions;Depender.setOptions=function(){Depender._setOptions.apply(Depender,arguments);if(this.options.log)Depender.enableLog();return this;};
Class.refactor=function(original,refactors){$each(refactors,function(item,name){var origin=original.prototype[name];if(origin&&(origin=origin._origin)&&typeof item=='function')original.implement(name,function(){var old=this.previous;this.previous=origin;var value=item.apply(this,arguments);this.previous=old;return value;});else original.implement(name,item);});return original;};
Class.Mutators.Binds=function(binds){return binds;};Class.Mutators.initialize=function(initialize){return function(){$splat(this.Binds).each(function(name){var original=this[name];if(original)this[name]=original.bind(this);},this);return initialize.apply(this,arguments);};};
Class.Occlude=new Class({occlude:function(property,element){element=document.id(element||this.element);var instance=element.retrieve(property||this.property);if(instance&&!$defined(this.occluded))
return this.occluded=instance;this.occluded=false;element.store(property||this.property,this);return this.occluded;}});
(function(){var wait={wait:function(duration){return this.chain(function(){this.callChain.delay($pick(duration,500),this);}.bind(this));}};Chain.implement(wait);if(window.Fx){Fx.implement(wait);['Css','Tween','Elements'].each(function(cls){if(Fx[cls])Fx[cls].implement(wait);});}
Element.implement({chains:function(effects){$splat($pick(effects,['tween','morph','reveal'])).each(function(effect){effect=this.get(effect);if(!effect)return;effect.setOptions({link:'chain'});},this);return this;},pauseFx:function(duration,effect){this.chains(effect).get($pick(effect,'tween')).wait(duration);return this;}});})();
Array.implement({min:function(){return Math.min.apply(null,this);},max:function(){return Math.max.apply(null,this);},average:function(){return this.length?this.sum()/this.length:0;},sum:function(){var result=0,l=this.length;if(l){do{result+=this[--l];}while(l);}
return result;},unique:function(){return[].combine(this);},shuffle:function(){for(var i=this.length;i&&--i;){var temp=this[i],r=Math.floor(Math.random()*(i+1));this[i]=this[r];this[r]=temp;}
return this;}});
Fx.Elements=new Class({Extends:Fx.CSS,initialize:function(elements,options){this.elements=this.subject=$$(elements);this.parent(options);},compute:function(from,to,delta){var now={};for(var i in from){var iFrom=from[i],iTo=to[i],iNow=now[i]={};for(var p in iFrom)iNow[p]=this.parent(iFrom[p],iTo[p],delta);}
return now;},set:function(now){for(var i in now){var iNow=now[i];for(var p in iNow)this.render(this.elements[i],p,iNow[p],this.options.unit);}
return this;},start:function(obj){if(!this.check(obj))return this;var from={},to={};for(var i in obj){var iProps=obj[i],iFrom=from[i]={},iTo=to[i]={};for(var p in iProps){var parsed=this.prepare(this.elements[i],p,iProps[p]);iFrom[p]=parsed.from;iTo[p]=parsed.to;}}
return this.parent(from,to);}});
Fx.Accordion=new Class({Extends:Fx.Elements,options:{display:0,show:false,height:true,width:false,opacity:true,alwaysHide:false,trigger:'click',initialDisplayFx:true,returnHeightToAuto:true},initialize:function(){var params=Array.link(arguments,{'container':Element.type,'options':Object.type,'togglers':$defined,'elements':$defined});this.parent(params.elements,params.options);this.togglers=$$(params.togglers);this.previous=-1;this.internalChain=new Chain();if(this.options.alwaysHide)this.options.wait=true;if($chk(this.options.show)){this.options.display=false;this.previous=this.options.show;}
if(this.options.start){this.options.display=false;this.options.show=false;}
this.effects={};if(this.options.opacity)this.effects.opacity='fullOpacity';if(this.options.width)this.effects.width=this.options.fixedWidth?'fullWidth':'offsetWidth';if(this.options.height)this.effects.height=this.options.fixedHeight?'fullHeight':'scrollHeight';for(var i=0,l=this.togglers.length;i<l;i++)this.addSection(this.togglers[i],this.elements[i]);this.elements.each(function(el,i){if(this.options.show===i){this.fireEvent('active',[this.togglers[i],el]);}else{for(var fx in this.effects)el.setStyle(fx,0);}},this);if($chk(this.options.display)||this.options.initialDisplayFx===false)this.display(this.options.display,this.options.initialDisplayFx);if(this.options.fixedHeight!==false)this.options.returnHeightToAuto=false;this.addEvent('complete',this.internalChain.callChain.bind(this.internalChain));},addSection:function(toggler,element){toggler=document.id(toggler);element=document.id(element);var test=this.togglers.contains(toggler);this.togglers.include(toggler);this.elements.include(element);var idx=this.togglers.indexOf(toggler);var displayer=this.display.bind(this,idx);toggler.store('accordion:display',displayer);toggler.addEvent(this.options.trigger,displayer);if(this.options.height)element.setStyles({'padding-top':0,'border-top':'none','padding-bottom':0,'border-bottom':'none'});if(this.options.width)element.setStyles({'padding-left':0,'border-left':'none','padding-right':0,'border-right':'none'});element.fullOpacity=1;if(this.options.fixedWidth)element.fullWidth=this.options.fixedWidth;if(this.options.fixedHeight)element.fullHeight=this.options.fixedHeight;element.setStyle('overflow','hidden');if(!test){for(var fx in this.effects)element.setStyle(fx,0);}
return this;},detach:function(){this.togglers.each(function(toggler){toggler.removeEvent(this.options.trigger,toggler.retrieve('accordion:display'));},this);},display:function(index,useFx){if(!this.check(index,useFx))return this;useFx=$pick(useFx,true);if(this.options.returnHeightToAuto){var prev=this.elements[this.previous];if(prev&&!this.selfHidden){for(var fx in this.effects){prev.setStyle(fx,prev[this.effects[fx]]);}}}
index=($type(index)=='element')?this.elements.indexOf(index):index;if((this.timer&&this.options.wait)||(index===this.previous&&!this.options.alwaysHide))return this;this.previous=index;var obj={};this.elements.each(function(el,i){obj[i]={};var hide;if(i!=index){hide=true;}else if(this.options.alwaysHide&&((el.offsetHeight>0&&this.options.height)||el.offsetWidth>0&&this.options.width)){hide=true;this.selfHidden=true;}
this.fireEvent(hide?'background':'active',[this.togglers[i],el]);for(var fx in this.effects)obj[i][fx]=hide?0:el[this.effects[fx]];},this);this.internalChain.chain(function(){if(this.options.returnHeightToAuto&&!this.selfHidden){var el=this.elements[index];if(el)el.setStyle('height','auto');};}.bind(this));return useFx?this.start(obj):this.set(obj);}});var Accordion=new Class({Extends:Fx.Accordion,initialize:function(){this.parent.apply(this,arguments);var params=Array.link(arguments,{'container':Element.type});this.container=params.container;},addSection:function(toggler,element,pos){toggler=document.id(toggler);element=document.id(element);var test=this.togglers.contains(toggler);var len=this.togglers.length;if(len&&(!test||pos)){pos=$pick(pos,len-1);toggler.inject(this.togglers[pos],'before');element.inject(toggler,'after');}else if(this.container&&!test){toggler.inject(this.container);element.inject(this.container);}
return this.parent.apply(this,arguments);}});
Element.implement({measure:function(fn){var vis=function(el){return!!(!el||el.offsetHeight||el.offsetWidth);};if(vis(this))return fn.apply(this);var parent=this.getParent(),restorers=[],toMeasure=[];while(!vis(parent)&&parent!=document.body){toMeasure.push(parent.expose());parent=parent.getParent();}
var restore=this.expose();var result=fn.apply(this);restore();toMeasure.each(function(restore){restore();});return result;},expose:function(){if(this.getStyle('display')!='none')return $empty;var before=this.style.cssText;this.setStyles({display:'block',position:'absolute',visibility:'hidden'});return function(){this.style.cssText=before;}.bind(this);},getDimensions:function(options){options=$merge({computeSize:false},options);var dim={};var getSize=function(el,options){return(options.computeSize)?el.getComputedSize(options):el.getSize();};var parent=this.getParent('body');if(parent&&this.getStyle('display')=='none'){dim=this.measure(function(){return getSize(this,options);});}else if(parent){try{dim=getSize(this,options);}catch(e){}}else{dim={x:0,y:0};}
return $chk(dim.x)?$extend(dim,{width:dim.x,height:dim.y}):$extend(dim,{x:dim.width,y:dim.height});},getComputedSize:function(options){options=$merge({styles:['padding','border'],plains:{height:['top','bottom'],width:['left','right']},mode:'both'},options);var size={width:0,height:0};switch(options.mode){case'vertical':delete size.width;delete options.plains.width;break;case'horizontal':delete size.height;delete options.plains.height;break;}
var getStyles=[];$each(options.plains,function(plain,key){plain.each(function(edge){options.styles.each(function(style){getStyles.push((style=='border')?style+'-'+edge+'-'+'width':style+'-'+edge);});});});var styles={};getStyles.each(function(style){styles[style]=this.getComputedStyle(style);},this);var subtracted=[];$each(options.plains,function(plain,key){var capitalized=key.capitalize();size['total'+capitalized]=size['computed'+capitalized]=0;plain.each(function(edge){size['computed'+edge.capitalize()]=0;getStyles.each(function(style,i){if(style.test(edge)){styles[style]=styles[style].toInt()||0;size['total'+capitalized]=size['total'+capitalized]+styles[style];size['computed'+edge.capitalize()]=size['computed'+edge.capitalize()]+styles[style];}
if(style.test(edge)&&key!=style&&(style.test('border')||style.test('padding'))&&!subtracted.contains(style)){subtracted.push(style);size['computed'+capitalized]=size['computed'+capitalized]-styles[style];}});});});['Width','Height'].each(function(value){var lower=value.toLowerCase();if(!$chk(size[lower]))return;size[lower]=size[lower]+this['offset'+value]+size['computed'+value];size['total'+value]=size[lower]+size['total'+value];delete size['computed'+value];},this);return $extend(styles,size);}});
(function(){var original=Element.prototype.position;Element.implement({position:function(options){if(options&&($defined(options.x)||$defined(options.y)))return original?original.apply(this,arguments):this;$each(options||{},function(v,k){if(!$defined(v))delete options[k];});options=$merge({relativeTo:document.body,position:{x:'center',y:'center'},edge:false,offset:{x:0,y:0},returnPos:false,relFixedPosition:false,ignoreMargins:false,ignoreScroll:false,allowNegative:false},options);var parentOffset={x:0,y:0},parentPositioned=false;var offsetParent=this.measure(function(){return document.id(this.getOffsetParent());});if(offsetParent&&offsetParent!=this.getDocument().body){parentOffset=offsetParent.measure(function(){return this.getPosition();});parentPositioned=offsetParent!=document.id(options.relativeTo);options.offset.x=options.offset.x-parentOffset.x;options.offset.y=options.offset.y-parentOffset.y;}
var fixValue=function(option){if($type(option)!='string')return option;option=option.toLowerCase();var val={};if(option.test('left'))val.x='left';else if(option.test('right'))val.x='right';else val.x='center';if(option.test('upper')||option.test('top'))val.y='top';else if(option.test('bottom'))val.y='bottom';else val.y='center';return val;};options.edge=fixValue(options.edge);options.position=fixValue(options.position);if(!options.edge){if(options.position.x=='center'&&options.position.y=='center')options.edge={x:'center',y:'center'};else options.edge={x:'left',y:'top'};}
this.setStyle('position','absolute');var rel=document.id(options.relativeTo)||document.body,calc=rel==document.body?window.getScroll():rel.getPosition(),top=calc.y,left=calc.x;var dim=this.getDimensions({computeSize:true,styles:['padding','border','margin']});var pos={},prefY=options.offset.y,prefX=options.offset.x,winSize=window.getSize();switch(options.position.x){case'left':pos.x=left+prefX;break;case'right':pos.x=left+prefX+rel.offsetWidth;break;default:pos.x=left+((rel==document.body?winSize.x:rel.offsetWidth)/2)+prefX;break;}
switch(options.position.y){case'top':pos.y=top+prefY;break;case'bottom':pos.y=top+prefY+rel.offsetHeight;break;default:pos.y=top+((rel==document.body?winSize.y:rel.offsetHeight)/2)+prefY;break;}
if(options.edge){var edgeOffset={};switch(options.edge.x){case'left':edgeOffset.x=0;break;case'right':edgeOffset.x=-dim.x-dim.computedRight-dim.computedLeft;break;default:edgeOffset.x=-(dim.totalWidth/2);break;}
switch(options.edge.y){case'top':edgeOffset.y=0;break;case'bottom':edgeOffset.y=-dim.y-dim.computedTop-dim.computedBottom;break;default:edgeOffset.y=-(dim.totalHeight/2);break;}
pos.x+=edgeOffset.x;pos.y+=edgeOffset.y;}
pos={left:((pos.x>=0||parentPositioned||options.allowNegative)?pos.x:0).toInt(),top:((pos.y>=0||parentPositioned||options.allowNegative)?pos.y:0).toInt()};var xy={left:'x',top:'y'};['minimum','maximum'].each(function(minmax){['left','top'].each(function(lr){var val=options[minmax]?options[minmax][xy[lr]]:null;if(val!=null&&pos[lr]<val)pos[lr]=val;});});if(rel.getStyle('position')=='fixed'||options.relFixedPosition){var winScroll=window.getScroll();pos.top+=winScroll.y;pos.left+=winScroll.x;}
if(options.ignoreScroll){var relScroll=rel.getScroll();pos.top-=relScroll.y;pos.left-=relScroll.x;}
if(options.ignoreMargins){pos.left+=(options.edge.x=='right'?dim['margin-right']:options.edge.x=='center'?-dim['margin-left']+((dim['margin-right']+dim['margin-left'])/2):-dim['margin-left']);pos.top+=(options.edge.y=='bottom'?dim['margin-bottom']:options.edge.y=='center'?-dim['margin-top']+((dim['margin-bottom']+dim['margin-top'])/2):-dim['margin-top']);}
pos.left=Math.ceil(pos.left);pos.top=Math.ceil(pos.top);if(options.returnPos)return pos;else this.setStyles(pos);return this;}});})();
Fx.Move=new Class({Extends:Fx.Morph,options:{relativeTo:document.body,position:'center',edge:false,offset:{x:0,y:0}},start:function(destination){return this.parent(this.element.position($merge(this.options,destination,{returnPos:true})));}});Element.Properties.move={set:function(options){var morph=this.retrieve('move');if(morph)morph.cancel();return this.eliminate('move').store('move:options',$extend({link:'cancel'},options));},get:function(options){if(options||!this.retrieve('move')){if(options||!this.retrieve('move:options'))this.set('move',options);this.store('move',new Fx.Move(this,this.retrieve('move:options')));}
return this.retrieve('move');}};Element.implement({move:function(options){this.get('move').start(options);return this;}});
Element.implement({isDisplayed:function(){return this.getStyle('display')!='none';},isVisible:function(){var w=this.offsetWidth,h=this.offsetHeight;return(w==0&&h==0)?false:(w>0&&h>0)?true:this.isDisplayed();},toggle:function(){return this[this.isDisplayed()?'hide':'show']();},hide:function(){var d;try{d=this.getStyle('display');}catch(e){}
return this.store('originalDisplay',d||'').setStyle('display','none');},show:function(display){display=display||this.retrieve('originalDisplay')||'block';return this.setStyle('display',(display=='none')?'block':display);},swapClass:function(remove,add){return this.removeClass(remove).addClass(add);}});
Fx.Reveal=new Class({Extends:Fx.Morph,options:{link:'cancel',styles:['padding','border','margin'],transitionOpacity:!Browser.Engine.trident4,mode:'vertical',display:'block',hideInputs:Browser.Engine.trident?'select, input, textarea, object, embed':false},dissolve:function(){try{if(!this.hiding&&!this.showing){if(this.element.getStyle('display')!='none'){this.hiding=true;this.showing=false;this.hidden=true;this.cssText=this.element.style.cssText;var startStyles=this.element.getComputedSize({styles:this.options.styles,mode:this.options.mode});this.element.setStyle('display',this.options.display);if(this.options.transitionOpacity)startStyles.opacity=1;var zero={};$each(startStyles,function(style,name){zero[name]=[style,0];},this);this.element.setStyle('overflow','hidden');var hideThese=this.options.hideInputs?this.element.getElements(this.options.hideInputs):null;this.$chain.unshift(function(){if(this.hidden){this.hiding=false;$each(startStyles,function(style,name){startStyles[name]=style;},this);this.element.style.cssText=this.cssText;this.element.setStyle('display','none');if(hideThese)hideThese.setStyle('visibility','visible');}
this.fireEvent('hide',this.element);this.callChain();}.bind(this));if(hideThese)hideThese.setStyle('visibility','hidden');this.start(zero);}else{this.callChain.delay(10,this);this.fireEvent('complete',this.element);this.fireEvent('hide',this.element);}}else if(this.options.link=='chain'){this.chain(this.dissolve.bind(this));}else if(this.options.link=='cancel'&&!this.hiding){this.cancel();this.dissolve();}}catch(e){this.hiding=false;this.element.setStyle('display','none');this.callChain.delay(10,this);this.fireEvent('complete',this.element);this.fireEvent('hide',this.element);}
return this;},reveal:function(){try{if(!this.showing&&!this.hiding){if(this.element.getStyle('display')=='none'||this.element.getStyle('visiblity')=='hidden'||this.element.getStyle('opacity')==0){this.showing=true;this.hiding=this.hidden=false;var startStyles;this.cssText=this.element.style.cssText;this.element.measure(function(){startStyles=this.element.getComputedSize({styles:this.options.styles,mode:this.options.mode});}.bind(this));$each(startStyles,function(style,name){startStyles[name]=style;});if($chk(this.options.heightOverride))startStyles.height=this.options.heightOverride.toInt();if($chk(this.options.widthOverride))startStyles.width=this.options.widthOverride.toInt();if(this.options.transitionOpacity){this.element.setStyle('opacity',0);startStyles.opacity=1;}
var zero={height:0,display:this.options.display};$each(startStyles,function(style,name){zero[name]=0;});this.element.setStyles($merge(zero,{overflow:'hidden'}));var hideThese=this.options.hideInputs?this.element.getElements(this.options.hideInputs):null;if(hideThese)hideThese.setStyle('visibility','hidden');this.start(startStyles);this.$chain.unshift(function(){this.element.style.cssText=this.cssText;this.element.setStyle('display',this.options.display);if(!this.hidden)this.showing=false;if(hideThese)hideThese.setStyle('visibility','visible');this.callChain();this.fireEvent('show',this.element);}.bind(this));}else{this.callChain();this.fireEvent('complete',this.element);this.fireEvent('show',this.element);}}else if(this.options.link=='chain'){this.chain(this.reveal.bind(this));}else if(this.options.link=='cancel'&&!this.showing){this.cancel();this.reveal();}}catch(e){this.element.setStyles({display:this.options.display,visiblity:'visible',opacity:1});this.showing=false;this.callChain.delay(10,this);this.fireEvent('complete',this.element);this.fireEvent('show',this.element);}
return this;},toggle:function(){if(this.element.getStyle('display')=='none'||this.element.getStyle('visiblity')=='hidden'||this.element.getStyle('opacity')==0){this.reveal();}else{this.dissolve();}
return this;},cancel:function(){this.parent.apply(this,arguments);this.element.style.cssText=this.cssText;this.hidding=false;this.showing=false;}});Element.Properties.reveal={set:function(options){var reveal=this.retrieve('reveal');if(reveal)reveal.cancel();return this.eliminate('reveal').store('reveal:options',options);},get:function(options){if(options||!this.retrieve('reveal')){if(options||!this.retrieve('reveal:options'))this.set('reveal',options);this.store('reveal',new Fx.Reveal(this,this.retrieve('reveal:options')));}
return this.retrieve('reveal');}};Element.Properties.dissolve=Element.Properties.reveal;Element.implement({reveal:function(options){this.get('reveal',options).reveal();return this;},dissolve:function(options){this.get('reveal',options).dissolve();return this;},nix:function(){var params=Array.link(arguments,{destroy:Boolean.type,options:Object.type});this.get('reveal',params.options).dissolve().chain(function(){this[params.destroy?'destroy':'dispose']();}.bind(this));return this;},wink:function(){var params=Array.link(arguments,{duration:Number.type,options:Object.type});var reveal=this.get('reveal',params.options);reveal.reveal().chain(function(){(function(){reveal.dissolve();}).delay(params.duration||2000);});}});
Fx.Scroll=new Class({Extends:Fx,options:{offset:{x:0,y:0},wheelStops:true},initialize:function(element,options){this.element=this.subject=document.id(element);this.parent(options);var cancel=this.cancel.bind(this,false);if($type(this.element)!='element')this.element=document.id(this.element.getDocument().body);var stopper=this.element;if(this.options.wheelStops){this.addEvent('start',function(){stopper.addEvent('mousewheel',cancel);},true);this.addEvent('complete',function(){stopper.removeEvent('mousewheel',cancel);},true);}},set:function(){var now=Array.flatten(arguments);if(Browser.Engine.gecko)now=[Math.round(now[0]),Math.round(now[1])];this.element.scrollTo(now[0],now[1]);},compute:function(from,to,delta){return[0,1].map(function(i){return Fx.compute(from[i],to[i],delta);});},start:function(x,y){if(!this.check(x,y))return this;var scrollSize=this.element.getScrollSize(),scroll=this.element.getScroll(),values={x:x,y:y};for(var z in values){var max=scrollSize[z];if($chk(values[z]))values[z]=($type(values[z])=='number')?values[z]:max;else values[z]=scroll[z];values[z]+=this.options.offset[z];}
return this.parent([scroll.x,scroll.y],[values.x,values.y]);},toTop:function(){return this.start(false,0);},toLeft:function(){return this.start(0,false);},toRight:function(){return this.start('right',false);},toBottom:function(){return this.start(false,'bottom');},toElement:function(el){var position=document.id(el).getPosition(this.element);return this.start(position.x,position.y);},scrollIntoView:function(el,axes,offset){axes=axes?$splat(axes):['x','y'];var to={};el=document.id(el);var pos=el.getPosition(this.element);var size=el.getSize();var scroll=this.element.getScroll();var containerSize=this.element.getSize();var edge={x:pos.x+size.x,y:pos.y+size.y};['x','y'].each(function(axis){if(axes.contains(axis)){if(edge[axis]>scroll[axis]+containerSize[axis])to[axis]=edge[axis]-containerSize[axis];if(pos[axis]<scroll[axis])to[axis]=pos[axis];}
if(to[axis]==null)to[axis]=scroll[axis];if(offset&&offset[axis])to[axis]=to[axis]+offset[axis];},this);if(to.x!=scroll.x||to.y!=scroll.y)this.start(to.x,to.y);return this;},scrollToCenter:function(el,axes,offset){axes=axes?$splat(axes):['x','y'];el=$(el);var to={},pos=el.getPosition(this.element),size=el.getSize(),scroll=this.element.getScroll(),containerSize=this.element.getSize(),edge={x:pos.x+size.x,y:pos.y+size.y};['x','y'].each(function(axis){if(axes.contains(axis)){to[axis]=pos[axis]-(containerSize[axis]-size[axis])/2;}
if(to[axis]==null)to[axis]=scroll[axis];if(offset&&offset[axis])to[axis]=to[axis]+offset[axis];},this);if(to.x!=scroll.x||to.y!=scroll.y)this.start(to.x,to.y);return this;}});
Fx.Slide=new Class({Extends:Fx,options:{mode:'vertical',wrapper:false,hideOverflow:true},initialize:function(element,options){this.addEvent('complete',function(){this.open=(this.wrapper['offset'+this.layout.capitalize()]!=0);if(this.open)this.wrapper.setStyle('height','');if(this.open&&Browser.Engine.webkit419)this.element.dispose().inject(this.wrapper);},true);this.element=this.subject=document.id(element);this.parent(options);var wrapper=this.element.retrieve('wrapper');var styles=this.element.getStyles('margin','position','overflow');if(this.options.hideOverflow)styles=$extend(styles,{overflow:'hidden'});if(this.options.wrapper)wrapper=document.id(this.options.wrapper).setStyles(styles);this.wrapper=wrapper||new Element('div',{styles:styles}).wraps(this.element);this.element.store('wrapper',this.wrapper).setStyle('margin',0);this.now=[];this.open=true;},vertical:function(){this.margin='margin-top';this.layout='height';this.offset=this.element.offsetHeight;},horizontal:function(){this.margin='margin-left';this.layout='width';this.offset=this.element.offsetWidth;},set:function(now){this.element.setStyle(this.margin,now[0]);this.wrapper.setStyle(this.layout,now[1]);return this;},compute:function(from,to,delta){return[0,1].map(function(i){return Fx.compute(from[i],to[i],delta);});},start:function(how,mode){if(!this.check(how,mode))return this;this[mode||this.options.mode]();var margin=this.element.getStyle(this.margin).toInt();var layout=this.wrapper.getStyle(this.layout).toInt();var caseIn=[[margin,layout],[0,this.offset]];var caseOut=[[margin,layout],[-this.offset,0]];var start;switch(how){case'in':start=caseIn;break;case'out':start=caseOut;break;case'toggle':start=(layout==0)?caseIn:caseOut;}
return this.parent(start[0],start[1]);},slideIn:function(mode){return this.start('in',mode);},slideOut:function(mode){return this.start('out',mode);},hide:function(mode){this[mode||this.options.mode]();this.open=false;return this.set([-this.offset,0]);},show:function(mode){this[mode||this.options.mode]();this.open=true;return this.set([0,this.offset]);},toggle:function(mode){return this.start('toggle',mode);}});Element.Properties.slide={set:function(options){var slide=this.retrieve('slide');if(slide)slide.cancel();return this.eliminate('slide').store('slide:options',$extend({link:'cancel'},options));},get:function(options){if(options||!this.retrieve('slide')){if(options||!this.retrieve('slide:options'))this.set('slide',options);this.store('slide',new Fx.Slide(this,this.retrieve('slide:options')));}
return this.retrieve('slide');}};Element.implement({slide:function(how,mode){how=how||'toggle';var slide=this.get('slide'),toggle;switch(how){case'hide':slide.hide(mode);break;case'show':slide.show(mode);break;case'toggle':var flag=this.retrieve('slide:flag',slide.open);slide[flag?'slideOut':'slideIn'](mode);this.store('slide:flag',!flag);toggle=true;break;default:slide.start(how,mode);}
if(!toggle)this.eliminate('slide:flag');return this;}});
var SmoothScroll=Fx.SmoothScroll=new Class({Extends:Fx.Scroll,initialize:function(options,context){context=context||document;this.doc=context.getDocument();var win=context.getWindow();this.parent(this.doc,options);this.links=$$(this.options.links||this.doc.links);var location=win.location.href.match(/^[^#]*/)[0]+'#';this.links.each(function(link){if(link.href.indexOf(location)!=0){return;}
var anchor=link.href.substr(location.length);if(anchor)this.useLink(link,anchor);},this);if(!Browser.Engine.webkit419){this.addEvent('complete',function(){win.location.hash=this.anchor;},true);}},useLink:function(link,anchor){var el;link.addEvent('click',function(event){if(el!==false&&!el)el=document.id(anchor)||this.doc.getElement('a[name='+anchor+']');if(el){event.preventDefault();this.anchor=anchor;this.toElement(el).chain(function(){this.fireEvent('scrolledTo',[link,el]);}.bind(this));link.blur();}}.bind(this));}});
Fx.Sort=new Class({Extends:Fx.Elements,options:{mode:'vertical'},initialize:function(elements,options){this.parent(elements,options);this.elements.each(function(el){if(el.getStyle('position')=='static')el.setStyle('position','relative');});this.setDefaultOrder();},setDefaultOrder:function(){this.currentOrder=this.elements.map(function(el,index){return index;});},sort:function(newOrder){if($type(newOrder)!='array')return false;var top=0,left=0,next={},zero={},vert=this.options.mode=='vertical';var current=this.elements.map(function(el,index){var size=el.getComputedSize({styles:['border','padding','margin']});var val;if(vert){val={top:top,margin:size['margin-top'],height:size.totalHeight};top+=val.height-size['margin-top'];}else{val={left:left,margin:size['margin-left'],width:size.totalWidth};left+=val.width;}
var plain=vert?'top':'left';zero[index]={};var start=el.getStyle(plain).toInt();zero[index][plain]=start||0;return val;},this);this.set(zero);newOrder=newOrder.map(function(i){return i.toInt();});if(newOrder.length!=this.elements.length){this.currentOrder.each(function(index){if(!newOrder.contains(index))newOrder.push(index);});if(newOrder.length>this.elements.length)
newOrder.splice(this.elements.length-1,newOrder.length-this.elements.length);}
var margin=top=left=0;newOrder.each(function(item,index){var newPos={};if(vert){newPos.top=top-current[item].top-margin;top+=current[item].height;}else{newPos.left=left-current[item].left;left+=current[item].width;}
margin=margin+current[item].margin;next[item]=newPos;},this);var mapped={};$A(newOrder).sort().each(function(index){mapped[index]=next[index];});this.start(mapped);this.currentOrder=newOrder;return this;},rearrangeDOM:function(newOrder){newOrder=newOrder||this.currentOrder;var parent=this.elements[0].getParent();var rearranged=[];this.elements.setStyle('opacity',0);newOrder.each(function(index){rearranged.push(this.elements[index].inject(parent).setStyles({top:0,left:0}));},this);this.elements.setStyle('opacity',1);this.elements=$$(rearranged);this.setDefaultOrder();return this;},getDefaultOrder:function(){return this.elements.map(function(el,index){return index;});},forward:function(){return this.sort(this.getDefaultOrder());},backward:function(){return this.sort(this.getDefaultOrder().reverse());},reverse:function(){return this.sort(this.currentOrder.reverse());},sortByElements:function(elements){return this.sort(elements.map(function(el){return this.elements.indexOf(el);},this));},swap:function(one,two){if($type(one)=='element')one=this.elements.indexOf(one);if($type(two)=='element')two=this.elements.indexOf(two);var newOrder=$A(this.currentOrder);newOrder[this.currentOrder.indexOf(one)]=two;newOrder[this.currentOrder.indexOf(two)]=one;return this.sort(newOrder);}});
var Drag=new Class({Implements:[Events,Options],options:{snap:6,unit:'px',grid:false,style:true,limit:false,handle:false,invert:false,preventDefault:false,stopPropagation:false,modifiers:{x:'left',y:'top'}},initialize:function(){var params=Array.link(arguments,{'options':Object.type,'element':$defined});this.element=document.id(params.element);this.document=this.element.getDocument();this.setOptions(params.options||{});var htype=$type(this.options.handle);this.handles=((htype=='array'||htype=='collection')?$$(this.options.handle):document.id(this.options.handle))||this.element;this.mouse={'now':{},'pos':{}};this.value={'start':{},'now':{}};this.selection=(Browser.Engine.trident)?'selectstart':'mousedown';this.bound={start:this.start.bind(this),check:this.check.bind(this),drag:this.drag.bind(this),stop:this.stop.bind(this),cancel:this.cancel.bind(this),eventStop:$lambda(false)};this.attach();},attach:function(){this.handles.addEvent('mousedown',this.bound.start);return this;},detach:function(){this.handles.removeEvent('mousedown',this.bound.start);return this;},start:function(event){if(event.rightClick)return;if(this.options.preventDefault)event.preventDefault();if(this.options.stopPropagation)event.stopPropagation();this.mouse.start=event.page;this.fireEvent('beforeStart',this.element);var limit=this.options.limit;this.limit={x:[],y:[]};for(var z in this.options.modifiers){if(!this.options.modifiers[z])continue;if(this.options.style)this.value.now[z]=this.element.getStyle(this.options.modifiers[z]).toInt();else this.value.now[z]=this.element[this.options.modifiers[z]];if(this.options.invert)this.value.now[z]*=-1;this.mouse.pos[z]=event.page[z]-this.value.now[z];if(limit&&limit[z]){for(var i=2;i--;i){if($chk(limit[z][i]))this.limit[z][i]=$lambda(limit[z][i])();}}}
if($type(this.options.grid)=='number')this.options.grid={x:this.options.grid,y:this.options.grid};this.document.addEvents({mousemove:this.bound.check,mouseup:this.bound.cancel});this.document.addEvent(this.selection,this.bound.eventStop);},check:function(event){if(this.options.preventDefault)event.preventDefault();var distance=Math.round(Math.sqrt(Math.pow(event.page.x-this.mouse.start.x,2)+Math.pow(event.page.y-this.mouse.start.y,2)));if(distance>this.options.snap){this.cancel();this.document.addEvents({mousemove:this.bound.drag,mouseup:this.bound.stop});this.fireEvent('start',[this.element,event]).fireEvent('snap',this.element);}},drag:function(event){if(this.options.preventDefault)event.preventDefault();this.mouse.now=event.page;for(var z in this.options.modifiers){if(!this.options.modifiers[z])continue;this.value.now[z]=this.mouse.now[z]-this.mouse.pos[z];if(this.options.invert)this.value.now[z]*=-1;if(this.options.limit&&this.limit[z]){if($chk(this.limit[z][1])&&(this.value.now[z]>this.limit[z][1])){this.value.now[z]=this.limit[z][1];}else if($chk(this.limit[z][0])&&(this.value.now[z]<this.limit[z][0])){this.value.now[z]=this.limit[z][0];}}
if(this.options.grid[z])this.value.now[z]-=((this.value.now[z]-(this.limit[z][0]||0))%this.options.grid[z]);if(this.options.style){this.element.setStyle(this.options.modifiers[z],this.value.now[z]+this.options.unit);}else{this.element[this.options.modifiers[z]]=this.value.now[z];}}
this.fireEvent('drag',[this.element,event]);},cancel:function(event){this.document.removeEvent('mousemove',this.bound.check);this.document.removeEvent('mouseup',this.bound.cancel);if(event){this.document.removeEvent(this.selection,this.bound.eventStop);this.fireEvent('cancel',this.element);}},stop:function(event){this.document.removeEvent(this.selection,this.bound.eventStop);this.document.removeEvent('mousemove',this.bound.drag);this.document.removeEvent('mouseup',this.bound.stop);if(event)this.fireEvent('complete',[this.element,event]);}});Element.implement({makeResizable:function(options){var drag=new Drag(this,$merge({modifiers:{x:'width',y:'height'}},options));this.store('resizer',drag);return drag.addEvent('drag',function(){this.fireEvent('resize',drag);}.bind(this));}});
var Slider=new Class({Implements:[Events,Options],Binds:['clickedElement','draggedKnob','scrolledElement'],options:{onTick:function(position){if(this.options.snap)position=this.toPosition(this.step);this.knob.setStyle(this.property,position);},initialStep:0,snap:false,offset:0,range:false,wheel:false,steps:100,mode:'horizontal'},initialize:function(element,knob,options){this.setOptions(options);this.element=document.id(element);this.knob=document.id(knob);this.previousChange=this.previousEnd=this.step=-1;var offset,limit={},modifiers={'x':false,'y':false};switch(this.options.mode){case'vertical':this.axis='y';this.property='top';offset='offsetHeight';break;case'horizontal':this.axis='x';this.property='left';offset='offsetWidth';}
this.full=this.element.measure(function(){this.half=this.knob[offset]/2;return this.element[offset]-this.knob[offset]+(this.options.offset*2);}.bind(this));this.min=$chk(this.options.range[0])?this.options.range[0]:0;this.max=$chk(this.options.range[1])?this.options.range[1]:this.options.steps;this.range=this.max-this.min;this.steps=this.options.steps||this.full;this.stepSize=Math.abs(this.range)/this.steps;this.stepWidth=this.stepSize*this.full/Math.abs(this.range);this.knob.setStyle('position','relative').setStyle(this.property,this.options.initialStep?this.toPosition(this.options.initialStep):-this.options.offset);modifiers[this.axis]=this.property;limit[this.axis]=[-this.options.offset,this.full-this.options.offset];var dragOptions={snap:0,limit:limit,modifiers:modifiers,onDrag:this.draggedKnob,onStart:this.draggedKnob,onBeforeStart:(function(){this.isDragging=true;}).bind(this),onCancel:function(){this.isDragging=false;}.bind(this),onComplete:function(){this.isDragging=false;this.draggedKnob();this.end();}.bind(this)};if(this.options.snap){dragOptions.grid=Math.ceil(this.stepWidth);dragOptions.limit[this.axis][1]=this.full;}
this.drag=new Drag(this.knob,dragOptions);this.attach();},attach:function(){this.element.addEvent('mousedown',this.clickedElement);if(this.options.wheel)this.element.addEvent('mousewheel',this.scrolledElement);this.drag.attach();return this;},detach:function(){this.element.removeEvent('mousedown',this.clickedElement);this.element.removeEvent('mousewheel',this.scrolledElement);this.drag.detach();return this;},set:function(step){if(!((this.range>0)^(step<this.min)))step=this.min;if(!((this.range>0)^(step>this.max)))step=this.max;this.step=Math.round(step);this.checkStep();this.fireEvent('tick',this.toPosition(this.step));this.end();return this;},clickedElement:function(event){if(this.isDragging||event.target==this.knob)return;var dir=this.range<0?-1:1;var position=event.page[this.axis]-this.element.getPosition()[this.axis]-this.half;position=position.limit(-this.options.offset,this.full-this.options.offset);this.step=Math.round(this.min+dir*this.toStep(position));this.checkStep();this.fireEvent('tick',position);this.end();},scrolledElement:function(event){var mode=(this.options.mode=='horizontal')?(event.wheel<0):(event.wheel>0);this.set(mode?this.step-this.stepSize:this.step+this.stepSize);event.stop();},draggedKnob:function(){var dir=this.range<0?-1:1;var position=this.drag.value.now[this.axis];position=position.limit(-this.options.offset,this.full-this.options.offset);this.step=Math.round(this.min+dir*this.toStep(position));this.checkStep();},checkStep:function(){if(this.previousChange!=this.step){this.previousChange=this.step;this.fireEvent('change',this.step);}},end:function(){if(this.previousEnd!==this.step){this.previousEnd=this.step;this.fireEvent('complete',this.step+'');}},toStep:function(position){var step=(position+this.options.offset)*this.stepSize/this.full*this.steps;return this.options.steps?Math.round(step-=step%this.stepSize):step;},toPosition:function(step){return(this.full*Math.abs(this.min-step))/(this.steps*this.stepSize)-this.options.offset;}});
Request.implement({options:{initialDelay:5000,delay:5000,limit:60000},startTimer:function(data){var fn=function(){if(!this.running)this.send({data:data});};this.timer=fn.delay(this.options.initialDelay,this);this.lastDelay=this.options.initialDelay;this.completeCheck=function(response){$clear(this.timer);this.lastDelay=(response)?this.options.delay:(this.lastDelay+this.options.delay).min(this.options.limit);this.timer=fn.delay(this.lastDelay,this);};return this.addEvent('complete',this.completeCheck);},stopTimer:function(){$clear(this.timer);return this.removeEvent('complete',this.completeCheck);}});
(function(){var read=function(option,element){return(option)?($type(option)=='function'?option(element):element.get(option)):'';};this.Tips=new Class({Implements:[Events,Options],options:{onShow:function(){this.tip.setStyle('display','block');},onHide:function(){this.tip.setStyle('display','none');},title:'title',text:function(element){return element.get('rel')||element.get('href');},showDelay:100,hideDelay:100,className:'tip-wrap',offset:{x:16,y:16},windowPadding:{x:0,y:0},fixed:false},initialize:function(){var params=Array.link(arguments,{options:Object.type,elements:$defined});this.setOptions(params.options);if(params.elements)this.attach(params.elements);this.container=new Element('div',{'class':'tip'});},toElement:function(){if(this.tip)return this.tip;return this.tip=new Element('div',{'class':this.options.className,styles:{position:'absolute',top:0,left:0}}).adopt(new Element('div',{'class':'tip-top'}),this.container,new Element('div',{'class':'tip-bottom'})).inject(document.body);},attach:function(elements){$$(elements).each(function(element){var title=read(this.options.title,element),text=read(this.options.text,element);element.erase('title').store('tip:native',title).retrieve('tip:title',title);element.retrieve('tip:text',text);this.fireEvent('attach',[element]);var events=['enter','leave'];if(!this.options.fixed)events.push('move');events.each(function(value){var event=element.retrieve('tip:'+value);if(!event)event=this['element'+value.capitalize()].bindWithEvent(this,element);element.store('tip:'+value,event).addEvent('mouse'+value,event);},this);},this);return this;},detach:function(elements){$$(elements).each(function(element){['enter','leave','move'].each(function(value){element.removeEvent('mouse'+value,element.retrieve('tip:'+value)).eliminate('tip:'+value);});this.fireEvent('detach',[element]);if(this.options.title=='title'){var original=element.retrieve('tip:native');if(original)element.set('title',original);}},this);return this;},elementEnter:function(event,element){this.container.empty();['title','text'].each(function(value){var content=element.retrieve('tip:'+value);if(content)this.fill(new Element('div',{'class':'tip-'+value}).inject(this.container),content);},this);$clear(this.timer);this.timer=(function(){this.show(this,element);this.position((this.options.fixed)?{page:element.getPosition()}:event);}).delay(this.options.showDelay,this);},elementLeave:function(event,element){$clear(this.timer);this.timer=this.hide.delay(this.options.hideDelay,this,element);this.fireForParent(event,element);},fireForParent:function(event,element){element=element.getParent();if(!element||element==document.body)return;if(element.retrieve('tip:enter'))element.fireEvent('mouseenter',event);else this.fireForParent(event,element);},elementMove:function(event,element){this.position(event);},position:function(event){if(!this.tip)document.id(this);var size=window.getSize(),scroll=window.getScroll(),tip={x:this.tip.offsetWidth,y:this.tip.offsetHeight},props={x:'left',y:'top'},obj={};for(var z in props){obj[props[z]]=event.page[z]+this.options.offset[z];if((obj[props[z]]+tip[z]-scroll[z])>size[z]-this.options.windowPadding[z])obj[props[z]]=event.page[z]-this.options.offset[z]-tip[z];}
this.tip.setStyles(obj);},fill:function(element,contents){if(typeof contents=='string')element.set('html',contents);else element.adopt(contents);},show:function(element){if(!this.tip)document.id(this);this.fireEvent('show',[this.tip,element]);},hide:function(element){if(!this.tip)document.id(this);this.fireEvent('hide',[this.tip,element]);}});})();
