var UI=(function(){function A(E,D){return Math.abs((E-D)/2)}var C=Class.create({options:{show:Element.show,hide:Element.hide},initialize:function(D){Object.extend(this.options,D||{});this.element=new Element("div");this.element.addClassName("ui-overlay");var E={position:"fixed",top:"0px",left:"0px",height:"100%",width:"100%",backgroundColor:"#000",opacity:0.5,zIndex:C.baseZIndex++,filter:"alpha(opacity=50)",display:"none"};Object.extend(E,this.options.style);this.element.setStyle(E)},show:function(){var D=$$("body")[0];if(this.options.lockScrolling){this._lockScrolling(true)}D.insert(this.element);this.options.show(this.element);return this},hide:function(){if(this.options.lockScrolling){this._lockScrolling(false)}this.options.hide(this.element);return this},remove:function(){this.hide();this.element.remove();return this},_lockScrolling:function(E){var D=$$("body")[0];if(E){D.setStyle({overflow:"hidden"})}else{D.setStyle({overflow:"auto"})}}});C.baseZIndex=1000;var B=Class.create({options:{show:Element.show,hide:Element.hide},initialize:function(E,D){this.element=$(E);Object.extend(this.options,D||{});var H=this.element.getDimensions();var G=document.viewport.getDimensions();var F=Object.extend({position:"fixed",zIndex:++B.baseZIndex,top:A(G.height,H.height)+"px",left:A(G.width,H.width)+"px"},this.options.style||{});this.element.setStyle(F);this.element.observe("click",function(J){var I=J.findElement("[data-close]");if(!I){return }this.remove()}.bindAsEventListener(this))},show:function(){var E=this.element,D=this.options;D.show(E);if(D.modal){if(!this.overlay){var F=Object.extend({lockScrolling:true,style:{zIndex:(B.baseZIndex-1)}},this.options.overlay);this.overlay=new C(F)}this.overlay.show()}this.element.fire("dialog:open");return this},hide:function(){this.element.fire("dialog:close");this.options.hide(this.element);if(this.overlay){this.overlay.hide()}return this},close:function(){this.remove()},remove:function(){this.hide();if(this.overlay){this.overlay.remove()}this.element.remove();return this},setOverlay:function(D){this.overlay=D;return this},setOptions:function(D){this.options=Object.extend(this.options||{},D||{});return this}});B.baseZIndex=1001;Object.extend(B,{fromString:function(F,D){D=D||{};var E=Builder.build(F);E.setStyle({display:"none"});$$("body")[0].insert(E);return new B(E,D)}});return{Dialog:B,Overlay:C}})();
