if(!window.Modalbox)
var Modalbox=new Object();Modalbox.Methods={focusableElements:new Array,setOptions:function(options){this.options={overlayClose:true,width:400,height:400,overlayDuration:.50,slideDownDuration:.75,slideUpDuration:.35,resizeDuration:.50,loadingString:"Please wait. Loading...",closeString:"Close window",params:{},method:'get'};Object.extend(this.options,options||{});},_init:function(){this.MBoverlay=Builder.node("div",{id:"MB_overlay"});this.MBwindow=Builder.node("div",{id:"MB_window",style:"display: none"},[this.MBframe=Builder.node("div",{id:"MB_frame"},[this.MBheader=Builder.node("div",{id:"MB_header"},[this.MBcaption=Builder.node("div",{id:"MB_caption"}),this.MBclose=Builder.node("a",{id:"MB_close",title:this.options.closeString,href:"#"},[Builder.build("<span>×</span>"),]),]),this.MBcontent=Builder.node("div",{id:"MB_content"},[this.MBloading=Builder.node("div",{id:"MB_loading"},this.options.loadingString),]),]),]);document.body.insertBefore(this.MBwindow,document.body.childNodes[0]);document.body.insertBefore(this.MBoverlay,document.body.childNodes[0]);this.hide=this.hide.bindAsEventListener(this);this.close=this._hide.bindAsEventListener(this);this.initScrollX=window.pageXOffset||document.body.scrollLeft||document.documentElement.scrollLeft;this.initScrollY=window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop;Event.observe(this.MBclose,"click",this.close);if(this.options.overlayClose)Event.observe(this.MBoverlay,"click",this.hide);this.isInitialized=true;},show:function(title,url,options){this.title=title;this.url=url;this.setOptions(options);if(!this.isInitialized)this._init();Element.update(this.MBcaption,title);if(this.MBwindow.style.display=="none"){this._appear();this.event("onShow");}
else{this._update();this.event("onUpdate");}},hide:function(options){if(options)Object.extend(this.options,options);Effect.SlideUp(this.MBwindow,{duration:this.options.slideUpDuration,afterFinish:this._deinit.bind(this)});},_hide:function(event){if(event)Event.stop(event);this.hide();},_appear:function(){this._toggleSelects();this._setOverlay();this._setWidth();this._setPosition();new Effect.Fade(this.MBoverlay,{from:0,to:0.75,duration:this.options.overlayDuration,afterFinish:function(){new Effect.SlideDown(this.MBwindow,{duration:this.options.slideDownDuration,afterFinish:function(){this._setPosition();this.loadContent();}.bind(this)});}.bind(this)});this._setWidthAndPosition=this._setWidthAndPosition.bindAsEventListener(this);Event.observe(window,"resize",this._setWidthAndPosition);this.kbdHandler=this.kbdHandler.bindAsEventListener(this);Event.observe(document,"keypress",this.kbdHandler);},resize:function(byWidth,byHeight,options){if(options)Object.extend(this.options,options);this.currentDims=[this.MBwindow.offsetWidth,this.MBwindow.offsetHeight];new Effect.ScaleBy(this.MBwindow,(byWidth),(byHeight),{duration:this.options.resizeDuration,afterFinish:function(){this.event("afterResize")}.bind(this)});},_update:function(){this.currentDims=[this.MBwindow.offsetWidth,this.MBwindow.offsetHeight];if((this.options.width+10!=this.currentDims[0])||(this.options.height+5!=this.currentDims[1]))
new Effect.ScaleBy(this.MBwindow,(this.options.width+10-this.currentDims[0]),(this.options.height+5-this.currentDims[1]),{duration:this.options.resizeDuration,afterFinish:this._loadAfterResize.bind(this),beforeStart:function(effect){Element.update(this.MBcontent,"");this.MBcontent.appendChild(this.MBloading);Element.update(this.MBloading,this.options.loadingString);}.bind(this)});else{Element.update(this.MBcontent,"");this.MBcontent.appendChild(this.MBloading);Element.update(this.MBloading,this.options.loadingString);this._loadAfterResize();}},loadContent:function(){if(this.event("beforeLoad")!=false)
new Ajax.Request(this.url,{method:this.options.method.toLowerCase(),parameters:this.options.params,onComplete:function(transport){var response=new String(transport.responseText);this.MBcontent.innerHTML=response;this.focusableElements=this._findFocusableElements();this._moveFocus();this.event("afterLoad");response.extractScripts().map(function(script){return eval(script.replace("<!--","").replace("// -->",""));}).bind(window);}.bind(this)});},_loadAfterResize:function(){this._setWidth();this._setPosition();this.loadContent();},_moveFocus:function(){if(this.focusableElements.length>0)
this.focusableElements.first().focus();else
$("MB_close").focus();},_findFocusableElements:function(){return $A($("MB_content").descendants()).findAll(function(node){return(["INPUT","TEXTAREA","SELECT","A","BUTTON"].include(node.tagName));});},kbdHandler:function(e){var node=Event.element(e);switch(e.keyCode){case Event.KEY_TAB:if(Event.element(e)==this.focusableElements.last()){Event.stop(e);this._moveFocus();}
break;case Event.KEY_ESC:this._hide(e);break;case 32:this._preventScroll(e);break;case 0:if(e.which==32)this._preventScroll(e);break;case Event.KEY_UP:case Event.KEY_DOWN:case Event.KEY_PAGEDOWN:case Event.KEY_PAGEUP:case Event.KEY_HOME:case Event.KEY_END:if(!["TEXTAREA","SELECT"].include(node.tagName)||(node.tagName=="INPUT"&&(node.type=="submit"||node.type=="button")))Event.stop(e);break;}},_preventScroll:function(event){if(!["INPUT","TEXTAREA","SELECT","BUTTON"].include(Event.element(event).tagName))Event.stop(event);},_deinit:function()
{this._toggleSelects();Event.stopObserving(this.MBclose,"click",this.close);if(this.options.overlayClose)
Event.stopObserving(this.MBoverlay,"click",this.hide);Event.stopObserving(window,"resize",this._setWidthAndPosition);Event.stopObserving(document,"keypress",this.kbdHandler);Effect.toggle(this.MBoverlay,'appear',{duration:this.options.overlayDuration,afterFinish:this._removeElements.bind(this)});},_removeElements:function(){if(navigator.appVersion.match(/\bMSIE\b/)){this._prepareIE("","");window.scrollTo(this.initScrollX,this.initScrollY);}
Element.remove(this.MBoverlay);Element.remove(this.MBwindow);this.isInitialized=false;this.event("afterHide");},_setOverlay:function(){if(navigator.appVersion.match(/\bMSIE\b/)){this._prepareIE("100%","hidden");if(!navigator.appVersion.match(/\b7.0\b/))window.scrollTo(0,0);}},_setWidth:function(){this.MBwindow.style.width=this.options.width+"px";this.MBwindow.style.height=this.options.height+"px";},_setPosition:function(){this.MBwindow.style.left=Math.round((Element.getWidth(document.body)-Element.getWidth(this.MBwindow))/2)+"px";},_setWidthAndPosition:function(){this._setWidth();this._setPosition();},_getScrollTop:function(){var theTop;if(document.documentElement&&document.documentElement.scrollTop)
theTop=document.documentElement.scrollTop;else if(document.body)
theTop=document.body.scrollTop;return theTop;},_prepareIE:function(height,overflow){bod=document.getElementsByTagName('body')[0];bod.style.height=height;bod.style.overflow=overflow;htm=document.getElementsByTagName('html')[0];htm.style.height=height;htm.style.overflow=overflow;},_toggleSelects:function(){if(navigator.appVersion.match(/\bMSIE\b/))
$$("select").each(function(select){select.style.visibility=(select.style.visibility=="")?"hidden":"";});},event:function(eventName){if(this.options[eventName]){var returnValue=this.options[eventName]();this.options[eventName]=null;if(returnValue!=undefined)
return returnValue;else
return true;}
return true;}}
Object.extend(Modalbox,Modalbox.Methods);Effect.ScaleBy=Class.create();Object.extend(Object.extend(Effect.ScaleBy.prototype,Effect.Base.prototype),{initialize:function(element,byWidth,byHeight,options){this.element=$(element)
var options=Object.extend({scaleFromTop:true,scaleMode:'box',scaleByWidth:byWidth,scaleByHeight:byHeight},arguments[3]||{});this.start(options);},setup:function(){this.elementPositioning=this.element.getStyle('position');this.originalTop=this.element.offsetTop;this.originalLeft=this.element.offsetLeft;this.dims=null;if(this.options.scaleMode=='box')
this.dims=[this.element.offsetHeight,this.element.offsetWidth];if(/^content/.test(this.options.scaleMode))
this.dims=[this.element.scrollHeight,this.element.scrollWidth];if(!this.dims)
this.dims=[this.options.scaleMode.originalHeight,this.options.scaleMode.originalWidth];this.deltaY=this.options.scaleByHeight;this.deltaX=this.options.scaleByWidth;},update:function(position){var currentHeight=this.dims[0]+(this.deltaY*position);var currentWidth=this.dims[1]+(this.deltaX*position);this.setDimensions(currentHeight,currentWidth);},setDimensions:function(height,width){var d={};d.width=width+'px';d.height=height+'px';var topd=Math.round((height-this.dims[0])/2);var leftd=Math.round((width-this.dims[1])/2);if(this.elementPositioning=='absolute'||this.elementPositioning=='fixed'){if(!this.options.scaleFromTop)d.top=this.originalTop-topd+'px';d.left=this.originalLeft-leftd+'px';}else{if(!this.options.scaleFromTop)d.top=-topd+'px';d.left=-leftd+'px';}
this.element.setStyle(d);}});
