if(!window.Modalbox){
var Modalbox=new Object();
}
Modalbox.Methods={overrideAlert:false,focusableElements:new Array,currFocused:0,initialized:false,active:true,options:{title:"ModalBox Window",overlayClose:true,width:500,height:90,overlayOpacity:0.65,overlayDuration:0.25,slideDownDuration:0.5,slideUpDuration:0.5,resizeDuration:0.25,inactiveFade:true,transitions:true,loadingString:"Please wait. Loading...",closeString:"Close window",closeValue:"&times;",params:{},method:"get",autoFocusing:true,aspnet:false},_options:new Object,setOptions:function(_1){
Object.extend(this.options,_1||{});
},_init:function(_2){
Object.extend(this._options,this.options);
this.setOptions(_2);
this.MBoverlay=new Element("div",{id:"MB_overlay",opacity:"0"});
this.MBwindow=new Element("div",{id:"MB_window",style:"display: none"}).update(this.MBframe=new Element("div",{id:"MB_frame"}).update(this.MBheader=new Element("div",{id:"MB_header"}).update(this.MBcaption=new Element("div",{id:"MB_caption"}))));
this.MBclose=new Element("a",{id:"MB_close",title:this.options.closeString,href:"#"}).update("<span>"+this.options.closeValue+"</span>");
this.MBheader.insert({"bottom":this.MBclose});
this.MBcontent=new Element("div",{id:"MB_content"}).update(this.MBloading=new Element("div",{id:"MB_loading"}).update(this.options.loadingString));
this.MBframe.insert({"bottom":this.MBcontent});
var _3=this.options.aspnet?$(document.body).down("form"):$(document.body);
_3.insert({"top":this.MBwindow});
_3.insert({"top":this.MBoverlay});
this.initScrollX=window.pageXOffset||document.body.scrollLeft||document.documentElement.scrollLeft;
this.initScrollY=window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop;
this.hideObserver=this._hide.bindAsEventListener(this);
this.kbdObserver=this._kbdHandler.bindAsEventListener(this);
this._initObservers();
this.initialized=true;
},show:function(_4,_5){
if(!this.initialized){
this._init(_5);
}
this.content=_4;
this.setOptions(_5);
if(this.options.title){
$(this.MBcaption).update(this.options.title);
}else{
$(this.MBheader).hide();
$(this.MBcaption).hide();
}
if(this.MBwindow.style.display=="none"){
this._appear();
this.event("onShow");
}else{
this._update();
this.event("onUpdate");
}
},hide:function(_6){
if(this.initialized){
if(_6&&typeof _6.element!="function"){
Object.extend(this.options,_6);
}
this.event("beforeHide");
if(this.options.transitions){
Effect.SlideUp(this.MBwindow,{duration:this.options.slideUpDuration,transition:Effect.Transitions.sinoidal,afterFinish:this._deinit.bind(this)});
}else{
$(this.MBwindow).hide();
this._deinit();
}
}else{
throw ("Modalbox is not initialized.");
}
},_hide:function(_7){
_7.stop();
if(_7.element().id=="MB_overlay"&&!this.options.overlayClose){
return false;
}
this.hide();
},alert:function(_8){
var _9="<div class=\"MB_alert\"><p>"+_8+"</p><input type=\"button\" onclick=\"Modalbox.hide()\" value=\"OK\" /></div>";
Modalbox.show(_9,{title:"Alert: "+document.title,width:300});
},_appear:function(){
if(Prototype.Browser.IE&&!navigator.appVersion.match(/\b7.0\b/)){
window.scrollTo(0,0);
this._prepareIE("100%","hidden");
}
this._setWidth();
this._setPosition();
if(this.options.transitions){
$(this.MBoverlay).setStyle({opacity:0});
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,transition:Effect.Transitions.sinoidal,afterFinish:function(){
this._setPosition();
this.loadContent();
}.bind(this)});
}.bind(this)});
}else{
$(this.MBoverlay).setStyle({opacity:this.options.overlayOpacity});
$(this.MBwindow).show();
this._setPosition();
this.loadContent();
}
this._setWidthAndPosition=this._setWidthAndPosition.bindAsEventListener(this);
Event.observe(window,"resize",this._setWidthAndPosition);
},resize:function(_a,_b,_c){
var _d=$(this.MBwindow).getHeight();
var _e=$(this.MBwindow).getWidth();
var _f=$(this.MBheader).getHeight();
var _10=$(this.MBcontent).getHeight();
var _11=((_d-_f+_b)<_10)?(_10+_f-_d):_b;
if(_c){
this.setOptions(_c);
}
if(this.options.transitions){
new Effect.ScaleBy(this.MBwindow,_a,_11,{duration:this.options.resizeDuration,afterFinish:function(){
this.event("_afterResize");
this.event("afterResize");
}.bind(this)});
}else{
this.MBwindow.setStyle({width:_e+_a+"px",height:_d+_11+"px"});
setTimeout(function(){
this.event("_afterResize");
this.event("afterResize");
}.bind(this),1);
}
},resizeToContent:function(_12){
var _13=this.options.height-this.MBwindow.offsetHeight;
if(_13!=0){
if(_12){
this.setOptions(_12);
}
Modalbox.resize(0,_13);
}
},resizeToInclude:function(_14,_15){
var el=$(_14);
var _16=el.getHeight()+parseInt(el.getStyle("margin-top"))+parseInt(el.getStyle("margin-bottom"))+parseInt(el.getStyle("border-top-width"))+parseInt(el.getStyle("border-bottom-width"));
if(_16>0){
if(_15){
this.setOptions(_15);
}
Modalbox.resize(0,_16);
}
},_update:function(){
$(this.MBcontent).update("");
this.MBcontent.appendChild(this.MBloading);
$(this.MBloading).update(this.options.loadingString);
this.currentDims=[this.MBwindow.offsetWidth,this.MBwindow.offsetHeight];
Modalbox.resize((this.options.width-this.currentDims[0]),(this.options.height-this.currentDims[1]),{_afterResize:this._loadAfterResize.bind(this)});
},loadContent:function(){
if(this.event("beforeLoad")!=false){
if(typeof this.content=="string"){
var _17=new RegExp(/<\/?[^>]+>/gi);
if(_17.test(this.content)){
this._insertContent(this.content.stripScripts());
this._putContent(function(){
this.content.extractScripts().map(function(_18){
return eval(_18.replace("<!--","").replace("// -->",""));
}.bind(window));
}.bind(this));
}else{
new Ajax.Request(this.content,{method:this.options.method.toLowerCase(),parameters:this.options.params,onSuccess:function(_19){
var _1a=new String(_19.responseText);
this._insertContent(_19.responseText.stripScripts());
this._putContent(function(){
_1a.extractScripts().map(function(_1b){
return eval(_1b.replace("<!--","").replace("// -->",""));
}.bind(window));
});
}.bind(this),onException:function(_1c,_1d){
Modalbox.hide();
throw ("Modalbox Loading Error: "+_1d);
}});
}
}else{
if(typeof this.content=="object"){
this._insertContent(this.content);
this._putContent();
}else{
Modalbox.hide();
throw ("Modalbox Parameters Error: Please specify correct URL or HTML element (plain HTML or object)");
}
}
}
},_insertContent:function(_1e){
$(this.MBcontent).hide().update("");
if(typeof _1e=="string"){
setTimeout(function(){
this.MBcontent.update(_1e);
}.bind(this),1);
}else{
if(typeof _1e=="object"){
var _1f=_1e.cloneNode(true);
if(_1e.id){
_1e.id="MB_"+_1e.id;
}
$(_1e).select("*[id]").each(function(el){
el.id="MB_"+el.id;
});
this.MBcontent.appendChild(_1f);
this.MBcontent.down().show();
if(Prototype.Browser.IE){
$$("#MB_content select").invoke("setStyle",{"visibility":""});
}
}
}
},_putContent:function(_20){
if(this.options.height==this._options.height){
setTimeout(function(){
Modalbox.resize(0,$(this.MBcontent).getHeight()-$(this.MBwindow).getHeight()+$(this.MBheader).getHeight(),{afterResize:function(){
this.MBcontent.show().makePositioned();
this.focusableElements=this._findFocusableElements();
this._setFocus();
setTimeout(function(){
if(_20!=undefined){
_20();
}
this.event("afterLoad");
}.bind(this),1);
}.bind(this)});
}.bind(this),1);
}else{
this._setWidth();
this.MBcontent.setStyle({overflow:"auto",height:$(this.MBwindow).getHeight()-$(this.MBheader).getHeight()-13+"px"});
this.MBcontent.show();
this.focusableElements=this._findFocusableElements();
this._setFocus();
setTimeout(function(){
if(_20!=undefined){
_20();
}
this.event("afterLoad");
}.bind(this),1);
}
},activate:function(_21){
this.setOptions(_21);
this.active=true;
$(this.MBclose).observe("click",this.hideObserver);
if(this.options.overlayClose){
$(this.MBoverlay).observe("click",this.hideObserver);
}
$(this.MBclose).show();
if(this.options.transitions&&this.options.inactiveFade){
new Effect.Appear(this.MBwindow,{duration:this.options.slideUpDuration});
}
},deactivate:function(_22){
this.setOptions(_22);
this.active=false;
$(this.MBclose).stopObserving("click",this.hideObserver);
if(this.options.overlayClose){
$(this.MBoverlay).stopObserving("click",this.hideObserver);
}
$(this.MBclose).hide();
if(this.options.transitions&&this.options.inactiveFade){
new Effect.Fade(this.MBwindow,{duration:this.options.slideUpDuration,to:0.75});
}
},_initObservers:function(){
$(this.MBclose).observe("click",this.hideObserver);
if(this.options.overlayClose){
$(this.MBoverlay).observe("click",this.hideObserver);
}
if(Prototype.Browser.IE){
Event.observe(document,"keydown",this.kbdObserver);
}else{
Event.observe(document,"keypress",this.kbdObserver);
}
},_removeObservers:function(){
$(this.MBclose).stopObserving("click",this.hideObserver);
if(this.options.overlayClose){
$(this.MBoverlay).stopObserving("click",this.hideObserver);
}
if(Prototype.Browser.IE){
Event.stopObserving(document,"keydown",this.kbdObserver);
}else{
Event.stopObserving(document,"keypress",this.kbdObserver);
}
},_loadAfterResize:function(){
this._setWidth();
this._setPosition();
this.loadContent();
},_setFocus:function(){
if(this.focusableElements.length>0&&this.options.autoFocusing==true){
var _23=this.focusableElements.find(function(el){
return el.tabIndex==1;
})||this.focusableElements.first();
this.currFocused=this.focusableElements.toArray().indexOf(_23);
_23.focus();
}else{
if($(this.MBclose).visible()){
$(this.MBclose).focus();
}
}
},_findFocusableElements:function(){
this.MBcontent.select("input:not([type~=hidden]), select, textarea, button, a[href]").invoke("addClassName","MB_focusable");
return this.MBcontent.select(".MB_focusable");
},_kbdHandler:function(_24){
var _25=_24.element();
switch(_24.keyCode){
case Event.KEY_TAB:
_24.stop();
if(_25!=this.focusableElements[this.currFocused]){
this.currFocused=this.focusableElements.toArray().indexOf(_25);
}
if(!_24.shiftKey){
if(this.currFocused==this.focusableElements.length-1){
this.focusableElements.first().focus();
this.currFocused=0;
}else{
this.currFocused++;
this.focusableElements[this.currFocused].focus();
}
}else{
if(this.currFocused==0){
this.focusableElements.last().focus();
this.currFocused=this.focusableElements.length-1;
}else{
this.currFocused--;
this.focusableElements[this.currFocused].focus();
}
}
break;
case Event.KEY_ESC:
if(this.active){
this._hide(_24);
}
break;
case 32:
this._preventScroll(_24);
break;
case 0:
if(_24.which==32){
this._preventScroll(_24);
}
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(Prototype.Browser.WebKit&&!["textarea","select"].include(_25.tagName.toLowerCase())){
_24.stop();
}else{
if((_25.tagName.toLowerCase()=="input"&&["submit","button"].include(_25.type))||(_25.tagName.toLowerCase()=="a")){
_24.stop();
}
}
break;
}
},_preventScroll:function(_26){
if(!["input","textarea","select","button"].include(_26.element().tagName.toLowerCase())){
_26.stop();
}
},_deinit:function(){
this._removeObservers();
Event.stopObserving(window,"resize",this._setWidthAndPosition);
if(this.options.transitions){
Effect.toggle(this.MBoverlay,"appear",{duration:this.options.overlayDuration,afterFinish:this._removeElements.bind(this)});
}else{
this.MBoverlay.hide();
this._removeElements();
}
$(this.MBcontent).setStyle({overflow:"",height:""});
},_removeElements:function(){
$(this.MBoverlay).remove();
$(this.MBwindow).remove();
if(Prototype.Browser.IE&&!navigator.appVersion.match(/\b7.0\b/)){
this._prepareIE("","");
window.scrollTo(this.initScrollX,this.initScrollY);
}
if(typeof this.content=="object"){
if(this.content.id&&this.content.id.match(/MB_/)){
this.content.id=this.content.id.replace(/MB_/,"");
}
this.content.select("*[id]").each(function(el){
el.id=el.id.replace(/MB_/,"");
});
}
this.initialized=false;
this.event("afterHide");
this.setOptions(this._options);
},_setWidth:function(){
$(this.MBwindow).setStyle({width:this.options.width+"px",height:this.options.height+"px"});
},_setPosition:function(){
$(this.MBwindow).setStyle({left:Math.round((Element.getWidth(document.body)-Element.getWidth(this.MBwindow))/2)+"px"});
},_setWidthAndPosition:function(){
$(this.MBwindow).setStyle({width:this.options.width+"px"});
this._setPosition();
},_getScrollTop:function(){
var _27;
if(document.documentElement&&document.documentElement.scrollTop){
_27=document.documentElement.scrollTop;
}else{
if(document.body){
_27=document.body.scrollTop;
}
}
return _27;
},_prepareIE:function(_28,_29){
$$("html, body").invoke("setStyle",{width:_28,height:_28,overflow:_29});
$$("select").invoke("setStyle",{"visibility":_29});
},event:function(_2a){
if(this.options[_2a]){
var _2b=this.options[_2a]();
this.options[_2a]=null;
if(_2b!=undefined){
return _2b;
}else{
return true;
}
}
return true;
}};
Object.extend(Modalbox,Modalbox.Methods);
if(Modalbox.overrideAlert){
window.alert=Modalbox.alert;
}
Effect.ScaleBy=Class.create();
Object.extend(Object.extend(Effect.ScaleBy.prototype,Effect.Base.prototype),{initialize:function(_2c,_2d,_2e,_2f){
this.element=$(_2c);
var _2f=Object.extend({scaleFromTop:true,scaleMode:"box",scaleByWidth:_2d,scaleByHeight:_2e},arguments[3]||{});
this.start(_2f);
},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(_30){
var _31=this.dims[0]+(this.deltaY*_30);
var _32=this.dims[1]+(this.deltaX*_30);
_31=(_31>0)?_31:0;
_32=(_32>0)?_32:0;
this.setDimensions(_31,_32);
},setDimensions:function(_33,_34){
var d={};
d.width=_34+"px";
d.height=_33+"px";
var _35=Math.round((_33-this.dims[0])/2);
var _36=Math.round((_34-this.dims[1])/2);
if(this.elementPositioning=="absolute"||this.elementPositioning=="fixed"){
if(!this.options.scaleFromTop){
d.top=this.originalTop-_35+"px";
}
d.left=this.originalLeft-_36+"px";
}else{
if(!this.options.scaleFromTop){
d.top=-_35+"px";
}
d.left=-_36+"px";
}
this.element.setStyle(d);
}});

