 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;
 }


 function populateCity(){
  //Recupero i dati da inviare
  var mainSelection = document.getElementById("country");
			 	
  //Creo un nuovo oggetto XMLHTTPRequest
  var req = newXMLHttpRequest();

  //Invio la richiesta
  req.open("POST", "http://www.infohostels.com/findHostel/selectCities.php", true);
  req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
				
  //Invio i dati POST
  req.send("choice=" + mainSelection.options[mainSelection.selectedIndex].value);
				
  //Gestore dell'evoluzione dello stato dell'oggetto req
  req.onreadystatechange = handleResponse(req, updateSubSelection);
 }


  function handleResponse(req, XMLHandler){
   return function(){
	XMLHandler(req.responseXML);
	
   }
  }



 function updateSubSelection(XMLResult){
  //Gestisco il documento XML ricevuto e popolo la seconda SELECT
  var categoria = XMLResult.getElementsByTagName('categoria');
			
  //Recupero la seconda SELECT
  var subSelection = document.getElementById("city");
				
  //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
   }
  }
 }
