/**
 * @version     1.0
 * @author      Raffaele Burla
 * @package     KSTools-JS
 * @copyright   Copyright (C)2009 Klessidrasoft. All rights reserved.
 */

/**
 * Return the XMLHttpRequest depending on browser
 * @return XMLHttpRequest if the browser is recognized, false otherwise;
 */
function getXMLHttpRequest() {
    try {
        //Opera 8.0+, Firefox, Safari
        return new XMLHttpRequest();
    }
    catch (error){
        //Internet Explorer
        try {
            return new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (error) {
            try {
                return new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (error) {
                return false;
            }
        }
    }
}

/**
 * Execute a synchronous call
 * @param {XMLHttpRequest} request XMLHttpRequest
 * @param {String} serverPage Script PHP page
 * @param {String} parameters POST parameters for PHP script
 * @return XMLHttpRequest response text
 */
function syncRequestStart(request, serverPage, parameters) {
    request.open("POST", serverPage, false);
    request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    request.setRequestHeader("Content-length", parameters.length);
    request.setRequestHeader("Connection", "close");
    request.send(parameters);
    return request.responseText;
}

/**
 * Execute a asynchronous call
 * @param {XMLHttpRequest} request XMLHttpRequest
 * @param {String} serverPage Script PHP page
 * @param {String} parameters POST parameters for PHP script
 * @param {String} load HTML component to be replaced
 */
function asyncRequestStart(request, serverPage, parameters, load) {
    var onreadystate = function() {
        if (request.readyState == 4) {
            if (request.status == 200) {
                load.innerHTML = request.responseText;
            }
        }
    }
    request.onreadystatechange = onreadystate;
    request.open("POST", serverPage, true);
    request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    request.setRequestHeader("Content-length", parameters.length);
    request.setRequestHeader("Connection", "close");
    request.send(parameters);
}