Subversion Repositories eFlore/Archives.eflore-xul

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
Fonction de recuperation d'infos sur le server

PENSER A METTRE : 
connectionType = "direct";
timeOut = 120;
DANS LA FONCTION APPELANT connection !!!
*/

/* Use XMLHttpRequest to make a connection*/
function connection( qString ) {
    /*Create the Object*/
    try {
        var req = new XMLHttpRequest();
        req.overrideMimeType("text/xml");
    }catch (e){
        alert('Error creating the connection!');
        return;
    }

    try {
        //Set Permission only in case of direct connection
        if(connectionType == "direct") {
            netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
    }

    req.open("GET",qString,true);
    req.send(null);

    } catch (e) {
        alert('An error has occured: '+e);
        return;
    }

    //TimeOut
    var iter = timeOut;
    var loaded = false;

    var checkLoad = function () {
        if(loaded) {
            clearInterval(intervalID);
        } else if(iter == 0) {
            reqAbort();
            alert('Connection has timed out. Aborted after '+ timeOut + ' seconds');
        } else {
            iter--;
        }
    };

    var intervalID =  setInterval(checkLoad,1000);

    function stopConnection(e) {
        if(e.keyCode == 27 && req) {
            reqAbort();
        }
    }

    function reqAbort() {
        if(req) req.abort();
        clearInterval(intervalID);
    }

    req.onload = function() {
        switch(req.readyState) {
            case 1,2,3:
            break;
            case 4:
                loaded = true;
                if(req.status !=200) {
                    alert('The server respond with a bad status code: '+req.status);
                } else {
                    //Work around for Moz 1.3
                                        parseCallback( req.responseText );
                }
            break;
        };
    }
}