if(typeof XMLHttpRequest == "undefined")
	XMLHttpRequest = function()
	{
		try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); } catch(e) {};
		try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); } catch(e) {};
		try { return new ActiveXObject("Msxml2.XMLHTTP"); }     catch(e) {};
		try { return new ActiveXObject("Microsoft.XMLHTTP"); }  catch(e) {};

		throw new Error("Browser does not support XMLHttpRequest or XMLHTTP.");
	};
 
function ajaxGet(url, callback, param, ajaxOptions)
{
	ajax(url, "GET", null, callback, param, ajaxOptions);
}

function ajaxPost(url, vars, callback, param, ajaxOptions)
{
	ajax(url, "POST", vars, callback, param, ajaxOptions);
}
 
function ajax(url, method, vars, callback, param, ajaxOptions)
{
	if(ajaxOptions == 'default')
		ajaxOptions = {'loading': 'showElement(\'ajaxLoadIndicator\')', 'complete': 'hideElement(\'ajaxLoadIndicator\')'};
	if(ajaxOptions != null)
		eval(ajaxOptions["loading"]);
			
	// Prepare request
	var isAsynchronous = callback != null;
	var req = new XMLHttpRequest();

	req.open(method, url, isAsynchronous);
	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	
	// Synchronous
	if(!isAsynchronous)
	{
		req.send(null);
		return req.responseText;
	}
	
	// Asynchronous
	req.onreadystatechange = function()
	{
		if (req.readyState == 4)
		{//&& request.status == 200
			if (req.responseText && callback != null)
			{
				if(ajaxOptions != null)
					eval(ajaxOptions["complete"]);
				callback(req.responseText, param, ajaxOptions);
			}
		}
	};
	return req.send(vars);
}