/*

Messagebox

*/

// singleton
MessageBox = new _MessageBox;

function _MessageBox()
{
	// zomaar een prefix
	var prefix = "MBmessagebox";
	
	this.messageboxid = prefix + "_div";
	this.messageboxcontentid = prefix + "_contentdiv";
	this.messageboxtitleid = prefix + "_titlediv";
	this.messageboxokbuttonid = prefix + "_okbutton";
	this.messageboxreloadbuttonid = prefix + "_reloadbutton";
	
	// the div that will be shaded when a popup is launched
	this.documentdivid = "doc";
	
	// the element to focus when OK is pressed
	this.elementfocusonok = null;
	
	// place to store hidden SELECT elements in (hidden on display in IE)
	this.iehiddenarray = new Array();
	
	// CSS class for the messagebox
	this.messageboxclass = "MBmessagebox";
	
	this.closebuttonHTML = "<br><br><input id=\"" + this.messageboxokbuttonid + "\" type=\"button\" value=\"OK\" onClick=\"MessageBox.hideMessagebox();\">";
	this.reloadbuttonHTML = "<br><br><input id=\"" + this.messageboxreloadbuttonid + "\" type=\"button\" value=\"Reload\" onClick=\"window.location.reload();\">";
}

Object.extend(_MessageBox.prototype,
{
	displayMessage: function(content, title)
	{
		var html = content + this.closebuttonHTML;
		
		this.displayMessagebox(html, title);
	},
	
	displayMessageReload: function(content, title)
	{
		var html = content + this.reloadbuttonHTML;
		
		this.displayMessagebox(html, title);
	},
	
	displayMessagebox: function(content, title)
	{
		if (document.getElementById(this.messageboxid) == null)
		{
			this.createMessagebox(this.messageboxid, this.messageboxtitleid);
		}
		
		if (title == undefined)
		{
			title = "&nbsp;";
		}
		
		var messagebox = document.getElementById(this.messageboxid);
		
		// klote IE
		if (!window.innerWidth)
		{
			// strict mode
			if (!(document.documentElement.clientWidth == 0))
			{
				x = document.documentElement.clientWidth;
				y = document.documentElement.clientHeight;
			} else
			{
				// quirks mode
				x = document.body.clientWidth;
				y = document.body.clientHeight;
			}
		} else
		{
			// andere browsers
			x = window.innerWidth;
			y = window.innerHeight;
		}
		
		document.getElementById(this.messageboxcontentid).innerHTML = content;
		document.getElementById(this.messageboxtitleid).innerHTML = title;
		
		var width = messagebox.scrollWidth;
		var height = messagebox.scrollHeight;
		
		x = parseInt((x - width) / 2, 10);
		y = parseInt((y - height) / 2, 10);
		
		messagebox.style.left = x + "px";
		messagebox.style.top = y + "px";
		
		// hide SELECT elements in IE
		if (isIE())
		{
			this.hideSelects();
		}
		
		shadeItem(this.messageboxid, 0);
		messagebox.style.visibility = "visible";
		shadeItem(this.messageboxid, 100);
		shadeItem(this.documentdivid, 35);
	},
	
	hideMessagebox: function()
	{
		var messagebox = document.getElementById(this.messageboxid);
		
		if (messagebox == undefined)
		{
			return false;
		}
		
		shadeItem(this.documentdivid, 100);
		messagebox.style.visibility = "hidden";
		
		if (this.elementfocusonok != null)
		{
			if (this.elementfocusonok.focus)
			{
				this.elementfocusonok.focus();
			}
			if (this.elementfocusonok.select)
			{
				this.elementfocusonok.select();
			}
		}
		
		// unhide SELECT elements in IE
		if (isIE())
		{
			this.unhideSelects();
		}
	},
	
	createMessagebox: function()
	{
		var messagebox = document.createElement("div");
		messagebox.setAttribute("id", this.messageboxid);
		messagebox.style.visibility = "hidden";
		
		messagebox.innerHTML = "<div class=\"" + this.messageboxclass + "\"><h3><div id=\"" + this.messageboxtitleid + "\"></div></h3><div id=\"" + this.messageboxcontentid + "\"></div></div>";
		
		document.body.appendChild(messagebox);
	},
	
	hideSelects: function()
	{
		var elements = document.getElementsByTagName("SELECT");
		
		for (var i = 0; i < elements.length; i++)
		{
			var element = elements[i];
			
			if (element.style.visibility.toLowerCase != "hidden")
			{
				element.style.visibility = "hidden";
				
				this.iehiddenarray.push(element);
			}
		}
	},
	
	unhideSelects: function()
	{
		var elements = this.iehiddenarray;
		
		for (var i = 0; i < elements.length; i++)
		{
			var element = elements[i];
			
			element.style.visibility = "visible";
		}
		
		this.iehiddenarray = new Array();
	}
});
