var debug = true;

function sendHttpRequest(method, url, params, callback) {
    var request;
    if (window.XMLHttpRequest)
        request = new XMLHttpRequest();
    else if (window.ActiveXObject)
        request = new ActiveXObject("Microsoft.XMLHTTP");
    else
        return null;
        
    if (method)
        method = method.toUpperCase();
    else
        method = "GET";
    var fullURL = url;
    
    if (params && method == "GET")
        fullURL += "?" + params;
    var async = false;
    if (callback)
        async = true;

    request.open(method, fullURL, async);
    
    function calbackWrapper() {
        if (async && request.readyState == 4) {
            if (request.status == 200)
                callback(request);
            else
                alert("napaka!"+"\n"+request.responseText)
                //reportError(request, url, params);
        }
    }
    if (async)
        request.onreadystatechange = calbackWrapper;

    var body = null;
    if (method == "POST") {
        request.setRequestHeader("Content-Type",
            "application/x-www-form-urlencoded");
        if (params)
            body = params;
    }
    request.send(body);
    if (!async && (request.readyState != 4
            || request.status != 200)) {
        reportError(request, url, params);
        return null;
    }
    return request;
}

function reportError(request, url, params) {
    if (debug) {
        if (request.status != 200) {
            if (request.statusText)
                alert(request.statusText);
            else
                alert("HTTP Status: " + request.status);
        } else
            alert("Response Error");
        if (params)
            url += "?" + params;
        document.location = url;
    }
}

function abortRequest(request) {
    function doNothing() {
    }
    request.onreadystatechange = doNothing;
    request.abort();
    delete feedRequest;
}

