﻿var Lightbox={activeImage:null,badObjects:["select","object","embed"],container:null,enableSlideshow:null,groupName:null,imageArray:[],options:null,overlayDuration:null,playSlides:null,refTags:["a","area"],relAttribute:null,resizeDuration:null,slideShowTimer:null,startImage:null,descriptionHeight:50,initialize:function(I){if(!document.getElementsByTagName)return;this.options=$H({animate:true,autoPlay:true,borderSize:16,containerID:document,enableSlideshow:true,googleAnalytics:false,imageDataLocation:"south",initImage:"",loop:true,overlayDuration:.2,overlayOpacity:.8,prefix:"",relAttribute:"lightbox",resizeSpeed:7,showGroupName:false,slideTime:3,strings:{closeLink:"",loadingMsg:"loading",nextLink:"",prevLink:"",startSlideshow:"",stopSlideshow:"",numDisplayPrefix:"",numDisplaySeparator:"/"},featBrowser:true,breathingSize:20,startZoom:false}).merge(I);if(this.options.animate){this.overlayDuration=Math.max(this.options.overlayDuration,0);this.options.resizeSpeed=Math.max(Math.min(this.options.resizeSpeed,10),1);this.resizeDuration=(11-this.options.resizeSpeed)*.15}else{this.overlayDuration=0;this.resizeDuration=0}this.enableSlideshow=this.options.enableSlideshow;this.options.overlayOpacity=Math.max(Math.min(this.options.overlayOpacity,1),0);this.playSlides=this.options.autoPlay;this.container=$(this.options.containerID);this.relAttribute=this.options.relAttribute;this.updateImageList();var z=this.container!=document?this.container:document.getElementsByTagName("body").item(0),q=document.createElement("div");q.setAttribute("id",this.getID("overlay"));q.style.display="none";z.appendChild(q);Event.observe(q,"click",this.end.bindAsEventListener(this));var i=document.createElement("div");i.setAttribute("id",this.getID("lightbox"));i.style.display="none";z.appendChild(i);Event.observe(i,"click",this.end.bindAsEventListener(this));var b=document.createElement("div");b.setAttribute("id",this.getID("imageDataContainer"));b.className=this.getID("clearfix");var o=document.createElement("div");o.setAttribute("id",this.getID("imageData"));b.appendChild(o);var e=document.createElement("div");e.setAttribute("id",this.getID("imageDetails"));o.appendChild(e);var y=document.createElement("span");y.setAttribute("id",this.getID("caption"));e.appendChild(y);var x=document.createElement("span");x.setAttribute("id",this.getID("numberDisplay"));e.appendChild(x);var g=document.createElement("span");g.setAttribute("id",this.getID("detailsNav"));e.appendChild(g);var k=document.createElement("a");k.setAttribute("id",this.getID("prevLinkDetails"));k.setAttribute("href","javascript:void(0);");k.innerHTML=this.options.strings.prevLink;g.appendChild(k);Event.observe(k,"click",this.showPrev.bindAsEventListener(this));var l=document.createElement("a");l.setAttribute("id",this.getID("slideShowControl"));l.setAttribute("href","javascript:void(0);");g.appendChild(l);Event.observe(l,"click",this.toggleSlideShow.bindAsEventListener(this));var j=document.createElement("a");j.setAttribute("id",this.getID("nextLinkDetails"));j.setAttribute("href","javascript:void(0);");j.innerHTML=this.options.strings.nextLink;g.appendChild(j);Event.observe(j,"click",this.showNext.bindAsEventListener(this));var v=document.createElement("div");v.setAttribute("id",this.getID("close"));o.appendChild(v);var h=document.createElement("a");h.setAttribute("id",this.getID("closeLink"));h.setAttribute("href","javascript:void(0);");h.innerHTML=this.options.strings.closeLink;v.appendChild(h);Event.observe(h,"click",this.end.bindAsEventListener(this));var a=document.createElement("table");a.setAttribute("id",this.getID("outerImageContainer"));a.cellSpacing=0;i.appendChild(a);var u=a.insertRow(-1),G=u.insertCell(-1);G.className="tl";var F=u.insertCell(-1);F.className="tc";var H=u.insertCell(-1);H.className="tr";var s=a.insertRow(-1),D=s.insertCell(-1);D.className="ml";var c=s.insertCell(-1);c.setAttribute("id",this.getID("lightboxFrameBody"));c.innerHTML="&nbsp;";var E=s.insertCell(-1);E.className="mr";var r=a.insertRow(-1),B=r.insertCell(-1);B.className="bl";var A=r.insertCell(-1);A.className="bc";var C=r.insertCell(-1);C.className="br";if(this.options.imageDataLocation=="north")c.appendChild(b);var d=document.createElement("div");d.setAttribute("id",this.getID("imageContainer"));c.appendChild(d);var w=document.createElement("img");w.setAttribute("id",this.getID("lightboxImage"));d.appendChild(w);var p=document.createElement("div");p.setAttribute("id",this.getID("hoverNav"));d.appendChild(p);var n=document.createElement("a");n.setAttribute("id",this.getID("prevLinkImg"));n.setAttribute("href","javascript:void(0);");p.appendChild(n);Event.observe(n,"click",this.showPrev.bindAsEventListener(this));var m=document.createElement("a");m.setAttribute("id",this.getID("nextLinkImg"));m.setAttribute("href","javascript:void(0);");p.appendChild(m);Event.observe(m,"click",this.showNext.bindAsEventListener(this));var t=document.createElement("div");t.setAttribute("id",this.getID("loading"));d.appendChild(t);var f=document.createElement("a");f.setAttribute("id",this.getID("loadingLink"));f.setAttribute("href","javascript:void(0);");f.innerHTML=this.options.strings.loadingMsg;t.appendChild(f);Event.observe(f,"click",this.end.bindAsEventListener(this));if(this.options.imageDataLocation!="north")c.appendChild(b);if(this.options.initImage!="")this.start($(this.options.initImage))},updateImageList:function(){var a,b,e;for(var c=0;c<this.refTags.length;c++){b=this.container.getElementsByTagName(this.refTags[c]);for(var d=0;d<b.length;d++){a=b[d];e=String(a.getAttribute("rel"));if(a.getAttribute("href")&&e.toLowerCase().match(this.relAttribute))a.onclick=function(){Lightbox.start(this);return false}}}},start:function(a){if($(this.getID("lightbox")).visible())return;this.hideBadObjects();var h=this.getPageSize();$(this.getID("overlay")).setStyle({height:h.pageHeight+"px"});$(this.getID("imageDataContainer")).hide();$(this.getID("lightboxImage")).hide();var e=$(a).getDimensions();if(this.options.startZoom){$(this.getID("imageContainer")).setStyle({width:e.width+"px",height:e.height+"px"});$(this.getID("outerImageContainer")).setStyle({opacity:document.all?1:.1});Position.clone(a,this.getID("lightbox"),{offsetLeft:-this.options.borderSize,offsetTop:-this.options.borderSize});$(this.getID("lightbox")).setStyle({width:e.width+this.options.borderSize*2+"px",height:"auto"})}else{new Effect.Appear(this.getID("overlay"),{duration:this.overlayDuration,from:0,to:this.options.overlayOpacity});$(Lightbox.getID("lightbox")).setStyle({left:0,width:"100%"})}$(this.getID("lightbox")).show();this.imageArray=[];this.groupName=null;var d=a.getAttribute("rel"),c="";if(d==this.relAttribute){c=a.getAttribute("title")?a.getAttribute("title"):"";this.imageArray.push({link:a.getAttribute("href"),title:c});this.startImage=0}else{var g=this.container.getElementsByTagName(a.tagName);for(var f=0;f<g.length;f++){var b=g[f];if(b.getAttribute("href")&&b.getAttribute("rel")==d){c=b.getAttribute("title")?b.getAttribute("title"):"";this.imageArray.push({link:b.getAttribute("href"),title:c});if(b==a)this.startImage=this.imageArray.length-1}}this.groupName=d.substring(this.relAttribute.length+1,d.length-1)}if(Lightbox.options.featBrowser)Event.observe(window,"resize",function(){this.adjustImageSize(true)}.bind(this));this.changeImage(this.startImage)},changeImage:function(b){this.activeImage=b;this.disableKeyboardNav();this.pauseSlideShow();$(this.getID("loading")).show();$(this.getID("lightboxImage")).hide();$(this.getID("hoverNav")).hide();$(this.getID("imageDataContainer")).hide();$(this.getID("numberDisplay")).hide();$(this.getID("detailsNav")).hide();var a=new Image;a.onload=function(){Lightbox.imageArray[Lightbox.activeImage].width=a.width;Lightbox.imageArray[Lightbox.activeImage].height=a.height;Lightbox.adjustImageSize(false)};a.src=this.imageArray[this.activeImage].link;if(this.options.googleAnalytics)urchinTracker(this.imageArray[this.activeImage].link)},adjustImageSize:function(h){imgWidth=this.imageArray[this.activeImage].width;imgHeight=this.imageArray[this.activeImage].height;var c=this.getPageSize();if(this.options.featBrowser==true){var a=imgWidth/imgHeight,g=c.winWidth/c.winHeight;if(a>g)var e=c.winWidth-this.options.borderSize*2-this.options.breathingSize*2,d=Math.round(e/a);else var d=c.winHeight-this.options.borderSize*2-this.options.breathingSize*2-this.descriptionHeight,e=Math.round(d*a);if(imgWidth>e||imgHeight>d){imgWidth=e;imgHeight=d}}var f=this.getPageScroll().y+(this.getPageSize().winHeight-(imgHeight+this.descriptionHeight+this.options.borderSize*2))/2;$(this.getID("overlay")).setStyle({height:c.pageHeight+"px"});if(h==true){$(this.getID("imageContainer")).setStyle({height:imgHeight+"px",width:imgWidth+"px"});$(this.getID("lightbox")).setStyle({top:f+"px"})}else{if(this.options.startZoom){$(Lightbox.getID("loading")).hide();var b=$(this.getID("imageContainer")).getDimensions();if(b.width/b.height>a)$(this.getID("lightboxImage")).setStyle({position:"relative",top:(b.height-b.width/a)/2+"px",left:0,width:"100%",height:"auto"});else $(this.getID("lightboxImage")).setStyle({position:"relative",top:0,left:(b.width-b.height*a)/2+"px",width:"auto",height:"100%"})}$(this.getID("lightboxImage")).src=this.imageArray[this.activeImage].link;this.resizeImageContainer(f,imgWidth,imgHeight)}},resizeImageContainer:function(j,f,e){var b=$(this.getID("imageContainer")).getDimensions(),a=[],c=$(this.getID("lightboxImage"));if(parseFloat(c.getStyle("top")))a[a.length]=new Effect.Move(c,{y:0,mode:"absolute",sync:true});if(parseFloat(c.getStyle("left")))a[a.length]=new Effect.Move(c,{x:0,mode:"absolute",sync:true});if(b.width!=f)a[a.length]=new Effect.Scale(this.getID("imageContainer"),f/b.width*100,{scaleY:false,sync:true});if(b.height!=e)a[a.length]=new Effect.Scale(this.getID("imageContainer"),e/b.height*100,{scaleX:false,sync:true});var h=$(this.getID("lightbox")).getStyle("width"),d=0;if(this.options.startZoom){new Effect.Appear(this.getID("lightboxImage"),{from:0,to:1,duration:this.resizeDuration});if(h!="100%"){if(h!="auto"){var g=(b.width+this.options.borderSize*2)/this.getPageSize().pageWidth;$(this.getID("lightbox")).setStyle({width:g*100+"%"});a[a.length]=new Effect.Scale(this.getID("lightbox"),100/g,{scaleY:false,sync:true})}d=-parseFloat($(this.getID("lightbox")).getStyle("left"));new Effect.Opacity(this.getID("outerImageContainer"),{duration:this.resizeDuration})}}var i=j-parseFloat($(this.getID("lightbox")).getStyle("top"));if(i||d)a[a.length]=new Effect.Move(this.getID("lightbox"),{y:i||0,x:d||0,sync:true,afterFinish:d?function(){$(Lightbox.getID("lightbox")).setStyle({left:0,width:"100%"})}:null});if(a.length)new Effect.Parallel(a,{duration:this.resizeDuration,afterFinish:function(){Lightbox.showImage()}});else{if(hDiff==0&&wDiff==0)if(navigator.appVersion.indexOf("MSIE")!=-1)this.pause(250);else this.pause(100);this.showImage()}},showImage:function(){$(Lightbox.getID("loading")).hide();if(Lightbox.options.startZoom){if(!$(this.getID("overlay")).visible())new Effect.Appear(this.getID("overlay"),{duration:this.overlayDuration,to:this.options.overlayOpacity});Lightbox.updateDetails()}else new Effect.Appear(this.getID("lightboxImage"),{duration:.5,queue:"end",afterFinish:function(){Lightbox.updateDetails()}});this.preloadNeighborImages()},updateDetails:function(){$(this.getID("caption")).show();$(this.getID("caption")).update(this.imageArray[this.activeImage].title);if(this.imageArray.length>1){var num_display=this.options.strings.numDisplayPrefix+" "+eval(this.activeImage+1)+" "+this.options.strings.numDisplaySeparator+" "+this.imageArray.length;if(this.options.showGroupName&&this.groupName!="")num_display+=" "+this.options.strings.numDisplaySeparator+" "+this.groupName;$(this.getID("numberDisplay")).update(num_display).show();if(!this.enableSlideshow)$(this.getID("slideShowControl")).hide();$(this.getID("detailsNav")).show()}new Effect.Parallel([new Effect.SlideDown(this.getID("imageDataContainer"),{sync:true}),new Effect.Appear(this.getID("imageDataContainer"),{sync:true})],{duration:.65,afterFinish:function(){Lightbox.updateNav()}})},updateNav:function(){$(this.getID("imageDataContainer")).setStyle({width:"100%"});var a=1/this.imageArray.length;this.descriptionHeight=this.descriptionHeight*(1-a)+$(this.getID("imageDataContainer")).getHeight()*a;if(this.imageArray.length>1){$(this.getID("hoverNav")).show();if(this.enableSlideshow)if(this.playSlides)this.startSlideShow();else this.stopSlideShow()}this.enableKeyboardNav()},startSlideShow:function(){if(!$(this.getID("lightbox")).visible())return;this.playSlides=true;this.slideShowTimer=new PeriodicalExecuter(function(a){Lightbox.showNext();a.stop()},this.options.slideTime);$(this.getID("slideShowControl")).update(this.options.strings.stopSlideshow);$(this.getID("slideShowControl")).addClassName("started")},stopSlideShow:function(){this.playSlides=false;if(this.slideShowTimer)this.slideShowTimer.stop();$(this.getID("slideShowControl")).update(this.options.strings.startSlideshow);$(this.getID("slideShowControl")).removeClassName("started")},toggleSlideShow:function(){if(this.playSlides)this.stopSlideShow();else this.startSlideShow()},pauseSlideShow:function(){if(this.slideShowTimer)this.slideShowTimer.stop()},showNext:function(){if(this.imageArray.length>1){if(!this.options.loop&&(this.activeImage==this.imageArray.length-1&&this.startImage==0||this.activeImage+1==this.startImage))return this.end();if(this.activeImage==this.imageArray.length-1)this.changeImage(0);else this.changeImage(this.activeImage+1)}},showPrev:function(){if(this.imageArray.length>1)if(this.activeImage==0)this.changeImage(this.imageArray.length-1);else this.changeImage(this.activeImage-1)},showFirst:function(){if(this.imageArray.length>1)this.changeImage(0)},showLast:function(){if(this.imageArray.length>1)this.changeImage(this.imageArray.length-1)},enableKeyboardNav:function(){document.onkeydown=this.keyboardAction},disableKeyboardNav:function(){document.onkeydown=""},keyboardAction:function(a){if(a==null)keycode=event.keyCode;else keycode=a.which;key=String.fromCharCode(keycode).toLowerCase();if(key=="x"||key=="o"||key=="c")Lightbox.end();else if(key=="p"||key=="%")Lightbox.showPrev();else if(key=="n"||key=="'")Lightbox.showNext();else if(key=="f")Lightbox.showFirst();else if(key=="l")Lightbox.showLast();else if(key=="s")if(Lightbox.imageArray.length>0&&Lightbox.options.enableSlideshow)Lightbox.toggleSlideShow()},preloadNeighborImages:function(){var a=this.imageArray.length-1==this.activeImage?0:this.activeImage+1;nextImage=new Image;nextImage.src=this.imageArray[a].link;var b=this.activeImage==0?this.imageArray.length-1:this.activeImage-1;prevImage=new Image;prevImage.src=this.imageArray[b].link},end:function(b){if(b){var a=$(Event.element(b)).id;if(this.getID("closeLink")!=a&&this.getID("lightbox")!=a&&this.getID("overlay")!=a)return}this.disableKeyboardNav();this.pauseSlideShow();$(this.getID("lightbox")).hide();if(this.options.overlayOpacity)new Effect.Fade(this.getID("overlay"),{duration:this.overlayDuration});else $(this.getID("overlay")).hide();this.showBadObjects()},showBadObjects:function(){var a,d=Lightbox.badObjects;for(var b=0;b<d.length;b++){a=document.getElementsByTagName(d[b]);for(var c=0;c<a.length;c++)$(a[c]).setStyle({visibility:"visible"})}},hideBadObjects:function(){var a,d=Lightbox.badObjects;for(var b=0;b<d.length;b++){a=document.getElementsByTagName(d[b]);for(var c=0;c<a.length;c++)$(a[c]).setStyle({visibility:"hidden"})}},pause:function(b){var a=new Date,c=a.getTime()+b;while(true){a=new Date;if(a.getTime()>c)return}},getPageScroll:function(){var a,b;if(self.pageYOffset){a=self.pageXOffset;b=self.pageYOffset}else if(document.documentElement&&document.documentElement.scrollTop){a=document.documentElement.scrollLeft;b=document.documentElement.scrollTop}else if(document.body){a=document.body.scrollLeft;b=document.body.scrollTop}return {x:a,y:b}},getPageSize:function(){var c,d,a,b,e,f;if(window.innerHeight&&window.scrollMaxY){c=document.body.scrollWidth;d=window.innerHeight+window.scrollMaxY}else if(document.body.scrollHeight>document.body.offsetHeight){c=document.body.scrollWidth;d=document.body.scrollHeight}else{c=document.body.offsetWidth;d=document.body.offsetHeight}if(self.innerHeight){a=self.innerWidth;b=self.innerHeight}else if(document.documentElement&&document.documentElement.clientHeight){a=document.documentElement.clientWidth;b=document.documentElement.clientHeight}else if(document.body){a=document.body.clientWidth;b=document.body.clientHeight}f=d<b?b:d;e=c<a?a:c;return {pageWidth:e,pageHeight:f,winWidth:a,winHeight:b}},getID:function(a){return this.options.prefix+a}};Event.observe(window,"load",function(){Lightbox.initialize({enableSlideshow:1,autoPlay:1,startZoom:1})})
