//Set default http_request to false for initiation
var http_request = false;

function request(callbackID, url, rid)
{
    http_request = false;

    // Mozilla, Safari, Opera and all other browsers use this request
    if (window.XMLHttpRequest)
    {
        http_request = new XMLHttpRequest();
        /*
        NOTE:
           Some versions of the mozilla browsers won't work if the response from the
           server doesn't have an XML mime-type.
           In order to fix this, we can use an extra function to override the header sent by the server. But first we check..
        */
        if (http_request.overrideMimeType)
        {
            http_request.overrideMimeType('text/xml');
        }
    } // Only IE uses this, NOTE: Active X Object
    else if (window.ActiveXObject)
    {
        try
        {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e)
        {
            try
            {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e) {
            }
        }
    }
    //If still false, then XMLHTTP instance is not created
    if (!http_request)
    {
        alert('Cannot create an XMLHTTP instance');
        return false;
    }

    http_request.onreadystatechange = function() {

        if (http_request.readyState == 4)
        {
            if (http_request.status == 200)
            {
                //alert(http_request.responseText);
                fadeOutAndIn(callbackID, http_request.responseText);

            }
            else
            {
                alert('Error with request');
            }
        }
    }

    http_request.open('GET', url, true);
    http_request.send(null);
}

function makePOSTRequest(url, parameters, elementId)
{
    http_request = false;

    // Mozilla, Safari, Opera and all other browsers use this request
    if (window.XMLHttpRequest)
    {
        http_request = new XMLHttpRequest();
        /*
        NOTE:
           Some versions of the mozilla browsers won't work if the response from the
           server doesn't have an XML mime-type.
           In order to fix this, we can use an extra function to override the header sent by the server. But first we check..
        */
        if (http_request.overrideMimeType)
        {
            http_request.overrideMimeType('text/xml');
        }
    } // Only IE uses this, NOTE: Active X Object
    else if (window.ActiveXObject)
    {
        try
        {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e)
        {
            try
            {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e) {
            }
        }
    }
    //If still false, then XMLHTTP instance is not created
    if (!http_request)
    {
        alert('Cannot create an XMLHTTP instance');
        return false;
    }

    http_request.onreadystatechange = function() {


            if (http_request.readyState == 4)
            {

                if (http_request.status == 200)
                {

                result = http_request.responseText;
                document.getElementById(elementId).innerHTML = result;
            }
            else
            {
                alert('Error with request');
            }
        }
    }
    //alert(url + "?" + parameters);
    http_request.open('GET', url + "?" + parameters, true);
    //alert(parameters);
    http_request.send(null);



}


function fadeOutAndIn(callbackID, responseText) {
    var duration = 1000;

    setTimeout("dojo.lfx.html.fadeOut(\'" + callbackID + "\', 300).play();",0);

    DWRUtil.setValue(callbackID,"loading");

    try{
        setTimeout("DWRUtil.setValue(\'" + callbackID + "\',\'" + trimString(responseText) + "\');",400);
    }catch (e){
        setTimeout("dojo.html.setOpacity(document.getElementById(\'" + callbackID + "\'), 1);", 1000);
    }

    setTimeout("dojo.lfx.html.fadeIn(\'" + callbackID + "\', 300).play();",500);

    //TODO - If element opacity not 100% then change it
    

}

function fillElement(callbackID, responseText, duration) {
    setTimeout("DWRUtil.setValue(\'" + callbackID + "\',\'" + trimString(responseText) + "\');", duration);
}

function trimString(str) {
    str = this != window? this : str;
    var retval;
    retval = str.replace(/^\s+/g, '').replace(/(\s)\s/g, '').replace(/'/g, "\\'");
    return retval;
}

function submitForm(formName){
    document.forms[formName].submit();
}

