Subversion Repositories eFlore/Archives.eflore-xul

Rev

Rev 13 | 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('Erreur lors de la création de la 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;
        };
    }
}