var SimpleModal=new Class({Implements:[Options],request:null,buttons:[],options:{onAppend:Function,offsetTop:40,overlayOpacity:0.3,overlayColor:"#000000",width:400,draggable:true,keyEsc:true,overlayClick:true,closeButton:true,hideHeader:false,hideFooter:false,lightboxExcessWidth:40,lightboxExcessHeight:120,btn_ok:"OK",btn_cancel:"Cancel",template:'

{_TITLE_}

{_CONTENTS_}
'},initialize:function(a){this.setOptions(a)},show:function(a){if(!a){a={}}this._overlay("show");switch(a.model){case"confirm":this.addButton(this.options.btn_ok,"btn primary btn-margin",function(){try{a.callback()}catch(d){}this.hide()});this.addButton(this.options.btn_cancel,"btn secondary");var c=this._drawWindow(a);this._addEscBehaviour();break;case"modal":var c=this._drawWindow(a);this._addEscBehaviour();break;case"modal-ajax":var c=this._drawWindow(a);this._loadContents({url:a.param.url||"",onRequestComplete:a.param.onRequestComplete||Function});break;default:this.addButton(this.options.btn_ok,"btn primary");var c=this._drawWindow(a);this._addEscBehaviour();break}c.setStyles({width:this.options.width});if(this.options.hideHeader){c.addClass("hide-header")}if(this.options.hideFooter){c.addClass("hide-footer")}if(this.options.closeButton){this._addCloseButton()}if(this.options.draggable){var b=c.getElement(".simple-modal-header");new Drag(c,{handle:b});b.setStyle("cursor","move");c.addClass("draggable")}this._display()},hide:function(){try{if(typeof(this.request)=="object"){this.request.cancel()}}catch(a){}this._overlay("hide");return},_drawWindow:function(a){var c=new Element("div#simple-modal",{"class":"simple-modal"});c.inject($$("body")[0]);var b=this._template(this.options.template,{_TITLE_:a.title||"Untitled",_CONTENTS_:a.contents||""});c.set("html",b);this._injectAllButtons();this.options.onAppend();return c},addButton:function(c,d,a){var b=new Element("a",{title:c,text:c,"class":d,events:{click:(a||this.hide).bind(this)}});this.buttons.push(b);return b},_injectAllButtons:function(){this.buttons.each(function(b,a){b.inject($("simple-modal").getElement(".simple-modal-footer"))});return},_addCloseButton:function(){var a=new Element("a",{"class":"close",href:"#",html:"x"});a.inject($("simple-modal"),"top");a.addEvent("click",function(b){if(b){b.stop()}this.hide()}.bind(this));return a},_overlay:function(b){switch(b){case"show":this._overlay("hide");var c=new Element("div",{id:"simple-modal-overlay"});c.inject($$("body")[0]);c.setStyle("background-color",this.options.overlayColor);c.fade("hide").fade(this.options.overlayOpacity);if(this.options.overlayClick){c.addEvent("click",function(f){if(f){f.stop()}this.hide()}.bind(this))}this.__resize=this._display.bind(this);window.addEvent("resize",this.__resize);break;case"hide":window.removeEvent("resize",this._display);if(this.options.keyEsc){var a=Browser.name!="ie"?"keydown":"onkeydown";window.removeEvent(a,this._removeSM)}try{$("simple-modal-overlay").destroy()}catch(d){}try{$("simple-modal").destroy()}catch(d){}break}return},_loadContents:function(param){$("simple-modal").addClass("loading");var re=new RegExp(/([^\/\\]+)\.(jpg|png|gif)$/i);if(param.url.match(re)){$("simple-modal").addClass("hide-footer");$("simple-modal-overlay").removeEvents();var images=[param.url];new Asset.images(images,{onProgress:function(i){immagine=this},onComplete:function(){try{$("simple-modal").removeClass("loading");var content=$("simple-modal").getElement(".contents");var padding=content.getStyle("padding").split(" ");var width=(immagine.get("width").toInt())+(padding[1].toInt()+padding[3].toInt());var height=immagine.get("height").toInt();var ns=this._scaleImage(width,height);width=ns.width;height=ns.height;var myFx1=new Fx.Tween($("simple-modal"),{duration:"normal",transition:"sine:out",link:"cancel",property:"width"}).start($("simple-modal").getCoordinates().width,width);var myFx2=new Fx.Tween(content,{duration:"normal",transition:"sine:out",link:"cancel",property:"height"}).start(content.getCoordinates().height,height).chain(function(){immagine.inject($("simple-modal").getElement(".contents").empty()).fade("hide").setStyles({width:width,height:height}).fade("in");this._display();this._addEscBehaviour()}.bind(this));var myFx3=new Fx.Tween($("simple-modal"),{duration:"normal",transition:"sine:out",link:"cancel",property:"left"}).start($("simple-modal").getCoordinates().left,(window.getCoordinates().width-width)/2)}catch(err){}}.bind(this)})}else{this.request=new Request.HTML({evalScripts:false,url:param.url,method:"get",onRequest:function(){},onSuccess:function(responseTree,responseElements,responseHTML,responseJavaScript){$("simple-modal").removeClass("loading");$("simple-modal").getElement(".contents").set("html",responseHTML);param.onRequestComplete();eval(responseJavaScript);this._display();this._addEscBehaviour()}.bind(this),onFailure:function(){$("simple-modal").removeClass("loading");$("simple-modal").getElement(".contents").set("html","loading failed")}}).send()}},_scaleImage:function(c,f){var d=this.options.lightboxExcessHeight+this.options.offsetTop;var i=this.options.lightboxExcessWidth;var e=c;var a=f;var g=window.getSize().x-i;var b=window.getSize().y-d;ratio=(e<=a)?a/b:e/g;ratio=Math.max(ratio,1);c=parseInt(e/ratio);f=parseInt(a/ratio);return{width:c,height:f}},_display:function(){try{$("simple-modal-overlay").setStyles({height:window.getCoordinates().height})}catch(b){}try{var a=this.options.offsetTop||0;$("simple-modal").setStyles({top:a,left:((window.getCoordinates().width-$("simple-modal").getCoordinates().width)/2)})}catch(b){}return},_addEscBehaviour:function(){if(this.options.keyEsc){this._removeSM=function(b){if(b.key=="esc"){this.hide()}}.bind(this);if(this.options.keyEsc){var a=Browser.name!="ie"?"keydown":"onkeydown";window.addEvent(a,this._removeSM)}}},_template:function(a,c){for(var b in c){a=a.replace(new RegExp("{"+b+"}","g"),c[b])}return a}});