var req;
var reqcallback;

function loadTextDoc(url, callback) {
	req = false;
	reqcallback = callback;
	// branch for native XMLHttpRequest object
	if(window.XMLHttpRequest && !(window.ActiveXObject)) {
		try {
			req = new XMLHttpRequest();
			}
		catch(e) {
			req = false;
			}
	// branch for IE/Windows ActiveX version
		}
	else if(window.ActiveXObject) {
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
			}
		catch(e) {
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
				}
			catch(e) {
				req = false;
				}
			}
		}
	if (req) {
		req.onreadystatechange = processTextReqChange;
		req.open("GET", url, true);
		req.send("");
	  }
  }

function processTextReqChange() {
	// only if req shows "loaded"
	if (req.readyState == 4) {
		// only if "OK"
		if (req.status == 200) {
			reqcallback(req.responseText);
			}
		else {
			//alert("There was a problem retrieving the XML data:\n" + req.statusText);
			}
	  }
  }

function loadXMLDoc(url, post, callback) {
	req = null;
	reqcallback = callback;
	// branch for native XMLHttpRequest object
	if(window.XMLHttpRequest && !(window.ActiveXObject)) {
		try {
			req = new XMLHttpRequest();
			}
		catch(e) {
			req = false;
			}
	// branch for IE/Windows ActiveX version
		}
	else if(window.ActiveXObject) {
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
			}
		catch(e) {
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
				}
			catch(e) {
				req = false;
				}
			}
		}
	if (req!=null) {
		req.onreadystatechange = processXmlReqChange;
		req.open("POST", url, true);
    req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	  req.send(post);
	  }
  }

function processXmlReqChange() {
	// only if req shows "loaded"
	if (req.readyState == 4) {
		// only if "OK"
		if (req.status == 200) {
			try {
			  reqcallback(req.responseXML.documentElement);
			  }
			catch(e) {
//				alert(req.responseXML.parseError.errorCode);
				alert('Response (not an xml): "' + req.responseText + '"');
//				alert(e.description);
			  }
			}
		else {
			//alert("There was a problem retrieving the XML data:\n" + req.statusText);
			}
	  }
  }

function getElements(docnode, elementname) {
	return docnode.getElementsByTagName(elementname);
  }
function getElement(docnode, elementname) {
	return getElements(docnode, elementname)[0];
  }

function getNodeValue(element, nodename) {
	return(element.getElementsByTagName(nodename)[0].childNodes[0].nodeValue);
  }

//			client = getElement(docnode, "client");
//			alert(getNodeValue(client, "name"));
/*			
			for (i=0; i<clients.length; i++) {
				alert(getElementNodeValue(clients[i], "name"));
				}
*/
