
/** FUNZIONI */

	// funzione per assegnare un oggetto XMLHttpRequest
		function assegnaXMLHttpRequest() {
			var
				XHR = null,
				browserUtente = navigator.userAgent.toUpperCase();
			if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object")
				XHR = new XMLHttpRequest();
			else if(window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0) {
				if(browserUtente.indexOf("MSIE 5") < 0)
					XHR = new ActiveXObject("Msxml2.XMLHTTP");
				else
					XHR = new ActiveXObject("Microsoft.XMLHTTP");
			}
			return XHR;
		};


	// funzione per prendere un elemento con id univoco
		function prendiElementoDaId(id_elemento) {
			var elemento;
			if(document.getElementById)
				elemento = document.getElementById(id_elemento);
			else
				elemento = document.all[id_elemento];
			return elemento;
		};
		
    /* 
    Wrapper function for constructing a request object.
       Parameters:
       reqType: The HTTP request type, such as GET or POST.
           url: The URL of the server program.
        asynch: Whether to send the request asynchronously or not. 
    */
    function httpRequest(reqType,url,asynch)
    {
        //Mozilla-based browsers
        if(window.XMLHttpRequest)
        {
            request = new XMLHttpRequest(  );
        } 
        else if (window.ActiveXObject)
        {
            request=new ActiveXObject("Msxml2.XMLHTTP");
            if (! request){
                request=new ActiveXObject("Microsoft.XMLHTTP");
            }
        }
        //the request could still be null if neither ActiveXObject
        //initialization succeeded
        if(request){
            initReq(reqType,url,asynch);
        } else {
            alert("Your browser does not permit the use of all "+
                  "of this application's features!");
        }
    }
    /* Initialize a request object that is already constructed */
    function initReq(reqType,url,bool){
        /* Specify the function that will handle the HTTP response */
       
        request.onreadystatechange = handleResponse;    
        request.open(reqType,url,bool);
        request.send(null);
    
    }

    //event handler for XMLHttpRequest
    function handleResponse(  ){
            
        if(request.readyState == readyState.COMPLETATO){
            if(request.status == 200){
                alert(request.responseText);
            } else {
                alert("A problem occurred with communicating between "+
                      "the XMLHttpRequest object and the server program.");
            }
        }//end outer if
    }
    
    
    <!-- URL encoding
    function encode(str) {
	    var result = "";
	
	    for (i = 0; i < str.length; i++) {
   		    if (str.charAt(i) == " ") result += "+";
   		    else result += str.charAt(i);
   	  }
   	
   	  return escape(result);
    }
    //-->
   
    <!-- URL decoding
    function decode(str) {
     	 var result = "";
    	 return encodeURI(result);
    }
    //--> 

/** OGGETTI / ARRAY */

  // serve per capire se il bwowser supporta ajax
    var ajax = assegnaXMLHttpRequest();

	// oggetto di verifica stato
		var readyState = {
			INATTIVO:	0,
			INIZIALIZZATO:	1,
			RICHIESTA:	2,
			RISPOSTA:	3,
			COMPLETATO:	4
		};

	// array descrittivo dei codici restituiti dal server
	// [la scelta dell' array è per evitare problemi con vecchi browsers]
		var statusText = new Array();
		statusText[100] = "Continue";
		statusText[101] = "Switching Protocols";
		statusText[200] = "OK";
		statusText[201] = "Created";
		statusText[202] = "Accepted";
		statusText[203] = "Non-Authoritative Information";
		statusText[204] = "No Content";
		statusText[205] = "Reset Content";
		statusText[206] = "Partial Content";
		statusText[300] = "Multiple Choices";
		statusText[301] = "Moved Permanently";
		statusText[302] = "Found";
		statusText[303] = "See Other";
		statusText[304] = "Not Modified";
		statusText[305] = "Use Proxy";
		statusText[306] = "(unused, but reserved)";
		statusText[307] = "Temporary Redirect";
		statusText[400] = "Bad Request";
		statusText[401] = "Unauthorized";
		statusText[402] = "Payment Required";
		statusText[403] = "Forbidden";
		statusText[404] = "Not Found";
		statusText[405] = "Method Not Allowed";
		statusText[406] = "Not Acceptable";
		statusText[407] = "Proxy Authentication Required";
		statusText[408] = "Request Timeout";
		statusText[409] = "Conflict";
		statusText[410] = "Gone";
		statusText[411] = "Length Required";
		statusText[412] = "Precondition Failed";
		statusText[413] = "Request Entity Too Large";
		statusText[414] = "Request-URI Too Long";
		statusText[415] = "Unsupported Media Type";
		statusText[416] = "Requested Range Not Satisfiable";
		statusText[417] = "Expectation Failed";
		statusText[500] = "Internal Server Error";
		statusText[501] = "Not Implemented";
		statusText[502] = "Bad Gateway";
		statusText[503] = "Service Unavailable";
		statusText[504] = "Gateway Timeout";
		statusText[505] = "HTTP Version Not Supported";
		statusText[509] = "Bandwidth Limit Exceeded";
