Slideshow=new Class({Implements:[Chain,Events,Options],options:{captions:false,center:true,classes:[],controller:false,delay:2000,duration:750,fast:false,height:false,href:"",hu:"/",linked:false,loader:true,loop:true,match:/\?slide=(\d+)$/,overlap:true,paused:false,quick:false,random:false,replace:[/\.(.{3})$/,"t.$1"],resize:true,slide:0,thumbnails:false,transition:function(A){return -(Math.cos(Math.PI*A)-1)/2},width:false},initialize:function(A,D,J){this.setOptions(J);this.slideshow=$(A);if(!this.slideshow){return }this.slideshow.set("styles",{display:"block",position:"relative"});var I=["first","prev","play","pause","next","last","controller","thumbnails","captions","images","hidden","visible","inactive","active","hover","loader"];var H=I.map(function(L,K){return this.options.classes[K]||L},this);this.classes=H.associate(I);var E=this.slideshow.getElement("a[href]")||new Element("a");if(!this.options.href){this.options.href=E.get("href")||""}if(this.options.hu.substr(-1)!="/"){this.options.hu+="/"}if(!D){D={};this.slideshow.getElements("."+this.classes.images+" img").each(function(L){var M=L.getParent();var K=M.get("href")||"";var N=L.get("src").split("/").getLast();D[N]={caption:L.get("alt"),href:K}})}if($type(D)=="array"){this.options.captions=false;D=new Array(D.length).associate(D)}this.data={images:[],captions:[],hrefs:[],thumbnails:[]};for(B in D){this.data.images.push(B);var C=D[B]||{};this.data.captions.push(C.caption||"");this.data.hrefs.push(C.href||((this.options.linked)?this.options.hu+B:this.options.href));this.data.thumbnails.push(C.thumbnail||B.replace(this.options.replace[0],this.options.replace[1]))}if(!this.data.images.length){return }var F=window.location.href.match(this.options.match);this.counter=0;this.slide=(this.options.match&&F)?F[1]%this.data.images.length:this.options.slide;this.paused=false;this.transition=0;if(!this.options.overlap){this.options.duration*=2}var A=this.slideshow.getElement("img");this.a=this.image=(A)?A:new Asset.image(this.options.hu+this.data.images[this.slide]);this.a.set({src:this.options.hu+this.data.images[this.slide],styles:{display:"block",position:"absolute",zIndex:1}});var B=this.a.getSize();this.width=(this.options.width||B.x);this.height=(this.options.height||B.y);if(this.options.width||this.options.height){this._resize(this.a,B.x,B.y)}var A=this.slideshow.getElement("."+this.classes.images);var G=(A)?A.empty():new Element("div",{"class":this.classes.images}).inject(this.slideshow);G.set({styles:{display:"block",height:this.height,overflow:"hidden",position:"relative",width:this.width}});this.slideshow.store("images",G);E.clone().grab(this.a).inject(G);this.b=this.a.clone().setStyle("visibility","hidden");E.clone().grab(this.b).inject(G);if(this.options.loader){this.loader()}if(this.options.captions){this.captions()}if(this.options.controller){this.controller()}if(this.options.thumbnails){this.thumbnails()}document.addEvent("keyup",function(K){switch(K.key){case"left":this.prev(K.shift);break;case"right":this.next(K.shift);break;case"space":this.pause();break}}.bind(this));this.loaded(this.options.quick)},preload:function(A){if(this.preloader.complete&&$time()>this.delay&&$time()>this.transition){this.image=(this.counter%2)?this.b:this.a;this.image.set({src:this.preloader.get("src"),styles:{height:"auto",visibility:"hidden",width:"auto",zIndex:this.counter}});this._resize(this.image,this.preloader.width,this.preloader.height);var B=this.image.getParent();if(this.data.hrefs[this.slide]){B.set("href",this.data.hrefs[this.slide])}else{B.erase("href")}if(this.options.loader){this.slideshow.retrieve("loader").morph("."+this.classes.loader+"-"+this.classes.hidden)}if(this.options.captions){this.slideshow.retrieve("captions").fireEvent("update",A)}if(this.options.thumbnails){this.slideshow.retrieve("thumbnails").fireEvent("update",A)}this.show(A);this.loaded()}else{if($time()>this.delay&&this.options.loader){this.slideshow.retrieve("loader").get("morph").set("."+this.classes.loader+"-"+this.classes.visible)}this.timer=(this.paused)?null:this.preload.delay(100,this,A)}},show:function(B){this._center(this.image);if(!this.image.retrieve("morph")){var C=(this.options.overlap)?{duration:this.options.duration,link:"cancel"}:{duration:this.options.duration/2,link:"chain"};$$(this.a,this.b).set("morph",$merge(this.options.captions,{transition:this.options.transition}))}var E="."+this.classes.images+"-"+((this.direction=="left")?this.classes.next:this.classes.prev);var F="."+this.classes.images+"-"+this.classes.visible;if(B){this.image.get("morph").cancel().set(F)}else{var A=(this.counter%2)?this.a:this.b;if(this.options.overlap){A.get("morph").set(F);this.image.get("morph").set(E).start(F)}else{var D=function(G,H){this.image.get("morph").set(G).start(H)}.pass([E,F],this);var E="."+this.classes.images+"-"+((this.direction=="left")?this.classes.prev:this.classes.next);A.get("morph").set(F).start(E).chain(D)}}},loaded:function(A){this.counter++;this.delay=(this.paused)?Number.MAX_VALUE:((A)?0:$time()+this.options.duration+this.options.delay);this.transition=(this.paused)?0:((this.options.fast)?0:$time()+this.options.duration);this.direction="left";this.slide=(this.options.random&&!this.paused)?$random(0,this.data.images.length-1):(this.slide+1)%this.data.images.length;if(this.slide==0&&!this.options.loop){return }if(this.preloader){this.preloader.destroy()}this.preloader=new Asset.image(this.options.hu+this.data.images[this.slide]);this.preload()},first:function(){this.prev(true)},go:function(B,A){if((this.slide-1+this.data.images.length)%this.data.images.length==B||$time()<this.transition){return }$clear(this.timer);this.delay=0;this.direction=(A)?A:((B<this.slide)?"right":"left");this.slide=B;this.preloader.destroy();this.preloader=new Asset.image(this.options.hu+this.data.images[this.slide]);this.preload(this.options.fast||this.paused)},last:function(){this.next(true)},next:function(A){var B=(A===true)?this.data.images.length-1:this.slide;this.go(B,"left")},pause:function(){if(this.paused){this.paused=false;this.delay=0;this.timer=this.preload.delay(100,this);[this.a,this.b].each(function(A){if(A.retrieve("tween")){A.get("tween").resume()}if(A.retrieve("morph")){A.get("morph").resume()}})}else{this.paused=true;this.delay=Number.MAX_VALUE;$clear(this.timer);[this.a,this.b].each(function(A){if(A.retrieve("tween")){A.get("tween").pause()}if(A.retrieve("morph")){A.get("morph").pause()}})}if(this.options.controller){this.slideshow.getElement("."+this.classes.pause).toggleClass(this.classes.play)}},prev:function(A){var B=(A===true)?0:(this.slide-2+this.data.images.length)%this.data.images.length;this.go(B,"right")},loader:function(){if(this.options.loader===true){this.options.loader={}}var A=new Element("div",{"class":this.classes.loader,morph:$merge(this.options.loader,{link:"cancel"})}).inject(this.slideshow.retrieve("images"));this.slideshow.retrieve("loader",A).get("morph").set("."+this.classes.loader+"-"+this.classes.hidden)},captions:function(){if(this.options.captions===true){this.options.captions={}}var B=this.slideshow.getElement("."+this.classes.captions);var A=(B)?B.empty():new Element("div",{"class":this.classes.captions}).inject(this.slideshow);A.set({events:{update:function(D){var C=this.slideshow.retrieve("captions");var F="."+this.classes.captions+"-"+this.classes.visible;if(D){C.set("html",this.data.captions[this.slide]).get("morph").cancel().set(F)}else{var E=function(G){this.slideshow.retrieve("captions").set("html",this.data.captions[G]).morph(F)}.pass(this.slide,this);C.get("morph").cancel().start("."+this.classes.captions+"-"+this.classes.hidden).chain(E)}}.bind(this)},morph:$merge(this.options.captions,{link:"chain"})});this.slideshow.retrieve("captions",A).fireEvent("update")},controller:function(){if(this.options.controller===true){this.options.controller={}}var C=this.slideshow.getElement("."+this.classes.controller);var A=(C)?C.empty():new Element("div",{"class":this.classes.controller}).inject(this.slideshow);var B=new Element("ul").inject(A);$H({first:"â‡§â†?",prev:"â†?",pause:"space",next:"â†’",last:"â‡§â†’"}).each(function(G,F){var D=new Element("li",{"class":this.classes[F]}).inject(B);var E=this.slideshow.retrieve(F,new Element("a",{title:((F=="pause")?this.classes.play.capitalize()+" / ":"")+this.classes[F].capitalize()+" ["+G+"]"}).inject(D));E.set("events",{click:function(H){this[H]()}.pass(F,this),mouseenter:function(H){H.addClass(this.classes.hover)}.pass(E,this),mouseleave:function(H){H.removeClass(this.classes.hover)}.pass(E,this)})},this);if(this.options.paused){this.pause()}A.set({events:{hide:function(D){if(!this.retrieve("hidden")){this.store("hidden",true).morph(D)}}.pass("."+this.classes.controller+"-"+this.classes.hidden,A),show:function(D){if(this.retrieve("hidden")){this.store("hidden",false).morph(D)}}.pass("."+this.classes.controller+"-"+this.classes.visible,A)},morph:$merge(this.options.controller,{link:"cancel"})}).store("hidden",false);document.addEvents({keydown:function(E){if(E.key.test(/left|right|space/)){var D=this.slideshow.retrieve("controller");if(D.retrieve("hidden")){D.get("morph").set("."+this.classes.controller+"-"+this.classes.visible)}switch(E.key){case"left":this.slideshow.retrieve((E.shift)?"first":"prev").fireEvent("mouseenter");break;case"right":this.slideshow.retrieve((E.shift)?"last":"next").fireEvent("mouseenter");break;default:this.slideshow.retrieve("pause").fireEvent("mouseenter")}}}.bind(this),keyup:function(E){if(E.key.test(/left|right|space/)){var D=this.slideshow.retrieve("controller");if(D.retrieve("hidden")){D.store("hidden",false).fireEvent("hide")}switch(E.key){case"left":this.slideshow.retrieve((E.shift)?"first":"prev").fireEvent("mouseleave");break;case"right":this.slideshow.retrieve((E.shift)?"last":"next").fireEvent("mouseleave");break;default:this.slideshow.retrieve("pause").fireEvent("mouseleave")}}}.bind(this),mousemove:function(E){var D=this.slideshow.retrieve("images").getCoordinates();if(E.page.x>D.left&&E.page.x<D.right&&E.page.y>D.top&&E.page.y<D.bottom){this.slideshow.retrieve("controller").fireEvent("show")}else{this.slideshow.retrieve("controller").fireEvent("hide")}}.bind(this)});this.slideshow.retrieve("controller",A).fireEvent("hide")},thumbnails:function(){if(this.options.thumbnails===true){this.options.thumbnails={}}var B=this.slideshow.getElement("."+this.classes.thumbnails);var D=(B)?B.empty():new Element("div",{"class":this.classes.thumbnails}).inject(this.slideshow);D.setStyle("overflow","hidden");var A=new Element("ul",{tween:{link:"cancel"}}).inject(D);this.data.thumbnails.each(function(I,H){var E=new Element("li").inject(A);var F=new Element("a",{"class":this.classes.thumbnails+"-"+this.classes.hidden,href:this.options.hu+this.data.images[H],morph:$merge(this.options.thumbnails,{link:"cancel"}),title:this.data.captions[H]}).store("active",true).inject(E);F.set("events",{click:function(J){this.go(J);return false}.pass(H,this),loaded:function(K){K.morph("."+this.classes.thumbnails+"-"+this.classes.visible);this.data.thumbnails.pop();if(!this.data.thumbnails.length){var O=D.getCoordinates();var M=D.retrieve("props");var J=0,N=M[1],L=M[2];D.getElements("li").each(function(P){var P=P.getCoordinates();if(P[N]>J){J=P[N]}},this);D.store("limit",O[L]+O[M[0]]-J)}}.pass(F,this)});var G=new Asset.image(this.options.hu+I,{onload:function(){this.fireEvent("loaded")}.bind(F)}).inject(F)},this);D.set("events",{scroll:function(G,J){var E=this.getCoordinates();var K=this.getElement("ul").getPosition();var M=this.retrieve("props");var H=M[3],Q,N=M[0],S=M[2];var R=this.getElement("ul").get("tween",N);R.property=N;if($chk(G)){var P=this.getElements("li")[G].getCoordinates();var Q=E[N]+(E[S]/2)-(P[S]/2)-P[N];var O=(K[H]-E[N]+Q).limit(this.retrieve("limit"),0);if(J){R.set(O)}else{this.getElement("ul").tween(N,O)}}else{var F=E[M[2]]/3,L=this.retrieve("page"),I=-0.2;if(L[H]<(E[N]+F)){Q=(L[H]-E[N]-F)*I}else{if(L[H]>(E[N]+E[S]-F)){Q=(L[H]-E[N]-E[S]+F)*I}}if(Q){var O=(K[H]-E[N]+Q).limit(this.retrieve("limit"),0);R.set(O)}}}.bind(D),update:function(E){var F=this.slideshow.retrieve("thumbnails");F.getElements("a").each(function(G,H){if(H==this.slide){if(!G.retrieve("active")){G.store("active",true);var J="."+this.classes.thumbnails+"-"+this.classes.active;if(E){G.get("morph").set(J)}else{G.morph(J)}}}else{if(G.retrieve("active")){G.store("active",false);var I="."+this.classes.thumbnails+"-"+this.classes.inactive;if(E){G.get("morph").set(I)}else{G.morph(I)}}}},this);if(!F.retrieve("mouseover")){F.fireEvent("scroll",[this.slide,E])}}.bind(this)});var C=D.getCoordinates();D.store("props",(C.height>C.width)?["top","bottom","height","y"]:["left","right","width","x"]);document.addEvent("mousemove",function(E){var F=this.getCoordinates();if(E.page.x>F.left&&E.page.x<F.right&&E.page.y>F.top&&E.page.y<F.bottom){this.store("page",E.page);if(!this.retrieve("mouseover")){this.store("mouseover",true);this.store("timer",function(){this.fireEvent("scroll")}.periodical(50,this))}}else{if(this.retrieve("mouseover")){this.store("mouseover",false);$clear(this.retrieve("timer"))}}}.bind(D));this.slideshow.retrieve("thumbnails",D).fireEvent("update",true)},_center:function(A){if(this.options.center){var B=A.getSize();A.set("styles",{left:(B.x-this.width)/-2,top:(B.y-this.height)/-2})}},_resize:function(B,A,D){if(this.options.resize){var E=this.height/D;var C=this.width/A;var F=(C>E)?C:E;B.set("styles",{height:Math.ceil(D*F),width:Math.ceil(A*F)})}}});Slideshow.Flash=new Class({Extends:Slideshow,options:{color:"#FFF"},initialize:function(B,C,A){A.overlap=true;this.parent(B,C,A);if($type(this.options.color)=="string"){this.options.color=[this.options.color]}$$(this.a,this.b).set("tween",{duration:this.options.duration,link:"cancel"})},show:function(B){this._center(this.image);if(B){this.image.get("tween").cancel();this.image.fade("show")}else{this.slideshow.retrieve("images").setStyle("background",this.options.color[this.slide%this.options.color.length]);var A=(this.counter%2)?this.a:this.b;A.get("tween").cancel().set("opacity",0);this.image.fade("hide").fade("in")}}});Slideshow.KenBurns=new Class({Extends:Slideshow,options:{pan:100,zoom:50},initialize:function(B,C,A){A.overlap=true;A.resize=true;this.parent(B,C,A);["pan","zoom"].each(function(D){if($type(this.options[D]!="array")){this.options[D]=[this.options[D],this.options[D]]}this.options[D].map(function(E){return(E.toInt()||0).limit(0,100)})},this);$$(this.a,this.b).set({morph:{duration:(this.options.delay+this.options.duration*2),link:"cancel",transition:Fx.Transitions.linear},tween:{duration:this.options.duration,link:"cancel"}})},show:function(B){this.image.set("styles",{bottom:"auto",left:"auto",right:"auto",top:"auto"});var C=["top left","top right","bottom left","bottom right"][this.counter%4].split(" ");C.each(function(F){this.image.setStyle(F,0)},this);dh=this.height/this.preloader.height;dw=this.width/this.preloader.width;delta=(dw>dh)?dw:dh;var A={};var D=($random.run(this.options.zoom)/100)+1;var E=Math.abs(($random.run(this.options.pan)/100)-1);["height","width"].each(function(I,F){var H=Math.ceil(this.preloader[I]*delta);var G=(H*D).toInt();A[I]=[G,H];if(dw>dh||F){var H=(this[I]-this.image[I]);var G=(H*E).toInt();A[C[F]]=[G,H]}},this);if(B){this._center(this.image);this.image.get("tween").cancel();this.image.get("morph").cancel();this.image.fade("show")}else{this.image.set("styles",{opacity:0,visibility:"visible"});this.image.fade("in");this.image.morph(A)}}});Slideshow.Push=new Class({Extends:Slideshow,initialize:function(B,C,A){A.overlap=true;this.parent(B,C,A)},show:function(C){this.image.set("styles",{left:"auto",right:"auto"}).setStyle(this.direction,this.width).setStyle("visibility","visible");var A=[this.image,((this.counter%2)?this.a:this.b)];var B={"0":{},"1":{}};B["0"][this.direction]=[this.width,0];B["1"][this.direction]=[0,-this.width];if(A[1].getStyle(this.direction)=="auto"){var D=this.width-A[1].width;A[1].set("styles",{left:"auto",right:"auto"}).setStyle(this.direction,D);B["1"][this.direction]=[D,-this.width]}if(!this.image.retrieve("fx")){this.image.store("fx",new Fx.Elements(A,{duration:this.options.duration,link:"cancel",transition:this.options.transition}))}if(C){for(var E in B){B[E][this.direction]=B[E][this.direction][1]}this.image.retrieve("fx").cancel().set(B)}else{this.image.retrieve("fx").start(B)}}});