var debug = false;

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 (Ex)
			{
				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 SetInnerHTMLFromAjaxResponse(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;
						}
						else
						{
							document.getElementById(obj_id).innerHTML = xmlhttp.responseText;
						}
					}
					else if (debug)
					{
						document.Write(xmlhttp.responseText);
					}
				}
			};
		
		xmlhttp.open("GET",url,true);
		xmlhttp.send(null);
	}
}

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/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 (document.getElementById(div_id))
						document.getElementById(div_id).innerHTML = 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;
}

