function VisualLightbox(options){var activeImage=null,badObjects=["select","object","embed"],groupName=null,imageArray=[],slideShowTimer=null,startImage=null,B=50,imgPreloader,resizeEffects,showTimer;if(!document.getElementsByTagName){return;}options=$H({animate:true,autoPlay:true,borderSize:39,containerID:document,enableSlideshow:true,googleAnalytics:false,descSliding:true,imageDataLocation:"south",shadowLocation:"",closeLocation:"",initImage:"",loop:true,overlayDuration:0.2,overlayOpacity:0.7,prefix:"",classNames:"vlightbox",resizeSpeed:7,showGroupName:false,slideTime:4,strings:{closeLink:"",loadingMsg:"loading",nextLink:"",prevLink:"",startSlideshow:"",stopSlideshow:"",numDisplayPrefix:"",numDisplaySeparator:"/"},enableRightClick:false,featBrowser:true,breathingSize:20,startZoom:false,floating:true}).merge(options);if(options.animate){var overlayDuration=Math.max(options.overlayDuration,0);options.resizeSpeed=Math.max(Math.min(options.resizeSpeed,10),1);var resizeDuration=(11-options.resizeSpeed)*0.15;}else{var overlayDuration=0;var resizeDuration=0;}var enableSlideshow=options.enableSlideshow;options.overlayOpacity=Math.max(Math.min(options.overlayOpacity,1),0);var playSlides=options.autoPlay;var container=$(options.containerID);var classNames=options.classNames;updateImageList();var objBody=container!=document?container:document.getElementsByTagName("body").item(0);new Insertion.Top($(objBody),"<div></div>");objBody=objBody.childNodes[0];function connectEvent(obj,name,func){Event.stopObserving(obj,name);Event.observe(obj,name,func.bindAsEventListener(this));}if(!document.getElementById(getID("overlay"))){var objOverlay=document.createElement("div");objOverlay.setAttribute("id",getID("overlay"));objOverlay.style.display="none";objBody.appendChild(objOverlay);var objLightbox=document.createElement("div");objLightbox.setAttribute("id",getID("lightbox"));objLightbox.style.display="none";objBody.appendChild(objLightbox);var objImageDataContainer=document.createElement("div");objImageDataContainer.setAttribute("id",getID("imageDataContainer"));objImageDataContainer.className=getID("clearfix");var g=document.createElement("table");g.setAttribute("id",getID("outerImageContainer"));g.cellSpacing=0;objLightbox.appendChild(g);var k=g.insertRow(-1);var l=k.insertCell(-1);l.className="tl";var j=k.insertCell(-1);j.className="tc";var h=k.insertCell(-1);h.className="tr";var U=g.insertRow(-1);var d=U.insertCell(-1);d.className="ml";var T=U.insertCell(-1);T.setAttribute("id",getID("lightboxFrameBody"));var R=U.insertCell(-1);R.className="mr";var J=g.insertRow(-1);var G=J.insertCell(-1);G.className="bl";var H=J.insertCell(-1);H.className="bc";var F=J.insertCell(-1);F.className="br";if(options.imageDataLocation=="north"){T.appendChild(objImageDataContainer);}var objImageData=document.createElement("div");objImageData.setAttribute("id",getID("imageData"));objImageDataContainer.appendChild(objImageData);var a=document.createElement("div");a.setAttribute("id",getID("imageDetails"));objImageData.appendChild(a);var b=document.createElement("div");b.setAttribute("id",getID("caption"));a.appendChild(b);var Z=document.createElement("span");Z.setAttribute("id",getID("numberDisplay"));a.appendChild(Z);var V=document.createElement("span");V.setAttribute("id",getID("detailsNav"));a.appendChild(V);var W=document.createElement("a");W.setAttribute("id",getID("prevLinkDetails"));W.setAttribute("href","javascript:void(0);");W.innerHTML=options.strings.prevLink;V.appendChild(W);var c=document.createElement("a");c.setAttribute("id",getID("slideShowControl"));c.setAttribute("href","javascript:void(0);");V.appendChild(c);var O=document.createElement("a");O.setAttribute("id",getID("closeLink"));O.setAttribute("href","javascript:void(0);");O.innerHTML=options.strings.closeLink;if(options.closeLocation=="nav"){V.appendChild(O);}else{var Q=document.createElement("div");Q.setAttribute("id",getID("close"));if(options.closeLocation=="top"){h.appendChild(Q);}else{objImageData.appendChild(Q);}Q.appendChild(O);}var i=document.createElement("a");i.setAttribute("id",getID("nextLinkDetails"));i.setAttribute("href","javascript:void(0);");i.innerHTML=options.strings.nextLink;V.appendChild(i);var objImageContainerMain=document.createElement("div");objImageContainerMain.setAttribute("id",getID("imageContainerMain"));T.appendChild(objImageContainerMain);var C=document.createElement("div");C.setAttribute("id",getID("imageContainer"));objImageContainerMain.appendChild(C);var D=document.createElement("img");D.setAttribute("id",getID("lightboxImage"));C.appendChild(D);if(!options.enableRightClick){var I=document.createElement("div");I.setAttribute("id",getID("hoverNav"));I.style.background="white";I.style.opacity=0;I.style.filter="alpha(opacity=0)";C.appendChild(I);}var K=document.createElement("a");K.setAttribute("id",getID("prevLinkImg"));K.setAttribute("href","javascript:void(0);");objImageContainerMain.appendChild(K);var N=document.createElement("a");N.setAttribute("id",getID("nextLinkImg"));N.setAttribute("href","javascript:void(0);");objImageContainerMain.appendChild(N);var L=document.createElement("div");L.setAttribute("id",getID("loading"));C.appendChild(L);var P=document.createElement("a");P.setAttribute("id",getID("loadingLink"));P.setAttribute("href","javascript:void(0);");P.innerHTML=options.strings.loadingMsg;L.appendChild(P);if(options.imageDataLocation!="north"){T.appendChild(objImageDataContainer);}var objShadow=document.createElement("div");objShadow.setAttribute("id",getID("shadow"));(options.shadowLocation?document.getElementById(getID(options.shadowLocation)):H).appendChild(objShadow);}function reconect(){connectEvent(getID("overlay"),"click",end);connectEvent(getID("lightbox"),"click",end);connectEvent(getID("prevLinkDetails"),"click",showPrev);connectEvent(getID("slideShowControl"),"click",f);connectEvent(getID("closeLink"),"click",end);connectEvent(getID("nextLinkDetails"),"click",showNext);if(!options.enableRightClick){connectEvent(getID("hoverNav"),"mousemove",hoverNav);connectEvent(getID("hoverNav"),"mouseout",outNav);}connectEvent(getID("prevLinkImg"),"click",showPrev);connectEvent(getID("nextLinkImg"),"click",showNext);connectEvent(getID("loadingLink"),"click",end);}if(options.initImage!=""){start($(options.initImage));}function getHref(Node){if(Node.tagName.toUpperCase()!="A"){for(var i=0;i<Node.childNodes.length;i++){if(Node.childNodes[i].tagName.toUpperCase()=="A"){return Node.childNodes[i].getAttribute("href");}}}return Node.getAttribute("href");}function getTitle(Node){if(Node.tagName.toUpperCase()=="A"){return Node.getAttribute("title");}var TitleNode;for(var i=Node.childNodes.length-1;i>=0;i--){TitleNode=Node.childNodes[i];if(TitleNode.tagName){break;}}if(TitleNode&&TitleNode.tagName){return TitleNode.innerHTML;}return"";}function updateImageList(){var els,refClasses=classNames.split(",");for(var i=0;i<refClasses.length;i++){els=$(container).getElementsByClassName(refClasses[i]);for(var j=0;j<els.length;j++){if(getHref(els[j])){els[j].onclick=function(){start(this);return false;};}}}}var t="";if(t){var c=document.createElement("div");c.style.position="absolute";c.style.right=0;c.style.bottom=0;c.style.padding="2px 3px";c.style.backgroundColor="#EEE";c.style.zIndex=10;$(getID("imageContainer")).appendChild(c);var d=document.createElement("a");d.style.color="#555";d.style.font="11px Arial,Verdana,sans-serif";d.style.padding="3px 6px";d.style.width="auto";d.style.height="auto";d.style.margin="0 0 0 0";d.style.outline="none";d.href="http://"+t.toLowerCase();d.innerHTML=t;d.oncontextmenu=function(){return false;};c.appendChild(d);}var start=this.start=function(M){if($$("lightbox").visible()){return;}S();$$("overlay").setStyle({height:docWH()[1]+"px",left:getPageScroll().x+"px"});if(options.descSliding){$$("imageDataContainer").hide();}$$("lightboxImage").hide();$$("lightboxImage").src="";var linkSize=$(M).getDimensions();if(options.startZoom){$$("imageContainer").setStyle({width:linkSize.width+"px",height:linkSize.height+"px"});$$("outerImageContainer").setStyle({opacity:document.all?1:0.1});Position.clone(M,$$("lightbox"),{offsetLeft:-options.borderSize,offsetTop:-options.borderSize});$$("lightbox").setStyle({width:linkSize.width+options.borderSize*2+"px",height:"auto"});}else{new Effect.Appear($$("overlay"),{duration:overlayDuration,from:0,to:options.overlayOpacity});$$("lightbox").setStyle({left:0,width:"100%"});}reconect();$$("lightbox").show();$$("lightboxImage").setStyle({visibility:"hidden"});imageArray=[];groupName=null;startImage=0;var els=container.getElementsByClassName(M.className);for(var i=0;i<els.length;i++){var el=els[i];if(getHref(el)){imageArray.push({link:getHref(el),title:getTitle(el)});if(el==M){startImage=imageArray.length-1;}}}if(imageArray.length){groupName=M.getAttribute("className");}if(options.featBrowser){Event.observe(window,"resize",adjustImageSizeNoEffect);}if(options.floating){Event.observe(window,"scroll",adjustImageSizeNoEffect);}Event.observe(window,"resize",adjustOverlay);Event.observe(window,"scroll",adjustOverlay);changeImage(startImage);};function changeImage(imageNum){activeImage=imageNum;disableKeyboardNav();pauseSlideShow();showLoading();$$("lightboxImage").hide();$$("prevLinkImg").hide();$$("nextLinkImg").hide();if(options.descSliding){$$("imageDataContainer").hide();}imgPreloader=new Image;imgPreloader.onload=function(){imageArray[activeImage].link=imgPreloader.src;imageArray[activeImage].width=imgPreloader.width;imageArray[activeImage].height=imgPreloader.height;adjustImageSize(false);};if(options.startZoom&&!$$("lightboxImage").getAttribute("src")){imageArray[activeImage].width=320;imageArray[activeImage].height=240;adjustImageSize(false,true);}imgPreloader.src=imageArray[activeImage].link;if(options.googleAnalytics){urchinTracker(imageArray[activeImage].link);}}function adjustImageSize(recall,noImage){var imgWidth=imageArray[activeImage].width;var imgHeight=imageArray[activeImage].height;var arrayPageSize=m();var imageProportion=imgWidth/imgHeight;if(options.featBrowser){var winProportion=arrayPageSize.winWidth/arrayPageSize.winHeight;if(imageProportion>winProportion){var maxWidth=arrayPageSize.winWidth-options.borderSize*2-options.breathingSize*2;var maxHeight=Math.round(maxWidth/imageProportion);}else{var maxHeight=arrayPageSize.winHeight-options.borderSize*2-options.breathingSize*2-B;var maxWidth=Math.round(maxHeight*imageProportion);}if(imgWidth>maxWidth||imgHeight>maxHeight){imgWidth=maxWidth;imgHeight=maxHeight;}}var imgTop=getPageScroll().y+(m().winHeight-(imgHeight+B+options.borderSize*2))/2;var imgLeft=getPageScroll().x;var imageContainer=$$("imageContainer");if(recall==true){imageContainer.setStyle({height:imgHeight+"px",width:imgWidth+"px"});if(options.floating){new Effect.Parallel([moveEffect($$("lightbox"),imgTop)[0]],{duration:resizeDuration});}else{$$("lightbox").setStyle({top:imgTop+"px",left:imgLeft+"px"});}}else{var lightboxImage=$$("lightboxImage");if(resizeEffects){resizeEffects.cancel();}if(!noImage){lightboxImage.remove();lightboxImage=$(imgPreloader);lightboxImage.hide();lightboxImage.setAttribute("id",getID("lightboxImage"));imageContainer.appendChild(lightboxImage);if(options.startZoom){var cDim=imageContainer.getDimensions();if(cDim.width/cDim.height>imageProportion){lightboxImage.setStyle({position:"relative",top:(cDim.height-cDim.width/imageProportion)/2+"px",left:0,width:"100%",height:"auto"});}else{lightboxImage.setStyle({position:"relative",top:0,left:(cDim.width-cDim.height*imageProportion)/2+"px",width:"auto",height:"100%"});}}if(options.startZoom){hideLoading();}}resizeImageContainer(imgLeft,imgTop,imgWidth,imgHeight,noImage);}if(document.all){$$("imageDataContainer").setStyle({width:imgWidth+"px"});}if(options.enableRightClick){Event.observe($("lightboxImage"),"mouseout",outNav);Event.observe($("lightboxImage"),"mousemove",hoverNav);}}function resizeImageContainer(imgLeft,imgTop,imgWidth,imgHeight,noImage){var imageContainer=$$("imageContainer");var lightboxImage=$$("lightboxImage");var effectScale=[];var cDims=imageContainer.getDimensions();if(!cDims.width){imageContainer.setStyle({width:1});cDims.width=1;}if(!cDims.height){imageContainer.setStyle({height:1});cDims.height=1;}if(options.startZoom){if(!noImage){new Effect.Appear(lightboxImage,{from:0,to:1,duration:resizeDuration});}new Effect.Opacity($$("outerImageContainer"),{duration:resizeDuration});}var lightbox=$$("lightbox");var move=moveEffect(lightbox,imgLeft,imgTop);for(var i=0;i<move.length;i++){effectScale[effectScale.length]=move[i];}if(options.startZoom&&!noImage){if(parseFloat(lightboxImage.getStyle("top"))){effectScale[effectScale.length]=new Effect.Move(lightboxImage,{y:0,mode:"absolute",sync:true});}if(parseFloat(lightboxImage.getStyle("left"))){effectScale[effectScale.length]=new Effect.Move(lightboxImage,{x:0,mode:"absolute",sync:true});}}if(cDims.width!=imgWidth){effectScale[effectScale.length]=new Effect.Scale(imageContainer,imgWidth/cDims.width*100,{scaleY:false,sync:true});}if(cDims.height!=imgHeight){effectScale[effectScale.length]=new Effect.Scale(imageContainer,imgHeight/cDims.height*100,{scaleX:false,sync:true});}if(effectScale.length){resizeEffects=new Effect.Parallel(effectScale,{duration:resizeDuration,afterFinish:!noImage?function(){showImage();}:null});}else{setTimeout(function(){showImage();},resizeDuration);}}function moveEffect(lightbox,imgLeft,imgTop){if(this.moveEffectObj){this.moveEffectObj.cancel();}this.moveEffectObj=new Effect.Move(lightbox,{x:imgLeft,y:imgTop,mode:"absolute",sync:true});var result=[this.moveEffectObj];if(options.startZoom){var cWidth=lightbox.getStyle("width");if(cWidth!="100%"&&cWidth!="auto"){var relWidth=lightbox.getWidth()/docWH()[0];lightbox.setStyle({width:relWidth*100+"%"});result[1]=new Effect.Scale(lightbox,100/relWidth,{scaleY:false,sync:true,afterFinish:function(){$$("lightbox").setStyle({width:"100%"});}});}}return result;}function showLoading(){clearTimeout(showTimer);var loading=$$("loading");loading.show();loading.setStyle({visibility:"hidden"});showTimer=setTimeout(function(){$$("loading").setStyle({visibility:"visible"});},300);}function hideLoading(){clearTimeout(showTimer);$$("loading").hide();}function showImage(){hideLoading();if(options.startZoom){if(!$$("overlay").visible()){new Effect.Appear($$("overlay"),{duration:overlayDuration,to:options.overlayOpacity});}showDetails();}else{new Effect.Appear($$("lightboxImage"),{duration:0.5,queue:"end",afterFinish:function(){showDetails();}});}preloadNeighborImages();}function updateDetails(){$$("caption").update(imageArray[activeImage].title);if(imageArray.length>1){var num_display=options.strings.numDisplayPrefix+" "+eval(activeImage+1)+" "+options.strings.numDisplaySeparator+" "+imageArray.length;if(options.showGroupName&&groupName!=""){num_display+=" "+options.strings.numDisplaySeparator+" "+groupName;}$$("numberDisplay").update(num_display);$$("slideShowControl").setStyle({display:enableSlideshow?"":"none"});}}function showDetails(){updateDetails();if(options.descSliding){new Effect.Parallel([new Effect.SlideDown($$("imageDataContainer"),{sync:true}),new Effect.Appear($$("imageDataContainer"),{sync:true})],{duration:0.65,afterFinish:function(){updateNav();}});}else{updateNav();}}function updateNav(){var d=1/imageArray.length;B=B*(1-d)+$$("imageDataContainer").getHeight()*d;if(imageArray.length>1){$$("prevLinkImg").show();$$("nextLinkImg").show();if(enableSlideshow){if(playSlides){startSlideShow();}else{stopSlideShow();}}}enableKeyboardNav();}function startSlideShow(){if(!$$("lightbox").visible()){return;}playSlides=true;slideShowTimer=new PeriodicalExecuter(function(pe){showNext();pe.stop();},options.slideTime);$$("slideShowControl").update(options.strings.stopSlideshow);$$("slideShowControl").addClassName("started");}function stopSlideShow(){playSlides=false;pauseSlideShow();$$("slideShowControl").update(options.strings.startSlideshow);$$("slideShowControl").removeClassName("started");}function f(){if(playSlides){stopSlideShow();}else{startSlideShow();}}function pauseSlideShow(){if(slideShowTimer){slideShowTimer.stop();}}function showNext(){if(imageArray.length>1){if(!options.loop&&(activeImage==imageArray.length-1&&startImage==0||activeImage+1==startImage)){end();return;}if(activeImage==imageArray.length-1){changeImageWithData(0);}else{changeImageWithData(activeImage+1);}}}function changeImageWithData(imageNum){if(options.descSliding){new Effect.Parallel([new Effect.SlideUp($$("imageDataContainer"),{sync:true}),new Effect.Fade($$("imageDataContainer"),{sync:true})],{duration:0.65,afterFinish:function(){changeImage(imageNum);}});}else{changeImage(imageNum);}}function showPrev(){if(imageArray.length>1){if(activeImage==0){changeImageWithData(imageArray.length-1);}else{changeImageWithData(activeImage-1);}}}function showFirst(){if(imageArray.length>1){changeImageWithData(0);}}function showLast(){if(imageArray.length>1){changeImageWithData(imageArray.length-1);}}function enableKeyboardNav(){document.onkeydown=keyboardAction;}function disableKeyboardNav(){document.onkeydown="";}function keyboardAction(e){if(e==null){keycode=event.keyCode;}else{keycode=e.which;}key=String.fromCharCode(keycode).toLowerCase();if(key=="x"||key=="o"||key=="c"||keycode==27){end();}else if(key=="p"||key=="%"){showPrev();}else if(key=="n"||key=="'"){showNext();}else if(key=="f"){showFirst();}else if(key=="l"){showLast();}else if(key=="s"){if(imageArray.length>0&&options.enableSlideshow){f();}}}function preloadNeighborImages(){var nextImageID=imageArray.length-1==activeImage?0:activeImage+1;(new Image).src=imageArray[nextImageID].link;var prevImageID=activeImage==0?imageArray.length-1:activeImage-1;(new Image).src=imageArray[prevImageID].link;}function end(e){if(e){var id=$(Event.element(e)).id;if(getID("closeLink")!=id&&getID("lightbox")!=id&&getID("overlay")!=id){return;}}if(resizeEffects){resizeEffects.cancel();}imgPreloader.onload=null;disableKeyboardNav();pauseSlideShow();$$("lightbox").hide();if(options.overlayOpacity){new Effect.Fade($$("overlay"),{duration:overlayDuration,afterFinish:function(){showBadObjects();}});}else{$$("overlay").hide();showBadObjects();}Event.stopObserving(window,"resize",adjustImageSizeNoEffect);if(options.floating){Event.stopObserving(window,"scroll",adjustImageSizeNoEffect);}Event.stopObserving(window,"resize",adjustOverlay);Event.stopObserving(window,"scroll",adjustOverlay);}function hoverNav(event){if(Event.pointerX(event)-Position.page($$("imageContainer"))[0]<$$("imageContainer").getWidth()/2){$$("prevLinkImg").addClassName("hover");$$("nextLinkImg").removeClassName("hover");}else{$$("prevLinkImg").removeClassName("hover");$$("nextLinkImg").addClassName("hover");}}function outNav(){$$("prevLinkImg").removeClassName("hover");$$("nextLinkImg").removeClassName("hover");}function adjustImageSizeNoEffect(){adjustImageSize(true);}function adjustOverlay(){$$("overlay").setStyle({left:getPageScroll().x+"px",top:0,width:"100%",height:docWH()[1]+"px"});}function showBadObjects(){var els;var tags=badObjects;for(var i=0;i<tags.length;i++){els=document.getElementsByTagName(tags[i]);for(var j=0;j<els.length;j++){$(els[j]).setStyle({visibility:"visible"});}}}function S(){var els;var tags=badObjects;for(var i=0;i<tags.length;i++){els=document.getElementsByTagName(tags[i]);for(var j=0;j<els.length;j++){$(els[j]).setStyle({visibility:"hidden"});}}}function getPageScroll(){var x,y;if(self.pageYOffset||self.pageXOffset){x=self.pageXOffset;y=self.pageYOffset;}else if(document.documentElement&&(document.documentElement.scrollTop||document.documentElement.scrollLeft)){x=document.documentElement.scrollLeft;y=document.documentElement.scrollTop;}else if(document.body){x=document.body.scrollLeft;y=document.body.scrollTop;}return{x:x,y:y};}function m(){var windowX,windowY;if(self.innerHeight){windowX=self.innerWidth;windowY=self.innerHeight;}else if(document.documentElement&&document.documentElement.clientHeight){windowX=document.documentElement.clientWidth;windowY=document.documentElement.clientHeight;}else if(document.body){windowX=document.body.clientWidth;windowY=document.body.clientHeight;}return{winWidth:windowX,winHeight:windowY};}function docWH(){var b=document.body,e=document.documentElement,w=0,h=0;if(e){w=Math.max(w,e.scrollWidth,e.offsetWidth);h=Math.max(h,e.scrollHeight,e.offsetHeight);}if(b){w=Math.max(w,b.scrollWidth,b.offsetWidth);h=Math.max(h,b.scrollHeight,b.offsetHeight);if(window.innerWidth){w=Math.max(w,window.innerWidth);h=Math.max(h,window.innerHeight);}}return[w,h];}function getID(id){return options.prefix+id;}function $$(name){return $(getID(name));}}
