



// ----------------------------------------------------------------------------------


function ajax_trim(str, chars) {
    return ajax_ltrim(ajax_rtrim(str, chars), chars);
}

function ajax_ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function ajax_rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");

}




/* -------------------- CURRENT AJAX FUNCTIONS --------------------------- */

var ajax_hForm = null;
var ajForm_open = false;

var xmlHttp;
var ajaxRequest = null;
var ajaxTimeout;



function ajaxAbort()
{

	ajaxRequest.abort();

	if (ajaxRequest!=null)
	{
		try
		{
			ajaxRequest.abort();
		}
		catch(er) {}
	}
	ajaxDone();
	
}





function ajaxPleaseWait()
{


	if (!(ajForm_open))
	{

		ajax_hForm = document.createElement("div");
		ajax_hForm.style.display = "block";
		ajax_hForm.style.position = "absolute";
		var spY = 0;
		try { spY = window.pageYOffset ? window.pageYOffset : document.documentElement.scrollTop; } catch(er) { }
		ajax_hForm.style.top = spY + "px";
		ajax_hForm.style.left = "0px";
		ajax_hForm.style.width = "99%";
		ajax_hForm.style.height = "99%";
		ajax_hForm.style.backgroundColor = "#eee";
		ajax_hForm.style.padding = "10px";
		
		ajax_hForm.style.textAlign = "center";
		ajax_hForm.style.verticalAlign = "middle";
		ajax_hForm.style.filter = "alpha(opacity=60)";
		ajax_hForm.style.opacity = "0.6";
		
		ajax_hForm.style.zIndex = 1000;
		ajax_hForm.innerHTML += "<div style='clear:both;'></div>";
		document.body.appendChild(ajax_hForm);

		ajForm_open = true;
		ajax_hForm.innerHTML = "<h3>Please wait...</h3>";
		ajax_hForm.innerHTML += "<p><img style='border:3px solid #555;' alt='' src='"+SiteDomain+"/images/gears_animated.gif' /></p>";
//		ajax_hForm.innerHTML += "<p><a href=\"ajaxCancel();\">[cancel]</a></p>";

	}
	
	return ajax_hForm;
	
}



function ajaxDone()
{
	try
	{
	
		if (ajax_hForm!=null)
		{
			document.body.removeChild(ajax_hForm);
			ajForm_open = false;
			ajax_hForm = null;
		}
		if (ajaxTimer!=null)
		{
			clearInterval(ajaxTimer);
			ajaxTimer = null;
			ajaxTime = 0;
		}
		
	}
	catch(er) {}
}








// ------------------------------------------------------------------------
// HELPFUL: http://www.aleixcortadellas.com/main/2009/03/01/ajax-post/
// ------------------------------------------------------------------------



function ajax(method,url,params)
{

	ajaxPleaseWait();

	method = method.toUpperCase();

	if (!(params) || (params==null))
	{
		params = "";
	}

	xmlHttp=GetXmlHttpObject();
	ajaxRequest = xmlHttp;
	
	xmlHttp.onreadystatechange=function ()
	{
//		setTimeout("ajaxAbort();",2000);
		if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
		{
			clearTimeout(ajaxTimeout);
		}
	};
	// defaults to 'get' in case of 'passive/active' nonsense from before
	if (method=="POST")
	{
		xmlHttp.open("POST", url, false);
		ajaxTimeout = setTimeout(ajaxAbort,2000);
		xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xmlHttp.setRequestHeader("Content-length", params.length);
		xmlHttp.setRequestHeader("Connection", "close");
		xmlHttp.send(params);
	}
	else
	{
		if (params!="")
		{
			xmlHttp.open("GET",url+"?"+params,false);
		}
		else
		{
			xmlHttp.open("GET",url,false);
		}
		xmlHttp.send(null);
	}
	var ajaxReturnValue = ajax_trim(xmlHttp.responseText);
	ajaxRequest = null;
	
	ajaxDone();
	
	return ajaxReturnValue;
}



function GetXmlHttpObject()
{
  var xmlHttp=null;
  try
  {
    // Firefox, Opera 8.0+, Safari, etc
    xmlHttp=new XMLHttpRequest();
  }
  catch (e)
  {
    // Internet Explorer
    try
    {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    {
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
  return xmlHttp;
}

/* -------------------- END AJAX FUNCTIONS --------------------------- */








