var xmlhttp = get_xmlhttp_object();



var Url = {
 
	// public method for url encoding
	encode : function (string) {
		return escape(this._utf8_encode(string));
	},
 
	// public method for url decoding
	decode : function (string) {
		return this._utf8_decode(unescape(string));
	},
 
	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
 
		for (var n = 0; n < string.length; n++) {
 
			var c = string.charCodeAt(n);
 
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
 
		}
 
		return utftext;
	},
 
	// private method for UTF-8 decoding
	_utf8_decode : function (utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
 
		while ( i < utftext.length ) {
 
			c = utftext.charCodeAt(i);
 
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			}
			else if((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i+1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			}
			else {
				c2 = utftext.charCodeAt(i+1);
				c3 = utftext.charCodeAt(i+2);
				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
 
		}
 
		return string;
	}
 
}





function get_xmlhttp_object()
{
	var xmlhttp = null;
	
	try
	{
		xmlhttp = new XMLHttpRequest();
	}
	catch (e)
	{
		try
		{
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e)
			{
				alert("Your browser does not support AJAX!");
				return false;
			}
		}
	}
	
	return xmlhttp;
}

function process_ajax(server_page, element_id, get_or_post, str)
{
	if (get_or_post == "POST")
	{
		xmlhttp.open("POST", server_page);
		xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
		xmlhttp.onreadystatechange = function()
		{
			if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
				document.getElementById(element_id).innerHTML = xmlhttp.responseText;
		}
		xmlhttp.send(str+"&r="+Math.random());
	}
	else
	{
		xmlhttp.open("GET", server_page+"&r="+Math.random());
		xmlhttp.onreadystatechange = function()
		{
			if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
				document.getElementById(element_id).innerHTML = xmlhttp.responseText;
		}
		xmlhttp.send(null);
	}
}

function get_form_value(form_name, element_name)
{
	return document.forms[form_name].elements[element_name].value;
}

function get_form_values(form_name)
{
	var str = "";
	for(var i=0; i<document.forms[form_name].elements.length; i++)
	{
		str += document.forms[form_name].elements[i].name + "=" + Url.encode(document.forms[form_name].elements[i].value) + "&";
	}
	return str;
}

function form_ajax(server_page, form_name, element_name)
{
	xmlhttp.open("GET", server_page+"?"+get_form_values(form_name)+"r="+Math.random(), false);
	xmlhttp.onreadystatechange = function()
	{
		if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
			document.forms[form_name].elements[element_name].value = xmlhttp.responseText;
	}
	xmlhttp.send(null);
	
	document.forms[form_name].elements[element_name].value = xmlhttp.responseText;
}

