
/* ======= Core AJAX methods ======= */
function urlEncode(str) {
	str = escape(str);
	str = str.replace(/\+/g, '%2B');
	str = str.replace(/%20/g, '+');
	str = str.replace(/\*/g, '%2A');
	str = str.replace(/\//g, '%2F');
	str = str.replace(/@/g, '%40');
	return str;
}

function urlDecode(str) {
	str = str.replace(/\+/g, ' ');
	str = unescape(str);
	return str;
}

function makeAjaxRequest(url, parameters, responseHandler_Success, responseHandler_Error) {
	var httpRequest = false;

	if (window.ActiveXObject) { //Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
		try {
			httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e){
			try{
				httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e){}
		}
	}
	else if (window.XMLHttpRequest) { // if Mozilla, Safari etc
		httpRequest = new XMLHttpRequest();
	}
	else {
		return false;
	}

	httpRequest.onreadystatechange = function() { readAjaxResponse(httpRequest, responseHandler_Success, responseHandler_Error); };

	var ajaxfriendlyurl = url.replace(/^http:\/\/[^\/]+\//i, "http://"+window.location.hostname+"/");
	//alert("url=" + ajaxfriendlyurl + ", parameters=" + parameters);
	
	//httpRequest.open('POST', ajaxfriendlyurl + "?" + parameters, true);
	httpRequest.open('POST', ajaxfriendlyurl, true);
 
	//Send the proper header information along with the request
	httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	httpRequest.setRequestHeader("Content-length", parameters.length);
	httpRequest.setRequestHeader("Connection", "close");	
	
	httpRequest.send(parameters);
}

function readAjaxResponse(httpRequest, responseHandler_Success, responseHandler_Error) {

	//alert(httpRequest.readyState + ", " + httpRequest.status);	
	
	// only if httpRequest shows "complete"..
	if (httpRequest.readyState == 4) {
		// only if "OK"..
		if (httpRequest.status == 200) {
			// processing statements go here..
			responseHandler_Success(httpRequest.responseText);
		} else {
			//alert(httpRequest.responseText);
			if (responseHandler_Error != null) {
				responseHandler_Error();
			}
			// Nothing to do..
		}
	}
		
}
/* ======= Core AJAX methods ======= */
