Ext.ns("Ext.ux");Ext.ux.Lightbox=(function(){var j={},g=[],i,h=false,f=[];return{overlayOpacity:0.85,animate:true,resizeSpeed:8,borderSize:10,labelImage:"Image",labelOf:"of",init:function(){this.resizeDuration=this.animate?((11-this.resizeSpeed)*0.15):0;this.overlayDuration=this.animate?0.2:0;if(!h){Ext.apply(this,Ext.util.Observable.prototype);Ext.util.Observable.constructor.call(this);this.addEvents("open","close");this.initMarkup();this.initEvents();h=true}},initMarkup:function(){j.shim=Ext.DomHelper.append(document.body,{tag:"iframe",id:"ux-lightbox-shim"},true);j.overlay=Ext.DomHelper.append(document.body,{id:"ux-lightbox-overlay"},true);var b=new Ext.Template(this.getTemplate());j.lightbox=b.append(document.body,{},true);var a=["outerImageContainer","imageContainer","image","hoverNav","navPrev","navNext","loading","loadingLink","outerDataContainer","dataContainer","data","details","caption","imageNumber","bottomNav","navClose"];Ext.each(a,function(d){j[d]=Ext.get("ux-lightbox-"+d)});Ext.each([j.overlay,j.lightbox,j.shim],function(d){d.setVisibilityMode(Ext.Element.DISPLAY);d.hide()});var c=(this.animate?250:1)+"px";j.outerImageContainer.setStyle({width:c,height:c})},getTemplate:function(){return['
"]},initEvents:function(){var a=function(b){b.preventDefault();this.close()};j.overlay.on("click",a,this);j.loadingLink.on("click",a,this);j.navClose.on("click",a,this);j.lightbox.on("click",function(b){if(b.getTarget().id=="ux-lightbox"){this.close()}},this);j.navPrev.on("click",function(b){b.preventDefault();this.setImage(i-1)},this);j.navNext.on("click",function(b){b.preventDefault();this.setImage(i+1)},this)},register:function(b,a){if(f.indexOf(b)===-1){f.push(b);Ext.fly(document).on("click",function(d){var c=d.getTarget(b);if(c){d.preventDefault();this.open(c,b,a)}},this)}},open:function(a,c,b){b=b||false;this.setViewSize();j.overlay.fadeIn({duration:this.overlayDuration,endOpacity:this.overlayOpacity,callback:function(){g=[];var p=0;if(!b){g.push([a.href,a.title])}else{var o=Ext.query(c);Ext.each(o,function(k){if(k.href){g.push([k.href,k.title])}});while(g[p][0]!=a.href){p++}}var e=Ext.fly(document).getScroll();var d=e.top+(Ext.lib.Dom.getViewportHeight()/10);var n=e.left;j.lightbox.setStyle({top:d+"px",left:n+"px"}).show();this.setImage(p);this.fireEvent("open",g[p])},scope:this})},setViewSize:function(){var a=this.getViewSize();j.overlay.setStyle({width:a[0]+"px",height:a[1]+"px"});j.shim.setStyle({width:a[0]+"px",height:a[1]+"px"}).show()},setImage:function(a){i=a;this.disableKeyNav();if(this.animate){j.loading.show()}j.image.hide();j.hoverNav.hide();j.navPrev.hide();j.navNext.hide();j.dataContainer.setOpacity(0.0001);j.imageNumber.hide();var b=new Image();b.onload=(function(){j.image.dom.src=g[i][0];this.resizeImage(b.width,b.height)}).createDelegate(this);b.src=g[i][0]},resizeImage:function(b,s){var a=j.outerImageContainer.getWidth();var d=j.outerImageContainer.getHeight();var q=(b+this.borderSize*2);var r=(s+this.borderSize*2);var c=a-q;var u=d-r;var t=0;if(u!=0||c!=0){j.outerImageContainer.syncFx().shift({height:r,duration:this.resizeDuration}).shift({width:q,duration:this.resizeDuration});t++}var e=0;if((u==0)&&(c==0)){e=(Ext.isIE)?250:100}(function(){j.hoverNav.setWidth(j.imageContainer.getWidth()+"px");j.navPrev.setHeight(s+"px");j.navNext.setHeight(s+"px");j.outerDataContainer.setWidth(q+"px");this.showImage()}).createDelegate(this).defer((this.resizeDuration*1000)+e)},showImage:function(){j.loading.hide();j.image.fadeIn({duration:this.resizeDuration,scope:this,callback:function(){this.updateDetails()}});this.preloadImages()},updateDetails:function(){j.details.setWidth((j.data.getWidth(true)-j.navClose.getWidth()-10)+"px");j.caption.update(g[i][1]);j.caption.show();if(g.length>1){j.imageNumber.update(this.labelImage+" "+(i+1)+" "+this.labelOf+" "+g.length);j.imageNumber.show()}j.dataContainer.syncFx().slideIn("t",{duration:this.resizeDuration/2}).fadeIn({duration:this.resizeDuration/2,scope:this,callback:function(){var a=this.getViewSize();j.overlay.setHeight(a[1]+"px");this.updateNav()}})},updateNav:function(){this.enableKeyNav();j.hoverNav.show();if(i>0){j.navPrev.show()}if(i<(g.length-1)){j.navNext.show()}},enableKeyNav:function(){Ext.fly(document).on("keydown",this.keyNavAction,this)},disableKeyNav:function(){Ext.fly(document).un("keydown",this.keyNavAction,this)},keyNavAction:function(b){var a=b.getKey();if(a==88||a==67||a==27){this.close()}else{if(a==80||a==37){if(i!=0){this.setImage(i-1)}}else{if(a==78||a==39){if(i!=(g.length-1)){this.setImage(i+1)}}}}},preloadImages:function(){var b,a;if(g.length>i+1){b=new Image();b.src=g[i+1][0]}if(i>0){a=new Image();a.src=g[i-1][0]}},close:function(){this.disableKeyNav();j.lightbox.hide();j.overlay.fadeOut({duration:this.overlayDuration});j.shim.hide();this.fireEvent("close",i)},getViewSize:function(){return[Ext.lib.Dom.getViewWidth(),Ext.lib.Dom.getViewHeight()]}}})();Ext.onReady(Ext.ux.Lightbox.init,Ext.ux.Lightbox);