Fx.Elements=new Class({Extends:Fx.CSS,initialize:function(a,b){this.elements=this.subject=$$(a);this.parent(b)},compute:function(a,b,d){var c={};for(var g in a){var i=a[g],e=b[g],h=c[g]={};for(var f in i)h[f]=this.parent(i[f],e[f],d)}return c},set:function(a){for(var b in a){var d=a[b];for(var c in d)this.render(this.elements[b],c,d[c],this.options.unit)}return this},start:function(a){if(!this.check(a))return this;var b={},d={};for(var c in a){var g=a[c],i=b[c]={},e=d[c]={};for(var h in g){var f=
this.prepare(this.elements[c],h,g[h]);i[h]=f.from;e[h]=f.to}}return this.parent(b,d)}});
var Loop=new Class({loopCount:0,isStopped:true,isLooping:false,loopMethod:$empty,setLoop:function(a,b){if(this.isLooping){this.stopLoop();var d=true}else d=false;this.loopMethod=a;this.loopDelay=b||3E3;d&&this.startLoop();return this},stopLoop:function(){this.isStopped=true;this.isLooping=false;$clear(this.periodical);return this},startLoop:function(a){if(this.isStopped){a=a?a:this.loopDelay;this.isStopped=false;this.isLooping=true;this.periodical=this.looper.periodical(a,this)}return this},resetLoop:function(){this.loopCount=
0;return this},looper:function(){this.loopCount++;this.loopMethod(this.loopCount);return this}}),SlideShow=new Class({Implements:[Options,Events,Loop],options:{delay:7E3,transition:"crossFade",duration:"500",autoplay:false},initialize:function(a,b){this.setOptions(b);this.setLoop(this.showNext,this.options.delay);this.element=document.id(a);this.slides=this.element.getChildren();this.current=this.slides[0];this.transitioning=false;this.setup();this.options.autoplay&&this.play()},setup:function(){this.setupElement().setupSlides(true);
return this},setupElement:function(){var a=this.element;a.getStyle("position")!="absolute"&&a!=document.body&&a.setStyle("position","relative");return this},setupSlides:function(a){this.slides.each(function(b,d){this.storeTransition(b).reset(b);a&&d!=0&&b.setStyle("display","none")},this);return this},storeTransition:function(a){var b=a.get("class"),d=/transition:[a-zA-Z]+/,c=/duration:[0-9]+/;d=b.match(d)?b.match(d)[0].split(":")[1]:this.options.transition;b=b.match(c)?b.match(c)[0].split(":")[1]:
this.options.duration;a.store("ssTransition",d).store("ssDuration",b);return this},resetOptions:function(a){this.options=$merge(this.options,a);this.setupSlides(false);return this},getTransition:function(a){return a.retrieve("ssTransition")},getDuration:function(a){return a.retrieve("ssDuration")},show:function(a,b){a=typeof a=="number"?this.slides[a]:a;if(a!=this.current&&!this.transitioning){this.transitioning=true;var d=b&&b.transition?b.transition:this.getTransition(a),c=b&&b.duration?b.duration:
this.getDuration(a),g=this.current.setStyle("z-index",1),i=this.reset(a),e={previous:{element:g,index:this.slides.indexOf(g)},next:{element:i,index:this.slides.indexOf(i)}};this.fireEvent("show",e);this.transitions[d](g,i,c,this);(function(){g.setStyle("display","none");this.fireEvent("showComplete",e);this.transitioning=false}).bind(this).delay(c);this.current=i}return this},reset:function(a){return a.setStyles({position:"absolute","z-index":0,display:"block",left:0,top:0}).fade("show")},nextSlide:function(){var a=
this.current.getNext();return a?a:this.slides[0]},previousSlide:function(){var a=this.current.getPrevious();return a?a:this.slides.getLast()},showNext:function(a){this.show(this.nextSlide(),a);return this},showPrevious:function(a){this.show(this.previousSlide(),a);return this},play:function(){this.startLoop();this.fireEvent("play");return this},pause:function(){this.stopLoop();this.fireEvent("pause");return this},reverse:function(){this.setLoop(this.loopMethod==this.showNext?this.showPrevious:this.showNext,
this.options.delay);this.fireEvent("reverse");return this},toElement:function(){return this.element}});Element.Properties.slideshow={set:function(a){var b=this.retrieve("slideshow");b&&b.pause();return this.eliminate("slideshow").store("slideshow:options",a)},get:function(a){if(a||!this.retrieve("slideshow")){if(a||!this.retrieve("slideshow:options"))this.set("slideshow",a);this.store("slideshow",new SlideShow(this,this.retrieve("slideshow:options")))}return this.retrieve("slideshow")}};
Element.implement({playSlideShow:function(a){this.get("slideshow",a).play();return this},pauseSlideShow:function(a){this.get("slideshow",a).pause();return this}});SlideShow.adders={transitions:{},add:function(a,b){this.transitions[a]=b;this.implement({transitions:this.transitions})},addAllThese:function(a){$A(a).each(function(b){this.add(b[0],b[1])},this)}};$extend(SlideShow,SlideShow.adders);SlideShow.implement(SlideShow.adders);
SlideShow.add("fade",function(a,b,d){a.set("tween",{duration:d}).fade("out");return this});
SlideShow.addAllThese([["none",function(a){a.setStyle("display","none");return this}],["crossFade",function(a,b,d){a.set("tween",{duration:d}).fade("out");b.set("tween",{duration:d}).fade("in");return this}],["fadeThroughBackground",function(a,b,d){d=d/2;b.set("tween",{duration:d}).fade("hide");a.set("tween",{duration:d,onComplete:function(){b.fade("in")}}).fade("out")}],["pushLeft",function(a,b,d,c){c=c.element.getSize().x;b.setStyle("left",c);(new Fx.Elements([a,b],{duration:d})).start({0:{left:[-c]},
1:{left:[0]}});return this}],["pushRight",function(a,b,d,c){c=c.element.getSize().x;b.setStyle("left",-c);(new Fx.Elements([a,b],{duration:d})).start({0:{left:[c]},1:{left:[0]}});return this}],["pushUp",function(a,b,d,c){c=c.element.getSize().y;b.setStyle("top",c);(new Fx.Elements([a,b],{duration:d})).start({0:{top:[-c]},1:{top:[0]}});return this}],["pushDown",function(a,b,d,c){c=c.element.getSize().y;b.setStyle("top",-c);(new Fx.Elements([a,b],{duration:d})).start({0:{top:[c]},1:{top:[0]}});return this}],
["blindRight",function(a,b,d,c){a=c.element.getSize().x;b.setStyles({left:-a,"z-index":2}).set("tween",{duration:d}).tween("left",0);return this}],["blindLeft",function(a,b,d,c){a=c.element.getSize().x;b.setStyles({left:a,"z-index":2}).set("tween",{duration:d}).tween("left",0);return this}],["blindUp",function(a,b,d,c){a=c.element.getSize().y;b.setStyles({top:a,"z-index":2}).set("tween",{duration:d}).tween("top",0);return this}],["blindDown",function(a,b,d,c){a=c.element.getSize().y;b.setStyles({top:-a,
"z-index":2}).set("tween",{duration:d}).tween("top",0);return this}],["blindDownFade",function(a,b,d,c){this.blindDown(a,b,d,c).fade(a,b,d,c)}],["blindUpFade",function(a,b,d,c){this.blindUp(a,b,d,c).fade(a,b,d,c)}],["blindLeftFade",function(a,b,d,c){this.blindLeft(a,b,d,c).fade(a,b,d,c)}],["blindRightFade",function(a,b,d,c){this.blindRight(a,b,d,c).fade(a,b,d,c)}]]);
var Tabs=new Class({Extends:SlideShow,options:{transition:"none",currentClassName:"current"},initialize:function(a,b,d){this.navs=$$(b);this.parent(a,d);this.bound={navClick:this.navClick.bind(this),onShow:this.onShow.bind(this)};this.attach()},attach:function(){var a=this;this.navs.each(function(b,d){b.store("tabs:handler",function(){a.navClick(d)}).addEvent("click",b.retrieve("tabs:handler"))},this);this.addEvent("show",this.bound.onShow);return this},detach:function(){this.navs.each(function(a){a.removeEvent("click",
a.retrieve("tabs:handler"))},this);return this},navClick:function(a){this.show(a);return this},onShow:function(a){this.navs[a.previous.index].removeClass(this.options.currentClassName);this.navs[a.next.index].addClass(this.options.currentClassName)}});
(function(a){a.store("hashchange:interval",300);a.store("hashchange:ieframe-src","./blank.html");a.store("hashchange:implemented",!!("onhashchange"in a));Element.Events.hashchange={onAdd:function(b){Element.Events.hashchange.onAdd=$empty;var d=$(this),c=$empty;if(d==$(a)){a.store("hashchange:changed",false);var g=function(e,h){a.store("hashchange:current",h||e);if(a.retrieve("hashchange:changed")){e=e.trim();if(e.length==0)if((new String(a.location)).indexOf("#")>=0)e="#";a.fireEvent("hashchange",
[e])}else a.store("hashchange:changed",true)};if(typeof a.onhashchange=="function"&&b!==a.onhashchange){a.addEvent("hashchange",a.onhashchange);a.onhashchange=null}if(Browser.Engine.trident4||Browser.Engine.trident5){c=function(e,h){var f=a.retrieve("hashchange:checker"),l=a.retrieve("hashchange:timer");$clear(l);var j=h&&e.length==0,k=e=="#";l=unescape(new String(a.location));if(k)k=j="#";else if(j)k=j="";else{j=e=e!=null?e:l;if(e.length>0){k=e.indexOf("#");if(k>=0)j=e.substr(k)}k=j.toLowerCase()}var m=
a.retrieve("hashchange:current");if(m!=k){if(h){e=l;if(m)e=e.replace(m,j);else e+=j;a.location=e}l=!h&&a.retrieve("hashchange:changed");g(j,k);l&&a.retrieve("hashchange:ieframe").setPath(j)}l=f.delay(a.retrieve("hashchange:interval"));a.store("hashchange:timer",l)};var i=a.retrieve("hashchange:ieframe-src");b=new IFrame({id:"hashchange-ie-frame",src:i+"?start",styles:{width:0,height:0,position:"absolute",top:-9999,left:-9999},onload:function(){var e=$("hashchange-ie-frame");if(e.retrieve("loaded")){e=
unescape(new String(e.contentWindow.location));var h=e.indexOf("?");if(h>=0){var f="";if(e.indexOf("?empty")>=0)f="#";else{h=e.indexOf("?!");if(h>=0){f=e.substr(h+2);f="#"+f}}a.retrieve("hashchange:checker")(f,true)}}else e.store("loaded",true)}.bind(a)});a.store("hashchange:ieframe",b);b.injectInside(document.body);b.setPath=function(e){if(e.charAt(0)=="#"){e=e.substr(1);if(e.length==0){this.contentWindow.location=i+"?empty";return}}this.contentWindow.location=i+"?!"+escape(e)}.bind(b)}else if(a.retrieve("hashchange:implemented"))c=
a.onhashchange=function(e){e=e&&typeof e=="string"?e:new String(a.location.hash);g.delay(1,a,[e])};else{if(Browser.Engine.presto)history.navigationMode="compatible";c=function(e){var h=a.retrieve("hashchange:checker"),f=a.retrieve("hashchange:timer");$clear(f);e=e||new String(a.location.hash);f=e.toLowerCase();if(e.length==0&&(new String(a.location)).indexOf("#")>=0)f="#";a.retrieve("hashchange:current")!=f&&g(e,f);f=h.delay(a.retrieve("hashchange:interval"));a.store("hashchange:timer",f)}}a.store("hashchange:checker",
c);c();a.sethash=function(e){if(e.charAt(0)!="#")e="#"+e;a.hashcheck(e)}}},onDelete:function(){if($(this)==$(a)){var b=a.retrieve("hashchange:timer");if(b){$clear(b);a.store("hashchange:timer",null)}}}}})(window,undefined);
var HashEvents=new Class({Implements:[Options,Events],initialize:function(a){this.setOptions(a);this.pairs={};this.lastPairs={};this.bound=this.check.bind(this);this.attach()},attach:function(){window.addEvent("hashchange",this.bound);return this},detach:function(){window.removeEvent("hashchange",this.bound);return this},check:function(){this.fireEvent("change");this.pairs=window.location.hash.substr(1).parseHashEvents();for(key in this.pairs)if(this.lastPairs[key]&&this.lastPairs[key]!=this.pairs[key])this.fireEvent(key+
":change",this.pairs[key]);else this.lastPairs[key]||this.fireEvent(key,this.pairs[key]);for(key in this.lastPairs)!this.pairs[key]&&this.fireEvent(key+":remove",this.lastPairs[key]);this.lastPairs=this.pairs;return this},handleBlankKeys:function(a){$type(a)=="array"?a.each(function(b){console.log(b+" added!")},this):console.log(a+" added!")}});
String.implement({parseHashEvents:function(){var a=this.split(/[&;]/),b={};a.length&&a.each(function(d){var c=d.split("=");d=c[0];c=c[1]||true;var g=$type(c)=="string"?c.split(","):false;b[d]=g&&g.length>1?g:c});return b}});
