var SqueezeBox={presets:{size:{x:600,y:450},sizeLoading:{x:200,y:150},marginInner:{x:20,y:20},marginImage:{x:150,y:200},handler:!1,adopt:null,closeWithOverlay:!0,zIndex:65555,overlayOpacity:0.7,classWindow:"",classOverlay:"",disableFx:!1,onOpen:Class.empty,onClose:Class.empty,onUpdate:Class.empty,onResize:Class.empty,onMove:Class.empty,onShow:Class.empty,onHide:Class.empty,fxOverlayDuration:250,fxResizeDuration:750,fxContentDuration:250,ajaxOptions:{}},initialize:function(a){if(this.options)return this;
this.presets=$merge(this.presets,a);this.setOptions(this.presets);this.build();this.listeners={window:this.reposition.bind(this,[null]),close:this.close.bind(this),key:this.onkeypress.bind(this)};this.isOpen=this.isLoading=!1;this.window.close=this.listeners.close;return this},build:function(){this.overlay=new Element("div",{id:"sbox-overlay",styles:{display:"none",zIndex:this.options.zIndex}});this.content=new Element("div",{id:"sbox-content"});this.btnClose=new Element("a",{id:"sbox-btn-close",
href:"#"});this.window=(new Element("div",{id:"sbox-window",styles:{display:"none",zIndex:this.options.zIndex+2}})).adopt(this.btnClose,this.content);window.ie6?(this.overlay.style.setExpression("marginTop",'document.documentElement.scrollTop + "px"'),this.window.style.setExpression("marginTop",'0 - parseInt(this.offsetHeight / 2) + document.documentElement.scrollTop + "px"'),this.overlay.setStyles({position:"absolute",top:"0%",left:"0%"}),this.window.setStyles({position:"absolute",top:"0%",left:"0%"})):
(this.overlay.setStyles({position:"fixed",top:0,left:0}),this.window.setStyles({position:"fixed",top:"50%",left:"50%"}));$(document.body).adopt(this.overlay,this.window);this.fx={overlay:this.overlay.effect("opacity",{duration:this.options.fxOverlayDuration,wait:!1}).set(0),window:this.window.effects({duration:this.options.fxResizeDuration,wait:!1}),content:this.content.effect("opacity",{duration:this.options.fxContentDuration,wait:!1}).set(0)}},addClick:function(a){return a.addEvent("click",function(){if(this.fromElement(a))return!1}.bind(this))},
fromElement:function(a,b){this.initialize();(this.element=$(a))&&this.element.rel&&(b=$merge(b||{},Json.evaluate(this.element.rel)));this.setOptions(this.presets,b);this.assignOptions();this.url=(this.element?this.options.url||this.element.href:a)||"";if(this.options.handler){var d=this.options.handler;return this.setContent(d,this.parsers[d].call(this,!0))}var d=!1,e;for(e in this.parsers)if(d=this.parsers[e].call(this))return this.setContent(e,d);return this},assignOptions:function(){this.overlay.setProperty("class",
this.options.classOverlay);this.window.setProperty("class",this.options.classWindow)},close:function(a){a&&(new Event(a)).stop();if(!this.isOpen)return this;this.fx.overlay.start(0).chain(this.toggleOverlay.bind(this));this.window.setStyle("display","none");this.trashImage();this.toggleListeners();this.isOpen=null;this.fireEvent("onClose",[this.content]).removeEvents();this.options={};this.setOptions(this.presets).callChain();return this},onError:function(){this.image&&this.trashImage();this.setContent("Error during loading")},
trashImage:function(){if(this.image)this.image=this.image.onload=this.image.onerror=this.image.onabort=null},setContent:function(a,b){this.content.setProperty("class","sbox-content-"+a);this.applyTimer=this.applyContent.delay(this.fx.overlay.options.duration,this,[this.handlers[a].call(this,b)]);if(this.overlay.opacity)return this;this.toggleOverlay(!0);this.fx.overlay.start(this.options.overlayOpacity);this.reposition();return this},applyContent:function(a,b){this.applyTimer=$clear(this.applyTimer);
this.hideContent();a?(this.isLoading&&this.toggleLoading(!1),this.fireEvent("onUpdate",[this.content],20)):this.toggleLoading(!0);this.content.empty()[["string","array",!1].contains($type(a))?"setHTML":"adopt"](a||"");this.callChain();this.isOpen?this.resize(b):(this.toggleListeners(!0),this.resize(b,!0),this.isOpen=!0,this.fireEvent("onOpen",[this.content]))},resize:function(a,b){var d=window.getSize();this.size=$merge(this.isLoading?this.options.sizeLoading:this.options.size,a);var e={width:this.size.x,
height:this.size.y,marginLeft:-this.size.x/2,marginTop:-this.size.y/2};$clear(this.showTimer||null);this.hideContent();b?(this.window.setStyles(e).setStyle("display",""),this.showTimer=this.showContent.delay(50,this)):this.fx.window.start(e).chain(this.showContent.bind(this));this.reposition(d)},toggleListeners:function(a){a=a?"addEvent":"removeEvent";this.btnClose[a]("click",this.listeners.close);if(this.options.closeWithOverlay)this.overlay[a]("click",this.listeners.close);document[a]("keydown",
this.listeners.key);window[a]("resize",this.listeners.window);window[a]("scroll",this.listeners.window)},toggleLoading:function(a){this.isLoading=a;this.window[a?"addClass":"removeClass"]("sbox-loading");a&&this.fireEvent("onLoading",[this.window])},toggleOverlay:function(a){this.overlay.setStyle("display",a?"":"none");$(document.body)[a?"addClass":"removeClass"]("body-overlayed")},showContent:function(){this.content.opacity&&this.fireEvent("onShow",[this.window]);this.fx.content.start(1)},hideContent:function(){this.content.opacity||
this.fireEvent("onHide",[this.window]);this.fx.content.stop().set(0)},onkeypress:function(a){switch(a.key){case "esc":case "x":this.close()}},reposition:function(a){a=a||window.getSize();this.overlay.setStyles({width:a.size.x,height:a.size.y});this.fireEvent("onMove",[this.overlay,this.window,a])},removeEvents:function(a){if(!this.$events)return this;a?this.$events[a]&&(this.$events[a]=null):this.$events=null;return this},parsers:{image:function(a){return a||this.url.test(/\.(jpg|jpeg|png|gif|bmp)$/i)?
this.url:!1},adopt:function(a){if($(this.options.adopt))return $(this.options.adopt);return a||$(this.element)&&!this.element.parentNode?$(this.element):(a=this.url.match(/#([\w-]+)$/))?$(a[1]):!1},url:function(a){return a||this.url&&!this.url.test(/^javascript:/i)?this.url:!1},iframe:function(a){return a||this.url?this.url:!1},string:function(){return!0}},handlers:{image:function(a){this.image=new Image;var b=function(){for(var a=window.getWidth()-this.options.marginImage.x,b=window.getHeight()-
this.options.marginImage.y,c={x:this.image.width,y:this.image.height},d=0;d<2;d++)if(c.x>a)c.y*=a/c.x,c.x=a;else if(c.y>b)c.x*=b/c.y,c.y=b;c={x:parseInt(c.x),y:parseInt(c.y)};window.webkit419?this.image=new Element("img",{src:this.image.src}):$(this.image);this.image.setProperties({width:c.x,height:c.y});this.applyContent(this.image,c)}.bind(this),d=this.onError.bind(this);(function(){this.src=a}).delay(10,this.image);this.image.onload=b;this.image.onerror=this.image.onabort=d},adopt:function(a){return a.clone()},
url:function(a){this.ajax=new Ajax(a,this.options.ajaxOptions);this.ajax.addEvent("onSuccess",function(a){this.applyContent(a);this.ajax=null}.bind(this));this.ajax.addEvent("onFailure",this.onError.bind(this));this.ajax.request.delay(10,this.ajax)},iframe:function(a){return new Element("iframe",{src:a,frameBorder:0,width:this.options.size.x,height:this.options.size.y})},string:function(a){return a}},extend:$extend};SqueezeBox.extend(SqueezeBox,Events.prototype);SqueezeBox.extend(SqueezeBox,Options.prototype);
SqueezeBox.extend(SqueezeBox,Chain.prototype);
