
function newXMLHttpRequest(){
	var xmlreq = false;
	
	//Controllo il tipo di oggetto XMLHttpRequest da utilizzare
	if(window.XMLHttpRequest){
		//Per browser non Microsoft
		xmlreq = new XMLHttpRequest();
	}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;
}

/*
 * Funzione per la popolazione della Seconda SELECT
 */
function populateSubSelection(){
	//Recupero i dati da inviare
	var mainSelection = document.getElementById("mainSelection");
	
	//Creo un nuovo oggetto XMLHTTPRequest
	var req = newXMLHttpRequest();
	
	//Invio la richiesta
	req.open("POST", "data.php", true);
	req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	
	//Invio i dati POST
	req.send("choice=" + mainSelection.options[mainSelection.selectedIndex].value);
	
	if (mainSelection.options[mainSelection.selectedIndex].value=="2")
	{
	 	var idpage = document.getElementById("id");
		idpage.value="3";	
		var label = document.getElementById("lab_destinazione");
		label.innerHTML="Destinazione d'uso:&nbsp;";
		var sub_sel = document.getElementById("ss");
		sub_sel.style.display="block";
	}
	else if (mainSelection.options[mainSelection.selectedIndex].value=="1")
	{
	 	var idpage = document.getElementById("id");
		idpage.value="4";	
		var label = document.getElementById("lab_destinazione");
		label.innerHTML="Destinazione d'uso:&nbsp;";
		var sub_sel = document.getElementById("ss");
		sub_sel.style.display="block";		
	}																	
	else if (mainSelection.options[mainSelection.selectedIndex].value=="4")
	{
	 	var idpage = document.getElementById("id");
		idpage.value="15";	
		var sub_sel = document.getElementById("ss");
		sub_sel.style.display="none";
	}																	
	else
	{
	 	var idpage = document.getElementById("id");
		idpage.value="5";	
		var label = document.getElementById("lab_destinazione");
		label.innerHTML="Tipologia attivitą:&nbsp;&nbsp;&nbsp;&nbsp;";
		var sub_sel = document.getElementById("ss");
		sub_sel.style.display="block";		
	}
												
	//Gestore dell\'evoluzione dello stato dell\'oggetto req
	req.onreadystatechange = handleResponse(req, updateSubSelection);																	
}

/*
 * 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.
 * reg = Istanza XMLHTTPRequest
 * XMLHandler = nome della funzione a cui passare il risultato XML da gestire
 */
function handleResponse(req, XMLHandler){
	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,
			if (req.status == 200){
				//A questo punto richiamo la funzione che gestira il risultato XML
				XMLHandler(req.responseXML);
			}else{
				alert("Errore HTTP: " + req.status);
			}
		}
	}
}																

/*
 * Popolo la seconda SELECT
 * XMLResult = Il risultato XML prodotto da handleResponse
 */
function updateSubSelection(XMLResult){
	//Gestisco il documento XML ricevuto e popolo la seconda SELECT
	var categoria = XMLResult.getElementsByTagName("categoria");
	
	var mainSelection = document.getElementById("mainSelection");
	if (mainSelection.length == 4)
		mainSelection.remove(0);																																																
	
	//Recupero la seconda SELECT
	var subSelection = document.getElementById("subSelection");
	subSelection.disabled=false;
	
	//Svuoto la secondo SELECT
	for (var i = subSelection.length - 1; i >= 0; i--)
		subSelection.remove(i);
	
	//Scorro gli elementi
	for (var i = 0; i < categoria.length; i++){
		//Recupero i vari elementi singoli
		var item = categoria[i];
		
		//Creo il nuovo elemento OPTION da aggiungere nella seconda SELECT
		var NewOpt = document.createElement("option");
		NewOpt.value = item.getAttribute("value");
		NewOpt.text = item.firstChild.nodeValue;
		
		//Popolo la seconda SELECT
		try{
			subSelection.add(NewOpt, null); //Metodo Standard, non funziona con IE
		}catch(e){
			subSelection.add(NewOpt); // Funziona solo con IE
		}
	}
	
	var vai = document.getElementById("vai");
	vai.disabled=false;

}

