/** * Open a connection to the specified URL, which is * intended to provide an XML message.  The specified data * is sent to the server as parameters.  This is the same as * calling xmlOpen("POST", url, toSend, responseHandler). * * @param string url    The URL to connect to. * @param string toSend The data to send to the server; must be URL encoded. * @param function responseHandler The Javascript function handling server response. */function xmlPost(url, toSend, responseHandler){	xmlOpen("POST", url, toSend, responseHandler);}/** * Open a connection to the specified URL, which is * intended to provide an XML message.  No other data is * sent to the server.  This is the same as calling * xmlOpen("GET", url, null, responseHandler). * * @param string url    The URL to connect to. * @param function responseHandler The Javascript function handling server response. */function xmlGet(url, responseHandler){	xmlOpen("GET", url, null, responseHandler);}/* * Open a connection to the specified URL, which is * intended to respond with an XML message. *  * @param string method The connection method; either "GET" or "POST". * @param string url    The URL to connect to. * @param string toSend The data to send to the server; must be URL encoded. * @param function responseHandler The function handling server response. */ function xmlOpen(method, url, toSend, responseHandler){	if (window.XMLHttpRequest){		// browser has native support for XMLHttpRequest object		req = new XMLHttpRequest();	}else if (window.ActiveXObject){		// try XMLHTTP ActiveX (Internet Explorer) version		req = new ActiveXObject("Microsoft.XMLHTTP");	}    	if(req){		req.onreadystatechange = responseHandler;		req.open(method, url, true);		req.setRequestHeader("content-type","application/x-www-form-urlencoded");		req.send(toSend);	}else{		alert('Your browser does not seem to support XMLHttpRequest.');	}}/** * Gets the first child node of <code>parent</code> with the * specified tag name. * * @param parent the parent XML DOM node to search * @param tagName the tag name of the child node to search for */function getNode(parent, tagName){	var i;	var max = parent.childNodes.length;    	// Check each child node	for(i = 0; i < max; i++){		if(parent.childNodes[i].tagName){			if(parent.childNodes[i].tagName.toUpperCase() == tagName.toUpperCase()){				// We found a matching child node; return it.				return parent.childNodes[i];			}		}	}	// One was not found; return null	return null;}/** * Gets the first child node of <code>parent</code> with the * specified tag name and whose value of the 'key' attribute * is <code>key</code>. * * @param parent the parent XML DOM node to search * @param tagName the tag name of the child nodes to search in * @param key the value of the 'key' attribute to search on */function getNodesWithKey(parent, tagName, key){	var i;	var cellNodes = parent.getElementsByTagName(tagName);	var max = cellNodes.length;    	// Check each cell node for the specified value for	// the 'key' attribute	for(i = 0; i < max; i++){		if(cellNodes[i].getAttribute('key') == key){			// We found a matching cell node; return it.			return cellNodes[i];		}	}	// One was not found; return null	return null;}