/**
* DHTML / Javascript Messagebox Widget
*
* @author Dirk Tetenberg
* @copyright (c) 2009 NEXUS COMPONENTS GmbH
* @version 1.1
*/

/**
* Klasse Messagebutton
*
* Schaltfl�che einer Messagebox
*/
function Messagebutton(caption, result, title)
{
	/**
	* Angezeigter Text
	*/
	this.Caption = (typeof caption == "string") ? caption : "";

	/**
	* Ergbnis
	*/
	this.Result = result;

	/**
	* Titel
	*/
	this.Title = (typeof title == "string") ? title : this.Caption;
}

/**
* Klassen Messagebox
*
* Messagebox
*/
function Messagebox(message, caption, icon)
{
	/**
	* Titel der Messagebox
	*/
	this.Caption = (typeof caption == "string") ? caption : document.title;

	/**
	* Inhalt der Messagebox
	*/
	this.Message = message;

	/**
	* Eventhandler f�r Close
	*/
	this.OnClose = null;

	/**
	* Ergebnis der Messagebox
	*/
	this.Result = null;

	/**
	* Symbol
	*/
	this.Icon = (typeof icon == "string") ? icon : "info";

	/**
	* Array mit Schaltfl�chen
	*/
	this.buttons = new Array();

	/**
	* F�gt der Messagebox eine Schaltfl�che hinzu
	*
	* @param button Hinzuzuf�gende Schaltfl�che
	*/
	this.addButton = function(button) {
		if (typeof button == "object") this.buttons.push(button);
	}

	this.show = function() {
		this.container = document.createElement("div");
		this.container.id = "messageboxContainer";
		document.getElementsByTagName("body")[0].appendChild(this.container);

		var box = document.createElement("div");
		box.id = "messagebox";
		this.container.appendChild(box);

		var caption = document.createElement("div");
		caption.id = "messageboxCaption";
		caption.innerHTML = this.Caption;
		box.appendChild(caption);

		var message = document.createElement("div");
		var img = document.createElement("img");
		message.id = "messageboxMessage";
		img.src = formatString("/img/messagebox/{1}.png", this.Icon);
		img.width = 32;
		img.height = 32;
		message.appendChild(img);
		message.innerHTML += this.Message;
		box.appendChild(message);

		var buttons = document.createElement("div");
		buttons.id = "messageboxButtons";
		for(var i in this.buttons) {
			var mb = this.buttons[i];
			var button = document.createElement("button");
			button.messagebox = this;
			button.result = mb.Result;
			button.innerHTML = mb.Caption;
			button.Title = mb.Title;
			button.className = "messageButton";
			button.onclick = function() {
				var box = this.messagebox;
				box.Result = this.result;
				box.close();
			}
			buttons.appendChild(button);
		}
		box.appendChild(buttons);

		this.container.style.visibility = "visible";
		this.container.style.display = "block";
	}

	this.close = function() {
		if (typeof this.container != "undefined") {
			this.container.style.visibility = "hidden";
			this.container.style.display = "none";
			document.getElementsByTagName("body")[0].removeChild(this.container);
			this.container = null;
			if (typeof this.OnClose == "function") this.OnClose(this);
		}
	}
}

function showMessage(message, caption, icon, okHandler)
{
	var mb = new Messagebox(message, caption, icon);
	mb.addButton(new Messagebutton("Ok", 0));
	mb.OnClose = function(msgbox) {
		callUserFunction(okHandler);
	}
	mb.show();
}

function showError(message)
{
	showMessage(message, "Error", "error");
}

function msgboxOkCancel(message, caption, icon, okHandler, cancelHandler)
{
	var mb = new Messagebox(message, caption, icon);
	mb.addButton(new Messagebutton("Ok", 1));
	mb.addButton(new Messagebutton("Abbrechen", 0));
	mb.OnClose = function(msgbox) {
		if (msgbox.Result == 1) {
			callUserFunction(okHandler);
		} else {
			callUserFunction(cancelHandler);
		}
	}
	mb.show();
}

function msgboxYesNo(message, caption, icon, yesHandler, noHandler)
{
	var mb = new Messagebox(message, caption, icon);
	mb.addButton(new Messagebutton("Ja", 1));
	mb.addButton(new Messagebutton("Nein", 0));
	mb.OnClose = function(msgbox) {
		if (msgbox.Result == 1) callUserFunction(yesHandler);
		else callUserFunction(noHandler);
	}
	mb.show();
}

function msgboxYesNoCancel(message, caption, icon, yesHandler, noHandler, cancelHandler)
{
	var mb = new Messagebox(message, caption, icon);
	mb.addButton(new Messagebutton("Ja", 1));
	mb.addButton(new Messagebutton("Nein", 2));
	mb.addButton(new Messagebutton("Abbrechen", 0));
	mb.OnClose = function(msgbox) {
		switch(msgbox.Result) {
			case 1:
				callUserFunction(yesHandler);
			case 2:
				callUserFunction(noHandler);
			default:
				callUserFunction(cancelHandler);
		}
	}
	mb.show();
}