var Modalbox=new Class({options:{width:300,height:200,position:{screen:{horizontal:"center",vertical:"middle"}},title:"",showtitle:true,closetext:"Close",top:0,left:0,zindex:null,modalpadding:10,adopt:null,adoptclone:null,ismodal:false,draggable:true,fadein:true,fadeout:true,opener:null,blanketcolor:"#000",blanketopacity:0.7,shadowcolor:"#000000",shadowwidth:4,defaultfocus:null,onOpen:Class.empty,onClose:Class.empty,onBeforeClose:Class.empty,onAdopt:Class.empty,onBeforeAdopt:Class.empty,onSetContents:Class.empty,onBeforeSetContents:Class.empty,onAdoptClone:Class.empty,onBeforeAdjustPosition:Class.empty,onAdjustPosition:Class.empty,onBeforeAdoptClone:Class.empty,onBeforeDrag:Class.empty,onStartDrag:Class.empty,onDrag:Class.empty,onDragComplete:Class.empty},initialize:function(d){var b=this;this.setOptions(d);this.randguid=Math.floor(Math.random()*1000000000);this.opener=this.options.opener||null;if(!$("mymodalcontainer")){this.mymodalcontainer=new Element("div",{id:"mymodalcontainer"});this.mymodalcontainer.inject(document.body,"top")}else{this.mymodalcontainer=$("mymodalcontainer")}this.mymodal=new Element("div",{id:this.randguid+"mymodal","class":"modalcontainer"});this.mymodal.inject(this.mymodalcontainer,"bottom");if(this.options.zindex){this.mymodal.setStyle("z-index",this.options.zindex)}this.mymodal.modalobj=this;this.mymodalfront=new Element("div",{id:this.randguid+"mymodalfront","class":"modalfront"});if(this.options.width){this.mymodalfront.setStyle("width",this.options.width)}this.mymodalfront.setStyle("opacity",0);this.mymodalfront.inject(this.mymodal,"top");this.mymodalshad=new Element("div",{id:this.randguid+"mymodalshad","class":"modalshadow"});this.mymodalshad.inject(this.mymodal,"top");this.mymodalshad.setStyle("opacity",0);if(this.options.shadowcolor){this.mymodalshad.setStyle("background-color",this.options.shadowcolor)}if(this.options.showtitle){this.titlepart=new Element("div",{id:this.randguid+"titlepart","class":"modaltitle"});this.titlemessage=new Element("h1",{id:this.randguid+"titlemessage","class":"heading2"});this.titlemessage.injectInside(this.titlepart);this.titlemessagespan=new Element("span",{id:this.randguid+"title"}).set("html",this.options.title);this.titlemessagespan.injectInside(this.titlemessage);this.closebuttonspan=new Element("span",{"class":"meta"});this.closebuttonspan.injectInside(this.titlemessage);this.closebutton=new Element("a",{id:this.randguid+"closebutton","class":"closebutton"}).set("html",this.options.closetext);this.closebutton.injectInside(this.closebuttonspan);this.titlepart.injectInside(this.mymodalfront);this.closebutton.mymodaltarget=this;this.closebutton.onclick=function(){this.mymodaltarget.close();return false}}this.bodypart=new Element("div",{id:this.randguid+"bodypart","class":"modalbody"});this.bodypart.inject(this.mymodalfront,"bottom");if(typeof(this.options.modalpadding)!="undefined"){}if(this.options.ismodal){if($("blanket")){var a=$("blanket");if(a.boxes){a.boxes.push(this.randguid)}}else{var a=new Element("div",{id:"blanket","class":"modalblanket"});a.setStyle("opacity",0);if(this.options.blanketcolor){a.setStyle("background-color",this.options.blanketcolor)}a.inject(this.mymodalcontainer,"top");a.boxes=Array();a.boxes.push(this.randguid);if(this.options.fadein){var c=new Fx.Tween(a,{duration:200});c.start("opacity",this.options.blanketopacity);a.setStyles({height:screen.height})}else{a.setStyle("opacity",1)}}if(Browser.Engine.name=="trident"&&Browser.Engine.version<7){this.iframeshim=new Element("iframe",{src:"javascript:;",frameborder:"0",scrolling:"0"});this.iframeshim.setStyles({"z-index":"500",position:"absolute",left:"0",top:"0",width:"100%",filter:"progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)",height:screen.height});this.iframeshim.inject(this.mymodalcontainer,"top")}}if(this.options.fadein){var e=new Fx.Tween(this.mymodalfront,{duration:200});var f=new Fx.Tween(this.mymodalshad,{duration:200});f.obj=this;e.start("opacity",1);f.start("opacity",0.5).chain(function(){if(this.obj.options.defaultfocus){if(this.obj.bodypart.getElement(this.obj.options.defaultfocus)){this.obj.bodypart.getElement(this.obj.options.defaultfocus).select()}}})}else{this.mymodalfront.setStyle("opacity",1);this.mymodalshad.setStyle("opacity",this.options.blanketopacity)}if(this.options.draggable){if(this.options.showtitle){this.mymodal.makeDraggable({handle:this.titlepart});this.titlepart.setStyle("cursor","move")}else{this.mymodal.makeDraggable({handle:this.mymodal});this.mymodal.setStyle("cursor","move")}}if(this.options.adoptclone){this.adoptclone(this.options.adoptclone)}if(this.options.adopt){this.adopt(this.options.adopt)}this.adjustposition();window.thismodal=this;this.fireEvent("Open")},close:function(){if(Browser.Engine.name=="trident"&&Browser.Engine.version<7){if(this.iframeshim&&this.iframeshim.dispose){this.iframeshim.dispose()}}this.fireEvent("BeforeClose");var c=false;if($("blanket")){var d=$("blanket");if(d.boxes){for(var b=0;b<d.boxes.length;b++){if(d.boxes[b]==this.randguid){d.boxes.splice(b,1)}}if(d.boxes.length==0){c=true}}}if(this.options.fadeout){this.fadefxfront=new Fx.Tween(this.mymodalfront,{duration:200});this.fadefxshad=new Fx.Tween(this.mymodalshad,{duration:200});this.fadefxshad.obj=this;if($("blanket")){if(c){var a=new Fx.Tween($("blanket"),{duration:200});a.start("opacity",0)}}this.fadefxfront.start("opacity",0);this.fadefxshad.start("opacity",0).chain(function(){if(!this.obj.isclone){if(this.obj.options.adopt){this.obj.mymodalcontainer.adopt(this.obj.options.adopt);this.obj.options.adopt.addClass("hide")}}if($(this.obj.randguid+"mymodal")){$(this.obj.randguid+"mymodal").destroy()}if($("blanket")&&c){$("blanket").destroy()}});this.fireEvent("Close")}else{if(!this.isclone){this.options.adopt.inject(this.mymodalcontainer,"top");this.options.adopt.addClass("hide")}if($(this.randguid+"mymodal")){$(this.randguid+"mymodal").destroy()}if($("blanket")&&c){$("blanket").destroy()}this.fireEvent("Close")}window.removeEvents("keyup")},setcontents:function(a){this.fireEvent("BeforeSetContents");this.bodypart.set("html",a);this.adjustposition();this.fireEvent("SetContents")},getcontents:function(){return this.bodypart.get("html")},settitle:function(a){this.titlemessagespan.set("html",a)},adopt:function(a){this.isclone=false;a.removeClass("hide");this.fireEvent("BeforeAdopt");this.bodypart.empty();this.bodypart.adopt(a);this.adjustposition();this.fireEvent("Adopt")},adoptclone:function(c){this.isclone=true;this.fireEvent("BeforeAdoptClone");var b=c;var e=b.clone();e.removeClass("hide");if(b.id){e.id=this.randguid+b.id}var g=b.getElementsByTagName("*");var d=e.getElementsByTagName("*");for(var a=0;a<g.length;a++){if(g[a].id){var f=g[a].id;d[a].id=this.randguid+f}d[a].onclick=g[a].onclick;d[a].onmouseover=g[a].onmouseover;d[a].onmouseout=g[a].onmouseout;d[a].onfocus=g[a].onfocus;d[a].onsubmit=g[a].onsubmit;d[a].onblur=g[a].onblur;d[a].onkeyup=g[a].onkeyup;d[a].className=g[a].className;d[a].dataobj=g[a].dataobj;if(d[a].isvalid){d[a].isvalid.length=0}}e.inject(this.bodypart,"top");if(typeof(applyvalidators)=="function"){applyvalidators(e)}if(typeof(applyformvalidation)=="function"){applyformvalidation(e)}if(typeof(jstrimspace)=="function"){jstrimspace()}this.adjustposition();this.fireEvent("AdoptClone")},adjustposition:function(){this.fireEvent("BeforeAdjustPosition");var c={width:Window.getWidth(),height:Window.getHeight(),top:Window.getScrollTop(),left:Window.getScrollLeft(),right:Window.getScrollLeft()+Window.getWidth(),bottom:Window.getScrollTop()+Window.getHeight()};if(this.options.position.screen){this.mymodal.setStyle("left",(Math.floor(Window.getWidth()/2)-(this.mymodalfront.getSize()["x"]/2)));var e=(Math.floor(Window.getHeight()/2)-(this.mymodalfront.getSize()["y"]/2));this.mymodal.setStyle("top",e<=this.options.shadowwidth?this.options.shadowwidth:e);this.mymodal.setStyle("width",(this.mymodalfront.getSize()["x"]+this.options.shadowwidth));var d=(this.mymodalfront.getSize()["y"]+this.options.shadowwidth);if(d>c.height){this.mymodalfront.setStyle("height",c.height-this.options.shadowwidth*2);this.bodypart.setStyle("height",c.height-this.options.shadowwidth*2-this.titlepart.getSize()["y"]-this.options.modalpadding*2);this.bodypart.setStyle("overflow","auto")}else{this.mymodal.setStyle("height",d)}}if(this.options.position.align){var f=this.options.position.align.element;var b=f.getCoordinates();this.mymodal.setStyle("position","absolute");this.mymodal.setStyle("width",(this.mymodalfront.getSize()["x"]+this.options.shadowwidth));this.mymodal.setStyle("height",(this.mymodalfront.getSize()["y"]+this.options.shadowwidth));var a=this.mymodal.getCoordinates();if(a.width>(c.width-b.right)){if(a.height>(c.height-(b.bottom-Window.getScrollTop()))){this.mymodal.setStyle("left",b.left-a.width+this.options.shadowwidth);this.mymodal.setStyle("top",b.bottom-a.height+this.options.shadowwidth)}else{this.mymodal.setStyle("left",b.left-a.width+this.options.shadowwidth);this.mymodal.setStyle("top",b.top+this.options.shadowwidth)}}else{if(a.height>(c.height-(b.top-Window.getScrollTop()))){this.mymodal.setStyle("left",b.right+this.options.shadowwidth);this.mymodal.setStyle("top",b.bottom-a.height)}else{this.mymodal.setStyle("left",b.right+this.options.shadowwidth);this.mymodal.setStyle("top",b.top+this.options.shadowwidth)}}}this.mymodalshad.setStyle("width",(this.mymodalfront.getSize()["x"])+(this.options.shadowwidth*2));this.mymodalshad.setStyle("height",(this.mymodalfront.getSize()["y"])+(this.options.shadowwidth*2));this.mymodalshad.setStyle("top",(this.options.shadowwidth*-1));this.mymodalshad.setStyle("left",(this.options.shadowwidth*-1));this.fireEvent("AdjustPosition")}});Modalbox.implement(new Events,new Options);