LightboxOptions=Object.extend({overlayOpacity:.8,animate:true,resizeSpeed:400,borderSize:10,loop:false,allowSave:false,slideshowAutoplay:false,slideshowInterval:3e3,slideshowAutoclose:true,labelImage:"Image",labelOf:"of"},window.LightboxOptions||{});var Lightbox=Class.create();Lightbox.prototype={imageArray:[],activeImage:undefined,initialize:function(){var a,b,c,d,e,f;this.updateImageList();this.keyboardAction=this.keyboardAction.bindAsEventListener(this);if(LightboxOptions.animate){this.overlayDuration=LightboxOptions.resizeSpeed/1e3;this.resizeDuration=LightboxOptions.resizeSpeed/1e3}else{this.overlayDuration=0;this.resizeDuration=0}var g=(LightboxOptions.animate?250:1)+"px";var h=$$("body")[0];h.appendChild(Builder.node("div",{id:"overlay"}));h.appendChild(Builder.node("div",{id:"lbLightbox"},[Builder.node("div",{id:"lbOuterImageContainer"},Builder.node("div",{id:"lbImageContainer"},[Builder.node("a",{id:"closeLink",href:"#"}),Builder.node("img",{id:"lbLightboxImage"}),Builder.node("div",{id:"lbHoverNav"},[Builder.node("a",{id:"prevLink",href:"#"}),Builder.node("a",{id:"nextLink",href:"#"})]),Builder.node("div",{id:"lbLoading"},Builder.node("a",{id:"loadingLink",href:"#"}))])),Builder.node("div",{id:"lbImageDataContainer"},Builder.node("div",{id:"lbImageData"},[Builder.node("div",{id:"lbImageDetails"},[Builder.node("span",{id:"lbCaption"}),Builder.node("span",{id:"lbNumberDisplay"}),Builder.node("span",{id:"lbPresent"})]),Builder.node("div",{id:"lbBottomNav"},[Builder.node("a",{id:"playLink",href:"#"}),Builder.node("a",{id:"pauseLink",href:"#"}),Builder.node("a",{id:"saveLink",href:"#",target:"_blank"})])]))]));$("overlay").hide().observe("click",function(){this.end()}.bind(this));$("lbLightbox").hide().observe("click",function(a){if(a.element().id=="lbLightbox")this.end()}.bind(this));$("lbOuterImageContainer").setStyle({width:g,height:g});$("prevLink").observe("click",function(a){a.stop();this.previous()}.bindAsEventListener(this));$("nextLink").observe("click",function(a){a.stop();this.next()}.bindAsEventListener(this));$("loadingLink").observe("click",function(a){a.stop();this.end()}.bind(this));$("playLink").observe("click",function(a){a.stop();this.play()}.bindAsEventListener(this));$("pauseLink").observe("click",function(a){a.stop();this.pause()}.bindAsEventListener(this));$("closeLink").observe("click",function(a){a.stop();this.end()}.bind(this));var i=this;(function(){var a="overlay lbLightbox lbOuterImageContainer lbImageContainer lbLightboxImage lbHoverNav prevLink nextLink lbLoading loadingLink "+"lbImageDataContainer lbImageData lbImageDetails lbCaption lbNumberDisplay lbPresent lbBottomNav playLink pauseLink saveLink closeLink";$w(a).each(function(a){i[a]=$(a)})}).defer()},updateImageList:function(){this.updateImageList=Prototype.emptyFunction;document.observe("click",function(a){var b=a.findElement("a[rel^=lightbox]")||a.findElement("area[rel^=lightbox]");if(b){b.rel.match(/present.+/)?this.presentationMode=true:this.presentationMode=false;b.rel.match(/slideshow.+/)?this.slideshowMode=true:this.slideshowMode=false;this.slideshowActive=LightboxOptions.slideshowAutoplay&&this.slideshowMode;a.stop();this.start(b)}}.bind(this))},start:function(a){$$("select","object","embed").each(function(a){a.style.visibility="hidden"});var b=this.getPageSize();$("overlay").setStyle({width:b[0]+"px",height:b[1]+"px"});new Effect.Appear(this.overlay,{duration:this.overlayDuration,from:0,to:LightboxOptions.overlayOpacity});this.imageArray=[];var c=0;if(a.rel=="lightbox"){this.imageArray.push([a.href,a.title])}else{this.imageArray=$$(a.tagName+'[href][rel="'+a.rel+'"]').collect(function(a){return[a.href,a.title]}).uniq();while(this.imageArray[c][0]!=a.href){c++}}var d=document.viewport.getScrollOffsets();var e=d[1]+document.viewport.getHeight()/10;var f=d[0];this.lbLightbox.setStyle({top:e+"px",left:f+"px"}).show();this.changeImage(c)},previous:function(){this.changeImage(this.prevImage)},next:function(){this.changeImage(this.nextImage)},changeImage:function(a){this.activeImage=a;LightboxOptions.loop=LightboxOptions.loop&&this.imageArray.length>1;this.prevImage=(this.activeImage||(LightboxOptions.loop?this.imageArray.length:0))-1;this.nextImage=(this.activeImage+1)%this.imageArray.length||(LightboxOptions.loop?0:-1);if(LightboxOptions.animate)this.lbLoading.show();this.lbLightboxImage.hide();this.lbHoverNav.hide();this.prevLink.hide();this.nextLink.hide();this.lbImageDataContainer.setStyle({opacity:1e-4});this.lbImageDataContainer.hide();this.lbNumberDisplay.hide();var b=new Image;b.onload=function(){this.lbLightboxImage.src=this.imageArray[this.activeImage][0];this.lbLightboxImage.width=b.width;this.lbLightboxImage.height=b.height;this.resizeImageContainer(b.width,b.height)}.bind(this);b.src=this.imageArray[this.activeImage][0];if(LightboxOptions.allowSave){this.saveLink.setAttribute("href",this.imageArray[this.activeImage][0]);this.saveLink.setStyle({display:""})}else{this.saveLink.setStyle({display:"none"})}},resizeImageContainer:function(a,b){var c=this.lbOuterImageContainer.getWidth();var d=this.lbOuterImageContainer.getHeight();var e=a+LightboxOptions.borderSize*2;var f=b+LightboxOptions.borderSize*2;var g=e/c*100;var h=f/d*100;var i=c-e;var j=d-f;if(j!=0)new Effect.Scale(this.lbOuterImageContainer,h,{scaleX:false,duration:this.resizeDuration,queue:"front"});if(i!=0)new Effect.Scale(this.lbOuterImageContainer,g,{scaleY:false,duration:this.resizeDuration,delay:this.resizeDuration});var k=0;if(j==0&&i==0){k=100;if(Prototype.Browser.IE)k=250}(function(){this.prevLink.setStyle({height:b+"px"});this.nextLink.setStyle({height:b+"px"});this.lbImageDataContainer.setStyle({width:e+"px"});this.showImage()}).bind(this).delay(k/1e3)},showImage:function(){this.lbLoading.hide();new Effect.Appear(this.lbLightboxImage,{duration:this.resizeDuration,queue:"end",afterFinish:function(){this.updateDetails()}.bind(this)});this.preloadNeighborImages()},toInt:function(a){return parseInt(a.replace(/\D/g,""))},updateDetails:function(){this.lbNumberDisplay.update("");this.lbCaption.update("");if(this.imageArray[this.activeImage][1]!=""){this.lbCaption.update(this.imageArray[this.activeImage][1]).show()}if(this.imageArray.length>1){this.lbNumberDisplay.update(LightboxOptions.labelImage+" "+(this.activeImage+1)+" "+LightboxOptions.labelOf+"  "+this.imageArray.length).show()}if(this.presentationMode){this.lbNumberDisplay.setStyle({display:"none"});this.lbPresent.update("").setStyle({display:""});for(i=0;i<this.imageArray.length;i++){var a=this.activeImage==i?"act":"no";var b=new Element("a",{id:"pmi"+(i+1),"class":a,href:"#"});i<9?b.update("0"+(i+1)):b.update(i+1);b.observe("click",function(a){a.stop();var b=Event.findElement(a,"a");var c=this.toInt(b.id)-1;this.pause();this.changeImage(c)}.bindAsEventListener(this));this.lbPresent.insert({bottom:b})}}else{this.lbNumberDisplay.setStyle({display:""});this.lbPresent.setStyle({display:"none"})}this.playLink.setStyle({display:"none"});this.pauseLink.setStyle({display:"none"});if(this.slideshowMode){clearTimeout(this.slideshowTimer);if(this.slideshowActive){this.pauseLink.setStyle({display:""});if(this.activeImage!=this.imageArray.length-1){this.slideshowTimer=setTimeout(this.next.bind(this),LightboxOptions.slideshowInterval)}else{if(LightboxOptions.slideshowAutoclose){this.slideshowTimer=setTimeout(this.end.bind(this),LightboxOptions.slideshowInterval)}else if(LightboxOptions.loop){this.slideshowTimer=setTimeout(this.changeImage.bind(this,0),LightboxOptions.slideshowInterval)}else{this.pause()}}}else{this.playLink.setStyle({display:""})}}new Effect.Parallel([new Effect.SlideDown(this.lbImageDataContainer,{sync:true,duration:this.resizeDuration,from:0,to:1}),new Effect.Appear(this.lbImageDataContainer,{sync:true,duration:this.resizeDuration})],{duration:this.resizeDuration,afterFinish:function(){var a=this.getPageSize();this.overlay.setStyle({width:a[0]+"px",height:a[1]+"px"});this.updateNav()}.bind(this)})},updateNav:function(){this.lbHoverNav.show();if(this.prevImage>=0)this.prevLink.show();if(this.nextImage>=0)this.nextLink.show();this.enableKeyboardNav()},enableKeyboardNav:function(){document.observe("keydown",this.keyboardAction)},disableKeyboardNav:function(){document.stopObserving("keydown",this.keyboardAction)},keyboardAction:function(a){var b=a.keyCode;var c;if(a.DOM_VK_ESCAPE){c=a.DOM_VK_ESCAPE}else{c=27}var d=String.fromCharCode(b).toLowerCase();if(d.match(/x|o|c/)||b==c){this.end()}else if(d=="s"||b==83){this.togglePlayPause()}else if(d=="p"||b==37){if(this.activeImage!=0){this.disableKeyboardNav();this.changeImage(this.activeImage-1)}}else if(d=="n"||b==39){if(this.activeImage!=this.imageArray.length-1){this.disableKeyboardNav();this.changeImage(this.activeImage+1)}}},preloadNeighborImages:function(){var a,b;if(this.imageArray.length>this.activeImage+1){a=new Image;a.src=this.imageArray[this.activeImage+1][0]}if(this.activeImage>0){b=new Image;b.src=this.imageArray[this.activeImage-1][0]}},togglePlayPause:function(){if(this.slideshowActive){this.pause()}else{this.play()}},play:function(){this.slideshowActive=true;if(this.activeImage!=this.imageArray.length-1){this.changeImage(this.activeImage+1)}else{if(LightboxOptions.slideshowAutoclose&&!LightboxOptions.loop){this.slideshowTimer=setTimeout(this.end.bind(this),0)}else if(LightboxOptions.loop){this.changeImage(0)}else{}}},pause:function(){this.slideshowActive=false;clearTimeout(this.slideshowTimer);this.playLink.setStyle({display:""});this.pauseLink.setStyle({display:"none"})},end:function(){this.pause();this.disableKeyboardNav();this.lbLightbox.hide();new Effect.Fade(this.overlay,{duration:this.overlayDuration});$$("select","object","embed").each(function(a){a.style.visibility="visible"})},getPageSize:function(){var a,b;if(window.innerHeight&&window.scrollMaxY){a=window.innerWidth+window.scrollMaxX;b=window.innerHeight+window.scrollMaxY}else if(document.body.scrollHeight>document.body.offsetHeight){a=document.body.scrollWidth;b=document.body.scrollHeight}else{a=document.body.offsetWidth;b=document.body.offsetHeight}var c,d;if(self.innerHeight){if(document.documentElement.clientWidth){c=document.documentElement.clientWidth}else{c=self.innerWidth}d=self.innerHeight}else if(document.documentElement&&document.documentElement.clientHeight){c=document.documentElement.clientWidth;d=document.documentElement.clientHeight}else if(document.body){c=document.body.clientWidth;d=document.body.clientHeight}if(b<d){pageHeight=d}else{pageHeight=b}if(a<c){pageWidth=a}else{pageWidth=c}return[pageWidth,pageHeight]}};document.observe("dom:loaded",function(){new Lightbox})
