//Author: SHRA
//Data: 01.04.2009
//Desc: Do some dirty ajax work

function AjaxQuery(commandQuery, param, responseFunc) {
    var url = '/Services/Car/_other/ajaxsupport.php?command=' + escape(commandQuery) + '&param=' + encodeURIComponent(param);
    for (var k = 3; k< arguments.length; k++) {
        I = k - 1;
        url +='&param' + I + '=' + encodeURIComponent(arguments[k]);
    }

    queryContentExecutor(url, 'GET', '', responseFunc, commandQuery);
}

function AjaxQueryPOST(commandQuery, param, responseFunc) {
    var url = '/Services/Car/_other/ajaxsupport.php?command=' + escape(commandQuery) + '&param=' + encodeURIComponent(param);
    var params = '';
    for (var k = 3; k< arguments.length; k++) {
        I = k - 1;
        params +='&param' + I + '=' + encodeURIComponent(arguments[k]);
    }

    queryContentExecutor(url, 'POST', params, responseFunc, commandQuery);
}

function queryContentExecutor(url, httpMethod, params, responseFunc, commandQuery) {
    var http_request = false;
    // Mozilla, Safari, ...
    if (window.XMLHttpRequest) { 
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) { http_request.overrideMimeType("text/xml"); }
    // IE
    } 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) {
        alert("Can't create object of class XMLHTTP");
        return false;
    }

    switch(responseFunc.substr(0, 1)) {
    case ';':
        http_request.onreadystatechange = function() { alertContentsLoad(http_request, responseFunc.substr(1)); };
        break;
    case '!':
        http_request.onreadystatechange = function() { alertContentsMessage(http_request); };
        break;
    default:
        http_request.onreadystatechange = function() { alertContents(http_request, responseFunc, commandQuery); };
    }
    
    if (httpMethod == 'GET') {
        http_request.open("GET", url, true);
        http_request.send(null);
    } else if (httpMethod == 'POST') {
        http_request.open("POST", url, true);
        http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        http_request.send(params);
    }
}

function alertContentsMessage(http_request) {
    //data ready
    if (http_request.readyState == 4) { 
        //data OK result
        if (http_request.status == 200) { 
            if (http_request.responseText != '') alert(http_request.responseText);
        } else { alert("We got the problem in request time."); }
    }
}


//encode form component
function formDataEncode(tFormObject) {
    var elm = tFormObject.elements;
    var str = '', currentElm = null;
    for (var k = 0; k < elm.length; k++)
        if (elm[k].name != '') {
            currentElm = elm[k];
            if (currentElm.type == 'checkbox' && !currentElm.checked) continue;
            str += currentElm.name + '=' + encodeURIComponent(currentElm.value) + '&';
        }
    return str;
}

function alertContentsLoad(http_request, responseObj) {
    //data ready
    if (http_request.readyState == 4) { 
        //data OK result
        if (GID(responseObj) == null) alert('Destination object is null');
        else {
            if (http_request.status == 200) { 
                GID(responseObj).innerHTML = http_request.responseText;
            } else { 
                GID(responseObj).innerHTML = 'error code' + http_request.status;
    //            alert("We got the problem in request time."); 
            }
        }
    }
}

function alertContents(http_request, responseFunc, commandQuery) {
    //data ready
    if (http_request.readyState == 4) { 
        //data OK result
        if (http_request.status == 200) { 
            eval(responseFunc + "(commandQuery, http_request.responseText);");
        } else { alert("We got the problem in request time with http status code = " + http_request.status + ' ' + http_request.statusText); }
    }
}

function Toggle(name) {
    var a = GID(name);
    a.style.display = (a.style.display == 'none' ? 'block' : 'none');
}


function GID(a) {
    return document.getElementById(a);
}
