(function(b){var a={dragStart:"start.draggable",drag:"drag.draggable",dragStop:"stop.draggable",maxHeight:"maxHeight.resizable",minHeight:"minHeight.resizable",maxWidth:"maxWidth.resizable",minWidth:"minWidth.resizable",resizeStart:"start.resizable",resize:"drag.resizable",resizeStop:"stop.resizable"};b.widget("ui.dialog",{init:function(){var f=this,e=this.options,c=typeof e.resizable=="string"?e.resizable:"n,e,s,w,se,sw,ne,nw",k=this.element.addClass("ui-dialog-content").wrap("<div/>").wrap("<div/>"),i=(this.uiDialogContainer=k.parent().addClass("ui-dialog-container").css({position:"relative",width:"100%",height:"100%"})),h=e.title||k.attr("title")||"",d=(this.uiDialogTitlebar=b('<div class="ui-dialog-titlebar"/>')).append('<span class="ui-dialog-title">'+h+"</span>").append('<a href="#" class="ui-dialog-titlebar-close"><span>X</span></a>').prependTo(i),g=(this.uiDialog=i.parent()).appendTo(document.body).hide().addClass("ui-dialog").addClass(e.dialogClass).addClass(k.attr("className")).removeClass("ui-dialog-content").css({position:"absolute",width:e.width,height:e.height,overflow:"hidden",zIndex:e.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(l){if(e.closeOnEscape){var m=27;(l.keyCode&&l.keyCode==m&&f.close())}}).mousedown(function(){f.moveToTop()}),j=(this.uiDialogButtonPane=b("<div/>")).addClass("ui-dialog-buttonpane").css({position:"absolute",bottom:0}).appendTo(g);this.uiDialogTitlebarClose=b(".ui-dialog-titlebar-close",d).hover(function(){b(this).addClass("ui-dialog-titlebar-close-hover")},function(){b(this).removeClass("ui-dialog-titlebar-close-hover")}).mousedown(function(l){l.stopPropagation()}).click(function(){f.close();return false});this.uiDialogTitlebar.find("*").add(this.uiDialogTitlebar).each(function(){b.ui.disableSelection(this)});if(b.fn.draggable){g.draggable({cancel:".ui-dialog-content",helper:e.dragHelper,handle:".ui-dialog-titlebar",start:function(m,l){f.moveToTop();(e.dragStart&&e.dragStart.apply(f.element[0],arguments))},drag:function(m,l){(e.drag&&e.drag.apply(f.element[0],arguments))},stop:function(m,l){(e.dragStop&&e.dragStop.apply(f.element[0],arguments));b.ui.dialog.overlay.resize()}});(e.draggable||g.draggable("disable"))}if(b.fn.resizable){g.resizable({cancel:".ui-dialog-content",helper:e.resizeHelper,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:e.minHeight,start:function(){(e.resizeStart&&e.resizeStart.apply(f.element[0],arguments))},resize:function(m,l){(e.autoResize&&f.size.apply(f));(e.resize&&e.resize.apply(f.element[0],arguments))},handles:c,stop:function(m,l){(e.autoResize&&f.size.apply(f));(e.resizeStop&&e.resizeStop.apply(f.element[0],arguments));b.ui.dialog.overlay.resize()}});(e.resizable||g.resizable("disable"))}this.createButtons(e.buttons);this.isOpen=false;(e.bgiframe&&b.fn.bgiframe&&g.bgiframe());(e.autoOpen&&this.open())},setData:function(d,c){(a[d]&&this.uiDialog.data(a[d],c));switch(d){case"buttons":this.createButtons(c);break;case"draggable":this.uiDialog.draggable(c?"enable":"disable");break;case"height":this.uiDialog.height(c);break;case"position":this.position(c);break;case"resizable":(typeof c=="string"&&this.uiDialog.data("handles.resizable",c));this.uiDialog.resizable(c?"enable":"disable");break;case"title":b(".ui-dialog-title",this.uiDialogTitlebar).text(c);break;case"width":this.uiDialog.width(c);break}b.widget.prototype.setData.apply(this,arguments)},position:function(c){var g=b(window),f=b(document),e=f.scrollTop(),h=f.scrollLeft(),d=e;if(b.inArray(c,["center","top","right","bottom","left"])>=0){c=[c=="right"||c=="left"?c:"center",c=="top"||c=="bottom"?c:"middle"]}if(c.constructor!=Array){c=["center","middle"]}if(c[0].constructor==Number){h+=c[0]}else{switch(c[0]){case"left":h+=0;break;case"right":h+=g.width()-this.uiDialog.width();break;default:case"center":h+=(g.width()-this.uiDialog.width())/2}}if(c[1].constructor==Number){e+=c[1]}else{switch(c[1]){case"top":e+=0;break;case"bottom":e+=g.height()-this.uiDialog.height();break;default:case"middle":e+=(g.height()-this.uiDialog.height())/2}}e=Math.max(e,d);this.uiDialog.css({top:e,left:h})},size:function(){var f=this.uiDialogContainer,c=this.uiDialogTitlebar,e=this.element,d=parseInt(e.css("margin-top"),10)+parseInt(e.css("margin-bottom"),10),g=parseInt(e.css("margin-left"),10)+parseInt(e.css("margin-right"),10);e.height(f.height()-c.outerHeight()-d);e.width(f.width()-g)},open:function(){if(this.isOpen){return}this.overlay=this.options.modal?new b.ui.dialog.overlay(this):null;(this.uiDialog.next().length>0)&&this.uiDialog.appendTo("body");this.position(this.options.position);this.uiDialog.show(this.options.show);this.options.autoResize&&this.size();this.moveToTop(true);var d=null;var c={options:this.options};this.uiDialogTitlebarClose.focus();this.element.triggerHandler("dialogopen",[d,c],this.options.open);this.isOpen=true},moveToTop:function(c){if((this.options.modal&&!c)||(!this.options.stack&&!this.options.modal)){return this.element.triggerHandler("dialogfocus",[null,{options:this.options}],this.options.focus)}var d=this.options.zIndex,e=this.options;b(".ui-dialog:visible").each(function(){d=Math.max(d,parseInt(b(this).css("z-index"),10)||e.zIndex)});(this.overlay&&this.overlay.$el.css("z-index",++d));this.uiDialog.css("z-index",++d);this.element.triggerHandler("dialogfocus",[null,{options:this.options}],this.options.focus)},close:function(){(this.overlay&&this.overlay.destroy());this.uiDialog.hide(this.options.hide);var c=null;var d={options:this.options};this.element.triggerHandler("dialogclose",[c,d],this.options.close);b.ui.dialog.overlay.resize();this.isOpen=false},destroy:function(){(this.overlay&&this.overlay.destroy());this.uiDialog.hide();this.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content").hide().appendTo("body");this.uiDialog.remove()},createButtons:function(c){var d=this,f=false,e=this.uiDialogButtonPane;e.empty().hide();b.each(c,function(){return !(f=true)});if(f){e.show();b.each(c,function(h,g){b("<button/>").text(h).click(function(){g.apply(d.element[0],arguments)}).appendTo(e)})}}});b.extend(b.ui.dialog,{defaults:{autoOpen:true,autoResize:true,bgiframe:false,buttons:{},closeOnEscape:true,draggable:true,height:200,minHeight:100,minWidth:150,modal:false,overlay:{},position:"center",resizable:true,stack:true,width:300,zIndex:1000},overlay:function(c){this.$el=b.ui.dialog.overlay.create(c)}});b.extend(b.ui.dialog.overlay,{instances:[],events:b.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(c){return c+".dialog-overlay"}).join(" "),create:function(c){if(this.instances.length===0){setTimeout(function(){b("a, :input").bind(b.ui.dialog.overlay.events,function(){var g=false;var e=b(this).parents(".ui-dialog");if(e.length){var h=b(".ui-dialog-overlay");if(h.length){var f=parseInt(h.css("z-index"),10);h.each(function(){f=Math.max(f,parseInt(b(this).css("z-index"),10))});g=parseInt(e.css("z-index"),10)>f}else{g=true}}return g})},1);b(document).bind("keydown.dialog-overlay",function(f){var e=27;(f.keyCode&&f.keyCode==e&&c.close())});b(window).bind("resize.dialog-overlay",b.ui.dialog.overlay.resize)}var d=b("<div/>").appendTo(document.body).addClass("ui-dialog-overlay").css(b.extend({borderWidth:0,margin:0,padding:0,position:"absolute",top:0,left:0,width:this.width(),height:this.height()},c.options.overlay));(c.options.bgiframe&&b.fn.bgiframe&&d.bgiframe());this.instances.push(d);return d},destroy:function(c){this.instances.splice(b.inArray(this.instances,c),1);if(this.instances.length===0){b("a, :input").add([document,window]).unbind(".dialog-overlay")}c.remove()},height:function(){if(b.browser.msie&&b.browser.version<7){var c=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);var d=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);if(c<d){return b(window).height()+"px"}else{return c+"px"}}else{return b(document).height()+"px"}},width:function(){if(b.browser.msie&&b.browser.version<7){var d=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth);var c=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);if(d<c){return b(window).width()+"px"}else{return d+"px"}}else{return b(document).width()+"px"}},resize:function(){var c=b([]);b.each(b.ui.dialog.overlay.instances,function(){c=c.add(this)});c.css({width:0,height:0}).css({width:b.ui.dialog.overlay.width(),height:b.ui.dialog.overlay.height()})}});b.extend(b.ui.dialog.overlay.prototype,{destroy:function(){b.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);