var httpRequest;
function sendAjaxRequest(url, urlParamList, invokedFunction, ctrlTarget) {	
	if (window.XMLHttpRequest)
		{
 			httpRequest = new XMLHttpRequest();
			if (httpRequest.overrideMimeType) 
			{
				httpRequest.overrideMimeType('text/xml');
			}
		} 
		else if (window.ActiveXObject) 
		{
			try {
				httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e)
			{
				try {
					httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {}
			}
	        	}

	if (!httpRequest)
		alert("Error initializing XMLHttpRequest!");
	else {
		httpRequest.open("POST", url + "?" + urlParamList, true);
		//request.onreadystatechange = function() {receiveAjaxResponse(httpRequest, invokedFunction)};
		httpRequest.onreadystatechange = function() {receiveAjaxResponse(httpRequest, invokedFunction, ctrlTarget)};
		httpRequest.send(null);
	}		
}

function receiveAjaxResponse(httpRequest, invokedFunction, ctrlTarget) {
	if (httpRequest.readyState == 4) {
		if (httpRequest.status == 200) {
			if (httpRequest.responseText.indexOf('<?xml ') < 0) {
				alert(httpRequest.responseText);
			}
			else {
				invokedFunction(httpRequest, ctrlTarget);
			}		
		}
		else if (httpRequest.status == 500) {
			alert(httpRequest.responseText);
		}
		else
			alert("unknown: " + httpRequest.status);
	}	
}

function parseXML(text){
	var xmlDoc;
	
	//text = trim(text);
	
	try //Internet Explorer
	{
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async="false";
		xmlDoc.loadXML(text);
	}
	catch(e)
	{
		try //Firefox, Mozilla, Opera, etc.
		{
			parser=new DOMParser();
			xmlDoc = text;
			//xmlDoc=parser.parseFromString(text, "text/xml");
		}
		catch(e)
		{
			alert(e.message);
			return;
		}
	}
	return xmlDoc;
}

function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}