(function(){WhenPaused=1;WhenPlaying=2;OnStart=4;Slideshow=new Class({Implements:[Chain,Events,Options],options:{accesskeys:{first:{key:"shift left",label:"Shift + Left"},prev:{key:"left",label:"Left"},pause:{key:"p",label:"P"},next:{key:"right",label:"Right"},last:{key:"shift right",label:"Shift + Right"}},captions:!1,center:!0,classes:[],controller:!1,data:null,delay:2E3,duration:750,fast:!1,height:!1,href:"",hu:"",linked:!1,loader:!0,loop:!0,match:/\?slide=(\d+)$/,cover:!0,overlap:!0,paused:!1,
random:!1,replace:[/(\.[^\.]+)$/,"t$1"],resize:!1,slide:0,thumbnails:!1,titles:!0,transition:"sine:in:out",width:!1},initialize:function(a,b,c){this.setOptions(c);if(this.el=document.id(a)){a=window.location.href.match(this.options.match);this.slide=this._slide=this.options.match&&a?a[1].toInt():this.options.slide;this.counter=this.timeToNextTransition=this.timeToTransitionComplete=0;this.direction="left";this.cache={};this.paused=!1;this.options.overlap||(this.options.duration*=2);var d=this.el.getElement("a")||
new Element("a");if(!this.options.href)this.options.href=d.get("href")||"";this.options.hu.length&&!this.options.hu.test(/\/$/)&&(this.options.hu+="/");if(this.options.fast===!0)this.options.fast=WhenPaused|WhenPlaying;a="slideshow first prev play pause next last images captions controller thumbnails hidden visible inactive active loader".split(" ");this.classes=a.map(function(a,b){return this.options.classes[b]||a},this).associate(a);this.classes.get=function(){for(var a="."+this.slideshow,b=0,c=
arguments.length;b<c;b++)a+="-"+this[arguments[b]];return a}.bind(this.classes);if(!b){this.options.hu="";b={};var e=this.el.getElements(this.classes.get("thumbnails")+" img");this.el.getElements(this.classes.get("images")+" img").each(function(a,c){var d=a.src,f=a.alt||a.title,g=a.getParent().href;b[d]={caption:f,href:g,thumbnail:e[c]?e[c].src:""}})}if(this.load(b)){this.events={};this.events.push=function(a,b){this[a]||(this[a]=[]);this[a].push(b);document.addEvent(a,b);return this}.bind(this.events);
this.accesskeys={};for(action in this.options.accesskeys){var g=this.options.accesskeys[action];this.accesskeys[action]=accesskey={label:g.label};["shift","control","alt"].each(function(a){var b=RegExp(a,"i");accesskey[a]=g.key.test(b);g.key=g.key.replace(b,"")});accesskey.key=g.key.trim()}this.events.push("keyup",function(a){Object.each(this.accesskeys,function(b,c){if(a.key==b.key&&a.shift==b.shift&&a.control==b.control&&a.alt==b.alt)this[c]()},this)}.bind(this));a=this.el.getElement(this.classes.get("images"));
c=this.el.getElement("img")||new Element("img");var f=a?a.empty():(new Element("div",{"class":this.classes.get("images").substr(1)})).inject(this.el);a=f.getSize();this.height=this.options.height||a.y;this.width=this.options.width||a.x;f.set({styles:{height:this.height,width:this.width}});this.el.store("images",f);this.options.cover?(this.a=this.image=new Element("span"),c.setStyle("display","none")):this.a=this.image=c;if(Browser.ie&&Browser.version>=7)this.a.style.msInterpolationMode="bicubic";
this.a.set("styles",{display:"none"});this.b=this.a.clone();[this.a,this.b].each(function(a){d.clone().cloneEvents(d).grab(a).inject(f)});this.options.captions&&new m(this);this.options.controller&&new n(this);this.options.loader&&new o(this);this.options.thumbnails&&new p(this);this._preload(this.options.fast&OnStart)}}},go:function(a,b){if(!(a==(this.slide+this.data.images.length)%this.data.images.length||Date.now()<this.timeToTransitionComplete)){clearTimeout(this.timer);this.timeToNextTransition=
0;this.direction=b?b:a<this._slide?"right":"left";this.slide=this._slide=a;if(this.preloader)this.preloader=this.preloader.destroy();this._preload(this.options.fast&WhenPlaying||this.paused&&this.options.fast&WhenPaused)}},first:function(){this.prev(!0)},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-1+this.data.images.length)%this.data.images.length;this.go(b,"right")},pause:function(a){if(a!=
void 0)this.paused=a?!1:!0;this.paused?(this.paused=!1,this.timeToTransitionComplete=Date.now()+this.timeToTransitionComplete,this.timer=this._preload.delay(50,this),[this.a,this.b].each(function(a){["morph","tween"].each(function(a){this.retrieve(a)&&this.get(a).resume()},a)}),this.controller&&this.el.retrieve("pause").getParent().removeClass(this.classes.play)):(this.paused=!0,this.timeToTransitionComplete-=Date.now(),clearTimeout(this.timer),[this.a,this.b].each(function(a){["morph","tween"].each(function(a){this.retrieve(a)&&
this.get(a).pause()},a)}),this.controller&&this.el.retrieve("pause").getParent().addClass(this.classes.play))},next:function(a){this.go(a?this.data.images.length-1:this._slide,"left")},last:function(){this.next(!0)},load:function(a){this.firstrun=!0;this.showed={array:[],i:0};if(typeOf(a)=="array")this.options.captions=!1,a=Array(a.length).associate(a.map(function(a,b){return a+"?"+b}));this.data={images:[],captions:[],hrefs:[],thumbnails:[],targets:[],titles:[]};for(var b in a){var c=a[b]||{};b=
this.options.hu+b;var d=c.caption?c.caption.trim():"",e=c.href?c.href.trim():this.options.linked?b:this.options.href,g=c.target?c.target.trim():"_self";c=c.thumbnail?this.options.hu+c.thumbnail.trim():b.replace(this.options.replace[0],this.options.replace[1]);var f=d.replace(/<.+?>/gm,"").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"'");this.data.images.push(b);this.data.captions.push(d);this.data.hrefs.push(e);this.data.targets.push(g);this.data.thumbnails.push(c);this.data.titles.push(f)}if(this.options.random)this.slide=
this._slide=Number.random(0,this.data.images.length-1);this.options.thumbnails&&this.el.retrieve("thumbnails")&&this._thumbnails();if(this.el.retrieve("images"))[this.a,this.b].each(function(a){["morph","tween"].each(function(a){this.retrieve(a)&&this.get(a).cancel()},a)}),this.slide=this._slide=this.timeToTransitionComplete=0,this.go(0);return this.data.images.length},destroy:function(a){Object.each(this.events,function(a,c){"each"in a&&a.each(function(a){document.removeEvent(c,a)})});this.pause(1);
"caption loader thumbnails".split(" ").each(function(a,c){this.options[a]&&(c=this[a].retrieve("timer"))&&clearTimeout(c)},this);typeOf(this.el[a])=="function"&&this.el[a]();delete this.el.uid},_preload:function(a){a=!1;var b=this.data.images[this._slide].replace(/([^?]+).*/,"$1");if(!(loaded=!!this.cache[b])){if(!this.preloader)this.preloader=new Asset.image(b,{onerror:function(){},onload:function(){this.store("loaded",!0)}});loaded=this.preloader.retrieve("loaded")&&this.preloader.get("width")}if(loaded&&
Date.now()>this.timeToNextTransition&&Date.now()>this.timeToTransitionComplete)if(b=this.data.images[this._slide].replace(/([^?]+).*/,"$1"),this.preloader&&(this.cache[b]={height:this.preloader.get("height"),src:b,width:this.preloader.get("width")}),this.stopped)this.options.captions&&this.caption.get("morph").cancel().start(this.classes.get("captions","hidden")),this.pause(1),this.end&&this.fireEvent("end"),this.stopped=this.end=!1;else{this.image=this.counter%2?this.b:this.a;this.image.get("tag")==
"span"?this.image.setStyles({"background-image":'url("'+this.cache[b].src+'")',display:"block",visibility:"hidden",zIndex:this.counter}):(this.image.set("styles",{display:"block",height:null,visibility:"hidden",width:null,zIndex:this.counter}),this.image.set(this.cache[b]),this.image.width=this.cache[b].width,this.image.height=this.cache[b].height);this.options.resize&&this._resize(this.image);this.options.center&&this._center(this.image);b=this.image.getParent();this.data.hrefs[this._slide]?(b.set("href",
this.data.hrefs[this._slide]),b.set("target",this.data.targets[this._slide])):(b.erase("href"),b.erase("target"));var c=this.data.titles[this._slide];this.image.set("alt",c);this.options.titles&&b.set("title",c);this.options.loader&&this.loader.fireEvent("hide");this.options.captions&&this.caption.fireEvent("update",a);this.options.thumbnails&&this.thumbnails.fireEvent("update",a);this._show(a);this._loaded(a)}else Date.now()>this.timeToNextTransition&&this.options.loader&&this.loader.fireEvent("show"),
this.timer=this._preload.delay(50,this,a)},_show:function(a){if(!this.image.retrieve("morph")){var b=this.options.overlap?{link:"cancel"}:{link:"chain"};$$(this.a,this.b).set("morph",Object.merge(b,{duration:this.options.duration,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(a){this.image.get("morph").start(a)}.pass(c,this);if(this.firstrun)return a();b=this.classes.get("images",this.direction=="left"?"prev":"next");this.image.get("morph").set(b);d.get("morph").set(c).start(b).chain(a)}},_loaded:function(a){this.counter++;this.timeToNextTransition=Date.now()+this.options.duration+this.options.delay;this.direction="left";this.timeToTransitionComplete=
a?0:Date.now()+this.options.duration;if(this._slide==this.data.images.length-1&&!this.options.loop&&!this.options.random)this.stopped=this.end=!0;if(this.options.random)if(this.showed.i++,this.showed.i>=this.showed.array.length){a=this._slide;for(this.showed.array.getLast()!=a&&this.showed.array.push(a);this._slide==a;)this.slide=this._slide=Number.random(0,this.data.images.length-1)}else this.slide=this._slide=this.showed.array[this.showed.i];else this.slide=this._slide,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.paused||this._preload()},_center:function(a){var b=a.getSize();a.set("styles",{left:(b.x-this.width)/-2,top:(b.y-this.height)/-2})},_resize:function(a){var b=a.get("height").toFloat(),c=a.get("width").toFloat(),d=this.height/b,e=this.width/c;this.options.resize=="fit"&&(d=e=d>e?e:d);this.options.resize==
"fill"&&(d=e=d>e?d:e);a.set("styles",{height:Math.ceil(b*d),width:Math.ceil(c*e)})},_start:function(){this.fireEvent("start")},_complete:function(){this.firstrun&&this.options.paused&&this.pause(1);this.firstrun=!1;this.fireEvent("complete")}});var m=new Class({Implements:[Chain,Events,Options],options:{delay:0,link:"cancel"},initialize:function(a){if(a){var b=a.options.captions;b===!0&&(b={});this.setOptions(b);b=(b=a.el.getElement(a.classes.get("captions")))?b.dispose().empty():new Element("div",
{"class":a.classes.get("captions").substr(1)});a.caption=b;b.set({"aria-busy":!1,"aria-hidden":!1,events:{update:this.update.bind(a)},morph:this.options,role:"description"}).store("delay",this.options.delay);b.get("id")||b.set("id","Slideshow-"+Date.now());a.el.retrieve("images").set("aria-labelledby",b.get("id"));b.inject(a.el)}},update:function(a){var b=!this.data.captions[this._slide].length,c;(c=this.caption.retrieve("timer"))&&clearTimeout(c);a?(a=b?"hidden":"visible",this.caption.set({"aria-hidden":b,
html:this.data.captions[this._slide]}).get("morph").cancel().set(this.classes.get("captions",a))):(b=b?function(){}:function(a){this.caption.store("timer",setTimeout(function(a){this.caption.set("html",a).morph(this.classes.get("captions","visible"))}.pass(a,this),this.caption.retrieve("delay")))}.pass(this.data.captions[this._slide],this),a=function(){this.caption.set("aria-busy",!1)}.bind(this),this.caption.set("aria-busy",!0).get("morph").cancel().start(this.classes.get("captions","hidden")).chain(b,
a))}}),n=new Class({Implements:[Chain,Events,Options],options:{link:"cancel"},initialize:function(a){if(a){var b=a.options.captions;b===!0&&(b={});this.setOptions(b);b=(b=a.el.getElement(a.classes.get("controller")))?b.dispose().empty():new Element("div",{"class":a.classes.get("controller").substr(1)});a.controller=b;b.set({"aria-hidden":!1,role:"menubar"});var c=(new Element("ul",{role:"menu"})).inject(b),d=0;Object.each(a.accesskeys,function(a,b){var f=(new Element("li",{"class":b=="pause"&&this.options.paused?
this.classes.play+" "+this.classes[b]:this.classes[b]})).inject(c);f=this.el.retrieve(b,(new Element("a",{role:"menuitem",tabindex:d++,title:a.label})).inject(f));f.set("events",{click:function(a){this[a]()}.pass(b,this),mouseenter:function(a){this.addClass(a)}.pass(this.classes.active,f),mouseleave:function(a){this.removeClass(a)}.pass(this.classes.active,f)})},a);b.set({events:{hide:this.hide.pass(a.classes.get("controller","hidden"),b),show:this.show.pass(a.classes.get("controller","visible"),
b)},morph:this.options}).store("hidden",!1);a.events.push("keydown",this.keydown.bind(a)).push("keyup",this.keyup.bind(a)).push("mousemove",this.mousemove.bind(a));b.inject(a.el).fireEvent("hide")}},hide:function(a){this.get("aria-hidden")=="false"&&this.set("aria-hidden",!0).morph(a)},keydown:function(a){Object.each(this.accesskeys,function(b,c){a.key==b.key&&a.shift==b.shift&&a.control==b.control&&a.alt==b.alt&&(this.controller.get("aria-hidden")=="true"&&this.controller.get("morph").set(this.classes.get("controller",
"visible")),this.el.retrieve(c).fireEvent("mouseenter"))},this)},keyup:function(a){Object.each(this.accesskeys,function(b,c){a.key==b.key&&a.shift==b.shift&&a.control==b.control&&a.alt==b.alt&&(this.controller.get("aria-hidden")=="true"&&this.controller.set("aria-hidden",!1).fireEvent("hide"),this.el.retrieve(c).fireEvent("mouseleave"))},this)},mousemove:function(a){var b=this.el.retrieve("images").getCoordinates();this.controller.fireEvent(a.page.x>b.left&&a.page.x<b.right&&a.page.y>b.top&&a.page.y<
b.bottom?"show":"hide")},show:function(a){this.get("aria-hidden")=="true"&&this.set("aria-hidden",!1).morph(a)}}),o=new Class({Implements:[Chain,Events,Options],options:{fps:20,link:"cancel"},initialize:function(a){if(a){var b=a.options.loader;b===!0&&(b={});this.setOptions(b);var c=(new Element("div",{"aria-hidden":!1,"class":a.classes.get("loader").substr(1),morph:this.options,role:"progressbar"})).store("animate",!1).store("i",0).store("delay",1E3/this.options.fps).inject(a.el);a.loader=c;if(b=
c.getStyle("backgroundImage").replace(/url\(['"]?(.*?)['"]?\)/,"$1").trim())b.test(/\.png$/)&&Browser.ie&&Browser.version<7&&c.setStyles({backgroundImage:"none",filter:'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+b+'", sizingMethod="crop")'}),new Asset.image(b,{onload:function(){var a=c.getSize(),b=this.get("width"),g=this.get("height");b>a.x&&c.store("x",a.x).store("animate","x").store("frames",(b/a.x).toInt());g>a.y&&c.store("y",a.y).store("animate","y").store("frames",(g/a.y).toInt())}});
c.set("events",{animate:this.animate.bind(c),hide:this.hide.pass(a.classes.get("loader","hidden"),c),show:this.show.pass(a.classes.get("loader","visible"),c)});c.fireEvent("hide")}},animate:function(){var a=this.retrieve("animate");if(a){var b=(this.retrieve("i").toInt()+1)%this.retrieve("frames");this.store("i",b);b=b*this.retrieve(a)+"px";a=="x"&&this.setStyle("backgroundPosition",b+" 0px");a=="y"&&this.setStyle("backgroundPosition","0px "+b)}},hide:function(a){this.get("aria-hidden")=="false"&&
(this.set("aria-hidden",!0).morph(a),this.retrieve("animate")&&clearTimeout(this.retrieve("timer")))},show:function(a){this.get("aria-hidden")=="true"&&(this.set("aria-hidden",!1).morph(a),this.retrieve("animate")&&this.store("timer",function(){this.fireEvent("animate")}.periodical(this.retrieve("delay"),this)))}}),p=new Class({Implements:[Chain,Events,Options],options:{columns:null,fps:50,link:"cancel",position:null,rows:null,scroll:null},initialize:function(a){var b=a.options.thumbnails===!0?{}:
a.options.thumbnails;this.setOptions(b);var c=a.el.getElement(a.classes.get("thumbnails"));c=c?c.empty():new Element("div",{"class":a.classes.get("thumbnails").substr(1)});a.thumbnails=c;c.set({role:"menubar",styles:{overflow:"hidden"}});var d=c.retrieve("uid","Slideshow-"+Date.now()),e=(new Element("ul",{role:"menu",styles:{left:0,position:"absolute",top:0},tween:{link:"cancel"}})).inject(c);a.data.thumbnails.each(function(b,c){var g=(new Element("li",{id:d+c})).inject(e);g=(new Element("a",{"class":a.classes.get("thumbnails",
"hidden").substr(1),events:{click:this.click.pass(c,a)},href:a.data.images[c],morph:this.options,role:"menuitem",tabindex:c})).store("uid",c).inject(g);a.options.titles&&g.set("title",a.data.titles[c]);(new Asset.image(b,{onload:this.onload.pass(c,a)})).inject(g)},this);c.set("events",{scroll:this.scroll.bind(c),update:this.update.bind(a)});var g=c.getCoordinates();if(!b.scroll)b.scroll=g.height>g.width?"y":"x";b=b.scroll=="y"?"top bottom height y width".split(" "):"left right width x height".split(" ");
c.store("props",b).store("delay",1E3/this.options.fps);a.events.push("mousemove",this.mousemove.bind(c));c.inject(a.el)},click:function(a){this.go(a);return!1},mousemove:function(a){var b=this.getCoordinates();a.page.x>b.left&&a.page.x<b.right&&a.page.y>b.top&&a.page.y<b.bottom?(this.store("page",a.page),this.retrieve("mouseover")||(this.store("mouseover",!0),this.store("timer",function(){this.fireEvent("scroll")}.periodical(this.retrieve("delay"),this)))):this.retrieve("mouseover")&&(this.store("mouseover",
!1),clearTimeout(this.retrieve("timer")))},onload:function(a){var b=this.thumbnails,c=b.getElements("a")[a];c&&function(b){var c=a==this.slide?"active":"inactive";b.store("loaded",!0).get("morph").set(this.classes.get("thumbnails","hidden")).start(this.classes.get("thumbnails",c))}.delay(Math.max(1E3/this.data.thumbnails.length,100),this,c);if(!b.retrieve("limit")){var d=b.retrieve("props"),e=this.options.thumbnails;c=d[2];var g=d[4];d=b.getElement("li:nth-child("+(a+1)+")").getCoordinates();if(e.columns||
e.rows)b.setStyles({height:this.height,width:this.width}),e.columns.toInt()&&b.setStyle("width",d.width*e.columns.toInt()),e.rows.toInt()&&b.setStyle("height",d.height*e.rows.toInt());var f=b.getCoordinates();e.position&&(e.position.test(/bottom|top/)&&b.setStyles({bottom:"auto",top:"auto"}).setStyle(e.position,-f.height),e.position.test(/left|right/)&&b.setStyles({left:"auto",right:"auto"}).setStyle(e.position,-f.width));e=Math.ceil(this.data.images.length/Math.floor(f[g]/d[g]))*d[c];b.getElement("ul").setStyle(c,
e).getElements("li").setStyles({height:d.height,width:d.width});b.store("limit",f[c]-e)}},scroll:function(a,b){var c=this.getCoordinates(),d=this.getElement("ul").getPosition(),e=this.retrieve("props"),g=e[3],f,h=e[0],i=e[2],k=this.getElement("ul").set("tween",{property:h}).get("tween");if(a!=void 0)f=this.retrieve("uid"),f=document.id(f+a).getCoordinates(),f=c[h]+c[i]/2-f[i]/2-f[h],c=(d[g]-c[h]+f).limit(this.retrieve("limit"),0),k[b?"set":"start"](c);else{e=c[e[2]]/3;var j=this.retrieve("page"),
l=-(this.retrieve("delay")*0.01);j[g]<c[h]+e?f=(j[g]-c[h]-e)*l:j[g]>c[h]+c[i]-e&&(f=(j[g]-c[h]-c[i]+e)*l);f&&(c=(d[g]-c[h]+f).limit(this.retrieve("limit"),0),k.set(c))}},update:function(a){var b=this.thumbnails;b.retrieve("uid");b.getElements("a").each(function(b){if(b.retrieve("loaded"))if(b.retrieve("uid")==this._slide){if(!b.retrieve("active",!1)){b.store("active",!0);var d=this.classes.get("thumbnails","active");a?b.get("morph").set(d):b.morph(d)}}else b.retrieve("active",!0)&&(b.store("active",
!1),d=this.classes.get("thumbnails","inactive"),a?b.get("morph").set(d):b.morph(d))},this);b.retrieve("mouseover")||b.fireEvent("scroll",[this._slide,a])}})})();

