var req;
var AJAX_TID = 0;

// handle error messages
function popup_error(msg) {
//    alert(msg);
}

// send url
function ajax_send(url) {

    if(window.XMLHttpRequest) {

        // Non-IE browsers
        req = new XMLHttpRequest();


    } else if(window.ActiveXObject) {

        // IE
        try {
            req = new ActiveXObject("Msxml2.XMLHTTP");
        } catch(e) {
            try {
                req = new ActiveXObject("Microsoft.XMLHTTP");
            } catch(e) {
                alert(e);
            }
        }
    } else {
        // AJAX funktioniert nicht beim Client
        return;
    }

    req.onreadystatechange = ajax_eval;

    // POST IT !
    if (url.match(/\?/)) {

        var data = url.split("?");
        url = data.shift();
        params = data.join("?");

        params += "&AJAX_TID="+AJAX_TID;
    } else {
        params = "AJAX_TID="+AJAX_TID;
    }

    AJAX_TID++;

    req.open("POST", url, true);

    req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    req.setRequestHeader("Content-length", params.length);
    req.setRequestHeader("Connection", "close");
    req.send(params);
}

function ajax_eval() {
    switch (req.readyState) {
        case 0 :
        case 1 :
        case 2 :
        case 3 :
            break;
        case 4 :
            if (req.status == 200) {
                ajax_handler(req.responseText);
            } else {
                popup_error("AJAX: "+ajax_get_error_message(req.status)+" ["+req.status+"]");
            }
            break;
        default :
            alert("ERROR");
    }
}

function ajax_handler(response) {

    if (response == "") {
        popup_error("AJAX: No valid response!");
	return;
    }
    response = eval("("+response+")");

    var command = response.command;

    if (eval("window."+command+" == null")) {
        popup_error("Handler ["+command+"] does not exist!");
	return;
    }

    if (response.file != null) {
        lb2_current_file = response.file;
    }


    var content = response.content;
    eval("window."+command+"(content)");
}

function ajax_get_error_message(err) {
    switch (err) {
       case 400:
           return "Bad Request";
       case 401:
           return "Unauthorized";
       case 402:
           return "Payment Required";
       case 403:
           return "Forbidden";
       case 404:
           return "Not Found";
       default:
           return "Unknown";
    }
}
