function invoke(action, params, handler, isXML) {
	var xmlhttpreq = getXMLHttpRequest();
	xmlhttpreq.open("POST", action, true);
	xmlhttpreq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
    xmlhttpreq.setRequestHeader('isAjax', 'true');
    
	xmlhttpreq.onreadystatechange = function() {
		if (xmlhttpreq.readyState == 4) {
       		if (xmlhttpreq.status == 200) {
       			//var result = xmlhttpreq.responseText;
       			var result = isXML ? xmlhttpreq.responseXML : xmlhttpreq.responseText;
       			eval(handler+'(result);');
            }
       	}
	}
    
	xmlhttpreq.send(params);
}

function getXMLHttpRequest() {
	var xmlhttpreq;
	if (window.XMLHttpRequest)
		xmlhttpreq = new XMLHttpRequest();
	else {
		try {
			xmlhttpreq = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e1) {
			try {
				xmlhttpreq = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e2) {}
		}
	}
	return xmlhttpreq;
}

