imageGallery=Class.create({photosArr:[],activeImage:undefined,initialize:function(d,a){this.element=$(d);this.options={stylesheet:"css/gallery.css",fileLoadingImage:"images/ui/loader.gif",fileBottomNavCloseImage:"images/ui/close.gif",overlayOpacity:0.5,animate:true,resizeSpeed:7,borderSize:10};Object.extend(this.options,a||{});this.thumbs=this.element.childElements();this.buildThumbs();document.addStyleSheet(this.options.stylesheet);this.keyboardAction=this.keyboardAction.bindAsEventListener(this);if(this.options.resizeSpeed<1){this.options.resizeSpeed=1}if(this.options.resizeSpeed>10){this.options.resizeSpeed=10}this.resizeDuration=this.options.animate?((11-this.options.resizeSpeed)*0.15):0;this.overlayDuration=this.options.animate?0.2:0;var c=(this.options.animate?300:1)+"px";var b=$$("body")[0];b.appendChild(Builder.node("div",{id:"overlay"}));b.appendChild(Builder.node("div",{id:"imageGallery"},[Builder.node("div",{id:"outerImageContainer"},Builder.node("div",{id:"imageContainer"},[Builder.node("img",{id:"imageGalleryImage"}),Builder.node("div",{id:"loading"},Builder.node("a",{id:"loadingLink",href:"#"},Builder.node("img",{src:this.options.fileLoadingImage})))])),Builder.node("div",{id:"imageDataContainer"},Builder.node("div",{id:"imageData"},[Builder.node("div",{id:"imageDetails"},[Builder.node("span",{id:"caption"})]),Builder.node("div",{id:"bottomNav"},Builder.node("a",{id:"bottomNavClose",href:"#"},Builder.node("img",{src:this.options.fileBottomNavCloseImage})))]))]));$("overlay").hide().observe("click",(function(){this.end()}).bind(this));$("imageGallery").hide().observe("click",(function(f){if(f.element().id=="imageGallery"){this.end()}}).bind(this));$("outerImageContainer").setStyle({width:c,height:c});$("loadingLink").observe("click",(function(f){f.stop();this.end()}).bind(this));$("bottomNavClose").observe("click",(function(f){f.stop();this.end()}).bind(this));var e=this;(function(){var f="overlay imageGallery outerImageContainer imageContainer imageGalleryImage loading loadingLink                 imageDataContainer imageData imageDetails caption bottomNav bottomNavClose";$w(f).each(function(g){e[g]=$(g)})}).defer()},buildThumbs:function(){this.thumbs.each(function(a){this.addToThumbs(a)}.bind(this))},addToThumbs:function(a){a.observe("click",function(b){if(a.viewable===false){return}b.stop();this.start(a)}.bind(this))},start:function(b){$$("select","object","embed").each(function(g){g.style.visibility="hidden"});var d=this.getPageSize();$("overlay").setStyle({width:d[0]+"px",height:d[1]+"px"});new Effect.Appear(this.overlay,{duration:this.overlayDuration,from:0,to:this.options.overlayOpacity});this.photosArr=[];var c=0;if((b.className==".thumb")){this.photosArr.push([b.href,b.title])}else{this.photosArr=$$(b.tagName+'[href][class="'+b.className+'"]').collect(function(g){return[g.href,g.title]}).uniq();while(this.photosArr[c][0]!=b.href){c++}}var a=document.viewport.getScrollOffsets();var e=a[1]+(document.viewport.getHeight()/20);var f=a[0];this.imageGallery.setStyle({top:e+"px",left:f+"px"}).show();this.changeImage(c)},changeImage:function(b){this.activeImage=b;if(this.options.animate){this.loading.show()}this.imageGalleryImage.hide();this.imageDataContainer.setStyle({opacity:0.0001});var a=new Image();a.onload=(function(){this.imageGalleryImage.src=this.photosArr[this.activeImage][0];this.resizeImageContainer(a.width,a.height)}).bind(this);a.src=this.photosArr[this.activeImage][0]},resizeImageContainer:function(e,f){var h=this.outerImageContainer.getWidth();var c=this.outerImageContainer.getHeight();var g=(e+this.options.borderSize*2);var j=(f+this.options.borderSize*2);var k=(g/h)*100;var b=(j/c)*100;var i=h-g;var a=c-j;if(a!=0){new Effect.Scale(this.outerImageContainer,b,{scaleX:false,duration:this.resizeDuration,queue:"front"})}if(i!=0){new Effect.Scale(this.outerImageContainer,k,{scaleY:false,duration:this.resizeDuration,delay:this.resizeDuration})}var d=0;if((a==0)&&(i==0)){d=100;if(Prototype.Browser.IE){d=250}}(function(){this.imageDataContainer.setStyle({width:g+"px"});this.showImage()}).bind(this).delay(d/1000)},showImage:function(){this.loading.hide();new Effect.Appear(this.imageGalleryImage,{duration:this.resizeDuration,queue:"end",afterFinish:(function(){this.updateDetails()}).bind(this)});this.preloadNeighborImages()},updateDetails:function(){if(this.photosArr[this.activeImage][1]!=""){this.caption.update(this.photosArr[this.activeImage][1]).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(){var a=this.getPageSize();this.overlay.setStyle({height:a[1]+"px"});this.updateNav()}).bind(this)})},updateNav:function(){this.enableKeyboardNav()},enableKeyboardNav:function(){document.observe("keydown",this.keyboardAction)},disableKeyboardNav:function(){document.stopObserving("keydown",this.keyboardAction)},keyboardAction:function(d){var a=d.keyCode;var b;if(d.DOM_VK_ESCAPE){b=d.DOM_VK_ESCAPE}else{b=27}var c=String.fromCharCode(a).toLowerCase();if(document.getElementsByTagName("html")[0].dir=="rtl"){if(a==37){a=39}else{if(a==39){a=37}}}if(c.match(/x|o|c/)||(a==b)){this.end()}else{if((c=="p")||(a==37)){if(this.activeImage!=0){this.disableKeyboardNav();this.changeImage(this.activeImage-1)}}else{if((c=="n")||(a==39)){if(this.activeImage!=(this.photosArr.length-1)){this.disableKeyboardNav();this.changeImage(this.activeImage+1)}}}}},preloadNeighborImages:function(){var a,b;if(this.photosArr.length>this.activeImage+1){a=new Image();a.src=this.photosArr[this.activeImage+1][0]}if(this.activeImage>0){b=new Image();b.src=this.photosArr[this.activeImage-1][0]}},end:function(){this.disableKeyboardNav();this.imageGallery.hide();new Effect.Fade(this.overlay,{duration:this.overlayDuration});$$("select","object","embed").each(function(a){a.style.visibility="visible"})},getPageSize:function(){var c,a,b,d;if(window.innerHeight&&window.scrollMaxY){c=window.innerWidth+window.scrollMaxX;a=window.innerHeight+window.scrollMaxY}else{if(document.body.scrollHeight>document.body.offsetHeight){c=document.body.scrollWidth;a=document.body.scrollHeight}else{c=document.body.offsetWidth;a=document.body.offsetHeight}}if(self.innerHeight){if(document.documentElement.clientWidth){b=document.documentElement.clientWidth}else{b=self.innerWidth}d=self.innerHeight}else{if(document.documentElement&&document.documentElement.clientHeight){b=document.documentElement.clientWidth;d=document.documentElement.clientHeight}else{if(document.body){b=document.body.clientWidth;d=document.body.clientHeight}}}if(a<d){height=d}else{height=a}if(c<b){width=c}else{width=b}return[width,height]}});document.observe("dom:loaded",function(){var a=$$(".thumbs");NN.viewers=[];a.each(function(c,b){NN.viewers[b]=new imageGallery(c)})});