var Lightbox={init:function(_1){ this.options=$extend({resizeDuration:400,resizeTransition:false,initialWidth:250,initialHeight:250,animateCaption:true,showCounter:true},_1||{}); this.anchors=[]; $each(document.links,function(el){ if(el.rel&&el.rel.test(/^lightbox/i)){ el.onclick=this.click.pass(el,this); this.anchors.push(el); } },this); this.eventKeyDown=this.keyboardListener.bindAsEventListener(this); this.eventPosition=this.position.bind(this); this.overlay=new Element("div",{"id":"lbOverlay"}).injectInside(document.body); this.center=new Element("div",{"id":"lbCenter","styles":{"width":this.options.initialWidth,"height":this.options.initialHeight,"marginLeft":-(this.options.initialWidth/2),"display":"none"}}).injectInside(document.body); this.image=new Element("div",{"id":"lbImage"}).injectInside(this.center); this.prevLink=new Element("a",{"id":"lbPrevLink","href":"#","styles":{"display":"none"}}).injectInside(this.image); this.nextLink=this.prevLink.clone().setProperty("id","lbNextLink").injectInside(this.image); this.prevLink.onclick=this.previous.bind(this); this.nextLink.onclick=this.next.bind(this); this.bottomContainer=new Element("div",{"id":"lbBottomContainer","styles":{"display":"none"}}).injectInside(document.body); this.bottom=new Element("div",{"id":"lbBottom"}).injectInside(this.bottomContainer); new Element("a",{"id":"lbCloseLink","href":"#"}).injectInside(this.bottom).onclick=this.overlay.onclick=this.close.bind(this); this.caption=new Element("div",{"id":"lbCaption"}).injectInside(this.bottom); this.number=new Element("div",{"id":"lbNumber"}).injectInside(this.bottom); new Element("div",{"styles":{"clear":"both"}}).injectInside(this.bottom); var _3=this.nextEffect.bind(this); this.fx={overlay:this.overlay.effect("opacity",{duration:500}).hide(),resize:this.center.effects($extend({duration:this.options.resizeDuration,onComplete:_3},this.options.resizeTransition?{transition:this.options.resizeTransition}:{})),image:this.image.effect("opacity",{duration:500,onComplete:_3}),bottom:this.bottom.effect("margin-top",{duration:400,onComplete:_3})}; this.preloadPrev=new Image(); this.preloadNext=new Image(); },click:function(_4){ if(_4.rel.length==8){ return this.show(_4.href,_4.title); } var j,_6,_7=[]; this.anchors.each(function(el){ if(el.rel==_4.rel){ for(j=0;j<_7.length;j++){ if(_7[j][0]==el.href){ break; } } if(j==_7.length){ _7.push([el.href,el.title]); if(el.href==_4.href){ _6=j; } } } },this); return this.open(_7,_6); },show:function(_9,_a){ return this.open([[_9,_a]],0); },open:function(_b,_c){ this.images=_b; this.position(); this.setup(true); this.top=window.getScrollTop()+(window.getHeight()/15); this.center.setStyles({top:this.top,display:""}); this.fx.overlay.start(0.8); return this.changeImage(_c); },position:function(){ this.overlay.setStyles({"top":window.getScrollTop(),"height":window.getHeight()}); },setup:function(_d){ var _e=$A(document.getElementsByTagName("object")); _e.extend(document.getElementsByTagName(window.ie?"select":"embed")); if(window.ie){ _e.extend(document.getElementsByTagName("iframe")); } _e.each(function(el){ if(_d){ el.lbBackupStyle=el.style.visibility; } el.style.visibility=_d?"hidden":el.lbBackupStyle; }); var fn=_d?"addEvent":"removeEvent"; window[fn]("scroll",this.eventPosition)[fn]("resize",this.eventPosition); document[fn]("keydown",this.eventKeyDown); this.step=0; },keyboardListener:function(_11){ switch(_11.keyCode){ case 27: case 88: case 67: this.close(); break; case 37: case 80: this.previous(); break; case 39: case 78: this.next(); } },previous:function(){ return this.changeImage(this.activeImage-1); },next:function(){ return this.changeImage(this.activeImage+1); },changeImage:function(_12){ if(this.step||(_12<0)||(_12>=this.images.length)){ return false; } this.step=1; this.activeImage=_12; this.bottomContainer.style.display=this.prevLink.style.display=this.nextLink.style.display="none"; this.fx.image.hide(); this.center.className="lbLoading"; this.preload=new Image(); this.preload.onload=this.nextEffect.bind(this); this.preload.src=this.images[_12][0]; return false; },nextEffect:function(){ switch(this.step++){ case 1: this.center.className=""; this.image.style.backgroundImage="url("+this.images[this.activeImage][0]+")"; this.image.style.width=this.bottom.style.width=this.preload.width+"px"; this.image.style.height=this.prevLink.style.height=this.nextLink.style.height=this.preload.height+"px"; this.caption.setHTML(this.images[this.activeImage][1]||""); this.number.setHTML((!this.options.showCounter||(this.images.length==1))?"":"Image "+(this.activeImage+1)+" of "+this.images.length); if(this.activeImage){ this.preloadPrev.src=this.images[this.activeImage-1][0]; } if(this.activeImage!=(this.images.length-1)){ this.preloadNext.src=this.images[this.activeImage+1][0]; } if(this.center.clientHeight!=this.image.offsetHeight){ this.fx.resize.start({height:this.image.offsetHeight}); break; } this.step++; case 2: if(this.center.clientWidth!=this.image.offsetWidth){ this.fx.resize.start({width:this.image.offsetWidth,marginLeft:-this.image.offsetWidth/2}); break; } this.step++; case 3: this.bottomContainer.setStyles({top:this.top+this.center.clientHeight,height:0,marginLeft:this.center.style.marginLeft,display:""}); this.fx.image.start(1); break; case 4: if(this.options.animateCaption){ this.fx.bottom.set(-this.bottom.offsetHeight); this.bottomContainer.style.height=""; this.fx.bottom.start(0); break; } this.bottomContainer.style.height=""; case 5: if(this.activeImage){ this.prevLink.style.display=""; } if(this.activeImage!=(this.images.length-1)){ this.nextLink.style.display=""; } this.step=0; } },close:function(){ if(this.step<0){ return; } this.step=-1; if(this.preload){ this.preload.onload=Class.empty; this.preload=null; } for(var f in this.fx){ this.fx[f].stop(); } this.center.style.display=this.bottomContainer.style.display="none"; this.fx.overlay.chain(this.setup.pass(false,this)).start(0); return false; }}; window.addEvent("domready",Lightbox.init.bind(Lightbox));