function doAJAXRequest(url, elementId){
	doCustomAJAXRequest(url, elementId, "defaultAJAXResponse");
}

function doCustomAJAXRequest(url, elementId, customHandleFunction){
	// Get the XMLHttpRequest object.
	var request = newXMLHttpRequest();
	// If XMLHttpRequest is not supported by the browser just display a link. 
	// This scenario is expected to be rare but still handling in case.
	if(request == null){
		handleAJAXError(elementId);
	} else{
		// if url is not passed default it to below one.
		if(typeof url == 'undefined'){
			handleAJAXError(elementId);
		}
		if(typeof request.onreadystatechange != 'undefined')
		{
			request.onreadystatechange = getReadyStateHandler(request, elementId, customHandleFunction);
			request.open('GET', url, true);
			request.send(null);
		}
		else
		{
			handleAJAXError(elementId);
		}
	}
}

/** Handler function to get the response once the processing completes **/
function getReadyStateHandler(request, elementId, customHandleFunction)
{
	return function(){
		if(request.readyState == 4){
			if(request.status == 200){
				handleAJAXResponse(request.responseText, elementId, customHandleFunction);
			} else {
				handleAJAXError(elementId);
			}
		}
	}
}

function handleAJAXResponse(responseText, elementId, customHandleFunction)
{
	//alert("AJAX Response: " + responseText);
	//alert("Target Element Id: " + elementId);
	eval(customHandleFunction + "(responseText, elementId);");
	//document.getElementById(elementId).innerHTML = responseText;
}

function defaultAJAXResponse(responseText, elementId)
{
	document.getElementById(elementId).innerHTML = responseText;
}

function handleAJAXError(elementId)
{
	document.getElementById(elementId).innerHTML = "<span class=\"messageError\">" +
		"An AJAX error has occurred.  Please contact us.</span>";
}

/** Cross browser XMLHttpRequest **/
function newXMLHttpRequest(){
	var xmlreq = false;
	if(window.XMLHttpRequest){
		xmlreq = new XMLHttpRequest();
	}
	else if(window.ActiveXObject){
		try{
			xmlreq = new ActiveXObject("MsXml2.XMLHTTP");
		}
		catch(exception1){
			try{
				xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(exception2){
			}
		}
	}
	return xmlreq;
}