if(!Element.expose){Element.implement({expose:function(){var b=this.style;var a=b.cssText;b.visibility="hidden";b.position="absolute";if(b.display=="none"){b.display=""}return(function(){return this.set("style",a)}).bind(this)}})}var Overlay=new new Class({Implements:[Options,Events,Chain],options:{inject:null,opacity:0.4,scrollDelay:400,zIndex:9999,tween:{duration:200,transition:Fx.Transitions.Expo.easeOut,link:"cancel"},closeOnClick:false,closeOnEsc:true},init:function(b,a){if(this.initialized){return}this.setOptions(a);this.element=new Element("div",{id:"overlay",opacity:0,styles:{zIndex:this.options.zIndex,position:(Browser.Engine.trident4)?"absolute":"fixed",top:0,left:0,width:"100%"},events:{click:this.click.bind(this)},tween:this.options.tween}).inject($pick(this.options.inject,document.body));window.addEvents({resize:this.resize.bind(this),scroll:this.scroll.bind(this)});if(this.options.closeOnEsc){document.addEvent((Browser.Engine.trident)?"keydown":"keypress",function(c){if(this.shown&&c.code===Event.Keys.esc){this.close();return false}}.bind(this))}this.initialized=true},show:function(a){this.init();this.element.setStyle("height",window.getScrollHeight());this.element.setStyle("cursor",(this.options.closeOnClick)?"pointer":"default");if(!this.shown||(a!=this.box)){if(this.options.tween){this.element.fade(this.options.opacity).get("tween").chain(this.callChain.bind(this))}else{this.element.setStyle("visibility","visible");this.callChain()}}else{if(this.box){this.box.close(true);a.show(null,true)}}this.box=a;if(Browser.Engine.trident4&&window.IframeShim){if(this.shim){this.shim.remove()}this.shim=new IframeShim(this.element,{name:"overlayShim"});this.shim.show()}this.shown=true;this.fireEvent("show")},close:function(a){if(!this.shown){return}if(this.shim){this.shim.remove()}this.shown=false;if(this.box&&!a){this.box.close(true);this.box=null}this.element.fade("out");this.callChain();this.fireEvent("close")},resize:function(a){if(!this.shown&&!a){return}this.element.setStyle("height",document.getScrollHeight());this.fireEvent("resize")},scroll:function(){if(this.scrollTimer){$clear(this.scrollTimer)}this.scrollTimer=this.fireEvent.delay(this.options.scrollDelay,this,["scroll"])},click:function(){if(this.options.closeOnClick){this.close()}this.fireEvent("click")}});var OverlayElement=new Class({Implements:[Options,Events,Chain],options:{fx:{duration:500,transition:Fx.Transitions.Expo.easeOut,link:"cancel"},fxGhost:{duration:500,transition:Fx.Transitions.Expo.easeOut,link:"cancel"},opacityGhost:[0.2,0.9],position:70,scrolldelay:400},initialize:function(b,a){Overlay.init();this.setOptions(a);this.element=document.id(b)},render:function(){this.rendered=true;this.element.set("styles",{display:"block",zIndex:Overlay.options.zIndex+1});this.element.getElements(".overlay-close").addEvent("click",function(a){a.preventDefault();this.close()}.bind(this));this.ghost=new Element("div",{id:"overlay-ghost",styles:{zIndex:Overlay.options.zIndex+1,position:"absolute",display:"none",backgroundColor:this.element.getStyle("background-color")},morph:this.options.fxGhost}).inject(document.body);this.holder=new Element("div",{id:"overlay-container",styles:{zIndex:Overlay.options.zIndex+1,width:"100%",position:"absolute",top:0,left:0,display:"none"},events:{click:function(a){if(a.target==this){Overlay.click()}}},tween:this.options.fx}).grab(this.element).inject(document.body)},show:function(c,g){if(!this.rendered){this.render()}var e=this.holder.expose();var d=this.element.getSize();e();var a=document.getScroll(),b=document.getSize();this.top=b.y/2-d.y/2;var f=a.y+this.top;if(!g){Overlay.show(this)}this.origin=document.id(c);if(this.origin){var h=this.origin.getCoordinates();this.ghost.set("opacity",0).get("morph").start({top:[h.top,f],left:[h.left,b.x/2-d.x/2],height:[h.height,d.y],width:[h.width,d.x],opacity:this.options.opacityGhost}).chain(function(){this.ghost.setStyle("display","none");this.holder.setStyle("visibility","visible")}.bind(this));this.ghost.setStyle("display","block");this.holder.setStyles({visibility:"hidden",top:f})}else{this.holder.setStyle("top",a.y-d.y).tween("top",a.y-d.y,f)}this.holder.setStyle("display","block");this.callChain();this.fireEvent("show")},close:function(a){if(!a){Overlay.close(true)}if(this.origin){var c=this.element.getCoordinates();var b=this.origin.getCoordinates();this.ghost.get("morph").start({top:[c.top,b.top],left:[c.left,b.left],height:[c.height,b.height],width:[c.width,b.width],opacity:[1,0]}).chain(function(){this.ghost.setStyle("display","none")}.bind(this));this.ghost.setStyle("display","block");this.origin=null}this.holder.setStyle("display","none");this.callChain();this.fireEvent("close").fireEvent("hide")},destroy:function(){Overlay.close(true);if(this.holder){this.holder=this.holder.destroy();this.element=null;this.ghost=this.ghost.destroy()}}});Element.Properties.overlay={set:function(b){var a=this.retrieve("overlay");if(a){a.destroy()}return this.eliminate("overlay").store("overlay:options",b)},get:function(a){if(a||!this.retrieve("overlay")){if(a||!this.retrieve("overlay:options")){this.set("overlay",a)}this.store("overlay",new OverlayElement(this,this.retrieve("overlay:options")))}return this.retrieve("overlay")}};Element.implement({overlay:function(a){this.get("overlay").show(a);return this}});