// Make a POST to the server 
// and pass on any data from browser
// via the XMLHTTPRequest

function makeStr(fname)
{
	var fobj = document.getElementsByName(fname)[0];
	var str = "&";

	for(var i = 0;i < fobj.elements.length;i++)
	{
		switch(fobj.elements[i].type)
		{
			case "text":
			
			if(fobj.elements[i].value != "")
				str += fobj.elements[i].name + "=" + 
				escape(fobj.elements[i].value) + "&";

			break;
			
			case "password":
			
			if(fobj.elements[i].value != "")
				str += fobj.elements[i].name + "=" + 
				escape(fobj.elements[i].value) + "&";

			break;

			case "select-one":
			if(fobj.elements[i].options[fobj.elements[i].selectedIndex].value)
				str += fobj.elements[i].name + "=" + 
				fobj.elements[i].options[fobj.elements[i].selectedIndex].value + "&";

			break;
		}
	}
	str = str.substr(0,(str.length - 1));
	return str;
}

function refreshTemplate(url, queryStr, fname)
{
	var req = newXMLHttpRequest();

	//register the callback handler function
  	var callbackHandler = getReadyStateHandler(req, updateBrowser);
  	req.onreadystatechange = callbackHandler;
  	
  	var fstr = "";
  	if(fname != "")
  	{
  		fstr = makeStr(fname);
  	}

  	req.open("POST", url, true);
  	req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 	req.send("method=xml&" + queryStr + fstr);
 	
 	
} // talkToServer

// This is the callback functions that gets called
// for the response from the server with the XML data

var lastPing = 0;
function updateBrowser(responseXML) {

	var msg = responseXML.getElementsByTagName("msg")[0];
	var res = responseXML.getElementsByTagName("content")[0];

	var timestamp = msg.getAttribute("timestamp");
	var div_id = res.getAttribute("id");
	
	if (timestamp > lastPing) {
		lastPing = timestamp;

		var message_value = res.firstChild.nodeValue;

		var msg_display = document.getElementById(div_id);
		msg_display.innerHTML = message_value; 
		
	}	
}

//the following two functions are helper infrastructure to 
//craete a XMLHTTPRequest and register a listner callback function

function newXMLHttpRequest() {
	var xmlreq = false;
	if (window.XMLHttpRequest) {
		xmlreq = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
    		// Try ActiveX
		try { 
			xmlreq = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e1) { 
			// first method failed 
			try {
				xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e2) {
				 // both methods failed 
			} 
		}
 	}
   	return xmlreq;
} 

function getReadyStateHandler(req, responseXmlHandler) {
	return function () {
	if (req.readyState == 4) {
		if (req.status == 200) {
        		responseXmlHandler(req.responseXML);
		} else {
			//alert("ERROR: " + req.status);
      		}
    	}
 	}
} 