(function(a){var d=a.browser.msie&&parseInt(a.browser.version)==6&&typeof window.XMLHttpRequest!="object",c=null,b=[];a.modal=function(c,b){return a.modal.impl.init(c,b)};a.modal.close=function(){a.modal.impl.close()};a.fn.modal=function(b){return a.modal.impl.init(this,b)};a.modal.defaults={appendTo:"body",focus:true,opacity:50,overlayId:"simplemodal-overlay",overlayCss:{},containerId:"simplemodal-container",containerCss:{},dataId:"simplemodal-data",dataCss:{},minHeight:200,minWidth:300,maxHeight:null,maxWidth:null,autoResize:false,zIndex:1e3,close:true,closeHTML:'<a class="modalCloseImg" title="Close"></a>',closeClass:"simplemodal-close",escClose:true,overlayClose:false,position:null,persist:false,onOpen:null,onShow:null,onClose:null};a.modal.impl={opts:null,dialog:{},init:function(b,d){if(this.dialog.data)return false;c=a.browser.msie&&!a.boxModel;this.opts=a.extend({},a.modal.defaults,d);this.zIndex=this.opts.zIndex;this.occb=false;if(typeof b=="object"){b=b instanceof jQuery?b:a(b);if(b.parent().parent().size()>0){this.dialog.parentNode=b.parent();if(!this.opts.persist)this.dialog.orig=b.clone(true)}}else if(typeof b=="string"||typeof b=="number")b=a("<div/>").html(b);else{alert("SimpleModal Error: Unsupported data type: "+typeof b);return false}this.create(b);b=null;this.open();a.isFunction(this.opts.onShow)&&this.opts.onShow.apply(this,[this.dialog]);return this},create:function(e){b=this.getDimensions();if(d)this.dialog.iframe=a('<iframe src="javascript:false;"/>').css(a.extend(this.opts.iframeCss,{display:"none",opacity:0,position:"fixed",height:b[0],width:b[1],zIndex:this.opts.zIndex,top:0,left:0})).appendTo(this.opts.appendTo);this.dialog.overlay=a("<div/>").attr("id",this.opts.overlayId).addClass("simplemodal-overlay").css(a.extend(this.opts.overlayCss,{display:"none",opacity:this.opts.opacity/100,height:b[0],width:b[1],position:"fixed",left:0,top:0,zIndex:this.opts.zIndex+1})).appendTo(this.opts.appendTo);this.dialog.container=a("<div/>").attr("id",this.opts.containerId).addClass("simplemodal-container").css(a.extend(this.opts.containerCss,{display:"none",position:"fixed",zIndex:this.opts.zIndex+2})).append(this.opts.close&&this.opts.closeHTML?a(this.opts.closeHTML).addClass(this.opts.closeClass):"").appendTo(this.opts.appendTo);this.dialog.wrap=a("<div/>").attr("tabIndex",-1).addClass("simplemodal-wrap").css({height:"100%",outline:0,width:"100%"}).appendTo(this.dialog.container);this.dialog.data=e.attr("id",e.attr("id")||this.opts.dataId).addClass("simplemodal-data").css(a.extend(this.opts.dataCss,{display:"none"}));e=null;this.setContainerDimensions();this.dialog.data.appendTo(this.dialog.wrap);(d||c)&&this.fixIE()},bindEvents:function(){var e=this;a("."+e.opts.closeClass).bind("click.simplemodal",function(a){a.preventDefault();e.close()});e.opts.close&&e.opts.overlayClose&&e.dialog.overlay.bind("click.simplemodal",function(a){a.preventDefault();e.close()});a(document).bind("keydown.simplemodal",function(a){if(e.opts.focus&&a.keyCode==9)e.watchTab(a);else if(e.opts.close&&e.opts.escClose&&a.keyCode==27){a.preventDefault();e.close()}});a(window).bind("resize.simplemodal",function(){b=e.getDimensions();e.opts.autoResize?e.setContainerDimensions():e.setPosition();if(d||c)e.fixIE();else{e.dialog.iframe&&e.dialog.iframe.css({height:b[0],width:b[1]});e.dialog.overlay.css({height:b[0],width:b[1]})}})},unbindEvents:function(){a("."+this.opts.closeClass).unbind("click.simplemodal");a(document).unbind("keydown.simplemodal");a(window).unbind("resize.simplemodal");this.dialog.overlay.unbind("click.simplemodal")},fixIE:function(){var b=this.opts.position;a.each([this.dialog.iframe||null,this.dialog.overlay,this.dialog.container],function(r,h){if(h){var f="document.body.clientHeight",e="document.body.clientWidth",n="document.body.scrollHeight",l="document.body.scrollLeft",j="document.body.scrollTop",o="document.body.scrollWidth",q="document.documentElement.clientHeight",p="document.documentElement.clientWidth",c="document.documentElement.scrollLeft",d="document.documentElement.scrollTop",a=h[0].style;a.position="absolute";if(r<2){a.removeExpression("height");a.removeExpression("width");a.setExpression("height",""+n+" > "+f+" ? "+n+" : "+f+' + "px"');a.setExpression("width",""+o+" > "+e+" ? "+o+" : "+e+' + "px"')}else{var i,k;if(b&&b.constructor==Array){var m=b[0]?typeof b[0]=="number"?b[0].toString():b[0].replace(/px/,""):h.css("top").replace(/px/,"");i=m.indexOf("%")==-1?m+" + (t = "+d+" ? "+d+" : "+j+') + "px"':parseInt(m.replace(/%/,""))+" * (("+q+" || "+f+") / 100) + (t = "+d+" ? "+d+" : "+j+') + "px"';if(b[1]){var g=typeof b[1]=="number"?b[1].toString():b[1].replace(/px/,"");k=g.indexOf("%")==-1?g+" + (t = "+c+" ? "+c+" : "+l+') + "px"':parseInt(g.replace(/%/,""))+" * (("+p+" || "+e+") / 100) + (t = "+c+" ? "+c+" : "+l+') + "px"'}}else{i="("+q+" || "+f+") / 2 - (this.offsetHeight / 2) + (t = "+d+" ? "+d+" : "+j+') + "px"';k="("+p+" || "+e+") / 2 - (this.offsetWidth / 2) + (t = "+c+" ? "+c+" : "+l+') + "px"'}a.removeExpression("top");a.removeExpression("left");a.setExpression("top",i);a.setExpression("left",k)}}})},focus:function(e){var c=this,d=e||"first",b=a(":input:enabled:visible:"+d,c.dialog.wrap);b.length>0?b.focus():c.dialog.wrap.focus()},getDimensions:function(){var b=a(window),c=a.browser.opera&&a.browser.version>"9.5"&&a.fn.jquery<="1.2.6"?document.documentElement.clientHeight:a.browser.opera&&a.browser.version<"9.5"&&a.fn.jquery>"1.2.6"?window.innerHeight:b.height();return[c,b.width()]},getVal:function(a){return a=="auto"?0:parseInt(a.replace(/px/,""))},setContainerDimensions:function(){var a=this.getVal(this.dialog.container.css("height")),c=this.dialog.container.width(),e=this.dialog.data.height(),d=this.dialog.data.width(),g=this.opts.maxHeight&&this.opts.maxHeight<b[0]?this.opts.maxHeight:b[0],f=this.opts.maxWidth&&this.opts.maxWidth<b[1]?this.opts.maxWidth:b[1];if(!a)if(!e)a=this.opts.minHeight;else if(e>g)a=g;else if(e<this.opts.minHeight)a=this.opts.minHeight;else a=e;else a=a>g?g:a;if(!c)if(!d)c=this.opts.minWidth;else if(d>f)c=f;else if(d<this.opts.minWidth)c=this.opts.minWidth;else c=d;else c=c>f?f:c;this.dialog.container.css({height:a,width:c});(e>a||d>c)&&this.dialog.wrap.css({overflow:"auto"});this.setPosition()},setPosition:function(){var a,c,d=b[0]/2-(this.dialog.container.height()||this.dialog.data.height())/2,e=b[1]/2-(this.dialog.container.width()||this.dialog.data.width())/2;if(this.opts.position&&this.opts.position.constructor==Array){a=this.opts.position[0]||d;c=this.opts.position[1]||e}else{a=d;c=e}this.dialog.container.css({left:c,top:a})},watchTab:function(c){var b=this;if(a(c.target).parents(".simplemodal-container").length>0){b.inputs=a(":input:enabled:visible:first, :input:enabled:visible:last",b.dialog.data);if(!c.shiftKey&&c.target==b.inputs[b.inputs.length-1]||c.shiftKey&&c.target==b.inputs[0]||b.inputs.length==0){c.preventDefault();var d=c.shiftKey?"last":"first";setTimeout(function(){b.focus(d)},10)}}else{c.preventDefault();setTimeout(function(){b.focus()},10)}},open:function(){this.dialog.iframe&&this.dialog.iframe.show();if(a.isFunction(this.opts.onOpen))this.opts.onOpen.apply(this,[this.dialog]);else{this.dialog.overlay.show();this.dialog.container.show();this.dialog.data.show()}this.focus();this.bindEvents()},close:function(){if(!this.dialog.data)return false;this.unbindEvents();if(a.isFunction(this.opts.onClose)&&!this.occb){this.occb=true;this.opts.onClose.apply(this,[this.dialog])}else{if(this.dialog.parentNode)if(this.opts.persist)this.dialog.data.hide().appendTo(this.dialog.parentNode);else{this.dialog.data.hide().remove();this.dialog.orig.appendTo(this.dialog.parentNode)}else this.dialog.data.hide().remove();this.dialog.container.hide().remove();this.dialog.overlay.hide().remove();this.dialog.iframe&&this.dialog.iframe.hide().remove();this.dialog={}}}}})(jQuery)
