function MSXMLObj(pType) {	
	switch (pType) {
	case "HTTP":
		try {return new ActiveXObject("Msxml2.XMLHTTP") } catch (e) {
			try {return new ActiveXObject("Microsoft.XMLHTTP") } catch (e) {}
		}
		break;
	case "DOM":
		try {return new ActiveXObject("Msxml2.DomDocument") } catch (e) {
			try {return new ActiveXObject("Msxml.DomDocument") } catch (e) {}
		}
		break;
	default: break;
	}
}
function xmlHttpCallSync(pURL) {
	try {
		if (is_ie) var xmlhttp = MSXMLObj('HTTP')
		else var xmlhttp = new XMLHttpRequest()
	
		xmlhttp.open("GET",pURL,false)	// Synchronous request
		xmlhttp.send(null)
		return xmlhttp.responseText
	} catch (e) {
		return "ERR"+e.description
	}
}
			
function xmlHttpCall(pURL, pReceiveFunction, pErrorFunction) {
	try {
		if (is_ie) var xmlhttp = MSXMLObj('HTTP')
		else var xmlhttp = new XMLHttpRequest()
	
		window.status='Data Requested'

		zURL = pURL				
		date = new Date();
		if (pURL.indexOf("?") != -1) zURL += "&"
		else zURL += "?"
		zURL += 'Date=' + date.getTime(); 

		xmlhttp.onreadystatechange = function() {
			if (xmlhttp.readyState == 4) {
				window.status = "Data received"
				if (is_ie) {
					var dom = MSXMLObj('DOM')
					dom.loadXML(xmlhttp.responseText)
				} else {
					var objDOMParser = new DOMParser();
					var dom = objDOMParser.parseFromString(xmlhttp.responseText, "text/xml")
				}						
				pReceiveFunction(dom, pURL)
			}
		}
		xmlhttp.open("GET",zURL,true)	// Asynchronous request
		xmlhttp.send(null)
	} catch (e) {
		pErrorFunction(e,pURL)
	}
}

function xmlGetNodes (pDom, pNode) {
	var zDom
	try {
		if (is_ie) zDom = pDom.selectNodes(pNode);
		else {
			zDom = pDom
			var Arr = pNode.split('/')
			for (var i=1; i<Arr.length;i++) {
				if (i==Arr.length-1) zDom = zDom.getElementsByTagName(Arr[i]);
				else zDom = zDom.getElementsByTagName(Arr[i])[0];
			}
		}
	} catch (e) {}
	return zDom
}
function xmlGetText(pObj) {
	var z = ''
	try {z = pObj.firstChild.data} catch (e) {}
	return z
}
function xmlGetSingleNodeText(pDom, pNode) {
	var z = ''
	try {
		if (is_ie) var z = pDom.selectSingleNode(pNode).text
		else {
			var z = xmlGetNodes(pDom, pNode)
			z = z[0].firstChild.data
		}
	} catch (e) {}		
	return z
}
