(function(b){var a=null;b.fn.extend({buttons:null,options:null,defaults:{onAppend:null,offsetTop:null,overlayOpacity:0.3,overlayColor:"#000000",width:400,draggable:true,keyEsc:true,overlayClick:true,closeButton:true,hideHeader:false,hideFooter:false,btn_ok:"OK",btn_cancel:"Cancel",template:'<div class="simple-modal-header">                 <h1>{_TITLE_}</h1>             </div>                 <div class="simple-modal-body">                 <div class="contents">{_CONTENTS_}</div>             </div>                 <div class="simple-modal-footer"></div>'},SimpleModal:function(c){a=this;this.buttons=[];this.options=b.extend({},a.defaults,c);return this},showModal:function(){var i=null;this._overlay("show");switch(this.options.model){case"modal-ajax":i=this._drawWindow(this.options);this._loadContents({url:a.options.param.url||"",onRequestComplete:this.options.param.onRequestComplete});break;case"confirm":this.addButton(this.options.btn_ok,"btn primary btn-margin",function(){a.options.callback();a.hideModal()});this.addButton(this.options.btn_cancel,"btn secondary");i=this._drawWindow(this.options);break;case"modal":i=this._drawWindow(this.options);break;default:this.addButton(this.options.btn_ok,"btn primary");i=this._drawWindow(this.options)}if(i){i.css("width",this.options.width);if(this.options.hideHeader){i.addClass("hide-header")}if(this.options.hideFooter){i.addClass("hide-footer")}if(this.options.closeButton){this._addCloseButton()}if(this.options.draggable){var g=i.find(".simple-modal-header"),f=false,d=0,c=0;var e=function(j){i.css({left:j.x-d,top:j.y-c})};var h=function(j){return{x:j.pageX,y:j.pageY}};g.bind({mousedown:function(k){var j=h(k),l=i.position();k.stopPropagation();k.preventDefault();d=j.x-l.left;c=j.y-l.top;f=true},mouseup:function(j){j.stopPropagation();j.preventDefault();f=false}});b(document).mousemove(function(j){j.stopPropagation();j.preventDefault();if(f){e(h(j))}});g.css("cursor","move");i.addClass("draggable")}this._display()}},hideModal:function(){a._overlay("hide")},_drawWindow:function(c){var d=b("<div>").addClass("simple-modal").attr("id","simple-modal");d.html(this._template(a.options.template,{_TITLE_:c.title||"Untitled",_CONTENTS_:c.contents||""}));b("body").append(d);this._injectAllButtons();if(this.options.onAppend){this.options.onAppend.call(this)}return d},addButton:function(e,f,c){var d=b("<a>").attr({title:e,"class":f}).click(c?function(g){c.call(a,g)}:a.hideModal).text(e);this.buttons.push(d);return this},_injectAllButtons:function(){var c=b("#simple-modal").find(".simple-modal-footer");b.each(a.buttons,function(d,f){c.append(f)})},_addCloseButton:function(){var c=b("<a>").addClass("close").attr({href:"#"}).text("x").click(function(d){a.hideModal();d.preventDefault()});b("#simple-modal").append(c);return c},_overlay:function(c){switch(c){case"show":var d=b("<div>").attr("id","simple-modal-overlay").css({"background-color":this.options.overlayColor,opacity:0});b("body").append(d);d.animate({opacity:this.options.overlayOpacity});if(this.options.overlayClick){d.click(function(f){a.hideModal()})}b(window).resize(a._display);b(document).keyup(a._escape);break;case"hide":b("#simple-modal-overlay").remove();b("#simple-modal").remove();b(window).unbind("resize",a._display);b(document).unbind("keyup",a._escape)}},_escape:function(c){if(c.keyCode==27){a.hideModal()}},_loadContents:function(f){b("#simple-modal").addClass("loading");var d=new RegExp(/([^\/\\]+)\.(jpg|png|gif)$/i),c=b("#simple-modal");if(f.url.match(d)){c.addClass("hide-footer");b("#simple-modal-overlay").unbind();var e=b("<img>").attr("src",f.url).load(function(){var j=c.removeClass("loading").find(".contents").empty().append(b(this).css("opacity",0));var h=c.width()-j.width(),k=c.height()-j.height();var i=b(this).width()+h,g=b(this).height()+k;c.animate({width:i,height:g,left:(b(window).width()-i)/2,top:(b(window).height()-g)/2},200,function(){e.animate({opacity:1})})})}else{b("#simple-modal .contents").load(f.url,function(i,j,h){var g=b(this).parent().parent().removeClass("loading");if(j!=="success"){g.find(".contents").html("loading failed");if(f.onRequestFailure){f.onRequestFailure()}}else{if(f.onRequestComplete){f.onRequestComplete()}a._display()}})}},_display:function(){b("#simple-modal-overlay").css({width:b(window).width(),height:b(window).height()});var c=b("#simple-modal"),d=a.options.offsetTop||(b(window).height()-c.height())/2;c.css({top:d,left:((b(window).width()-c.width())/2)})},_template:function(c,f){for(var e in f){c=c.replace(new RegExp("{"+e+"}","g"),f[e])}return c}})})(jQuery);