String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}

function getPage(url, resultCallback)
{
	_accessPage(url, "GET", resultCallback, []);
}

function postPage(url, resultCallback, vars, values)
{
	var parameterString = "";
	
	for (var i = 0; i < vars.length; ++i)
	{
		if (i > 0) parameterString += "&";
		parameterString += vars[i] + "=";
		parameterString += encodeURI(values[i]);
	}
	
	_accessPage(url, "POST", resultCallback, parameterString);
}


function _accessPage(url, mode, resultCallback, params)
{
	var magicPotato;
	var supportsAjax = false;
	
	if (window.ActiveXObject)
	{
		magicPotato = new ActiveXObject("Microsoft.XMLHTTP");
		supportsAjax = true;
	}
	else if (window.XMLHttpRequest)
	{
		magicPotato = new XMLHttpRequest();
		supportsAjax = true;
	}
	
	if (supportsAjax)
	{
		magicPotato.open(mode, url, true);
		magicPotato.onreadystatechange = function()
		{
			if (magicPotato.readyState == 4 && magicPotato.status == 200)
			{
				var result = magicPotato.responseText;
				
				resultCallback(result);
			}
		}
		
		if (mode == "POST")
		{
			magicPotato.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			magicPotato.setRequestHeader("Content-length", params.length);
			magicPotato.setRequestHeader("Connection", "close");  
			magicPotato.send(params);
		}
		else
		{
			magicPotato.send(null);
		}
	}
}

function getVal(id)
{
	var item = document.getElementById(id);
	return item != null ? item.value : '';
}

function setHTML(id, value)
{
	var item = document.getElementById(id);
	if (item != null)
	{
		item.innerHTML = value;
	}
}

function replaceEscapeCodes(text)
{
	var debug = 0;
	if (text == "A\\\\\\nB")
	{
		debug = 1;
	}
	
	if (debug == 1)
	{
		window.alert(text);
	}
	var output = '';
	var c;
	for (var i = 0; i < text.length; ++i)
	{
		c = text[i];
		if (c == "\\" && i + 1 < text.length)
		{
			var seq = c + text[i + 1];
			++i;
			if (seq == "\\\\")
			{
				output += "\\";
			}
			else if (seq == "\\n")
			{
				output += "\n";
			}
			else if (seq == "\\r")
			{
				output += "\r";
			}
			else if (seq == "\\t")
			{
				output += "\t";
			}
			else
			{
				output += "\\";
				--i;
			}
		}
		else
		{
			output += c;
		}
	}
	return output;
}

function appendHTML(id, value)
{
	var item = document.getElementById(id);
	if (item != null)
	{
		item.innerHTML += value;
	}
}

function max(a, b)
{
	return a > b ? a : b;
}

function min(a, b)
{
	return a < b ? a : b;
}

function htmlspecialchars(text)
{
	var output = '';
	for (var i = 0; i < text.length; ++i)
	{
		var c = text[i];
		if (c == '<') output += '&lt;';
		else if (c == '>') output += '&gt;';
		else if (c == '&') output += '&amp;';
		else if (c == '"') output += '&quot;';
		else output += c;
	}
	return output;
}

function nl2br(text)
{
	return text.replace("\n", '<br />');
}

function multi_replace(haystack, needle, newstring)
{
	return haystack.split(needle).join(newstring);
}
