function clientRequestResponse(url, data, method)
{
	var req = false;
	// For Safari, Firefox, and other non-MS browsers
	if (window.XMLHttpRequest) 
	{
		try 
		{
			req = new XMLHttpRequest();
	    } 
		catch (e) 
		{
			req = false;
		}
	}
	else if (window.ActiveXObject) 
	{
    // For Internet Explorer on Windows
		try 
		{
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) 
		{
			try 
			{
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (e) 
			{
				req = false;
			}
		}
	}
	
	if (req) 
	{
    	// Synchronous request, wait till we have it all
		var svrdata = null;
		if(data)
		{
			svrdata = "";
			for (var v in data)
			{
				svrdata += v+'='+escape(data[v])+'&';
			}
		}

		if(svrdata)
		{
			svrdata = ''+svrdata+'rndid=' + (Math.random()*100);
		}
		else
		{
			svrdata = 'rndid=' + (Math.random()*100);
		}
		
		try
		{
			req.open(method, url, false);
			req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
			req.send(svrdata);
		}
		catch(e)
		{
			alert('Error: '+e.message);
			__error = 1;
		}
		
		return req.responseText;
	} 
	else 
	{
		return null;
	}
}

function clientRequest(id, url, data, method) 
{
	var element = document.getElementById(id);
	var resp = '';
	
	if (!element) 
	{
		alert("Bad id passed. Missing div or span element with id: " + id);
		return;
	}
	else
	{
		resp = clientRequestResponse(url, data, method)
	}
	
	element.innerHTML = resp;
}

function parse_form_vars_to_array(theform)
{
	var a = new Array();
	for(var i = 0;i < theform.elements.length;i++)
	{
		a['__'+theform.elements[i].name] = '';
	}
	
	for(var i = 0;i < theform.elements.length;i++)
	{
		str = '';
		str = get_form_input_value(theform.elements[i]);
		if(str)
		{
			a['__'+theform.elements[i].name] = str;
		}
	}
	return a;
}

function get_form_input_value(obj)
{
	var str = null;
	switch(obj.type)
	{
		case 'text':
		case 'textarea':
		case 'password':
		case 'button':
		case 'hidden':
		case 'image':
		case 'file':
		{
			str = obj.value;
		}
		break;
		case 'checkbox':
		{
			if(obj.checked)
			{
				str = obj.value;
			}
		}
		break;
		case 'select-one':
		{
			str = obj.options[obj.selectedIndex].value;
		}
		break;
		case 'select-multiple':
		{
			for(var x = 0;x < obj.options.length;x++)
			{
				if(obj.options[x].selected && obj.options[x].value)
				{
					if(str)
					{
						str += obj.options[x].value+',';
					}
					else
					{
						str = obj.options[x].value+',';
					}
				}
			}
			if(str)
			{
				str = str.substr(0,str.length-1);
			}
		}
		break;
		case 'radio':
		{
			if(obj.checked)
			{
				str = obj.value;
			}
		}
		break;
	}
	return str;
}

