
function sendXMLHTTPRequest(URI, method, content)
{	
	var xmlhttp = new XMLHttpRequest();
	
	method = (method == 'POST' ? 'POST' : 'GET');
	content = (content ? content : '');
	
	xmlhttp.open(method, URI, true);	
	if (method == 'POST') {
		xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	}
	//xmlhttp.setRequestHeader('Cookie', document.cookie);
	xmlhttp.send(content);
	
	xmlhttp.onreadystatechange = function()
	{
		if(xmlhttp.readyState == 4) {
			if (xmlhttp.responseXML) {
				processXMLResponse(xmlhttp.responseXML);
			}
		}
	};	
}

function requestContent(Module, Location, queryString, showLoadingNode)
{
	// clear feedback container
	if (document.getElementById('GENERAL_FeedbackContainer')) {
		document.getElementById('GENERAL_FeedbackContainer').innerHTML = '';
	}
	
	url = '/'+Module+'/';
	if (Location != '') {
		url = url + Location+'/';
	}
	url = url + '?requestType=xmlhttp&'+queryString;
	
	sendXMLHTTPRequest(url, 'GET');
	
	if (showLoadingNode) {
		document.getElementById(showLoadingNode).innerHTML = '<img src="/Modules/LBXMain/UI/images/loading.gif" alt="loading" />';
	}
}

function requestContentOnce(nodeID, Module, Location, queryString)
{
	document.getElementById(nodeID).style.display = 'block';
	if (document.getElementById(nodeID).innerHTML.match(/^\s*$/)) {
		return requestContent(Module, Location, queryString, nodeID);
	}
	return true;
}

function submitForm(form)
{	
	var content = '';
	for (i = 0; i < form.length; i++) {
		if (i > 0) {
			content = content + '&';
		}
		content = content + form.elements[i].name + '=' + encodeURI(form.elements[i].value);
		form.elements[i].value = '';
	}
	
	sendXMLHTTPRequest(form.getAttribute('action'), 'POST', content);
	
	return false;
}

function requestAction(queryString)
{
	requestContent('General', '', queryString);
}

function processXMLResponse(XML)
{
	var nodeList = XML.getElementsByTagName('HTMLContent');
	for (i = 0; i < nodeList.length; i++) {
		var targetNodeId = nodeList[i].getAttribute('targetNode');		
		if (targetNodeId && $(targetNodeId)) {
			var content = (new XMLSerializer).serializeToString(nodeList[i]);
			content = content.replace(/^<HTMLContent.+?>/, '');
			content = content.replace(/<\/HTMLContent>$/, '');
			$(targetNodeId).innerHTML = content;
			if (targetNodeId == 'GENERAL_FeedbackContainer') {
				fb = $(targetNodeId).getElementsByTagName('P');
				for (j = 0; j < fb.length; j++) {
					new Effect.Highlight(fb[j], { startcolor:'#ffffff' });
				}
			}
		}
	}
	var nodeList = XML.getElementsByTagName('JavaScript');
	for (i = 0; i < nodeList.length; i++) {
		eval(nodeList[i].childNodes[0].nodeValue);
	}
}