Slideshow=new Class({Implements:[Chain,Events,Options],options:{captions:false,center:true,classes:[],delay:2E3,duration:750,fast:false,height:false,href:"",onclick:"",hu:"",linked:false,loop:true,match:/\?slide=(\d+)$/,overlap:true,paused:false,properties:["href","rel","name","title","onclick"],random:false,replace:[/(\.[^\.]+)$/,"_thumb$1"],resize:"width",slide:0,titles:true,transition:function(a){return-(Math.cos(Math.PI*a)-1)/2},width:false},initialize:function(a,b,c){this.setOptions(c);if(this.slideshow=
$(a)){this.slideshow.set("styles",{display:"block","z-index":0});a=window.location.href.match(this.options.match);this.slide=this.options.match&&a?a[1].toInt():this.options.slide;this.counter=this.delay=this.transition=0;this.direction="left";this.paused=false;this.options.overlap||(this.options.duration*=2);var d=this.slideshow.getElement("a")||new Element("a");if(!this.options.href)this.options.href=d.get("href")||"";if(this.options.hu.length&&!this.options.hu.test(/\/$/))this.options.hu+="/";if(this.options.fast===
true)this.options.fast=2;a=["slideshow","first","prev","play","pause","next","last","images","captions","hidden","visible","inactive","active"];this.classes=a.map(function(e,g){return this.options.classes[g]||e},this).associate(a);this.classes.get=function(){for(var e="."+this.slideshow,g=0,h=arguments.length;g<h;g++)e+="-"+this[arguments[g]];return e}.bind(this.classes);if(!b){this.options.hu="";b={};this.slideshow.getElements(this.classes.get("images")+" img").each(function(e){var g=e.get("src"),
h=$pick(e.get("alt"),e.get("title"),"");e.getParent().get("tag");e=e.getParent().get("href")||"";b[g]={caption:h,href:e}})}if(this.load(b)){var f=(a=this.slideshow.getElement(this.classes.get("images")))?a.empty():(new Element("div",{"class":this.classes.get("images").substr(1)})).inject(this.slideshow);this.image_container=f;a=f.getSize();this.height=this.options.height||a.y;this.width=this.options.width||a.x;f.set({styles:{display:"block",height:this.height,overflow:"hidden",position:"relative",
width:this.width}});this.slideshow.store("images",f);this.a=this.image=this.slideshow.getElement("img")||new Element("img");if(Browser.Engine.trident&&Browser.Engine.version>4)this.a.style.msInterpolationMode="bicubic";this.a.set("styles",{display:"none",position:"absolute",zIndex:1});this.b=this.a.clone();[this.a,this.b].each(function(e){d.clone().cloneEvents(d).grab(e).inject(f)});this.options.captions&&this._captions();this._preload()}}},load:function(a){this.firstrun=true;this.showed={array:[],
i:0};if($type(a)=="array"){this.options.captions=false;a=(new Array(a.length)).associate(a.map(function(g,h){return g+"?"+h}))}this.data={images:[],captions:[],hrefs:[],rel:[],name:[]};for(var b in a){var c=a[b]||{},d=c.caption?c.caption.trim():"",f=c.rel?c.rel:"",e=c.name?c.name:"";c=c.href?c.href.trim():this.options.linked?this.options.hu+b:this.options.href;this.data.images.push(b);this.data.captions.push(d);this.data.rel.push(f);this.data.name.push(e);this.data.hrefs.push(c)}if(this.options.random)this.slide=
$random(0,this.data.images.length-1);if(this.slideshow.retrieve("images")){[this.a,this.b].each(function(g){["morph","tween"].each(function(h){this.retrieve(h)&&this.get(h).cancel()},g)});this.slide=this.transition=0;this.go(0)}return this.data.images.length},destroy:function(a){this.events.each(function(b,c){b.each(function(d){document.removeEvent(c,d)})});this.pause(1);this.slideshow.uid=Native.UID++;a&&this.slideshow[a]()},_preload:function(a){if(!this.preloader)this.preloader=new Asset.image(this.options.hu+
this.data.images[this.slide],{onload:function(){this.store("loaded",true)}});if(this.preloader.retrieve("loaded")&&$time()>this.delay&&$time()>this.transition)if(this.stopped){this.options.captions&&this.slideshow.retrieve("captions").get("morph").cancel().start(this.classes.get("captions","hidden"));this.pause(1);this.end&&this.fireEvent("end");this.stopped=this.end=false}else{this.image=this.counter%2?this.b:this.a;this.image.set("styles",{display:"block",height:"auto",visibility:"hidden",width:"auto",
zIndex:this.counter});["src","height","width"].each(function(d){this.image.set(d,this.preloader.get(d))},this);this._resize(this.image);this._center(this.image);var b=this.image.getParent();this.data.hrefs[this.slide]?b.set("href",this.data.hrefs[this.slide]):b.erase("href");this.options.onclick&&b.set("onclick",this.options.onclick);var c=this.data.captions[this.slide]?this.data.captions[this.slide].replace(/<.+?>/gm,"").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"'"):"";this.image.set("alt",
c);this.options.titles&&b.set("title",c);this.image.set("rel",this.data.rel[this.slide]);this.image.set("name",this.data.name[this.slide]);this.options.captions&&this.slideshow.retrieve("captions").fireEvent("update",a);this._show(a);this._loaded()}else this.timer=this.paused&&this.preloader.retrieve("loaded")?null:this._preload.delay(100,this,a)},_show:function(a){if(!this.image.retrieve("morph")){var b=this.options.overlap?{duration:this.options.duration,link:"cancel"}:{duration:this.options.duration/
2,link:"chain"};$$(this.a,this.b).set("morph",$merge(b,{onStart:this._start.bind(this),onComplete:this._complete.bind(this),transition:this.options.transition}))}b=this.classes.get("images",this.direction=="left"?"next":"prev");var c=this.classes.get("images","visible"),d=this.counter%2?this.a:this.b;if(a){d.get("morph").cancel().set(b);this.image.get("morph").cancel().set(c)}else if(this.options.overlap){d.get("morph").set(c);this.image.get("morph").set(b).start(c)}else{a=function(f,e){this.image.get("morph").set(f).start(e)}.pass([b,
c],this);b=this.classes.get("images",this.direction=="left"?"prev":"next");d.get("morph").set(c).start(b).chain(a)}},_loaded:function(){this.counter++;this.delay=this.paused?Number.MAX_VALUE:$time()+this.options.duration+this.options.delay;this.direction="left";this.transition=this.options.fast==2||this.options.fast==1&&this.paused?0:$time()+this.options.duration;if(this.slide+1==this.data.images.length&&!this.options.loop&&!this.options.random)this.stopped=this.end=true;if(this.options.random){this.showed.i++;
if(this.showed.i>=this.showed.array.length){var a=this.slide;for(this.showed.array.getLast()!=a&&this.showed.array.push(a);this.slide==a;)this.slide=$random(0,this.data.images.length-1)}else this.slide=this.showed.array[this.showed.i]}else this.slide=(this.slide+1)%this.data.images.length;this.image.getStyle("visibility")!="visible"&&function(){this.image.setStyle("visibility","visible")}.delay(1,this);if(this.preloader)this.preloader=this.preloader.destroy();this._preload()},_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(a){if(this.options.resize){var b=this.preloader.get("height"),c=this.preloader.get("width"),d=this.height/b,f=this.width/c;d=this.options.resize=="length"?d>f?f:d:d>f?d:f;a.set("styles",{height:Math.ceil(b*d),width:Math.ceil(c*d)})}},_start:function(){this.fireEvent("start")},_complete:function(){if(this.firstrun&&this.options.paused){this.firstrun=false;this.pause(1)}this.fireEvent("complete")},_captions:function(){if(this.options.captions===
true)this.options.captions={};var a=this.slideshow.getElement(this.classes.get("captions"));a=a?a.empty():(new Element("div",{"class":this.classes.get("captions").substr(1)})).inject(this.image_container);a.set({events:{update:function(b){var c=this.slideshow.retrieve("captions"),d=this.data.captions[this.slide]==="";if(b){b=d?"hidden":"visible";c.set("html",this.data.captions[this.slide]).get("morph").cancel().set(this.classes.get("captions",b))}else{b=d?$empty:function(f){this.slideshow.retrieve("captions").set("html",
this.data.captions[f]).morph(this.classes.get("captions","visible"))}.pass(this.slide,this);c.get("morph").cancel().start(this.classes.get("captions","hidden")).chain(b)}}.bind(this)},morph:$merge(this.options.captions,{link:"chain"})});this.slideshow.store("captions",a)}});