// funzione per assegnare l'oggetto XMLHttpRequest
// compatibile con i browsers piÃ¹ recenti e diffusi
function getXMLHttpRequest() 
{

	 // lista delle variabili locali
	 var pXMLHttpRequest = null;
	 
	if (window.XMLHttpRequest) 
	{
	
		pXMLHttpRequest = new XMLHttpRequest();
	} 
	else if (window.ActiveXObject) 
	{	
		pXMLHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");				
	}

	 return pXMLHttpRequest;
}

function getElement_ById(id_elemento) 
{
//alert(id_elemento);
	 var elemento;
	 if(document.getElementById)
	 {
	  	elemento = document.getElementById(id_elemento);
	 }
	 else
	 {
	  	elemento = document.all[id_elemento];
	 }
 return elemento;
}

var READY_STATE = ({COMPLETATO: 4});

var  STATUS = ({200: 'OK'});


function callAction(sAction, sQueryString, sMethod, sIdElementToFill)
{
	    var pXMLHttpRequest = getXMLHttpRequest();
		var pElement = getElement_ById(sIdElementToFill);	
					
		var bAjaxEnabled = false;
		var sCallMethod = 'post';
		
		
		if (sMethod == 'get')
		{
			sCallMethod = 'get';
		}
		else
		{
			sCallMethod = 'post';
		}
		
		if (pXMLHttpRequest)
		{
			bAjaxEnabled = true;
		}
		else
		{
			bAjaxEnabled = false;
		}
		
		
		//Si pòuò usare ajax 
		if (bAjaxEnabled)
		{			
			
			if (sCallMethod == 'get')
			{
				pXMLHttpRequest.open(sCallMethod,sAction+'?'+sQueryString,true);
				pXMLHttpRequest.setRequestHeader("connection","close");
				pXMLHttpRequest.send(null);
				pXMLHttpRequest.onreadystatechange =    function  ()
														{
															manageResponse(pXMLHttpRequest, pElement);
														}
				
			}
			else
			{
				pXMLHttpRequest.open(sCallMethod,sAction,true);
				pXMLHttpRequest.setRequestHeader("connection","close");
				pXMLHttpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				pXMLHttpRequest.setRequestHeader("Content-length", sQueryString.length);
				pXMLHttpRequest.send(sQueryString);
				pXMLHttpRequest.onreadystatechange = 	function  ()
														{
															manageResponse(pXMLHttpRequest, pElement);
														}
			}			
		}	
}

function manageResponse(pXMLHttpRequest, pElement)
{
	if(pXMLHttpRequest.readyState  == READY_STATE.COMPLETATO) 
	{          		
		if (pXMLHttpRequest.status == 200) 
			{
				pElement.innerHTML = pXMLHttpRequest.responseText;
			}
		
	}
}


function loadRegioni (sIdSelectRegioni)
{
    var sMethod='post';
    var sQueryString=''; 
    var sIdElementToFill=sIdSelectRegioni;  
	callAction('loadregioni.do',sQueryString, sMethod, sIdElementToFill);
	self.focus();		
}
 
				
function loadProvincie (sRegioneKey, sIdRegione,  sIdElementProvincia, sIdElementComune, sIdElementLocalita, sLocationType)
{
	
    var sMethod='post';
    var sQueryString=sRegioneKey+'='+sIdRegione+'&location_type='+sLocationType; 
    var sIdElementToFill=sIdElementProvincia;
    
	callAction('loadprovincie.do',sQueryString, sMethod, sIdElementToFill);
	
	var pElementComune = getElement_ById(sIdElementComune);
	pElementComune.innerHTML ='';
	
	var pElementLocalita = getElement_ById(sIdElementLocalita);
	pElementLocalita.innerHTML ='';
	self.focus();
	
}

function loadComuni(sRegioneKey, sRegioneSelectKey, sProvinciaKey, sProvinciaSelectKey,  sIdElementComune, sIdElementLocalita, sLocationType)
{
	
	var sMethod='post';
	
	var pElementRegione  = getElement_ById(sRegioneSelectKey);
	var pElementProvincia  = getElement_ById(sProvinciaSelectKey);
	
	var sIdRegione = pElementRegione.value;
	var sIdProvincia = pElementProvincia.value;
	
    var sQueryString=sRegioneKey+'='+sIdRegione+'&'+sProvinciaKey+'='+sIdProvincia+'&location_type='+sLocationType; 
    var sIdElementToFill=sIdElementComune;
    
    callAction('loadcomuni.do',sQueryString, sMethod, sIdElementToFill);
    
    var pElementLocalita = getElement_ById(sIdElementLocalita);
	pElementLocalita.innerHTML ='';
	self.focus();
}

function loadLocalita(sRegioneKey, sRegioneSelectKey, sProvinciaKey, sProvinciaSelectKey, sComuneKey, sComuneSelectKey, sIdElementLocalita, sLocationType)
{
	
	var sMethod='post';
	
	var pElementRegione  	= getElement_ById(sRegioneSelectKey);
	var pElementProvincia  	= getElement_ById(sProvinciaSelectKey);
	var pElementComune  	= getElement_ById(sComuneSelectKey);
		
	var sIdRegione   = pElementRegione.value;
	var sIdProvincia = pElementProvincia.value;
	var sIdComune 	 = pElementComune.value;
	
    var sQueryString     = sRegioneKey+'='+sIdRegione+'&'+sProvinciaKey+'='+sIdProvincia+'&'+sComuneKey+'='+sIdComune+'&location_type='+sLocationType; 
    var sIdElementToFill = sIdElementLocalita;
    
    callAction('loadlocalita.do',sQueryString, sMethod, sIdElementToFill);
    self.focus();
}

function loadAeroporti (sIdSelectAeroporto)
{
    var sMethod='post';
    var sQueryString=''; 
    var sIdElementToFill=sIdSelectAeroporto;  
	callAction('loadaeroporti.do',sQueryString, sMethod, sIdElementToFill);
	self.focus();		
}

//in ingresso partenza o arrivo
function  resetAeroporto(sAeroportoType)
{
	var bAeroportoType = ( sAeroportoType =='partenza' );
	var s_sPARTENZA_AEROPORTO_SELECT_KEY ='partenza_aereoporto_select';
	var s_sARRIVO_AEROPORTO_SELECT_KEY = 'arrivo_aereoporto_select';
	
	var sAeroportoSelect = null;
	if (bAeroportoType)
	{
		sAeroportoSelect = s_sPARTENZA_AEROPORTO_SELECT_KEY;
	}
	else
	{
		sAeroportoSelect = s_sARRIVO_AEROPORTO_SELECT_KEY;
	}	
	
	//loadAeroporti(sAeroportoSelect);
	var pElementAeroporto = getElement_ById(sAeroportoSelect);
	pElementAeroporto.value = '';
	self.focus();
}

function displayLocalita(sIdLink, sIdContainingElementLocalita)
{
	var pContainigElementLink = getElement_ById(sIdLink);
	var pContainigElementLocalita = getElement_ById(sIdContainingElementLocalita);
	
	pContainigElementLink.style.display = 'none';
	pContainigElementLocalita.style.display = 'inline';
	self.focus();
}

//in ingresso partenza o arrivo
function resetGeografia (sRegioneType)
{
	var bRegioneType = ( sRegioneType =='partenza' );
	var s_sPARTENZA_REGIONE_SELECT_KEY 		= 'partenza_regione_select';
	var s_sPARTENZA_PROVINCIA_KEY 	= 'partenza_provincia';	
	var s_sPARTENZA_COMUNE_KEY 	    = 'partenza_comune';
	var s_sPARTENZA_LOCALITA_KEY = 'partenza_localita';
	
	var s_sARRIVO_REGIONE_SELECT_KEY 		= 'arrivo_regione_select';
	var s_sARRIVO_PROVINCIA_KEY 	    = 'arrivo_provincia';	
	var s_sARRIVO_COMUNE_KEY 	    = 'arrivo_comune';
	var s_sARRIVO_LOCALITA_KEY = 'arrivo_localita';
	
	
	
	var sRegioneSelect = null;
	var sProvinciaSelect = null;
	var sComuneSelect = null;
	var sLocalitaSelect = null;
	
	if (bRegioneType)
	{
		sRegioneSelect = s_sPARTENZA_REGIONE_SELECT_KEY;
		sProvinciaSelect = s_sPARTENZA_PROVINCIA_KEY;
		sComuneSelect = s_sPARTENZA_COMUNE_KEY;
		sLocalitaSelect = s_sPARTENZA_LOCALITA_KEY;
	}
	else
	{
		sRegioneSelect = s_sARRIVO_REGIONE_SELECT_KEY;
		sProvinciaSelect = s_sARRIVO_PROVINCIA_KEY;
		sComuneSelect = s_sARRIVO_COMUNE_KEY;
		sLocalitaSelect = s_sARRIVO_LOCALITA_KEY;
	}
	
	//loadRegioni(sRegioneSelect);
	var pElementRegione = getElement_ById(sRegioneSelect);	
	pElementRegione.value = '';
	

	var pElementProvincia = getElement_ById(sProvinciaSelect);
	var pElementComune = getElement_ById(sComuneSelect);
	var pElementLocalita = getElement_ById(sLocalitaSelect);
	
	pElementProvincia.innerHTML ='';
	pElementComune.innerHTML ='';
	pElementLocalita.innerHTML ='';
	self.focus();
}








