var xhr = false;

// Set XMLHTTP
function setXHR() {
	if (window.XMLHttpRequest) {
		xhr = new XMLHttpRequest();
	}
	else if (window.ActiveXObject) {
		xhr = new ActiveXObject("Microsoft.XMLHTTP");
	}
	else {
		try {
			xhr = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e) {
			xhr = false;
		}
	}
}

function beforeRequestXHR() {}

function afterRequestXHR(sData) {}

function errorRequestXHR(xhrStatus) {}

function abortRequestXHR() {
	if(xhr)
	{
		try { xhr.abort(); }
		catch(e) {}
	}
}

function doRequestXHR(sURL, bXML)
{
	beforeRequestXHR();
	setXHR();
	xhr.onreadystatechange = function() {
		if(xhr.readyState == 4) {		// xhr state : completed
			if(xhr.status == 200) {		// correct response
				if(bXML) {
					afterRequestXHR(xhr.responseXML);
				}
				else {
					afterRequestXHR(xhr.responseText);
				}
			}
			else {
				errorRequestXHR(xhr.status);
			}
		}
	}
}

function getRequestXHR(sURL, bXML, bSync) {
	bXML = (arguments.length<2) ? false : bXML;
	bSync = (arguments.length<3) ? true : bSync;
	doRequestXHR(sURL, bXML);
	xhr.open("GET", sURL, bSync);
	xhr.send(null);
}

function postRequestXHR(sURL, sData, bXML, bSync) {
	bXML = (arguments.length<3) ? false : bXML;
	bSync = (arguments.length<4) ? true : bSync;
	doRequestXHR(sURL, bXML);
	xhr.open("POST", sURL, bSync);
	xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xhr.send(sData);
}


