/* ---------------------------- */
/* XMLHTTPREQUEST ENABLE        */
/* ---------------------------- */

function createAjaxRequest()
{
	try
	{
		// FIREFOX MFL
		request = new XMLHttpRequest();
	}
	catch(error1)
	{
		try
		{
			// VISSA INTERNET EXPLORER
			request = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(error2)
		{
			try
			{
				// ÖVRIGA INTERNET EXPLORER
				request = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch(error3)
			{
				// ETT FEL HAR UPPSTÅTT
				request = false;
				alert('ERROR: ' + error3.description)
			}
		}
	}
	return request;
}


/* -------------------------- */
/* GET FUNCTION               */
/* -------------------------- */

function requestGET(url, query, request)
{
	// TIME ANVÄNDS PGA CACHNING I BROWSER
	var currentTime = new Date().getTime();
	
	request.open("GET", url+'?'+query+'&currentTime&ajax=1', true);
	request.send(null);
}


/* -------------------------- */
/* POST FUNCTION              */
/* -------------------------- */

function requestPOST(url, query, request)
{
	request.open("POST", url+'?ajax=1', true);
	request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	request.send(query);
}


/* -------------------------- */
/* CALLBACK FUNCTION          */
/* -------------------------- */

function axajCallback(callback, result)
{
	// EVAL FÖR ATT BLA KUNNA SKICKA MED SCRIPT
	eval(callback + '(result)');
}


/* -------------------------- */
/* DOAJAX FUNCTION            */
/* -------------------------- */

function doAjax(url, query, callback, messageLoad, messageOk, requestType, getxml)
{
	// SKAPA EN INSTANS AV XMLHTTPREQUEST
	var myRequest = createAjaxRequest();
	
	myRequest.onreadystatechange = function()
	{
		// READYSTATE 4 = LADDAT OCH KLART
		if(myRequest.readyState == 4)
		{
			// STATUS 200 = OK
			if(myRequest.status == 200)
			{
				// LADDAR + OK MEDDELANDE
				if(document.getElementById('ajaxResultsLoad') != null)
				{
					// TA BORT LADDAR-MEDDELANDE
					setTimeout("document.getElementById('ajaxResultsLoad').style.display = 'none'", 400);
				}

				// VISA OK-MEDDELANDE
				if(document.getElementById('ajaxResultsOk') != null && messageOk != null && messageOk != "")
				{
					setTimeout("document.getElementById('ajaxResultsOk').style.display = 'block'", 400);
					//document.getElementById('ajaxResultsOk').innerHTML = '<img src="images/design/ajax_icon_ok.gif" class="ajaxLoadImg" alt="" title"" />' + messageOk;
					document.getElementById('ajaxResultsOk').innerHTML = messageOk;
					setTimeout("document.getElementById('ajaxResultsOk').style.display = 'none'", 1700);
				}

				// RESULTAT = RESPONSETEXT
				var result = myRequest.responseText;

				// OM XML RESULTAT = RESPONSEXML
				if(getxml == 1)
				{
					result = myRequest.responseXML;
				}

				// UTFÖR CALLBACKFUNKTION
				axajCallback(callback, result)
			}
			else
			{
				// VISA FEL-MEDDELANDE
				if(document.getElementById('ajaxResultsError'))
				{
					document.getElementById('ajaxResultsError').style.display = 'block';
					//document.getElementById('ajaxResultsError').innerHTML = '<img src="images/design/ajax_icon_error.gif" class="ajaxLoadImg" alt="" title"" />Ett fel har uppstått!';
					document.getElementById('ajaxResultsError').innerHTML = 'Ett fel har uppstått!';
					setTimeout("document.getElementById('ajaxResultsError').style.display = 'none'", 3500);
				}

				// ETT FEL HAR UPPSTÅTT
				alert('ERROR ' + myRequest.status);
			}
		}
		else if(myRequest.readyState == 1)
		{
			// VISA LADDAR-MEDDELANDE FÖR ALLA READYSTATE UTOM 4
			if(document.getElementById('ajaxResultsLoad') != null && messageLoad != null && messageLoad != "")
			{
				document.getElementById('ajaxResultsLoad').style.display = 'block';
				document.getElementById('ajaxResultsLoad').innerHTML = '<img src="images/design/ajax_loader_dark_transparent.gif" class="ajaxLoadImg" alt="" title"" />' + messageLoad;
			}
		}
	}
	
	// REQUEST TYPE GET ELLER POST
	if(requestType == 'POST' || requestType == 'post' || requestType == 'Post')
	{
		requestPOST(url, query, myRequest);
	}
	else
	{
		requestGET(url, query, myRequest);
	}
}
