function Boxy(a,b){this.boxy=jQuery(Boxy.WRAPPER);jQuery.data(this.boxy[0],"boxy",this);this.visible=false;this.options=jQuery.extend({},Boxy.DEFAULTS,b||{});if(this.options.modal){this.options=jQuery.extend(this.options,{center:true,draggable:false})}if(this.options.actuator){jQuery.data(this.options.actuator,"active.boxy",this)}this.setContent(a||"<div></div>");this._setupTitleBar();this.boxy.css("display","none").appendTo(document.body);this.toTop();if(this.options.fixed){if(jQuery.browser.msie&&jQuery.browser.version<7){this.options.fixed=false}else{this.boxy.addClass("fixed")}}if(this.options.center&&Boxy._u(this.options.x,this.options.y)){this.center()}else{this.moveTo(Boxy._u(this.options.x)?this.options.x:Boxy.DEFAULT_X,Boxy._u(this.options.y)?this.options.y:Boxy.DEFAULT_Y)}if(this.options.show)this.show()}jQuery.fn.boxy=function(a){a=a||{};return this.each(function(){var b=this.nodeName.toLowerCase(),c=this;if(b=="a"){jQuery(this).click(function(){var b=Boxy.linkedTo(this),c=this.getAttribute("href"),d=jQuery.extend({actuator:this,title:this.title},a);if(b){b.show()}else if(c.indexOf("#")>=0){var e=jQuery(c.substr(c.indexOf("#"))),f=e.clone(true);e.remove();d.unloadOnHide=false;new Boxy(f,d)}else{if(!d.cache)d.unloadOnHide=true;Boxy.load(this.href,d)}return false})}else if(b=="form"){jQuery(this).bind("submit.boxy",function(){Boxy.confirm(a.message||"Please confirm:",function(){jQuery(c).unbind("submit.boxy").submit()});return false})}})};Boxy.EF=function(){};jQuery.extend(Boxy,{WRAPPER:"<table cellspacing='0' cellpadding='0' border='0' class='boxy-wrapper'>"+"<tr><td class='top-left'></td><td class='top'></td><td class='top-right'></td></tr>"+"<tr><td class='left'></td><td class='boxy-inner'></td><td class='right'></td></tr>"+"<tr><td class='bottom-left'></td><td class='bottom'></td><td class='bottom-right'></td></tr>"+"</table>",DEFAULTS:{title:null,closeable:true,draggable:true,clone:false,actuator:null,center:true,show:true,modal:false,fixed:true,closeText:"[close]",unloadOnHide:false,clickToFront:false,behaviours:Boxy.EF,afterDrop:Boxy.EF,afterShow:Boxy.EF,afterHide:Boxy.EF,beforeUnload:Boxy.EF},DEFAULT_X:50,DEFAULT_Y:50,zIndex:1337,dragConfigured:false,resizeConfigured:false,dragging:null,load:function(a,b){b=b||{};var c={url:a,type:"GET",dataType:"html",cache:false,success:function(a){a=jQuery(a);if(b.filter)a=jQuery(b.filter,a);new Boxy(a,b)}};jQuery.each(["type","cache"],function(){if(this in b){c[this]=b[this];delete b[this]}});jQuery.ajax(c)},get:function(a){var b=jQuery(a).parents(".boxy-wrapper");return b.length?jQuery.data(b[0],"boxy"):null},linkedTo:function(a){return jQuery.data(a,"active.boxy")},alert:function(a,b,c){return Boxy.ask(a,["OK"],b,c)},confirm:function(a,b,c){return Boxy.ask(a,["OK","Cancel"],function(a){if(a=="OK")b()},c)},ask:function(a,b,c,d){d=jQuery.extend({modal:true,closeable:false},d||{},{show:true,unloadOnHide:true});var e=jQuery("<div></div>").append(jQuery('<div class="question"></div>').html(a));var f={},g=[];if(b instanceof Array){for(var h=0;h<b.length;h++){f[b[h]]=b[h];g.push(b[h])}}else{for(var i in b){f[b[i]]=i;g.push(b[i])}}var j=jQuery('<form class="answers"></form>');j.html(jQuery.map(g,function(a){return"<input type='button' value='"+a+"' />"}).join(" "));jQuery("input[type=button]",j).click(function(){var a=this;Boxy.get(this).hide(function(){if(c)c(f[a.value])})});e.append(j);new Boxy(e,d)},isModalVisible:function(){return jQuery(".boxy-modal-blackout").length>0},_u:function(){for(var a=0;a<arguments.length;a++)if(typeof arguments[a]!="undefined")return false;return true},_handleResize:function(a){var b=jQuery(document);jQuery(".boxy-modal-blackout").css("display","none").css({width:b.width(),height:b.height()}).css("display","block")},_handleDrag:function(a){var b;if(b=Boxy.dragging){b[0].boxy.css({left:a.pageX-b[1],top:a.pageY-b[2]})}},_nextZ:function(){return Boxy.zIndex++},_viewport:function(){var a=document.documentElement,b=document.body,c=window;return jQuery.extend(jQuery.browser.msie?{left:b.scrollLeft||a.scrollLeft,top:b.scrollTop||a.scrollTop}:{left:c.pageXOffset,top:c.pageYOffset},!Boxy._u(c.innerWidth)?{width:c.innerWidth,height:c.innerHeight}:!Boxy._u(a)&&!Boxy._u(a.clientWidth)&&a.clientWidth!=0?{width:a.clientWidth,height:a.clientHeight}:{width:b.clientWidth,height:b.clientHeight})}});Boxy.prototype={estimateSize:function(){this.boxy.css({visibility:"hidden",display:"block"});var a=this.getSize();this.boxy.css("display","none").css("visibility","visible");return a},getSize:function(){return[this.boxy.width(),this.boxy.height()]},getContentSize:function(){var a=this.getContent();return[a.width(),a.height()]},getPosition:function(){var a=this.boxy[0];return[a.offsetLeft,a.offsetTop]},getCenter:function(){var a=this.getPosition();var b=this.getSize();return[Math.floor(a[0]+b[0]/2),Math.floor(a[1]+b[1]/2)]},getInner:function(){return jQuery(".boxy-inner",this.boxy)},getContent:function(){return jQuery(".boxy-content",this.boxy)},setContent:function(a){a=jQuery(a).css({display:"block"}).addClass("boxy-content");if(this.options.clone)a=a.clone(true);this.getContent().remove();this.getInner().append(a);this._setupDefaultBehaviours(a);this.options.behaviours.call(this,a);return this},moveTo:function(a,b){this.moveToX(a).moveToY(b);return this},moveToX:function(a){if(typeof a=="number")this.boxy.css({left:a});else this.centerX();return this},moveToY:function(a){if(typeof a=="number")this.boxy.css({top:a});else this.centerY();return this},centerAt:function(a,b){var c=this[this.visible?"getSize":"estimateSize"]();if(typeof a=="number")this.moveToX(a-c[0]/2);if(typeof b=="number")this.moveToY(b-c[1]/2);return this},centerAtX:function(a){return this.centerAt(a,null)},centerAtY:function(a){return this.centerAt(null,a)},center:function(a){var b=Boxy._viewport();var c=this.options.fixed?[0,0]:[b.left,b.top];if(!a||a=="x")this.centerAt(c[0]+b.width/2,null);if(!a||a=="y")this.centerAt(null,c[1]+b.height/2);return this},centerX:function(){return this.center("x")},centerY:function(){return this.center("y")},resize:function(a,b,c){if(!this.visible)return;var d=this._getBoundsForResize(a,b);this.boxy.css({left:d[0],top:d[1]});this.getContent().css({width:d[2],height:d[3]});if(c)c(this);return this},tween:function(a,b,c){if(!this.visible)return;var d=this._getBoundsForResize(a,b);var e=this;this.boxy.stop().animate({left:d[0],top:d[1]});this.getContent().stop().animate({width:d[2],height:d[3]},function(){if(c)c(e)});return this},isVisible:function(){return this.visible},show:function(){if(this.visible)return;if(this.options.modal){var a=this;if(!Boxy.resizeConfigured){Boxy.resizeConfigured=true;jQuery(window).resize(function(){Boxy._handleResize()})}this.modalBlackout=jQuery('<div class="boxy-modal-blackout"></div>').css({zIndex:Boxy._nextZ(),opacity:.7,width:jQuery(document).width(),height:jQuery(document).height()}).appendTo(document.body);this.toTop();if(this.options.closeable){jQuery(document.body).bind("keypress.boxy",function(b){var c=b.which||b.keyCode;if(c==27){a.hide();jQuery(document.body).unbind("keypress.boxy")}})}}this.boxy.stop().css({opacity:1}).show();this.visible=true;this._fire("afterShow");return this},hide:function(a){if(!this.visible)return;var b=this;if(this.options.modal){jQuery(document.body).unbind("keypress.boxy");this.modalBlackout.animate({opacity:0},function(){jQuery(this).remove()})}this.boxy.stop().animate({opacity:0},300,function(){b.boxy.css({display:"none"});b.visible=false;b._fire("afterHide");if(a)a(b);if(b.options.unloadOnHide)b.unload()});return this},toggle:function(){this[this.visible?"hide":"show"]();return this},hideAndUnload:function(a){this.options.unloadOnHide=true;this.hide(a);return this},unload:function(){this._fire("beforeUnload");this.boxy.remove();if(this.options.actuator){jQuery.data(this.options.actuator,"active.boxy",false)}},toTop:function(){this.boxy.css({zIndex:Boxy._nextZ()});return this},getTitle:function(){return jQuery("> .title-bar h2",this.getInner()).html()},setTitle:function(a){jQuery("> .title-bar h2",this.getInner()).html(a);return this},_getBoundsForResize:function(a,b){var c=this.getContentSize();var d=[a-c[0],b-c[1]];var e=this.getPosition();return[Math.max(e[0]-d[0]/2,0),Math.max(e[1]-d[1]/2,0),a,b]},_setupTitleBar:function(){if(this.options.title){var a=this;var b=jQuery("<div class='title-bar'></div>").html("<h2>"+this.options.title+"</h2>");if(this.options.closeable){b.append(jQuery("<a href='#' class='close'></a>").html(this.options.closeText))}if(this.options.draggable){b[0].onselectstart=function(){return false};b[0].unselectable="on";b[0].style.MozUserSelect="none";if(!Boxy.dragConfigured){jQuery(document).mousemove(Boxy._handleDrag);Boxy.dragConfigured=true}b.mousedown(function(b){a.toTop();Boxy.dragging=[a,b.pageX-a.boxy[0].offsetLeft,b.pageY-a.boxy[0].offsetTop];jQuery(this).addClass("dragging")}).mouseup(function(){jQuery(this).removeClass("dragging");Boxy.dragging=null;a._fire("afterDrop")})}this.getInner().prepend(b);this._setupDefaultBehaviours(b)}},_setupDefaultBehaviours:function(a){var b=this;if(this.options.clickToFront){a.click(function(){b.toTop()})}jQuery(".close",a).click(function(){b.hide();return false}).mousedown(function(a){a.stopPropagation()})},_fire:function(a){this.options[a].call(this)}}
