Slideshow=new Class({Implements:[Chain,Events,Options],options:{captions:false,center:true,classes:[],controller:false,delay:2E3,duration:750,fast:false,height:false,href:"",hu:"",linked:false,loader:{animate:["css/loader-#.png",12]},loop:true,match:/\?slide=(\d+)$/,overlap:true,paused:false,properties:["href","rel","rev","title"],random:false,replace:[/(\.[^\.]+)$/,"t$1"],resize:false,slide:0,thumbnails:false,titles:true,transition:function(a){return-(Math.cos(Math.PI*a)-1)/2},width:false},initialize:function(a,
b,d){this.setOptions(d);if(this.slideshow=$(a)){this.slideshow.set("styles",{display:"block",position:"relative","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 f=this.slideshow.getElement("a")||new Element("a");if(!this.options.href)this.options.href=f.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","controller","thumbnails","hidden","visible","inactive","active","loader"];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,i=arguments.length;g<i;g++)e+="-"+this[arguments[g]];return e}.bind(this.classes);if(!b){this.options.hu=
"";b={};var h=this.slideshow.getElements(this.classes.get("thumbnails")+" img");this.slideshow.getElements(this.classes.get("images")+" img").each(function(e,g){var i=e.get("src"),j=[e.get("alt"),e.get("title"),""].pick();e.getParent().get("tag");var k=e.getParent().get("href")||"",l=h[g]?h[g].get("src"):"";b[i]={caption:j,href:k,thumbnail:l}})}if(this.load(b)){this.events={keydown:[],keyup:[],mousemove:[]};a=function(e){switch(e.key){case "left":this.prev(e.shift);break;case "right":this.next(e.shift);
break;case "p":this.pause()}}.bind(this);this.events.keyup.push(a);document.addEvent("keyup",a);var c=(a=this.slideshow.getElement(this.classes.get("images")))?a.empty():(new Element("div",{"class":this.classes.get("images").substr(1)})).inject(this.slideshow);a=c.getSize();this.height=this.options.height||a.y;this.width=this.options.width||a.x;c.set({styles:{display:"block",height:this.height,overflow:"hidden",position:"relative",width:this.width}});this.slideshow.store("images",c);a=this.options.resize?
"img":"span";this.a=this.image=this.slideshow.getElement(a)||new Element(a);if(Browser.ie&&Browser.ie.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){f.clone().cloneEvents(f).grab(e).inject(c)});this.options.captions&&this._captions();this.options.controller&&this._controller();this.options.loader&&this._loader();this.options.thumbnails&&this._thumbnails();this._preload()}}},
go:function(a,b){if(!((this.slide-1+this.data.images.length)%this.data.images.length==a||Date.now()<this.transition)){window.clearTimeout(this.timer);this.delay=0;this.direction=b?b:a<this.slide?"right":"left";this.slide=a;if(this.preloader)this.preloader=this.preloader.destroy();this._preload(this.options.fast==2||this.options.fast==1&&this.paused)}},first:function(){this.prev(true)},prev:function(a){var b=0;if(!a)if(this.options.random){if(this.showed.i<2)return;this.showed.i-=2;b=this.showed.array[this.showed.i]}else b=
(this.slide-2+this.data.images.length)%this.data.images.length;this.go(b,"right")},pause:function(a){if(a!=null)this.paused=a?false:true;if(this.paused){this.paused=false;this.delay=this.transition=0;this.timer=this._preload.delay(100,this);[this.a,this.b].each(function(b){["morph","tween"].each(function(d){this.retrieve(d)&&this.get(d).resume()},b)});this.options.controller&&this.slideshow.getElement("."+this.classes.pause).removeClass(this.classes.play)}else{this.paused=true;this.delay=Number.MAX_VALUE;
this.transition=0;window.clearTimeout(this.timer);[this.a,this.b].each(function(b){["morph","tween"].each(function(d){this.retrieve(d)&&this.get(d).pause()},b)});this.options.controller&&this.slideshow.getElement("."+this.classes.pause).addClass(this.classes.play)}},next:function(a){this.go(a?this.data.images.length-1:this.slide,"left")},last:function(){this.next(true)},load:function(a){this.firstrun=true;this.showed={array:[],i:0};if(typeOf(a)=="array"){this.options.captions=false;a=Array(a.length).associate(a.map(function(c,
e){return c+"?"+e}))}this.data={images:[],captions:[],hrefs:[],thumbnails:[]};for(var b in a){var d=a[b]||{},f=d.caption?d.caption.trim():"",h=d.href?d.href.trim():this.options.linked?this.options.hu+b:this.options.href;d=d.thumbnail?d.thumbnail.trim():b.replace(this.options.replace[0],this.options.replace[1]);this.data.images.push(b);this.data.captions.push(f);this.data.hrefs.push(h);this.data.thumbnails.push(d)}if(this.options.random)this.slide=Number.random(0,this.data.images.length-1);this.options.thumbnails&&
this.slideshow.retrieve("thumbnails")&&this._thumbnails();if(this.slideshow.retrieve("images")){[this.a,this.b].each(function(c){["morph","tween"].each(function(e){this.retrieve(e)&&this.get(e).cancel()},c)});this.slide=this.transition=0;this.go(0)}return this.data.images.length},destroy:function(a){this.events.each(function(b,d){b.each(function(f){document.removeEvent(d,f)})});this.pause(1);this.options.loader&&window.clearTimeout(this.slideshow.retrieve("loader").retrieve("timer"));this.options.thumbnails&&
window.clearTimeout(this.slideshow.retrieve("thumbnails").retrieve("timer"));this.slideshow.uid=Date.now();a&&this.slideshow[a]()},_preload:function(a){a=undefined;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")&&Date.now()>this.delay&&Date.now()>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;if(this.options.resize){this.image.set("styles",{display:"block",height:"auto",visibility:"hidden",width:"auto",zIndex:this.counter});["src","height","width"].each(function(f){this.image.set(f,this.preloader.get(f))},this);this._resize(this.image);this._center(this.image)}else this.image.set("styles",{display:"block",visibility:"hidden",zIndex:this.counter,"background-image":'url("'+
this.preloader.get("src")+'")'});var b=this.image.getParent();this.data.hrefs[this.slide]?b.set("href",this.data.hrefs[this.slide]):b.erase("href");var d=this.data.captions[this.slide]?this.data.captions[this.slide].replace(/<.+?>/gm,"").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"'"):"";this.image.set("alt",d);this.options.titles&&b.set("title",d);this.options.loader&&this.slideshow.retrieve("loader").fireEvent("hide");this.options.captions&&this.slideshow.retrieve("captions").fireEvent("update",
a);this.options.thumbnails&&this.slideshow.retrieve("thumbnails").fireEvent("update",a);this._show(a);this._loaded()}else{Date.now()>this.delay&&this.options.loader&&this.slideshow.retrieve("loader").fireEvent("show");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",
Object.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 d=this.classes.get("images","visible"),f=this.counter%2?this.a:this.b;if(a){f.get("morph").cancel().set(b);this.image.get("morph").cancel().set(d)}else if(this.options.overlap){f.get("morph").set(d);this.image.get("morph").set(b).start(d)}else{a=function(h,c){this.image.get("morph").set(h).start(c)}.pass([b,
d],this);b=this.classes.get("images",this.direction=="left"?"prev":"next");f.get("morph").set(d).start(b).chain(a)}},_loaded:function(){this.counter++;this.delay=this.paused?Number.MAX_VALUE:Date.now()+this.options.duration+this.options.delay;this.direction="left";this.transition=this.options.fast==2||this.options.fast==1&&this.paused?0:Date.now()+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=Number.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"),d=this.preloader.get("width"),f=this.height/b,h=this.width/d;f=this.options.resize=="length"?f>h?h:f:f>h?f:h;a.set("styles",{height:Math.ceil(b*f),width:Math.ceil(d*f)})}},_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.slideshow);a.set({events:{update:function(b){var d=this.slideshow.retrieve("captions"),f=this.data.captions[this.slide]==="";if(b){b=f?"hidden":"visible";d.set("html",this.data.captions[this.slide]).get("morph").cancel().set(this.classes.get("captions",b))}else{b=f?function(){}:function(h){this.slideshow.retrieve("captions").set("html",
this.data.captions[h]).morph(this.classes.get("captions","visible"))}.pass(this.slide,this);d.get("morph").cancel().start(this.classes.get("captions","hidden")).chain(b)}}.bind(this)},morph:Object.merge({},this.options.captions,{link:"chain"})});this.slideshow.store("captions",a)},_controller:function(){if(this.options.controller===true)this.options.controller={};var a=this.slideshow.getElement(this.classes.get("controller"));a=a?a.empty():(new Element("div",{"class":this.classes.get("controller").substr(1)})).inject(this.slideshow);
var b=(new Element("ul")).inject(a);Object.each({first:"Shift + Leftwards Arrow",prev:"Leftwards Arrow",pause:"P",next:"Rightwards Arrow",last:"Shift + Rightwards Arrow"},function(c,e){var g=(new Element("li",{"class":e=="pause"&&this.options.paused?this.classes.play+" "+this.classes[e]:this.classes[e]})).inject(b);g=this.slideshow.retrieve(e,(new Element("a",{title:(e=="pause"?this.classes.play.capitalize()+" / ":"")+this.classes[e].capitalize()+" ["+c+"]"})).inject(g));g.set("events",{click:function(i){this[i]()}.pass(e,
this),mouseenter:function(i){this.addClass(i)}.pass(this.classes.active,g),mouseleave:function(i){this.removeClass(i)}.pass(this.classes.active,g)})},this);a.set({events:{hide:function(c){this.retrieve("hidden")||this.store("hidden",true).morph(c)}.pass(this.classes.get("controller","hidden"),a),show:function(c){this.retrieve("hidden")&&this.store("hidden",false).morph(c)}.pass(this.classes.get("controller","visible"),a)},morph:Object.merge({},this.options.controller,{link:"cancel"})}).store("hidden",
false);var d=function(c){if(["left","right","p"].contains(c.key)){var e=this.slideshow.retrieve("controller");e.retrieve("hidden")&&e.get("morph").set(this.classes.get("controller","visible"));switch(c.key){case "left":this.slideshow.retrieve(c.shift?"first":"prev").fireEvent("mouseenter");break;case "right":this.slideshow.retrieve(c.shift?"last":"next").fireEvent("mouseenter");break;default:this.slideshow.retrieve("pause").fireEvent("mouseenter")}}}.bind(this);this.events.keydown.push(d);var f=function(c){if(["left",
"right","p"].contains(c.key)){var e=this.slideshow.retrieve("controller");e.retrieve("hidden")&&e.store("hidden",false).fireEvent("hide");switch(c.key){case "left":this.slideshow.retrieve(c.shift?"first":"prev").fireEvent("mouseleave");break;case "right":this.slideshow.retrieve(c.shift?"last":"next").fireEvent("mouseleave");break;default:this.slideshow.retrieve("pause").fireEvent("mouseleave")}}}.bind(this);this.events.keyup.push(f);var h=function(c){var e=this.slideshow.retrieve("images").getCoordinates();
c.page.x>e.left&&c.page.x<e.right&&c.page.y>e.top&&c.page.y<e.bottom?this.slideshow.retrieve("controller").fireEvent("show"):this.slideshow.retrieve("controller").fireEvent("hide")}.bind(this);this.events.mousemove.push(h);document.addEvents({keydown:d,keyup:f,mousemove:h});this.slideshow.retrieve("controller",a).fireEvent("hide")},_loader:function(){if(this.options.loader===true)this.options.loader={};var a=(new Element("div",{"class":this.classes.get("loader").substr(1),morph:Object.merge({},this.options.loader,
{link:"cancel"})})).store("hidden",false).store("i",1).inject(this.slideshow.retrieve("images"));if(this.options.loader.animate){for(var b=0;b<this.options.loader.animate[1];b++)img=new Asset.image(this.options.loader.animate[0].replace(/#/,b));Browser.ie7&&this.options.loader.animate[0].contains("png")&&a.setStyle("backgroundImage","none")}a.set("events",{animate:function(){var d=this.slideshow.retrieve("loader"),f=(d.retrieve("i").toInt()+1)%this.options.loader.animate[1];d.store("i",f);f=this.options.loader.animate[0].replace(/#/,
f);if(Browser.ie7&&this.options.loader.animate[0].contains("png"))d.style.filter='progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+f+'", sizingMethod="scale")';else d.setStyle("backgroundImage","url("+f+")")}.bind(this),hide:function(){var d=this.slideshow.retrieve("loader");if(!d.retrieve("hidden")){d.store("hidden",true).morph(this.classes.get("loader","hidden"));this.options.loader.animate&&window.clearInterval(d.retrieve("timer"))}}.bind(this),show:function(){var d=this.slideshow.retrieve("loader");
if(d.retrieve("hidden")){d.store("hidden",false).morph(this.classes.get("loader","visible"));this.options.loader.animate&&d.store("timer",function(){this.fireEvent("animate")}.periodical(50,d))}}.bind(this)});this.slideshow.retrieve("loader",a).fireEvent("hide")},_thumbnails:function(){if(this.options.thumbnails===true)this.options.thumbnails={};var a=this.slideshow.getElement(this.classes.get("thumbnails")),b=a?a.empty():(new Element("div",{"class":this.classes.get("thumbnails").substr(1)})).inject(this.slideshow);
b.setStyle("overflow","hidden");var d=(new Element("ul",{tween:{link:"cancel"}})).inject(b);this.data.thumbnails.each(function(f,h){var c=(new Element("li")).inject(d);c=(new Element("a",{events:{click:function(e){this.go(e);return false}.pass(h,this),loaded:function(){this.data.thumbnails.pop();if(!this.data.thumbnails.length){var e=b.getCoordinates(),g=b.retrieve("props"),i=0,j=g[1],k=g[2];b.getElements("li").each(function(l){l=l.getCoordinates();if(l[j]>i)i=l[j]},this);b.store("limit",e[k]+e[g[0]]-
i)}}.bind(this)},href:this.options.hu+this.data.images[h],morph:Object.merge({},this.options.thumbnails,{link:"cancel"})})).inject(c);this.data.captions[h]&&this.options.titles&&c.set("title",this.data.captions[h].replace(/<.+?>/gm,"").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"'"));(new Asset.image(this.options.hu+f,{onload:function(){this.fireEvent("loaded")}.bind(c)})).inject(c)},this);b.set("events",{scroll:function(f,h){var c=this.getCoordinates(),e=this.getElement("ul").getPosition(),
g=this.retrieve("props"),i=g[3],j,k=g[0],l=g[2],n=this.getElement("ul").set("tween",{property:k}).get("tween");if(f!=null){j=this.getElements("li")[f].getCoordinates();j=c[k]+c[l]/2-j[l]/2-j[k];c=(e[i]-c[k]+j).limit(this.retrieve("limit"),0);h?n.set(c):n.start(c)}else{g=c[g[2]]/3;var m=this.retrieve("page");if(m[i]<c[k]+g)j=(m[i]-c[k]-g)*-0.2;else if(m[i]>c[k]+c[l]-g)j=(m[i]-c[k]-c[l]+g)*-0.2;if(j){c=(e[i]-c[k]+j).limit(this.retrieve("limit"),0);n.set(c)}}}.bind(b),update:function(f){var h=this.slideshow.retrieve("thumbnails");
h.getElements("a").each(function(c,e){if(e==this.slide){if(!c.retrieve("active",false)){c.store("active",true);var g=this.classes.get("thumbnails","active");f?c.get("morph").set(g):c.morph(g)}}else if(c.retrieve("active",true)){c.store("active",false);g=this.classes.get("thumbnails","inactive");f?c.get("morph").set(g):c.morph(g)}},this);h.retrieve("mouseover")||h.fireEvent("scroll",[this.slide,f])}.bind(this)});a=b.getCoordinates();b.store("props",a.height>a.width?["top","bottom","height","y"]:["left",
"right","width","x"]);a=function(f){var h=this.getCoordinates();if(f.page.x>h.left&&f.page.x<h.right&&f.page.y>h.top&&f.page.y<h.bottom){this.store("page",f.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);window.clearInterval(this.retrieve("timer"))}}.bind(b);this.events.mousemove.push(a);document.addEvent("mousemove",a);this.slideshow.store("thumbnails",
b)}});

