var _ajax_enabled = true;

function setValue(pageUrl, containerId, displayOption, resultHandler)
{
	_xmlHttpRequest('GET', pageUrl, null, resultHandler, containerId, false, displayOption, null);
}

function getPage(pageUrl, containerId, displayOption, resultHandler, waitImageStyle)
{
	_xmlHttpRequest('GET', pageUrl, null, resultHandler, containerId, true, displayOption, waitImageStyle);
}

function postPage(formId, pageUrl, containerId, displayOption, resultHandler, waitImageStyle)
{
	var postStr = (formId != null ? _getFormPostString(formId) : '');
	_xmlHttpRequest('POST', pageUrl, postStr, resultHandler, containerId, true, displayOption, waitImageStyle);
}

function _getFormPostString(formId)
{
	var theForm = document.getElementById(formId);
	var count = theForm.elements.length;
	var postStr = '';
	
	for (var i = 0; i < count; i++)
	{
		var el = theForm.elements[i];
		if (el.name != '')
		{
			postStr += el.name +'='+ escape(el.value);
			if (i < count)
				postStr += '&';
		}
	}
	
	return postStr;
}

function _showResult(container, result, setInnerHtml)
{
	// Set result from request
	if (result.length == 0)
	{
		if (setInnerHtml)
			container.innerHTML = '';
		else
			container.value = '';
	}
	else
	{
		if (setInnerHtml)
			container.innerHTML = result;
		else
			container.value = result;
	}
}

function _waiting(container, setInnerHtml, imageStyle)
{
	if (setInnerHtml)
		container.innerHTML = '<img src="http://localhost/jegflytter/webroot/images/loading_animation.gif" '+ (imageStyle != null && imageStyle.length > 0 ? 'style="'+ imageStyle +'"' : '') +' alt="..." />';
	else
		container.value = 'Vent...';
}

function _xmlHttpRequest(openMethod, strURL, parmStr, resultHandler, containerId, setInnerHtml, displayOption, waitImageStyle)
{
    var xmlHttpReq = false;

    if (window.XMLHttpRequest) {
		xmlHttpReq = new XMLHttpRequest();
		
		if (xmlHttpReq.overrideMimeType)
			xmlHttpReq.overrideMimeType('text/xml; charset=iso-8859-1');
    }
    else if (window.ActiveXObject)
    {
	    // Older IE versions
    	try {
			xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
		} catch(e) {
			try {
				xmlHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
			} catch(e) {}
		}
    }
    
    if (!xmlHttpReq)
    {
    	alert('XMLHTTP init failed!');
    	return false;
    }
    
    if (displayOption == null || displayOption.length == 0)
    	displayOption = 'block';

	xmlHttpReq.open(openMethod, strURL, true);
    xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    /*if (parmStr != null)
    	xmlHttpReq.setRequestHeader('Content-Length', parmStr.length);*/
    xmlHttpReq.setRequestHeader('Connection', 'close');
    xmlHttpReq.onreadystatechange = function()
    {
    	var container = null;
    	if (containerId != null && containerId.length > 0)
    	{
			container = document.getElementById(containerId);
			container.style.display = displayOption;
		}

		if (xmlHttpReq.readyState == 4)
		{
			if (resultHandler != null && resultHandler.length > 0)
			{
				if (resultHandler.indexOf('(', 0) > 0 && resultHandler.indexOf(')', 0) > 0)
				{
					// Show result
					_showResult(container, xmlHttpReq.responseText, setInnerHtml);
					
					// Call result handler/ post-function
					eval(resultHandler);
				}
				else
				{
					if (xmlHttpReq.responseText.indexOf('<',0) > -1)
					{
						// Something failed => show output
						if (document.getElementById('messenger') != null)
							showMsg(xmlHttpReq.responseText, true);
						else
							alert(xmlHttpReq.responseText);
					}
					else
					{
						// Send result to result handler
						eval(resultHandler +"('"+ xmlHttpReq.responseText +"')");
					}
					
					// Hide wait image
					if (container != null)
						container.innerHTML = '';
				}
			}
			else if (container != null)
				// Show result in container
				_showResult(container, xmlHttpReq.responseText, setInnerHtml);
		}
		else if (container != null)
			_waiting(container, setInnerHtml, waitImageStyle);
    }
    
    xmlHttpReq.send(parmStr);
}
