/**
 * @author A. Vannetiello 20070401
 */
/**
 * ProprietÃƒÂ  oggetto XMLHTTPREQUEST
 *
 * -onreasystatechange: Associa un gestore di evento da chiamare quando cambia la proprietÃƒÂ  readyState
 * -readyState: Codice numerico che rappresenta lo stato della richiesta
 * -responseText: Risposta del server in formato stringa
 * -responseXML: Risposta del server in forma di oggetto DOM XML
 * -status: Il codice numerico di status HTTP ricevuto dal server
 * -statusText: Descrizione dello status HTTP ricevuto dal server
 */
/**
 * Metodi oggetto XMLHTTPREQUEST
 * -abort: Cancella la richiesta HTTP in corso
 * -getAllResponseHeaders: Recupera i valori di tutti gli headers HTTP
 * -getResponseHeader: Rescupera il valore di un header HTTP dalla risposta
 * -open: Inizializza una richiesta specificando il metodo, la URL e la modaliÃƒÂ  (sincrona, asincrona) della richiesta
 * -send: Invia una richiesta HTTP al server (con i parametri) e riceve una risposta
 * -setRequestHeader: Specifica un header HTTP
 */
/**
 * I valori che puÃƒÂ² assumere readyState dell' oggetto XMLHTTPREQUEST
 * -(0) UNINTIALIZED: L' oggetto ÃƒÂ¨ stato creato, ma non inizializzato (open nn ÃƒÂ¨ stato invocato)
 * -(1) LOADING: L' oggetto ÃƒÂ¨ stato creato, ma send nn ÃƒÂ¨ stato ancora invocato
 * -(2) LOADED: Send ÃƒÂ¨ stato invocato, ma risposta nn ÃƒÂ¨ ancora disponibile
 * -(3) INTERACTIVE: Alcuni dati sono stati ricevuti. La proprietÃƒÂ  responseText contiene parte dei dati
 * -(4) COMPLETED: Tutti i dati sono stati ricevuti e sono disponibili attraverso responseText p responseXML
 */
/**
 * I codi ci di status di HTTP e i relativi valori di statusText
 * -STATUS-
 * -200: ok
 * -201: Created
 * -202: Accepted
 * -203: Non-Authoritative information
 * -204: No Content
 * -205: Reset Content
 * -206: Partial Content
 * -207: Multi-Status
 *
 * -REDIRECTION-
 * -400: Bad Request
 * -401: Unauthorized
 * -403: Forbidden
 * -404: Not Found
 * -405: Method not allowed
 * -406: Not Acceptable
 * -407: Proxy Authentication Request
 * -408: Request Timeout
 * -409: Conflict
 * -410: Gone
 * -411: Length Required
 * -412: Precondition Failed
 * -413: Request Entity Too Large
 * -414: Request-URI Too Long
 * -415: Unsupprted Media Type
 * -416: Request Range Not Satisfiable
 * -417: Expectation Failed
 *
 * -ERRORS-
 * -500: Internal Server Error
 * -501: Not Implemented
 * -502: Bad Gateway
 * -503: Service Unavailable
 * -504: Gateway Timeout
 * -505: HTTP Version Not Supported
 * -509: Bandwidth Limit Exceeded
 */



var error = "";
// var objInner = null;

//secondo il browser istanzio l' oggetto XMLHttpRequest
function getXMLHttpRequest(){
    //alert("istanzio oggeto XMLHttpRequest");
    
	
	if (typeof(XMLHttpRequest) != 'undefined') 
        return new XMLHttpRequest(); //caso FireFox ed altri
    else 
        return new ActiveXObject("Msxml2.XMLHTTP"); //caso IE di WinZoz
}

/**
 * invia una richiesta al server in modo asincrono!
 */
function sendAsync(pageToSend){

    var req = getXMLHttpRequest();

    // funzione che gestisce la risposta
    var onReadyState = function(){
		var risposta = req.responseText;
		// completata la risposta della richiesta alla pagina <pageToSend>
        if (req.readyState == 4) {
			// scrivo la risposta
            if (req.status == 200) {
				document.getElementById("objInner").innerHTML = risposta;	
            }	// caso di errore
            else {
                error = req.statusText;
				document.getElementById("objInner").innerHTML = error;
            }	// dati parzialmente arrivati
		}else if(req.readyState == 3){
			document.getElementById("objInner").innerHTML = "Loading...";
		}
    }
    
	// richiamo la funzione che gestisce la risposta
    req.onreadystatechange = onReadyState;
    req.open("POST", pageToSend, true);
    req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    
    // con parametri
    req.send("param=xyz");
}



//provvede a codificare i parametri da inviare tramite send()
function sendData(param){
    var params = "";
    params = "par1=" + encodeURIComponent(par1);
}



// decodifica codice della proprietà readyState dell ' oggetto XMLHTTPREQUEST
function decodeReadyState(code){
    switch (code) {
        case 0:
            return "UNINTIALIZED: L' oggetto ÃƒÂ¨ stato creato, ma non inizializzato (open nn ÃƒÂ¨ stato invocato)";
        case 1:
            return "LOADING: L' oggetto ÃƒÂ¨ stato creato, ma send nn ÃƒÂ¨ stato ancora invocato";
        case 2:
            return "LOADED: Send ÃƒÂ¨ stato invocato, ma risposta nn ÃƒÂ¨ ancora disponibile";
        case 3:
            return "INTERACTIVE: Alcuni dati sono stati ricevuti. La proprietÃƒÂ  responseText contiene parte dei dati";
        case 4:
            return "COMPLETED: Tutti i dati sono stati ricevuti e sono disponibili attraverso responseText p responseXML";
    }
    
    
}




