
var debug = false;


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+$/,"");
}

String.prototype.replaceAll = function(s1, s2) {return this.split(s1).join(s2)}


function get_form_input(form, input_name)
{
	var obj_frm = form;
	var len_inp = obj_frm.elements.length;
	var set_input = null;
	for (var k = 0; k < len_inp; k++)
		if (obj_frm.elements[k].getAttribute("name") == input_name)
		{
			set_input = obj_frm[obj_frm.elements[k].getAttribute("name")];
			break;
		}
	return set_input;
}


function GetXmlHttp()
{
	var xmlhttp = false;
	if (window.XMLHttpRequest)
	{
		xmlhttp = new XMLHttpRequest()
	}
	else if (window.ActiveXObject)// code for IE

	{
		try
		{
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP")
		} catch (e) {
			try
			{
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
			} catch (E) {
				xmlhttp=false
			}
		}
	}
	return xmlhttp;
}

function PassAjaxResponseToFunction(url, callbackFunction, params)
{
	var xmlhttp = new GetXmlHttp();
	//now we got the XmlHttpRequest object, send the request.

	if (xmlhttp)
	{
		xmlhttp.onreadystatechange =
		function ()
		{
			if (xmlhttp && xmlhttp.readyState==4)
			{//we got something back..

				if (xmlhttp.status==200)
				{
					var response = xmlhttp.responseText;
					var functionToCall = callbackFunction +
					'(response,'+params+')';
					if(debug)
					{
						// alert(response);
						// alert(functionToCall);
					}
					eval(functionToCall);
				} else if(debug){
					document.write(xmlhttp.responseText);
				}
			}
		}
		xmlhttp.open("GET",url,true);
		xmlhttp.send(null);
	}
}

function SetInnerHTMLFromAjaxResponseJSON(url, obj_id)
{
	var xmlhttp = new GetXmlHttp();
	//now we got the XmlHttpRequest object, send the request.

	if (xmlhttp)
	{
		xmlhttp.onreadystatechange =
		function ()
		{
			if (xmlhttp && xmlhttp.readyState==4)
			{//we got something back..

				if (xmlhttp.status==200)
				{
					if(debug)
					{
						// alert(xmlhttp.responseText);
					}
					/*
					if(typeof obj_id == 'object')
					{
						obj_id.innerHTML = xmlhttp.responseText;
						obj_id.focus();
					}
					else
					{
						document.getElementById(obj_id).innerHTML = xmlhttp.responseText;
						document.getElementById(obj_id).focus();
					}
					*/
					var obj_var = null;
					if(typeof obj_id == 'object')
					{
						obj_var = obj_id;
						// obj_id.innerHTML = xmlhttp.responseText;
						// obj_id.focus();
					}
					else
					{
						obj_var = document.getElementById(obj_id);
						// document.getElementById(obj_id).innerHTML = xmlhttp.responseText;
						// document.getElementById(obj_id).focus();
					}
					
					if (obj_var)
					{
						obj_var = obj_var.getElementsByTagName("SELECT")[0];
			
						var za_data = eval(xmlhttp.responseText);
						obj_var.options.length = 0;
						for (var i = 0; i < za_data.length; i++)
							obj_var.options[i] = new Option(za_data[i][1], za_data[i][0]);
					}
				}
				else if(debug)
				{
					document.Write(xmlhttp.responseText);
				}
			}
		}
		xmlhttp.open("GET", url, false);
		xmlhttp.send(null);
		
		if (xmlhttp.responseText)
		{
			var obj_var = null;
			if(typeof obj_id == 'object')
			{
				obj_var = obj_id;
				// obj_id.innerHTML = xmlhttp.responseText;
				// obj_id.focus();
			}
			else
			{
				obj_var = document.getElementById(obj_id);
				// document.getElementById(obj_id).innerHTML = xmlhttp.responseText;
				// document.getElementById(obj_id).focus();
			}
			
			if (obj_var)
			{
				obj_var = obj_var.getElementsByTagName("SELECT")[0];
	
				var za_data = eval(xmlhttp.responseText);
				obj_var.options.length = 0;
				for (var i = 0; i < za_data.length; i++)
					obj_var.options[i] = new Option(za_data[i][1], za_data[i][0]);
			}
		}
	}
}

function SetInnerHTMLFromAjaxResponse(url, obj_id)
{
	// alert(url);
	// alert(obj_id);
	
	var xmlhttp = new GetXmlHttp();
	//now we got the XmlHttpRequest object, send the request.

	if (xmlhttp)
	{
		xmlhttp.onreadystatechange =
			function ()
			{
				if (xmlhttp && xmlhttp.readyState==4)
				{//we got something back..
	
					if (xmlhttp.status==200)
					{
						// alert(xmlhttp.responseText);
						
						if(debug)
						{
							// alert(xmlhttp.responseText);
						}
						
						if (obj_id)
						{
							if(typeof obj_id == 'object')
							{
								obj_id.innerHTML = xmlhttp.responseText;
								//obj_id.focus();
							}
							else
							{
								// alert(xmlhttp.responseText);
								var za_object = document.getElementById(obj_id);
								
								var d = document.createElement('DIV');
								d.innerHTML = xmlhttp.responseText;
								
								while (za_object.childNodes.length > 0)
									za_object.removeChild(za_object.childNodes[0]);
								
								za_object.appendChild(d);
								// IE fix
								// document.getElementById(obj_id).innerHTML = xmlhttp.responseText;
								// document.getElementById(obj_id).focus();
							}
						}
					}
					else if(debug)
					{
						document.Write(xmlhttp.responseText);
					}
				}
			}
		xmlhttp.open("GET", url, true);
		xmlhttp.send(null);
		
		/*
		if (xmlhttp.responseText)
		{
			if(typeof obj_id == 'object')
			{
				obj_id.innerHTML = xmlhttp.responseText;
				// obj_id.focus();
			}
			else
			{
				document.getElementById(obj_id).innerHTML = xmlhttp.responseText;
				// document.getElementById(obj_id).focus();
			}
		}
		*/
	}
}

function makePOSTRequest(url, form_name, div_id)
{
	var parameters = getFormParams(form_name);
	http_request = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
	 http_request = new XMLHttpRequest();
	 if (http_request.overrideMimeType) {
	 	// set type accordingly to anticipated content type
	    //http_request.overrideMimeType('text/xml');
	    http_request.overrideMimeType('text/html');
	 }
	} else if (window.ActiveXObject) { // IE
	 try {
	    http_request = new ActiveXObject("Msxml2.XMLHTTP");
	 } catch (e) {
	    try {
	       http_request = new ActiveXObject("Microsoft.XMLHTTP");
	    } catch (e) {}
	 }
	}
	if (!http_request)
	{
	 alert('Cannot create XMLHTTP instance');
	 return false;
	}
	
	http_request.onreadystatechange = function ()
		{
			 if (http_request.readyState == 4)
	      {
	         if (http_request.status == 200)
	         {
	            if (div_id && document.getElementById(div_id))
	            {
	            	document.getElementById(div_id).innerHTML = http_request.responseText;
	            }
	            else
	            {
	            	alert(http_request.responseText);
	            }
	         }
	         else
	         {
	            alert('There was a problem with the request.');
	         }
	      }
		};
	http_request.open('POST', url, true);
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", parameters.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(parameters);
}

function getFormParams(form_name)
{
	var inps = document.forms[form_name].getElementsByTagName("input");
	var sels = document.forms[form_name].getElementsByTagName("select");
	var texts = document.forms[form_name].getElementsByTagName("textarea");
	
	var all = {};
	
	for (var x=0; x<inps.length; x++) all[inps[x].name] = inps[x].value;
	for (var x=0; x<sels.length; x++) all[sels[x].name] = sels[x].value;
	for (var x=0; x<texts.length; x++) all[texts[x].name] = texts[x].value;
	
	var str = "";
	for (var k in all)
	{
		str += k + "=" + encodeURI(all[k]) + "&";
	}
	
	return str;
}

