window.DialogBox = Class.create();

Object.extend(window.DialogBox.prototype, {
	LBDialog: null,
	options: null,
	content: "",
	
	initialize: function(html, options){
		Event.observe(window, "load", function(){
			if($("dialogBox") == null){
				throw new Error("Inclua /pages/dialogBox.jsp");
			}
		});
		this.content = html;
		this.setOptions(options);
		this.setBody();
		this.show();
	},

	setOptions: function(options){
		this.options = Object.extend({
			position: "center", /* scroll, top, center */
			title: "&nbsp;",
			hasClose: true,
			hasDimmer: true,
			buttons: ["yes", "no"],
			buttonsName: ["button.yes", "button.no"],
			buttonsClassName: ["medio", "medio"],
			callbacks: {
				close: this.hide.bind(this),
				yes: Prototype.emptyFunction,
				no: Prototype.emptyFunction
			}
		}, options || {} );
	},
	
	setBody: function(){
		// TITLE
		$("dialogTitle").innerHTML = this.options.title;
		
		// CLOSE
		if(this.options.hasClose == false){
			$("dialogClose").hide();
		}
		
		// CONTEUDO
		$("dialogContent").innerHTML = this.content;
		
		// BOTOES
		for(var i = 0; i < this.options.buttons.length; i++){
			$("dialogButtons").appendChild(new Element("input", {
				type: "button",
				"class": "botao "+this.options.buttonsClassName[i],
				id: "dialogButton."+this.options.buttons[i],
				name: "dialogButton."+this.options.buttons[i],
				value: Bundle.getMessage(this.options.buttonsName[i])
			}));
			Event.observe($("dialogButton."+this.options.buttons[i]), "click", this.options.callbacks[this.options.buttons[i]].bind(this));
		}
	},
	
	show: function(){
		var position;
		
		Event.observe($("dialogClose"), "click", this.options.callbacks.close.bind(this));
		if(this.options.hasDimmer) Consulte.toggleDimmer("dimmerAlert", true);
		$("dialogBox").show();
		
		switch(this.options.position){
			case "scroll": position = document.documentElement.scrollTop; break;
			case "top":    position = $("content").positionedOffset().top; break;
			case "center": position = (document.documentElement.clientHeight - $("dialogBox").offsetHeight) / 2; break;
		}
		$("dialogBox").style.top = position + "px";
		$("dialogBox").style.left = ((document.documentElement.scrollWidth - $("dialogBox").offsetWidth) / 2) + "px";
	},
	
	hide: function(){
		if(this.options.hasDimmer) Consulte.toggleDimmer("dimmerAlert", false);
		$("dialogBox").hide();
	}
	
});
