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