// VGO Ajax v2.0
// Date: 2007/07/30
// Created by Patrick Fan-Chiang

function displayWaiting() {
	var htmlStr = '<table width="100%" height="100%" border=0><tr><td align="center" valign="middle"><img src="images/waiting_bar.gif" border="0"></td></tr></table>';
	
	return htmlStr;
}

function requestXmlPOST(phpcall, mParam, spanID, mForm) {
	var xmlHttp=false;
	var waitingSet=false;
	
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		xmlHttp = new XMLHttpRequest();
		if (xmlHttp.overrideMimeType) {
         	// set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
			xmlHttp.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	
	if(xmlHttp) {
		var url=phpcall+'?'+mParam
		var parameters = getFormValues(mForm);
	//	alert(parameters);
		xmlHttp.open('POST', url, true);

		xmlHttp.onreadystatechange = function() {
			if (xmlHttp.readyState==1) {
				if(!waitingSet) {
					var waitStr = displayWaiting();
					document.getElementById(spanID).innerHTML=waitStr;
					waitingSet = true;
				}
			} 
			if (xmlHttp.readyState==4 && xmlHttp.status==200) {
//				var xmlDoc = xmlHttp.responseText;
//				
//				var mPos1 = xmlDoc.indexOf("<menutext>");
//				var mPos2 = xmlDoc.indexOf("</menutext>");
//	
//				var mLen = (mPos2-mPos1);
//				alert(xmlDoc.substr(mPos1, mLen));
//
//				var xmlDoc = xmlHttp.responseXML;		
				
//				var xmlNodeList = xmlDoc.selectNodes("//menuitem");
//				alert(xmlNodeList.item(0).selectSingleNode("spanid").text);
//				alert(xmlNodeList.item(0).selectSingleNode("menutext").text);

				
//				var nsResolver = xmlDoc.createNSResolver( xmlDoc.ownerDocument == null ? xmlDoc.documentElement : xmlDoc.ownerDocument.documentElement);
		
//				var personIterator = xmlDoc.evaluate('//menuitem', xmlDoc, nsResolver, XPathResult.ANY_TYPE, null );
			
			
			
			
				// convert the string to an XML object
//				var xmlobject = (new DOMParser()).parseFromString(xmlHttp.responseText, "text/xml");
//				var xmlobject = xmlHttp.responseXML;
//				alert(xmlobject);
				// get the XML root item
//				alert(xmlHttp.responseText);
//				var xmlobject = xmlHttp.responseXML.documentElement
				var xmlobject = xmlHttp.responseXML;

				var root = xmlobject.getElementsByTagName("root")[0];

				var items = root.getElementsByTagName("ajaxdata");
				for (var i = 0 ; i < items.length ; i++) {
					// get one item after another
					var item = items[i];
					// now we have the item object, time to get the contents
					// get the spanid of data
					var mSpanID = item.getElementsByTagName("spanid")[0].firstChild.nodeValue;
					// get text 
					if(typeof(item.getElementsByTagName("rtntext")[0].textContent) != "undefined") {
						var mText = new String(item.getElementsByTagName("rtntext")[0].textContent);
					}else {
						var mText = new String(item.getElementsByTagName("rtntext")[0].firstChild.nodeValue);
					}
//					alert(mText);
					document.getElementById(mSpanID).innerHTML=mText
				}
				
//				document.getElementById(spanID).innerHTML="<textarea>"+xmlHttp.responseText+"</textarea>"
//				document.getElementById(spanID).innerHTML=xmlHttp.responseText
			} 
		}

		xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xmlHttp.setRequestHeader("Content-length", parameters.length);
		xmlHttp.setRequestHeader("Connection", "close");
		xmlHttp.send(parameters);
	}else {
		alert ("Browser does not support HTTP Request")
		return
	}

}

function requestXmlGET(phpcall, mParam, spanID) { 
	var xmlHttp=false;
	var waitingSet=false;
	
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		xmlHttp = new XMLHttpRequest();
		if (xmlHttp.overrideMimeType) {
         	// set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
			xmlHttp.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if(xmlHttp) {
		var url=phpcall+'?'+mParam
		xmlHttp.onreadystatechange = function() {
			if (xmlHttp.readyState==4 && xmlHttp.status==200) {
				var xmlobject = xmlHttp.responseXML;
//				alert(xmlHttp.responseText);
				
				var root = xmlobject.getElementsByTagName("root")[0];

				var items = root.getElementsByTagName("ajaxdata");
				for (var i = 0 ; i < items.length ; i++) {
					// get one item after another
					var item = items[i];
					// now we have the item object, time to get the contents
					// get the spanid of data
					var mSpanID = item.getElementsByTagName("spanid")[0].firstChild.nodeValue;
					// get text 
					if(typeof(item.getElementsByTagName("rtntext")[0].textContent) != "undefined") {
						var mText = new String(item.getElementsByTagName("rtntext")[0].textContent);
					}else {
						var mText = new String(item.getElementsByTagName("rtntext")[0].firstChild.nodeValue);
					}
					document.getElementById(mSpanID).innerHTML=mText
				}
			}else {
				if(!waitingSet) {
					var waitStr = displayWaiting();
					document.getElementById(spanID).innerHTML=waitStr;
					waitingSet = true;
				}
			}
		}

		xmlHttp.open("GET",url,true)
		xmlHttp.send(null)
	}
}

function requestXmlGET2(phpcall, mParam, spanID, waitDisp) { 
	var xmlHttp=false;
	var waitingSet=false;
	
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		xmlHttp = new XMLHttpRequest();
		if (xmlHttp.overrideMimeType) {
         	// set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
			xmlHttp.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if(xmlHttp) {
		var url=phpcall+'?'+mParam
		xmlHttp.onreadystatechange = function() {
			if (xmlHttp.readyState==4 && xmlHttp.status==200) {
				var xmlobject = xmlHttp.responseXML;
//				alert(xmlHttp.responseText);
				
				var root = xmlobject.getElementsByTagName("root")[0];

				var items = root.getElementsByTagName("ajaxdata");
				for (var i = 0 ; i < items.length ; i++) {
					// get one item after another
					var item = items[i];
					// now we have the item object, time to get the contents
					// get the spanid of data
					var mSpanID = item.getElementsByTagName("spanid")[0].firstChild.nodeValue;
					// get text 
					if(typeof(item.getElementsByTagName("rtntext")[0].textContent) != "undefined") {
						var mText = new String(item.getElementsByTagName("rtntext")[0].textContent);
					}else {
						var mText = new String(item.getElementsByTagName("rtntext")[0].firstChild.nodeValue);
					}
					
					document.getElementById(mSpanID).innerHTML=mText
				}
			}else {
				if(!waitingSet) {
					if(waitDisp) {
						var waitStr = displayWaiting();
						document.getElementById(spanID).innerHTML=waitStr;
					}
					waitingSet = true;
				}
			}
		}

		xmlHttp.open("GET",url,true)
		xmlHttp.send(null)
	}
}


function GetXmlHttpObject(str) { 
	var objXMLHttp=null
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		objXMLHttp = new XMLHttpRequest();
		if (objXMLHttp.overrideMimeType) {
         	// set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
			objXMLHttp.overrideMimeType('text/html');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			objXMLHttp = new ActiveXObject("Msxml2.XMLHTTP");
			objXMLHttp.loadXML(str);
		} catch (e) {
			try {
				objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
				objXMLHttp.loadXML(str);
			} catch (e) {}
		}
	}
	
	return objXMLHttp
}

function getFormValues(fobj) { 
	var str = ""; 
	var valueArr = null; 
	var val = ""; 
	var cmd = ""; 

//	alert("length="+eval("document."+fobj+".elements.length"));
	
	for(var i = 0;i < eval("document."+fobj+".elements.length");i++) { 
//		alert(fobj.elements[i].value);
		switch(eval("document."+fobj+".elements[i].type")) { 
			case "text": 
			case "password":
//				if(valFunc) { 
                    //use single quotes for argument so that the value of 
                    //fobj.elements[i].value is treated as a string not a literal 
//                    cmd = valFunc + "(" + 'fobj.elements[i].value' + ")"; 
//                    val = eval(cmd) 
//                } 
//                str += eval("document."+fobj+".elements[i].name") + "=" + escape(eval("document."+fobj+".elements[i].value")) + "&"; 
                str += eval("document."+fobj+".elements[i].name") + "=" + eval("document."+fobj+".elements[i].value") + "&"; 
                break; 
			case "select-one": 
                str += eval("document."+fobj+".elements[i].name") + "=" + eval("document."+fobj+".elements[i].options[document."+fobj+".elements[i].selectedIndex].value") + "&"; 
                break;
			case "select-multiple":
				while (eval("document."+fobj+".elements[i].selectedIndex") != -1) {
					if ((mIdx=eval("document."+fobj+".elements[i].selectedIndex")) >= 0) {
						str += eval("document."+fobj+".elements[i].name") + "=" + eval("document."+fobj+".elements[i].options[mIdx].value") + "&"; 
						str += "txt_"+eval("document."+fobj+".elements[i].name") + "=" + eval("document."+fobj+".elements[i].options[mIdx].text") + "&"; 
					}
					eval("document."+fobj+".elements[i].options[mIdx].selected = false") ;
//					ob.options[ob.selectedIndex].selected = false;
				}
//                str += eval("document."+fobj+".elements[i].name") + "=" + eval("document."+fobj+".elements[i].options[document."+fobj+".elements[i].selectedIndex].value") + "&"; 
                break;
			case "checkbox":
				if (eval("document."+fobj+".elements[i].checked") == true) {
					str += eval("document."+fobj+".elements[i].name") + "=" + eval("document."+fobj+".elements[i].value") + "&"; 
				}
				break;
			case "hidden":
//                str += eval("document."+fobj+".elements[i].name") + "=" + escape(eval("document."+fobj+".elements[i].value")) + "&"; 
                str += eval("document."+fobj+".elements[i].name") + "=" + eval("document."+fobj+".elements[i].value") + "&"; 
				break;
			case "radio":
				if (eval("document."+fobj+".elements[i].checked") == true) {
					str += eval("document."+fobj+".elements[i].name") + "=" + eval("document."+fobj+".elements[i].value") + "&"; 
				}
				break;
			case "textarea":
				str += eval("document."+fobj+".elements[i].name") + "=" + eval("document."+fobj+".elements[i].value") + "&"; 
				break;
			case "file":
				str += eval("document."+fobj+".elements[i].name") + "=" + eval("document."+fobj+".elements[i].value") + "&"; 
//				alert(str);
				break;
       } 
   } 
   str = str.substr(0,(str.length - 1)); 
   return str; 
}

