// Generic AJAX Functions
// Eg http://www.ecats.co.uk/pcpro/ajax/innerHTML.html

var xmlHttp;
var divTarget;
var htmlStart = "";
var htmlEnd = "";
var ajaxAction = "";
var ajaxCBFunc = "";

var READYSTATE_CREATED = 0;
var READYSTATE_READYTOSEND = 1;
var READYSTATE_SENT = 2;
var READYSTATE_RECEIVING = 3;
var READYSTATE_FINISHED = 4;

// Create the HttpRequest object. Browser-specific
function createXMLHttpRequest() 
{
    if (window.ActiveXObject) 
    {
		// Internet Explorer
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    } 
    else if (window.XMLHttpRequest) 
    {
		// Mozilla, Safari, Opera etc
        xmlHttp = new XMLHttpRequest();
    }
}

// Start the request from the server. Store the target div id also
function AjaxStartRequest(source, action, target, start, end, ajaxcbfuncion) 
{
	ajaxAction = action;
	if (ajaxcbfuncion != null)
	{
    	ajaxCBFunc = ajaxcbfuncion;
	}
	if (action.length > 0)
	{
	    if (source.indexOf("?") >= 0)
	    {
		    source += "&a=" + action;
	    }
	    else
	    {
		    source += "?a=" + action;
	    }
	}
    createXMLHttpRequest();
	divTarget = target;
	htmlStart = start;
	htmlEnd = end;
	//alert (source);
	if (xmlHttp.readyState == READYSTATE_FINISHED || xmlHttp.readyState == READYSTATE_CREATED)
	{
        xmlHttp.onreadystatechange = HandleStateChange;
        xmlHttp.open("GET", source, true);
        xmlHttp.send(null);
	}
}


function AjaxPostData(formName, action, ajaxparam, ajaxcbfuncion)
{
    var actionPage = (action.length > 0) ? action : '/_services/ajaxsvc.php';
    actionPage += '?a=' + ajaxparam;
    if (ajaxcbfuncion != null) 
    {
        ajaxCBFunc = ajaxcbfuncion;
        divTarget = "callback";
    }
    var theForm = document.getElementById(formName);
    var formData = GetFormData(theForm);
    createXMLHttpRequest();
    if (xmlHttp.readyState == READYSTATE_FINISHED || xmlHttp.readyState == READYSTATE_CREATED) 
    {
        xmlHttp.onreadystatechange = HandleStateChange;

        xmlHttp.open("POST", actionPage, true);
        xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlHttp.setRequestHeader("Content-length", formData.length);
        xmlHttp.setRequestHeader("xmlHttp", "close");
        xmlHttp.send(formData);
        return (xmlHttp);

    }

}



// State change event handler. If request result returned, set the
// return value as the innerHTML in the target div
function HandleStateChange() 
{
    if(xmlHttp.readyState == READYSTATE_FINISHED) 
    {
        if(xmlHttp.status == 200)
        {
			if (divTarget != null)
			{
//				if (divTarget == "callback")
//				{
				    if (ajaxCBFunc != "")
				    {
				        eval(ajaxCBFunc + "(ajaxAction, htmlStart + xmlHttp.responseText + htmlEnd);");
				    }
				    else
				    {
    					AjaxCallBack(ajaxAction, htmlStart + xmlHttp.responseText + htmlEnd);
				    }
					return;
//				}
//				else
//				{
//					switch (document.getElementById(divTarget).tagName)
//					{
//						case "div":
//							document.getElementById(divTarget).innerHTML = htmlStart + xmlHttp.responseText + htmlEnd;
//							break;
//						default:
//							alert (htmlStart + xmlHttp.responseText + htmlEnd);
//							break;
//					}
//				}
			}
			else
			{
				alert (htmlStart + xmlHttp.responseText + htmlEnd);
			}
        }
    }
}
