var http_request = false;

// -------- START XMLHTTP Post -------- //

function xmlhttpPost(strURL, strSubmit, strResultFunc) {

	var xmlHttpReq = false;
	
	/*@cc_on @*/
	/*@if (@_jscript_version >= 5)
	// JScript gives us Conditional compilation, we can cope with old IE versions.
	// and security blocked creation of the objects.
	try {
	xmlHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
	try {
	xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
	} catch (E) {
	xmlHttpReq = false;
	}
	}
	@end @*/	
	if (!xmlHttpReq && typeof XMLHttpRequest!='undefined') {
		try {
			xmlHttpReq = new XMLHttpRequest();
		} catch (e) {
			xmlHttpReq=false;
		}
	}
	if (!xmlHttpReq && window.createRequest) {
		try {
			xmlHttpReq = window.createRequest();
		} catch (e) {
			xmlHttpReq=false;
		}
	}

	xmlHttpReq.open('POST', strURL, true);
	xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xmlHttpReq.onreadystatechange = function()
	{
		if (xmlHttpReq.readyState == 4)
		{
			eval(strResultFunc + '(xmlHttpReq.responseText);');
		}
	}
	xmlHttpReq.send(strSubmit);
}

// -------- END XMLHTTP Post -------- //


// -------- START Convert form data to url encoded query string -------- //

function formData2QueryString(docForm)
{
	var submitContent = '';
	var formElem;
	var lastElemName = '';

	for (i = 0; i < docForm.elements.length; i++)
	{
		formElem = docForm.elements[i];
		switch (formElem.type)
		{

			// Text fields, hidden form elements
			case 'text':
			case 'hidden':
			case 'password':
			case 'textarea':
			case 'select-one':
			submitContent += formElem.name + '=' + escape(formElem.value) + '&'
			break;

			// Radio buttons
			case 'radio':
			if (formElem.checked)
			{
				submitContent += formElem.name + '=' + escape(formElem.value) + '&'
			}
			break;

			case 'select-multiple':
			var selectLength = formElem.length;
			var selectedCount = 0;
			var n;
			submitContent += formElem.name + '='
			for(n=selectLength-1; n>=0; n--)
			{
				if(formElem.options[n].selected)
				{
					// alert(formElem.options[n].value);
					submitContent += escape(formElem.options[n].value) + '#'
					selectedCount++;
				}
			}
			if(selectedCount > 0)
			{
				submitContent = submitContent.substr(0, submitContent.length - 1);
			}
			submitContent += '&'
			break;

			// Checkboxes
			case 'checkbox':
			if (formElem.checked)
			{
				// Continuing multiple, same-name checkboxes
				if (formElem.name == lastElemName)
				{
					// Strip of end ampersand if there is one
					if (submitContent.lastIndexOf('&') == submitContent.length-1)
					{
						submitContent = submitContent.substr(0, submitContent.length - 1);
					}
					// Append value as comma-delimited string
					submitContent += ',' + escape(formElem.value);
				}
				else
				{
					submitContent += formElem.name + '=' + escape(formElem.value);
				}
				submitContent += '&';
				lastElemName = formElem.name;
			}
			break;

		}
	}
	// Remove trailing separator
	submitContent = submitContent.substr(0, submitContent.length - 1);
	return submitContent;
}

// -------- END Convert form data to url encoded query string -------- //


// -------- START Post form -------- //

function postForm(url, obj, resultFunc) {	
	var getstr = formData2QueryString(obj);
	xmlhttpPost(url, getstr, resultFunc)
}

// -------- END Post form -------- //
