var AlertBox=new Class({
	Implements:[Chain],
	getOptions:function(){
		return{
			name:"AlertBox",
			zIndex:65555,
			onReturn:false,
			onReturnFunction:$empty,
			BoxStyles:{width:500},
			OverlayStyles:{"background-color":"#000",opacity:0.7},
			showDuration:200,
			showEffect:Fx.Transitions.linear,
			closeDuration:100,
			closeEffect:Fx.Transitions.linear,
			moveDuration:500,
			moveEffect:Fx.Transitions.Back.easeOut,
			onShowStart:$empty,
			onShowComplete:$empty,
			onCloseStart:$empty,
			onCloseComplete:function(a){
				this.options.onReturnFunction(this.options.onReturn)
			}.bind(this)
		}
	},
	initialize:function(a){
		this.i=0;
		this.setOptions(this.getOptions(),a);
		this.Overlay=new Element("div",{
			id:"BoxOverlay",
			styles:{
				display:"none",
				"z-index":this.options.zIndex,
				position:"absolute",
				top:"0",
				left:"0",
				"background-color":this.options.OverlayStyles["background-color"],
				opacity:0,
				height:window.getScrollHeight()+"px",width:window.getScrollWidth()+"px"
			}
		});
		this.Content=new Element("div",{
			id:this.options.name+"-BoxContenedor"
		});
		this.Contenedor=new Element("div",{
			id:this.options.name+"-BoxContent"
		}).adopt(this.Content);
		this.InBox=new Element("div",{id:this.options.name+"-InBox"}).adopt(this.Contenedor);this.Box=new Element("div",{id:this.options.name+"-Box",styles:{display:"none","z-index":this.options.zIndex+2,position:"absolute",top:"0",left:"0",width:this.options.BoxStyles.width+"px"}}).adopt(this.InBox);this.Overlay.injectInside(document.body);this.Box.injectInside(document.body);this.preloadImages();window.addEvent("resize",function(){if(this.options.display==1){this.Overlay.setStyles({height:window.getScrollHeight()+"px",width:window.getScrollWidth()+"px"});this.replaceBox()}}.bind(this));window.addEvent("scroll",this.replaceBox.bind(this))},preloadImages:function(){var a=new Array(2);a[0]=new Image();a[1]=new Image();a[2]=new Image();a[0].src=this.Box.getStyle("background-image").replace(new RegExp("url\\('?([^']*)'?\\)","gi"),"$1");a[1].src=this.InBox.getStyle("background-image").replace(new RegExp("url\\('?([^']*)'?\\)","gi"),"$1");a[2].src=this.Contenedor.getStyle("background-image").replace(new RegExp("url\\('?([^']*)'?\\)","gi"),"$1")},display:function(a){if(this.Transition){this.Transition.cancel()}if(this.options.display==0&&a!=0||a==1){if(Browser.Engine.trident4){$$("select","object","embed").each(function(b){b.style.visibility="hidden"})}this.Overlay.setStyle("display","block");this.options.display=1;this.fireEvent("onShowStart",[this.Overlay]);this.Transition=new Fx.Tween(this.Overlay,{property:"opacity",duration:this.options.showDuration,transition:this.options.showEffect,onComplete:function(){sizes=window.getSize();scrollito=window.getScroll();this.Box.setStyles({display:"block",left:(scrollito.x+(sizes.x-this.options.BoxStyles.width)/2).toInt()});this.replaceBox();this.fireEvent("onShowComplete",[this.Overlay]);try{document.getElementById("BoxAlertBtnOk").focus()}catch(d){try{document.getElementById("BoxPromptBtnOk").focus()}catch(c){try{document.getElementById("BoxConfirmBtnCancel").focus()}catch(b){}}}}.bind(this)}).start(this.options.OverlayStyles.opacity)}else{if(Browser.Engine.trident4){$$("select","object","embed").each(function(b){b.style.visibility="visible"})}this.queue.delay(500,this);this.Box.setStyles({display:"none",top:0});this.Content.empty();this.options.display=0;this.fireEvent("onCloseStart",[this.Overlay]);if(this.i==1){this.Transition=new Fx.Tween(this.Overlay,{property:"opacity",duration:this.options.closeDuration,transition:this.options.closeEffect,onComplete:function(){this.fireEvent("onCloseComplete",[this.Overlay])}.bind(this)}).start(0)}}},replaceBox:function(){if(this.options.display==1){sizes=window.getSize();scrollito=window.getScroll();if(this.MoveBox){this.MoveBox.cancel()}this.MoveBox=new Fx.Morph(this.Box,{duration:this.options.moveDuration,transition:this.options.moveEffect}).start({left:(scrollito.x+(sizes.x-this.options.BoxStyles.width)/2).toInt(),top:(scrollito.y+(sizes.y-this.Box.offsetHeight)/2).toInt()})}},queue:function(){this.i--;this.callChain()},messageBox:function(c,d,b,a){this.chain(function(){b=$extend({textBoxBtnOk:"OK",textBoxBtnCancel:"Cancelar",textBoxInputPrompt:null,password:false,onComplete:$empty},b||{});this.options.onReturnFunction=b.onComplete;this.ContenedorBotones=new Element("div",{id:this.options.name+"-Buttons"});if(c=="alert"||c=="info"||c=="error"){this.AlertBtnOk=new Element("input",{id:"BoxAlertBtnOk",type:"submit",value:b.textBoxBtnOk,styles:{width:"70px"}});this.AlertBtnOk.addEvent("click",function(){this.options.onReturn = true;this.display(0);}.bind(this));if(c=="alert"){this.clase="BoxAlert"}else{if(c=="error"){this.clase="BoxError"}else{if(c=="info"){this.clase="BoxInfo"}}}this.Content.setProperty("class",this.clase).set("html",d);this.AlertBtnOk.injectInside(this.ContenedorBotones);this.ContenedorBotones.injectInside(this.Content);this.display(1)}else{if(c=="confirm"){this.ConfirmBtnOk=new Element("input",{id:"BoxConfirmBtnOk",type:"submit",value:b.textBoxBtnOk,styles:{width:"70px"}});this.ConfirmBtnCancel=new Element("input",{id:"BoxConfirmBtnCancel",type:"submit",value:b.textBoxBtnCancel,styles:{width:"70px"}});this.ConfirmBtnOk.addEvent("click",function(){this.options.onReturn=true;this.display(0)}.bind(this));this.ConfirmBtnCancel.addEvent("click",function(){this.options.onReturn=false;this.display(0)}.bind(this));this.Content.setProperty("class","BoxConfirm").set("html",d);this.ConfirmBtnOk.injectInside(this.ContenedorBotones);this.ConfirmBtnCancel.injectInside(this.ContenedorBotones);this.ContenedorBotones.injectInside(this.Content);this.display(1)}else{if(c=="prompt"){this.PromptBtnOk=new Element("input",{id:"BoxPromptBtnOk",type:"submit",value:b.textBoxBtnOk,styles:{width:"70px"}});this.PromptBtnCancel=new Element("input",{id:"BoxPromptBtnCancel",type:"submit",value:b.textBoxBtnCancel,styles:{width:"70px"}});c=b.password?"password":"text";this.PromptInput=new Element("input",{id:"BoxPromptInput",type:c,value:a,styles:{width:"250px"}});this.PromptBtnOk.addEvent("click",function(){this.options.onReturn=this.PromptInput.value;this.display(0)}.bind(this));this.PromptBtnCancel.addEvent("click",function(){this.options.onReturn=false;this.display(0)}.bind(this));this.Content.setProperty("class","BoxPrompt").set("html",d+"<br />");this.PromptInput.injectInside(this.Content);new Element("br").injectInside(this.Content);this.PromptBtnOk.injectInside(this.ContenedorBotones);this.PromptBtnCancel.injectInside(this.ContenedorBotones);this.ContenedorBotones.injectInside(this.Content);this.display(1)}else{this.options.onReturn=false;this.display(0)}}}});this.i++;if(this.i==1){this.callChain()}},alert:function(b,a){this.messageBox("alert",b,a)},info:function(b,a){this.messageBox("info",b,a)},error:function(b,a){this.messageBox("error",b,a)},confirm:function(b,a){this.messageBox("confirm",b,a)},prompt:function(c,a,b){this.messageBox("prompt",c,b,a)}});AlertBox.implement(new Events,new Options);