	function newXMLHttpRequest(){
		var xmlreq = false;
		
		//Controllo il tipo di oggetto XMLHttpRequest da utilizzare
		if(window.XMLHttpRequest){
			//Per browser non Microsoft come Mozilla
			xmlreq = new XMLHttpRequest();
			//xmlreq.overrideMimeType('text/xml'); //non funziona in IE7
			

		}else if(window.ActiveXObject){
			//Cerco di creare l'oggetto via MS ActiveX
			try{
				//Nuove versioni per browser IE
				xmlreq = new ActiveXObject("Msxml2.XMLHTTP");
					
			}catch(e1){ //Errore riscontrato durante la creazione dell'oggetto
				try{
	
					//Precedenti versioni per browser IE
					xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
				}catch(e2){ //Nuovo errore durante la creazione dell'oggetto
					xmlreq = false;
				}
			}
		}
		//Restituisco l'eventuale oggetto XMLHttpRequest
		return xmlreq;
	}
	
	//--------------------------------------------------------------------------------
	function Carica(PaginaDati, StringaParametri, Elemento, temporizza, tempo){
		//Creo un nuovo oggetto XMLHTTPRequest
		var req = newXMLHttpRequest();

		//Invio la richiesta
		//open( metodo, URL, async )
		req.open("POST", PaginaDati, true);
		req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

		//Invio i dati POST
		req.send(StringaParametri);
		
		//Gestore dell'evoluzione dello stato dell'oggetto req
		req.onreadystatechange = handleResponse(req, ElaboraRisultatoXML, Elemento);
		
		if (temporizza == 'SI'){
			Tempo = window.setTimeout('Carica(PaginaDati, StringaParametri, Elemento, temporizza, tempo)', tempo);
		}

	}
	

	/*
	 * Ritorna una funzione per la gestione dello stato dell'oggetto req.
	 * Ed infine a stato finale raggiunto, invia la risposta XML alla funzione che dovra' gestire il tutto.
	 * req = Istanza XMLHTTPRequest
	 * XMLHandler = nome della funzione a cui passare il risultato XML da gestire
	 */
	function handleResponse(req, XMLHandler, Elemento){

		return function(){
			//Controllo se l'oggetto req ha raggiunto lo stato finale
			if(req.readyState == 4){
				//Inoltre accertiamoci di aver ottenuto il messaggio 200 dal server (tutto ok)
				if (req.status == 200){
					//A questo punto richiamo la funzione che gestira' il risultato XML
					XMLHandler(req.responseText, Elemento);
//					XMLHandler(req.responseXML, Elemento);
//				}else{
//					alert("Errore HTTP: " + req.status);
				}
			}
		}
	}


	/*
	 * XMLResult = Il risultato XML passato da handleResponse
	 * Con questa funzione elaboro il file XML risultante per visualizzare, 
	 * completare o aggiungere dati sulla mia pagina.
	 */
	function ElaboraRisultatoXML(XMLResult, Elemento){
	
//		var xmldoc = XMLResult;
//		var root_node = xmldoc.getElementsByTagName('dato');
//alert(root_node.item(0).firstChild.data);


	
//alert("elabora risultato2");		

		if (Elemento != ''){
			var PassaDati = document.getElementById(Elemento);
			//passa i dati all'elemento in pagina		

			try{
				PassaDati.innerHTML = XMLResult;
//				PassaDati.innerHTML = root_node.item(0).firstChild.data;

			}catch(e){
				PassaDati.innerHTML = "ATTENZIONE! problemi nell elaborazione della risposta";
			}
		}
	}

	
//	function StopMyTimer(){
//		clearTimeout(Tempo);
//	}
	
