/* ----------------------------- utilità ajax */

var xmlHttp = getXmlHttpObject();

function getXmlHttpObject()
{
  var xmlHttp=null;
  try
    {
    // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
    }
  catch (e)
    {
    // Internet Explorer
    try
      {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      }
    catch (e)
      {
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    }
  return xmlHttp;
}


/* ----------------------------- invio mail */

function sendPosta(formName){
	// creo l'array dei campi
		campi = new Array();
	// creo la stringa che passerà i campi a PHP
		stringaGet = "?nomeForm="+formName;
		
	//DEFINISCO I CAMPI PRESENTI NEI DIVERSI FORM
	if (formName=="moduloPosta") {
		campi [0]="nome";
		campi [1]="cognome";
		campi [2]="ragione_sociale";
		campi [3]="indirizzo";
		campi [4]="cap";
		campi [5]="nazioni";
		campi [6]="regioni";
		campi [7]="province";
		campi [8]="comuni";
		campi [9]="telefono";
		campi [10]="email";
		campi [11]="richiesta";
		campi [12]="prodotti";
		campi [13]="privacy";
		campi [14]="comuneEstero";
		campi [15]="website";
		
	} else if (formName=="moduloCommenti") {
		campi [0]="nome";
		campi [1]="cognome";
		campi [2]="privacy";	
	}
	
	// aggiungo i campi definiti alla stringa che passa i dati a php
	for (i=0; i<campi.length; i++) { 
		qualeCampo = campi[i];
		valoreCampo = document.forms[formName][qualeCampo].value;
		stringaGet += "&"+qualeCampo+"="+valoreCampo;
	}

	//faccio fare il controllo dei campi alla funzione checkmodulo
	if (checkModulo(formName)) {	
	//adess el mandi tutt in ajax alla php che manda la mail
		xmlHttp.open('GET', 'info_send.php'+stringaGet, true);
		xmlHttp.onreadystatechange = stateChangedMail;
		xmlHttp.send(null);
	}

}


function stateChangedMail() {
	if(xmlHttp.readyState == 4) {
		//Stato OK
		if (xmlHttp.status == 200) {
			var resp = xmlHttp.responseText;
			
			if(resp) {
				var testo ="la tua richiesta &egrave; stata inviata!<br/><br/> Grazie della collaborazione.";
				document.getElementById('moduloAjax').innerHTML = testo;
			}
		} else {
			alert(xmlHttp.responseText);
		}
	}
}




/* ----------------------------- controllo moduli form */

function checkModulo(formName) {
	// creo l'array dei campi obbligatori
	obbliga = new Array();
	var campi = '';
	var reg = /\'/g;
	var text = 'e\' necessario compilare i seguenti campi:';




	//DEFINISCO I CAMPI OBBLIGATORI PER OGNI FORM
	if (formName=="moduloPosta") {
		obbliga [0]="nome";
		obbliga [1]="cognome";
		obbliga [2]="email";
		obbliga [3]="privacy";		
		obbliga [4]="ragione_sociale";
		obbliga [5]="indirizzo";
		obbliga [6]="cap";			
		obbliga [7]="prodotti";
		obbliga [8]="telefono";
		obbliga [9]="email";
		obbliga [10]="richiesta";
		// se la nazione è Italia obblicatorio il comune se no il comune estero
		if(document.getElementById('nazioni').value == "244"){
			obbliga [11]="comuni";
		} else {
			obbliga [11]="comuneEstero";
		}

		
		//CONTROLLO SUI CAMPI NAZIONE, REGIONE, PROVINCIA, COMUNE
		if (document.getElementById('nazioni').value == "0"){	
			document.forms[formName].nazioni.style.borderColor = "#990000";
			campi += 'nazione' + '\n'
		}
		if (document.getElementById('nazioni').value == "244"){	
			if (document.getElementById('regioni').value == "0"){	
				document.forms[formName].regioni.style.borderColor = "#990000";
				campi += 'regione' + '\n'
			}
			if (document.getElementById('province').value == ""){	
				document.forms[formName].province.style.borderColor = "#990000";
				campi += 'provincia' + '\n'
			}
			if (document.getElementById('comuni').value == ""){	
				document.forms[formName].comuni.style.borderColor = "#990000";
				campi += 'comune' + '\n'
			}
		}		
	} else if (formName=="moduloCommenti") {
		obbliga [0]="nome";
		obbliga [1]="cognome";
		obbliga [2]="privacy";
	}
	
	// per ogni obbligatorio indicato
	for (i=0; i<obbliga.length; i++) {
		qualeCampo = obbliga[i];
		//definisco il valore
		valoreCampo = document.forms[formName][qualeCampo].value;
		// se è vuoto
		if (valoreCampo=='') {
			//aggiungo una indicazione all'alert
			campi += qualeCampo + '\n'
			// coloro il campo di rosso
			document.forms[formName][qualeCampo].style.borderColor = "#990000";
		//altrimenti se il campo è pieno
		} else {
			// tolgo gli apici
			valoreCampo = valoreCampo.replace(reg,"`");
			//coloro i campi di grigio
			document.forms[formName][qualeCampo].style.borderColor = "#cccccc";
			// se è una mail controllo sia nella forma giusta
			if (qualeCampo=='email') {
				Filtro = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
				if (!Filtro.test(valoreCampo)){
					campi += 'email non corretta' + '\n';
					// coloro il campo di rosso
					document.forms[formName][qualeCampo].style.borderColor = "#990000";
				}	
				
			};
		}
	}
	

	if (document.forms[formName].privacy.checked != true ) { 
	document.getElementById('privacylabel').style.color = "#990000";
	campi = campi + 'privacy' + '\n';
	} 
	

if (campi == '')
{
	return true;
} else { 
/* window.alert(text + '\n\n' + campi );       <------------- ALERT IN ITALIANO!!! */ 
}  

}



/* ----------------------------- gestione tendine GEOREFERENZIAZIONE */

function loadNazione(id) {
	//se è l'ID dell'Italia allora carica le regioni
	if(id=="244") {
		loadList('regioni', '0');
		document.getElementById('datiItalia').style.display = "block";
		document.getElementById('datiEstero').style.display = "none";
		} else {
		document.getElementById('datiItalia').style.display = "none";
		document.getElementById('datiEstero').style.display = "block";
		}
	}


function loadList(tb, id){
xmlHttp.open('GET', 'info_query.php?table='+tb+'&id='+id, true);
xmlHttp.onreadystatechange = stateChanged;
xmlHttp.send(null);
}
function addOption(select, value, text) {
	//Aggiunge un elemento <option> ad una lista <select>
	var option = document.createElement("option");
	option.value = value,
	option.text = text;
	try {
		select.add(option, null);
	} catch(e) {
		//Per Internet Explorer
		select.add(option);
	}
}
function getSelected(select) {
	//Ritorna il valore dell'elemento <option> selezionato in una lista
	return select.options[select.selectedIndex].value;
}


function stateChanged() {
	if(xmlHttp.readyState == 4) {
		//Stato OK
		if (xmlHttp.status == 200) {
			var resp = xmlHttp.responseText;
			
			if(resp) {
				//Le coppie di valori nella striga di risposta sono separate da ;
				var values = resp.split(';');
				//Il primo elemento è l'ID della lista.
				var listId = values.shift();
				var select = document.getElementById(listId);
				//Elimina i valori precedenti
				while (select.options.length) {
					select.remove(0);
				} 
				if(listId == 'nazioni') {
					addOption (select, 0, '-- Select a country --');
				}
				if(listId == 'regioni') {
					addOption (select, 0, '-- Select a country --');
				}
				var limit = values.length;
				
				for(i=0; i < limit; i++) {
					var pair = values[i].split('|');
					//aggiunge un elemento <option>
					addOption(select, pair[0], pair[1]);
				}
			}
		} else {
			alert(xmlHttp.responseText);
		}
	}
}


