var Jp_Lightbox=new Class({Implements:[Options,Events],overlay:null,outer:null,inner:null,loading:null,elements:[],current:null,animating:!1,req:null,visible:!1,previousLink:null,nextLink:null,timerId:null,imageload:{images:[],loaded:0},fx:{overlay:null,outer:null,inner:null,loading:null},options:{append:"",update:null,opacity:0.85,duration:250,fixFlash:!1,adoptOnly:"",onlyAdoptChildren:!1,linksClass:"jpLightbox",classPrefix:"jplb-",addCloseButton:!0,closeButtonOptions:{"class":"close",href:"javascript:;",
text:"close"},addNavigation:!1,navigationOptions:{previous:"Previous",next:"Next"},period:4E3},initialize:function(a,b){var b=typeof b!="undefined"?b:{},c=typeof b.onReady!="undefined"?b.onReady:null;this.setOptions(b);this.options.onReady=c;this.elements=a;this.setup();this.elements.each(function(a){a.addEvent("click",this.clicked.bindWithEvent(this,a))},this)},setup:function(){this.options.update=$(this.options.update);if(this.isAnimated()){var a=$(window).getScrollSize();this.overlay=(new Element("div",
{id:this.options.classPrefix+"overlay",styles:{height:a.y,width:"100%",opacity:this.options.opacity,visibility:"hidden"}})).injectInside(document.body);this.overlay.addEvent("click",function(a){a.stop();this.hide()}.bind(this));this.outer=(new Element("div",{id:this.options.classPrefix+"outer",styles:{opacity:1,visibility:"hidden"}})).injectInside(document.body);this.outer.addEvent("click",function(a){a.stop();this.hide()}.bind(this));this.inner=(new Element("div",{id:this.options.classPrefix+"inner"})).injectInside(this.outer);
this.inner.addEvent("click",function(a){a.stopPropagation()}.bind(this));this.content=(new Element("div",{id:this.options.classPrefix+"content"})).injectInside(this.inner);this.loading=(new Element("div",{id:this.options.classPrefix+"loading",styles:{opacity:1,visibility:"hidden"}})).injectInside(this.inner);this.fx.overlay=new Fx.Tween(this.overlay,{duration:this.options.duration});this.fx.overlay.addEvent("start",this.start.bind(this));this.fx.overlay.addEvent("complete",this.completed.bind(this));
this.fx.outer=new Fx.Tween(this.outer,{duration:this.options.duration});this.fx.outer.addEvent("start",this.start.bind(this));this.fx.outer.addEvent("complete",this.completed.bind(this))}else this.inner=this.options.update,this.content=(new Element("div",{id:this.options.classPrefix+"contentNoAnim"})).injectInside(this.inner),this.loading=(new Element("div",{id:this.options.classPrefix+"loadingNoAnim",styles:{opacity:1,display:"none"}})).injectInside(this.inner);this.fx.loading=new Fx.Tween(this.loading,
{duration:this.options.duration});this.fx.loading.addEvent("complete",this.completed.bind(this));this.fx.loading.addEvent("start",this.start.bind(this));window.addEvent("resize",this.resize.bind(this))},start:function(a){switch(a){case this.overlay:this.visible&&(a.setStyle("display","block"),this.fixFlash(!0));break;case this.outer:this.visible&&a.setStyle("display","block")}},completed:function(a){var b=a.getStyle("visibility")=="hidden"?!1:!0;switch(a){case this.overlay:this.visible||(a.setStyle("display",
"none"),this.fixFlash());break;case this.outer:this.visible||a.setStyle("display","none"),b&&this.req&&this.req.send()}},imageLoaded:function(){this.imageload.loaded++;this.imageload.loaded==this.imageload.images.length&&this.show()},loaded:function(a,b){this.content.setStyles({visibility:"hidden"});var c=this.options.adoptOnly;/^image\//.test(this.getContentTypeFromLastRequest())&&(a=this.getTreeForImageResponse(),c=null);if(/^application\//.test(this.getContentTypeFromLastRequest()))window.location=
this.req.options.url;else{if(c){var c=b.length,d=0;do if(b[d]&&b[d].get("id")==this.options.adoptOnly){this.options.onlyAdoptChildren?this.content.innerHTML=b[d].innerHTML:this.content.adopt(b[d]);break}while(d++<c)}else this.content.adopt(a);this.content.injectInside(this.inner);c=[];c.extend(this.content.getElements("img"));c.extend(this.getBackgroundImages());this.imageload={images:c,loaded:0};c.each(function(a){a.complete?this.imageload.loaded++:a.addEvent("load",this.imageLoaded.bind(this))},
this);this.imageload.images.length<=this.imageload.loaded&&this.show()}},show:function(){this.loading.setStyle("display","none");this.fx.loading.set("opacity",0);this.loading.setStyles("display","none");this.options.addCloseButton&&this.addCloseButton();this.options.addNavigation&&this.elements.length>1&&this.addNavigation();this.fireEvent("ready",this.content.getChildren());this.handleFetchedLinks();(new Fx.Tween(this.content,{duration:this.options.duration})).start("opacity",0,1);this.fireEvent("complete")},
hide:function(){this.visible=!1;this.pause();this.isAnimated()&&(this.fx.overlay.start("opacity",0),this.fx.outer.start("opacity",0));this.fireEvent("close");this.content.empty()},clicked:function(a,b){a&&(new Event(a)).stop();this.loadUrlFromLink(b)},loadUrlFromLink:function(a){var b=new String(a.get("href"));if(b&&b!="#")this.current=a,this.options.append&&(b+=b.contains("?")?"&":"?",b+=this.options.append),this.load(b)},load:function(a){this.req=new Request.HTML({url:a,evalScripts:!1,onSuccess:this.loaded.bind(this),
onFailure:function(){alert("The page request failed, please refresh the page and try again.");this.hide()}.bind(this),method:"get",link:"cancel"});this.inner.empty();a=this.visible;this.visible=!0;this.loading.setStyle("display","block");this.fx.loading.set("opacity",1);this.loading.injectInside(this.inner);this.isAnimated()&&!a?(this.fx.overlay.start("opacity",0,this.options.opacity),this.fx.outer.start("opacity",0,1)):this.req.send()},fixFlash:function(a){var b=[];this.options.fixFlash&&(b.push("object"),
b.push("embed"));Browser.Engine.trident&&/MSIE\s6/.test(navigator.userAgent)&&b.push("select");b.each(function(b){$$(b).each(function(b){b.style.visibility=a?"hidden":"visible"})})},isAnimated:function(){return!this.options.update},getBackgroundImages:function(a){a=$(a);if(!a)a=this.content;var b=[];if(typeof a.getStyle!="undefined"){var c=a.getStyle("background-image");if(c&&c!="none"){var c=c.replace(/url\("?([^"\)]+)"?\)/i,"$1"),d=$(new Image);d.src=c;b.push(d)}}typeof a.getChildren!="undefined"&&
a.getChildren().each(function(a){b.extend(this.getBackgroundImages(a))},this);return b},addCloseButton:function(){(new Element("a",this.options.closeButtonOptions)).injectInside(this.content)},addNavigation:function(){this.previousLink=this.content.getElement("a.previous");this.nextLink=this.content.getElement("a.next");if(!this.previousLink&&!this.nextLink){var a=new Element("ul",{"class":"navigation"});a.inject(this.content);var b=new Element("li",{"class":"previous"});b.inject(a);var c=new Element("li",
{"class":"next"});c.inject(a);this.previousLink=new Element("a",{href:"javascript:;",text:this.options.navigationOptions.previous,title:this.options.navigationOptions.previous});this.previousLink.inject(b);this.nextLink=new Element("a",{href:"javascript:;",text:this.options.navigationOptions.next,title:this.options.navigationOptions.next});this.nextLink.inject(c)}this.previousLink&&this.previousLink.addEvent("click",function(a){a.stop();this.pause();this.previous()}.bind(this));this.nextLink&&this.nextLink.addEvent("click",
function(a){a.stop();this.pause();this.next()}.bind(this))},handleFetchedLinks:function(){this.content.getElements(".close").each(function(a){a.addEvent("click",function(){this.hide()}.bind(this))},this);this.options.linksClass&&(!Browser.Engine.trident||!/MSIE\s6/.test(navigator.userAgent))&&this.content.getElements("a."+this.options.linksClass).each(function(a){a.addEvent("click",this.clicked.bindWithEvent(this,a))},this)},resize:function(){if(this.overlay){this.overlay.setStyles({display:"none"});
var a=$(window).getScrollSize();this.overlay.setStyles({height:a.y,width:a.x,display:""})}},position:function(){if(this.visible){var a=this.inner.getSize(),b={x:window.getWidth()-56,y:window.getHeight()-20};this.inner.setStyles({left:window.getScrollLeft()+(b.x-a.x)/2})}},getContentTypeFromLastRequest:function(){return this.req.xhr.getResponseHeader("Content-Type")},getTreeForImageResponse:function(){tree=[];tree.push(new Element("img",{src:this.req.options.url}));return tree},previous:function(){currentIndex=
this.getElementIndex(this.current);currentIndex!==null&&currentIndex-1>=0&&this.loadUrlFromLink(this.elements[currentIndex-1])},next:function(){currentIndex=this.getElementIndex(this.current);currentIndex!==null&&currentIndex+1<this.elements.length?this.loadUrlFromLink(this.elements[currentIndex+1]):this.loadUrlFromLink(this.elements[0])},getElementIndex:function(a){for(var b=0;b<this.elements.length;b++)if(a==this.elements[b])return b;return null},pause:function(){clearTimeout(this.timerId);this.timerId=
null},startSlideshow:function(){this.timerId=this.next.periodical(this.options.period,this)},resetTimer:function(){this.pause();this.startSlideshow()}});
