// prototypes
navigator.isIE6 = function() { return this.userAgent.indexOf("MSIE 6") > 0; }
navigator.isIE  = function() { return this.userAgent.indexOf("MSIE") > 0; }


HTMLFormElement.prototype.displayError = function(error)
{
	var holder = this.getElementsByTagName("DIV")[0];

	holder.innerHTML = "- " + error.join("<br />- ");
	holder.style.display = "block";
	holder.className = "ie_pog";

	var success = this.getElementsByTagName("DIV")[1];
	if (success.id == "form_success")
	{
		success.style.display = "none";
	}
}

HTMLFormElement.prototype.resetError = function()
{
	var holder = this.getElementsByTagName("DIV")[0];
	holder.innerHTML = "";
	holder.style.display = "none";
	holder.className = "";

	var success = this.getElementsByTagName("DIV")[1];
	if (success.id == "form_success")
	{
		success.style.display = "none";
	}
}

// Util
function $(element)
{
	if (arguments.length > 1)
	{
		for (var i = 0, elements = [], length = arguments.length; i < length; i++)
			elements.push($(arguments[i]));
		return elements;
	}
	
	if (typeof element == 'string')
		element = document.getElementById(element);
		
	return element;
}

function getMousePosition(ev)
{
	if (ev.pageX || ev.pageY)
	{
		return {x:ev.pageX, y:ev.pageY};
	}

	return {
		x:ev.clientX + document.documentElement.scrollLeft - document.documentElement.clientLeft,
		y:ev.clientY + document.documentElement.scrollTop  - document.documentElement.clientTop
	};
}

function getObjectPosition(obj)
{
	var curleft = curtop = 0;

	if (obj.offsetParent)
	{
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;

		while (obj = obj.offsetParent)
		{
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		}
	}

	return {x:curleft, y:curtop};
}

function clone(obj)
{
	var newObject = new Object();

	for (var i in obj)
	{
		newObject[i] = obj[i];
	}

	return newObject;
}

function extend(parent, child)
{
	child.prototype = clone(parent.prototype);
	child.prototype.parent = parent.prototype;
	child.prototype.constructor = child;
}

function _escape(value)
{
	return escape(value.replace(/\+/g, "%2B"));
}

function _unescape(value)
{
	return unescape(value.replace(/\+/g, " "));
}

function _eval(value)
{
	return eval("(" + value + ")");
}

function __debug(obj)
{
	for (var i in obj)
	{
		if (!confirm(i + ": " + obj[i]))
		{
			return;
		}
	}
}

function post(arrayData, target, address)
{
	var form = document.createElement("FORM");
	form.method = "POST";
	form.style.display = 'none';
	if (target)
	{
		form.target = target;
	}
	if (address)
	{
		form.action = address;
	}

	for (var i=0; i<arrayData.length; i++)
	{
		var input = document.createElement("INPUT");
		input.type  = 'hidden';
		input.name  = arrayData[i][0];
		input.value = arrayData[i][1];
		form.appendChild(input);
	}

	document.body.appendChild(form);
	form.submit();

	return false;
}

// Tables
tb_list_default_hover.hover = null;
function tb_list_default_hover(ev)
{
	var evt = ev || window.event;
	var target = evt.target || evt.srcElement;

	while (target.tagName.toLowerCase() != "table") target = target.parentNode;
	for (var i=0; i<target.rows.length; i++)
	{
		var row = target.rows[i];
		row.setAttribute("__default_class", (row.className ? row.className : ""));
		row.onmouseover = function (ev) {
			this.className = "td_hover";
		};

		row.onmouseout = function (ev) {
			this.className = this.getAttribute("__default_class");
		};
	}

	target.onmousemove = null;
}

// Masks
var Mask = {
	numbers : function(ev)
	{
		var key;
		if (!window.event)
			key = ev.which;
		else
			key = window.event.keyCode;

		return !(key > 31 && (key < 48 || key > 57));
	}
}