var xmlreqs = new Array();

function CXMLReq(type, xmlhttp, target, returnurl, returnargstr) 
{
	this.type = type;
	this.xmlhttp = xmlhttp;
	this.target = target;
	this.returnurl = returnurl;
	this.returnargstr = returnargstr;
}
function processReqChange() 
{
	if (typeof(window['xmlreqs']) == "undefined") return;
	
	for (var i=0; i < xmlreqs.length; i++) 
	{
		if (xmlreqs[i].xmlhttp.readyState == 4) 
		{
			if (xmlreqs[i].xmlhttp.status == 200 || xmlreqs[i].xmlhttp.status == 304) 
			{
				// 200 OK
				var text = xmlreqs[i].xmlhttp.responseText;			
				var type = xmlreqs[i].type;
				var target = xmlreqs[i].target;
				var returnurl = xmlreqs[i].returnurl;
				var returnargstr = xmlreqs[i].returnargstr;
				xmlreqs.splice(i,1); 
				i--;
				if (type=='load')
				{
					ShowData(target, text);
				}
				else if (type=='post' && returnurl.length>0)
				{
					LoadData(target, returnurl, returnargstr, 0);
				}
				else if (type=='post' && returnurl.length==0)
				{
					ShowData(target,text);
				}
			} 
			else 
			{
				alert("There was a problem retrieving the XML data:\n" + xmlreqs[i].xmlhttp.statusText);
				xmlreqs.splice(i,1); 
				i--;
			}
		}
	}
} 
function LoadData(target, page, argstr, debug)
{
	var el = document.getElementById(target);
	el.innerHTML = 'Please wait...';
	el.style.display='block';
	if (debug)
	{
		window.open(page+'?'+argstr);
	}
	else
	{
		var xmlhttp=false;

		if (window.XMLHttpRequest) 
		{ // Mozilla, etc.
			xmlhttp=new XMLHttpRequest();
			xmlhttp.onreadystatechange = function() {processReqChange();}
			xmlhttp.open("POST",page,true);
			xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			xmlhttp.send(argstr);
		} 
		else if (window.ActiveXObject) 
		{ // IE
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			if (xmlhttp) 
			{
				xmlhttp.onreadystatechange = function() {processReqChange();}
				xmlhttp.open("POST",page,true);
				xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				xmlhttp.send(argstr);
			}
		}
		var xmlreq = new CXMLReq('load',xmlhttp, target,'', '');
		xmlreqs.push(xmlreq);
	}
}
function PostData(target, page, data_container, returnurl, returnargstr, debug)
{
	var el = document.getElementById(target);
	var argstr=formData2QueryString(document.getElementById(data_container));
	el.innerHTML = 'Please wait...';
	el.style.display='block';
	if (debug)
	{
		window.open(page+'?'+argstr);
	}
	else
	{
		var xmlhttp=false;
		
		if (window.XMLHttpRequest) 
		{ // Mozilla etc.
			xmlhttp=new XMLHttpRequest();
			xmlhttp.onreadystatechange=function() {processReqChange();}
			xmlhttp.open("POST",page,true);
			xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			xmlhttp.send(argstr);
		} 
		else if (window.ActiveXObject) 
		{ // IE
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			if (xmlhttp) {
				xmlhttp.onreadystatechange=function() {processReqChange();}
				xmlhttp.open("POST",page,true);
				xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				xmlhttp.send(argstr);
			}
		}
		var xmlreq = new CXMLReq('post',xmlhttp, target,returnurl, returnargstr);
		xmlreqs.push(xmlreq);
	}
}
function ShowData(target, text)
{
		var el = document.getElementById(target);
		el.innerHTML= text;
		el.style.display='block';
}
function formData2QueryString(docForm) {

	var strSubmitContent = '';
	var formElem;
	var strLastElemName = '';
	
	for (i = 0; i < docForm.elements.length; i++) {
		
		formElem = docForm.elements[i];
		switch (formElem.type) {
			case 'text':
			case 'hidden':
			case 'password':
			case 'textarea':
			case 'select-one':
				strSubmitContent += formElem.name + '=' + escape(formElem.value) + '&'
				break;
				
			case 'radio':
				if (formElem.checked) {
					strSubmitContent += formElem.name + '=' + escape(formElem.value) + '&'
				}
				break;
				
			case 'checkbox':
				if (formElem.checked) {
					if (formElem.name == strLastElemName) {
						if (strSubmitContent.lastIndexOf('&') == strSubmitContent.length-1) {
							strSubmitContent = strSubmitContent.substr(0, strSubmitContent.length - 1);
						}
						strSubmitContent += ',' + escape(formElem.value);
					}
					else {
						strSubmitContent += formElem.name + '=' + escape(formElem.value);
					}
					strSubmitContent += '&';
					strLastElemName = formElem.name;
				}
				break;
				
		}
	}
	
	strSubmitContent = strSubmitContent.substr(0, strSubmitContent.length - 1);
	return strSubmitContent;
}

