if(!window.Modalbox)
var Modalbox=new Object();Modalbox.Methods={focusableElements:new Array,options:{title:"ModalBox Window",overlayClose:true,width:500,height:90,overlayOpacity:.75,overlayDuration:.50,slideDownDuration:.75,slideUpDuration:.35,resizeDuration:.35,inactiveFade:true,loadingString:"Please wait. Loading...",closeString:"Close window",params:{},method:'get'},_options:new Object,setOptions:function(options){Object.extend(this.options,options||{});},_init:function(options){Object.extend(this._options,this.options);this.setOptions(options);this.MBoverlay=Builder.node("div",{id:"MB_overlay",opacity:"0"});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>&times;</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.initScrollX=window.pageXOffset||document.body.scrollLeft||document.documentElement.scrollLeft;this.initScrollY=window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop;this.hide=this.hide.bindAsEventListener(this);this.close=this._hide.bindAsEventListener(this);this.kbdHandler=this.kbdHandler.bindAsEventListener(this);this._initObservers();this.initialized=true;this.active=true;},show:function(content,options){if(!this.initialized)this._init(options);this.content=content;this.setOptions(options);Element.update(this.MBcaption,this.options.title);if(this.MBwindow.style.display=="none"){this._appear();this.event("onShow");}
else{this._update();this.event("onUpdate");}},hide:function(options){if(this.initialized){if(options)Object.extend(this.options,options);Effect.SlideUp(this.MBwindow,{duration:this.options.slideUpDuration,afterFinish:this._deinit.bind(this)});}else throw("Modalbox isn't initialized");},_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:this.options.overlayOpacity,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);},resize:function(byWidth,byHeight,options){var wHeight=Element.getHeight(this.MBwindow);var hHeight=Element.getHeight(this.MBheader);var cHeight=Element.getHeight(this.MBcontent);var newHeight=((wHeight-hHeight+byHeight)<cHeight)?(cHeight+hHeight-wHeight):byHeight;this.setOptions(options);new Effect.ScaleBy(this.MBwindow,byWidth,newHeight,{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-this.currentDims[0]),(this.options.height-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){if(typeof this.content=='string'){var htmlRegExp=new RegExp(/<\/?[^>]+>/gi);if(htmlRegExp.test(this.content))
this._insertContent(this.content);else new Ajax.Request(this.content,{method:this.options.method.toLowerCase(),parameters:this.options.params,onComplete:function(transport){var response=new String(transport.responseText);response.extractScripts().map(function(script){return eval(script.replace("<!--","").replace("// -->",""));}.bind(window));this._insertContent(transport.responseText.stripScripts());}.bind(this)});}else if(typeof this.content=='object'){this._insertContent(this.content);}else{Modalbox.hide();throw('Please specify correct URL or HTML element (plain HTML or object)');}}},_insertContent:function(content){Element.extend(this.MBcontent);this.MBcontent.update("");if(typeof content=='string'){this.MBcontent.hide().update(content);}
else if(typeof this.content=='object'){var _htmlObj=content.cloneNode(true);if(this.content.id)_htmlObj.id="MB_"+_htmlObj.id;this.MBcontent.hide().appendChild(_htmlObj);this.MBcontent.down().show();}
if(this.options.height==this._options.height)
Modalbox.resize(0,this.MBcontent.getHeight()-Element.getHeight(this.MBwindow)+Element.getHeight(this.MBheader),{afterResize:function(){this.MBcontent.show();this.focusableElements=this._findFocusableElements();this._moveFocus();this.event("afterLoad");}.bind(this)});else{this._setWidth();this.MBcontent.setStyle({overflow:'auto',height:Element.getHeight(this.MBwindow)-Element.getHeight(this.MBheader)-13+'px'});this.MBcontent.show();this.focusableElements=this._findFocusableElements();this._moveFocus();this.event("afterLoad");}},activate:function(options){this.setOptions(options);this.active=true;Event.observe(this.MBclose,"click",this.close);if(this.options.overlayClose)Event.observe(this.MBoverlay,"click",this.hide);Element.show(this.MBclose);if(this.options.inactiveFade)new Effect.Appear(this.MBwindow,{duration:this.options.slideUpDuration});},deactivate:function(options){this.setOptions(options);this.active=false;Event.stopObserving(this.MBclose,"click",this.close);if(this.options.overlayClose)Event.stopObserving(this.MBoverlay,"click",this.hide);Element.hide(this.MBclose);if(this.options.inactiveFade)new Effect.Fade(this.MBwindow,{duration:this.options.slideUpDuration,to:.75});},_initObservers:function(){Event.observe(this.MBclose,"click",this.close);if(this.options.overlayClose)Event.observe(this.MBoverlay,"click",this.hide);Event.observe(document,"keypress",Modalbox.kbdHandler);},_removeObservers:function(){Event.stopObserving(this.MBclose,"click",this.close);if(this.options.overlayClose)Event.stopObserving(this.MBoverlay,"click",this.hide);Event.stopObserving(document,"keypress",Modalbox.kbdHandler);},_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:if(this.active)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(/Safari|KHTML/.test(navigator.userAgent)&&!["textarea","select"].include(node.tagName.toLowerCase()))
Event.stop(e);else if((node.tagName.toLowerCase()=="input"&&["submit","button"].include(node.type))||(node.tagName.toLowerCase()=="a"))
Event.stop(e);break;}},_preventScroll:function(event){if(!["input","textarea","select","button"].include(Event.element(event).tagName.toLowerCase()))
Event.stop(event);},_deinit:function()
{this._toggleSelects();this._removeObservers();Event.stopObserving(window,"resize",this._setWidthAndPosition);Effect.toggle(this.MBoverlay,'appear',{duration:this.options.overlayDuration,afterFinish:this._removeElements.bind(this)});Element.setStyle(this.MBcontent,{overflow:'',height:''});},_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.initialized=false;this.event("afterHide");this.setOptions(this._options);},_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(){Element.setStyle(this.MBwindow,{width:this.options.width+"px",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){var body=document.getElementsByTagName('body')[0];body.style.height=height;body.style.overflow=overflow;var html=document.getElementsByTagName('html')[0];html.style.height=height;html.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);}});