LightboxOptions=Object.extend({fileLoadingImage:"../../images/loading.gif",fileBottomNavCloseImage:"../../images/closelabel.gif",overlayOpacity:0.8,animate:true,resizeSpeed:7,borderSize:10,labelImage:"Image",labelOf:"of"},window.LightboxOptions||{});var Lightbox=Class.create();
Lightbox.prototype={imageArray:[],activeImage:undefined,initialize:function(){this.updateImageList();this.keyboardAction=this.keyboardAction.bindAsEventListener(this);if(LightboxOptions.resizeSpeed>10)LightboxOptions.resizeSpeed=10;if(LightboxOptions.resizeSpeed<1)LightboxOptions.resizeSpeed=1;this.resizeDuration=LightboxOptions.animate?(11-LightboxOptions.resizeSpeed)*0.15:0;this.overlayDuration=LightboxOptions.animate?0.2:0;var a=(LightboxOptions.animate?250:1)+"px",b=$$("body")[0];b.appendChild(Builder.node("div",
{id:"overlay"}));b.appendChild(Builder.node("div",{id:"lightbox"},[Builder.node("div",{id:"imageDataContainer"},Builder.node("div",{id:"imageData"},[Builder.node("div",{id:"imageDetails"},[Builder.node("span",{id:"title"}),Builder.node("span",{id:"caption"}),Builder.node("span",{id:"numberDisplay"})]),Builder.node("div",{id:"bottomNav"},Builder.node("a",{id:"bottomNavClose",href:"#"},Builder.node("img",{src:LightboxOptions.fileBottomNavCloseImage})))])),Builder.node("div",{id:"outerImageContainer"},
Builder.node("div",{id:"imageContainer"},[Builder.node("img",{id:"lightboxImage"}),Builder.node("div",{id:"hoverNav"},[Builder.node("a",{id:"prevLink",href:"#"}),Builder.node("a",{id:"nextLink",href:"#"})]),Builder.node("div",{id:"loading"},Builder.node("a",{id:"loadingLink",href:"#"},Builder.node("img",{src:LightboxOptions.fileLoadingImage})))]))]));$("overlay").hide().observe("click",function(){this.end()}.bind(this));$("lightbox").hide().observe("click",function(d){d.element().id=="lightbox"&&
this.end()}.bind(this));$("outerImageContainer").setStyle({width:a,height:a});$("prevLink").observe("click",function(d){d.stop();this.changeImage(this.activeImage-1)}.bindAsEventListener(this));$("nextLink").observe("click",function(d){d.stop();this.changeImage(this.activeImage+1)}.bindAsEventListener(this));$("loadingLink").observe("click",function(d){d.stop();this.end()}.bind(this));$("bottomNavClose").observe("click",function(d){d.stop();this.end()}.bind(this));var c=this;(function(){$w("overlay lightbox outerImageContainer imageContainer lightboxImage hoverNav prevLink nextLink loading loadingLink imageDataContainer imageData imageDetails caption numberDisplay bottomNav bottomNavClose title").each(function(d){c[d]=
$(d)})}).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){a.stop();this.start(b)}}.bind(this))},start:function(a){$$("select","object","embed").each(function(c){c.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=[];b=0;if(a.rel=="lightbox")a.childNodes[1]&&a.childNodes[1].title||a.childNodes[0]&&a.childNodes[0].title?this.imageArray.push([a.href,a.title,a.childNodes[0].title?a.childNodes[0].title:a.childNodes[1].title]):this.imageArray.push([a.href,a.title]);else for(this.imageArray=$$(a.tagName+'[href][rel="'+a.rel+'"]').collect(function(c){return[c.href,c.title,c.childNodes[0].title?c.childNodes[0].title:c.childNodes[1].title]}).uniq();this.imageArray[b][0]!=a.href;)b++;a=document.viewport.getScrollOffsets();
this.lightbox.setStyle({top:a[1]+20+"px",left:a[0]+"px"}).show();this.changeImage(b,true)},changeImage:function(a,b){this.activeImage=a;b&&$("imageDataContainer").hide();LightboxOptions.animate&&this.loading.show();this.numberDisplay.hide();var c=new Image;c.onload=function(){this.lightboxImage.src=this.imageArray[this.activeImage][0];this.resizeImageContainer(c.width,c.height,b)}.bind(this);c.src=this.imageArray[this.activeImage][0];this.lightboxImage.hide();this.hoverNav.hide();this.prevLink.hide();
this.nextLink.hide()},resizeImageContainer:function(a,b,c){var d=this.outerImageContainer.getWidth(),i=this.outerImageContainer.getHeight(),e=a+LightboxOptions.borderSize*2;a=b+LightboxOptions.borderSize*2;var j=e/d*100,k=a/i*100,f=d-e,g=i-a;if(c){this.imageDataContainer.setStyle({width:e+"px"});g!=0&&new Effect.Scale(this.outerImageContainer,k,{scaleX:false,duration:this.resizeDuration,queue:"front"});f!=0&&new Effect.Scale(this.outerImageContainer,j,{scaleY:false,duration:this.resizeDuration,delay:this.resizeDuration});
c=0;if(g==0&&f==0){c=100;if(Prototype.Browser.IE)c=250}(function(){this.prevLink.setStyle({height:b+"px"});this.nextLink.setStyle({height:b+"px"});this.showImage()}).bind(this).delay(c/1E3)}else new Effect.Parallel([new Effect.SlideUp(this.imageDataContainer,{sync:true,duration:this.resizeDuration,from:0,to:1}),new Effect.Appear(this.imageDataContainer,{sync:true,duration:this.resizeDuration})],{duration:this.resizeDuration,afterFinish:function(){this.overlay.setStyle({height:this.getPageSize()[1]+
"px"});this.imageDataContainer.setStyle({width:e+"px"});g!=0&&new Effect.Scale(this.outerImageContainer,k,{scaleX:false,duration:this.resizeDuration,queue:"front"});f!=0&&new Effect.Scale(this.outerImageContainer,j,{scaleY:false,duration:this.resizeDuration,delay:this.resizeDuration});var h=0;if(g==0&&f==0){h=100;if(Prototype.Browser.IE)h=250}(function(){this.prevLink.setStyle({height:b+"px"});this.nextLink.setStyle({height:b+"px"});this.showImage()}).bind(this).delay(h/1E3)}.bind(this)})},showImage:function(){this.loading.hide();
new Effect.Appear(this.lightboxImage,{duration:this.resizeDuration,queue:"end",afterFinish:function(){this.updateDetails()}.bind(this)});this.preloadNeighborImages()},updateDetails:function(){this.imageArray[this.activeImage][1]!=""&&this.caption.update(this.imageArray[this.activeImage][1]).show();this.imageArray[this.activeImage][2]!=undefined&&this.imageArray[this.activeImage][2]!=""&&this.title.update(this.imageArray[this.activeImage][2]).show();this.imageArray.length>1&&this.numberDisplay.update(LightboxOptions.labelImage+
" "+(this.activeImage+1)+" "+LightboxOptions.labelOf+"  "+this.imageArray.length).show();new Effect.Parallel([new Effect.SlideDown(this.imageDataContainer,{sync:true,duration:this.resizeDuration,from:0,to:1}),new Effect.Appear(this.imageDataContainer,{sync:true,duration:this.resizeDuration})],{duration:this.resizeDuration,afterFinish:function(){this.overlay.setStyle({height:this.getPageSize()[1]+"px"});this.updateNav()}.bind(this)})},updateNav:function(){this.hoverNav.show();this.activeImage>0&&this.prevLink.show();
this.activeImage<this.imageArray.length-1&&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;a=a.DOM_VK_ESCAPE?a.DOM_VK_ESCAPE:27;var c=String.fromCharCode(b).toLowerCase();if(c.match(/x|o|c/)||b==a)this.end();else if(c=="p"||b==37){if(this.activeImage!=0){this.disableKeyboardNav();this.changeImage(this.activeImage-
1)}}else if(c=="n"||b==39)if(this.activeImage!=this.imageArray.length-1){this.disableKeyboardNav();this.changeImage(this.activeImage+1)}},preloadNeighborImages:function(){var a;if(this.imageArray.length>this.activeImage+1){a=new Image;a.src=this.imageArray[this.activeImage+1][0]}if(this.activeImage>0){a=new Image;a.src=this.imageArray[this.activeImage-1][0]}},end:function(){this.disableKeyboardNav();this.lightbox.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){c=document.documentElement.clientWidth?document.documentElement.clientWidth: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}pageHeight=b<d?d:b;pageWidth=a<c?a:c;return[pageWidth,pageHeight]}};document.observe("dom:loaded",function(){new Lightbox});
