net = new Object();
net.ContentLoader = function(url, onload, params) {
	this.onload = onload;
	this.loadXMLDoc(url, params);
}

net.ContentLoader.prototype = {
	loadXMLDoc: function(url, params) {
    try { 
			this.req = new ActiveXObject("Msxml2.XMLHTTP"); 
		}
    catch (e) {
     try  { this.req = new ActiveXObject("Microsoft.XMLHTTP"); }
      catch (e)
        {
          try { this.req = new XMLHttpRequest(); }
          catch (e)
            {
              try { this.req = window.createRequest(); }
              catch (e) { alert(e); }
            }
        }
    }
  	if(this.req) {
  		try {			
  			var loader = this;	
  			this.req.open("POST", url, true);
  			this.req.onreadystatechange = function() {
  				loader.onReadyState.call(loader);
  			}			
				if(params!=null) this.req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 				if (params) this.req.send(params);
				else this.req.send("");
  		} catch(e) {
  			alert(e);
  		}
  	}
	},
	onReadyState: function() {
		var data=null;
		var status=null;
		var req = this.req;
		var ready = this.req.readyState;
		if(ready == 4) {
			status = this.req.status;
			if (statusText[status] === "OK") {
			// operazione avvenuta con successo
				//data = decodeURIComponent(this.req.responseText);
				data = this.req.responseText;
				this.onload(data);
			}
			else {
				// errore di caricamento
				alert( "ATTENZIONE!!! Impossibile effettuare l'operazione richiesta. Errore riscontrato: " + statusText[status]);
			}			  	
		}
	}
}

	// 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";