///////////////////////////////////
/////// GLOBAL VARIABLES //////////
///////////////////////////////////
var debug         = false;
var showerrors    = true;
var charset       = 'UTF-8';

///////////////////////////////////
///////// ERRORS @ INFO ///////////
///////////////////////////////////
var AJAX_ERROR_1 = 'Your browser does not support AJAX technology.';
var AJAX_ERROR_2 = 'An error occurred while trying to access PHP script with AJAX request.';
var AJAX_ERROR_3 = 'An error occured please try again.';

var LOADING_TEXT = 'Nalagam..';

function showError(message){
    if (showerrors){
        alert(message);
    }
}

function sendRequest(script, params, call_back, method, error_message){
    var http_request = false;
    if (window.XMLHttpRequest){
        http_request = new XMLHttpRequest();
    }else if (window.ActiveXObject){
        try{
            http_request = new ActiveXObject('Msxml2.XMLHTTP');
        }catch (e){
            try{
                http_request = new ActiveXObject('Microsoft.XMLHTTP');
            }catch (e) {}
        }
    }

    if (!http_request){
        showError(AJAX_ERROR_1);
        return false;
    }

    http_request.onreadystatechange = function() { eval(checkHttpRequest)(call_back, error_message, http_request); };

    if (method == 'GET') {
        script = script+'?'+params;
    }

    try{
        http_request.open(method, script, true);
    }catch(ex){
        showError(AJAX_ERROR_2);
    }

    if (method == 'GET') {
        http_request.send(null);
    } else {
        http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset:'+charset);
        http_request.send(params);
    }

    if (debug !== false){
        location.href=url;
    }

    setLoading('show');
}

// RM25022007: Check the request which was called from javascript. When status is done, it returns XML/plain text which was sent from PHP (called site)
function checkHttpRequest(call_back, error_message, request){
    switch(request.readyState) {
        case 0: // Uninitialized
        break;
        case 1: // Loading
        break;
        case 2: // Loaded
        break;
        case 3: // Interactive
        break;
        case 4: // Done!
        if (request.status == 200) {
            eval(call_back)(request);
            setLoading('hide');
        }else{
            setLoading('hide', AJAX_ERROR_3);
            showError(error_message);
        }
        break;
        default:
        break;
    }
    return false;
}

function setLoading(mode, text){
    var lo = document.getElementById('lo');

    if (lo === null) {
        return false;
    }

    //RM09062007 If text is not define, use default
    if (typeof text == "undefined") {
        text = LOADING_TEXT;
    }

    if (mode === 'show'){
        lo.style.display = '';
    }else{
        lo.style.display = 'none';
    }

    lo.innerHTML = LOADING_TEXT;
}
