var user, domain, regex, _match;
var validTel=false, validMail=false, validNome=false, validCognome=false, /*validTipo=false,*/ validRegione=false, validProvincia=false, validComune=false;
var request;
var queryString;

function isValid(){
	if(validNome && validTel && validMail && validCognome && /*validTipo &&*/ validRegione && validProvincia && validComune){
		return true;
	}else{
		checkInvalidValue();
		return false;
	}
}


function checkInvalidValue(){
	// Controllo Nome vuoto
		var textName= document.getElementById("nome");
		if (textName!=null){
				if(!textName.value){
					doSomething("nome");
					validNome=false;
				}
				else{
					doSomethingElse("nome");
					validNome=true;
				}
		}

		// Controllo Cognome vuoto
			var textCognome= document.getElementById("cognome");
			if (textCognome!=null){
					if(!textCognome.value){
						doSomething("cognome");
						validCognome=false;
					}
					else{
						doSomethingElse("cognome");
						validCognome=true;
					}
			}

		// Controllo Email vuota
		var textEmail= document.getElementById("email");
		if (textEmail!=null){
				if(!textEmail.value){
					doSomething("email");
					validMail=false;
				}
				else{
					doSomethingElse("email");
					validMail=true;
					//checkAddress(textEmail.value);
				}
		}

		// Controllo Telefono vuoto
		var textTelefono= document.getElementById("telefono");
		if (textTelefono!=null){
				if(!textTelefono.value){
					doSomething("telefono");
					validTel=false;
				}
				else{
					doSomethingElse("telefono");
					validTel=true;
					checkTelefono(textTelefono);
				}
		}

		// Controllo Tipo di impianto vuoto
		/*var textTipo= document.getElementById("tipo di impianto");
		if (textTipo!=null){
				if(textTipo.value=="Scegli"){
					doSomething("tipo di impianto");
					validTipo=false;
				}
				else{
					doSomethingElse("tipo di impianto");
					validTipo=true;
				}
		}
*/

		// Controllo Regione vuoto
		var textRegione= document.getElementById("regione");
		if (textRegione!=null){
				if(textRegione.value==""){
					doSomething("regione");
					validRegione=false;
				}
				else{
					doSomethingElse("regione");
					validRegione=true;
				}
		}

		// Controllo Provincia vuota
		var textProvincia= document.getElementById("provincia");
		if (textProvincia!=null){
				if(textProvincia.value==""){
					doSomething("provincia");
					validProvincia=false;
				}
				else{
					doSomethingElse("provincia");
					validProvincia=true;
				}
		}

		// Controllo Comune vuoto
		var textComune= document.getElementById("comune");
		if (textComune!=null){
				if(textComune.value==""){
					doSomething("comune");
					validComune=false;
				}
				else{
					doSomethingElse("comune");
					validComune=true;
				}
		}
}



// Invio dati form 
function setQueryString(){
	queryString="";
	var frm = document.forms[0];
	var numberElements = frm.elements.length;
	for(var i = 0; i < numberElements; i++){
		if(i< numberElements-1){
			queryString += frm.elements[i].name+"="+encodeURIComponent(frm.elements[i].value)+"&";
		}else{
			queryString += frm.elements[i].name+"="+encodeURIComponent(frm.elements[i].value);

		}
	}
}


function sendData(pathDomain){
	setQueryString();
	var rispostaXMLTasto = zXmlHttp.createRequest();
		rispostaXMLTasto.onreadystatechange = function() {
			if(rispostaXMLTasto.readyState==4){
				if(rispostaXMLTasto.status==200){
					//var doc = rispostaXMLTasto.responseXML;
					//var doc1 = doc.getElementsByTagName("response");
					setTimeout(Redirect("/grazie.htm"),5000);
					//alert("testo xml "+doc1[0].text);
				//	if(true){
					//	alert(doc+" Risposta non andata a buon fine!!!!!");
				//	}else{
				//		alert("Risposta del server andato a buon fine!!!!!");
				//	}
				}
			}
		};
		var _url =pathDomain+"/confirm.php";
		rispostaXMLTasto.open("post", _url, true);
		rispostaXMLTasto.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
		rispostaXMLTasto.send(queryString);
		//alert("Richiesta inviata con successo...");
		//location.href = pathDomain+"/grazie.html";
		
}


function Redirect(dest)
{
  location.href = dest;
}

// Costruttore email
function Email(e){
	this.emailAddr=e;
	this.message="";
	this.valid=false;
	validMail=false;
}



function validate(){
	// verifica stringa vuota, "." e "@"
	if(this.emailAddr == null || this.emailAddr.length==0 || this.emailAddr.indexOf(".")==-1 || this.emailAddr.indexOf("@")==-1 || this.emailAddr.indexOf(" ")!=-1){
		this.message="Indirizzo Email non valido";
		this.valid=false;
		validMail=false;
		return;
	}
	
	//prima di @ deve essere almeno 2 caratteri e dopo eventuale punto altri 2 caratteri
	regex = /(^\w{2,}\.?\w{2,})@/;
	_match = regex.exec(this.emailAddr);
	if(_match){
		user= RegExp.$1;
	}
	else{
		this.message = "Indirizzo Email non valido";
		this.valid=false;
		validMail=false;
		return;
	}
	
	//Controlla il dominio
	regex = /@(\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\])$/;
	_match = regex.exec(this.emailAddr);
	if(_match){
		domanin= RegExp.$1;
		this.valid=true;
		validMail=true;
	}
	else{
		// @ seguito da 2 caratteri senza punto seguito poi da un punto con regolare espressione
		regex = /@(\w{2,}\.(\w{2,}\.)?[a-zA-Z]{2,3})$/;
		_match = regex.exec(this.emailAddr);
		if(_match){
			domanin= RegExp.$1;
		}else{
			this.message="Dominio Email non corretto";
			this.valid=false;
			validMail=false;
			return;
		}
	}
	this.valid=true;
	validMail=true;
}

//Prototype email
Email.prototype.validate=validate;

function eMsg(msg){
	document.getElementById("messaggi_errore").innerHTML = msg;
	selDiv = document.getElementById("email");
	selDiv.style.backgroundColor = "#ff7575";
}


// funzione di controlli
function checkAddress(val, pathDomain){
	var eml= new Email(val);
	eml.validate();
	if(!eml.valid){
		eMsg(eml.message);
	}
	if(eml.valid){
	
		var rispostaXML = zXmlHttp.createRequest();
		rispostaXML.onreadystatechange = function() {
			if(rispostaXML.readyState==4){
				if(rispostaXML.status==200){
					var doc = rispostaXML.responseXML;
					var doc1 = doc.getElementsByTagName("email_is_used");
					if(doc1[0].text!="1"){
						eMsg("Dominio non valido");
						this.valid = false;
						validMail=false;
					}	
				}
			}
		};
		var _url =pathDomain+"/domain.php?email="+val; //TODO non funziona
		rispostaXML.open("get", _url, true);
		rispostaXML.send(null);
	}
}



Telefono.prototype.validate=validate;

// Costruttore telefono
function Telefono(en){
	this.telefono=en.value;
	this.message="";
	this.valid=false;
	validTel=false;
}

function eMsgTel(msg){
	document.getElementById("messaggi_errore").innerHTML = msg;
	selDiv = document.getElementById("telefono");
	selDiv.style.backgroundColor = "#ff7575";
}

function checkTelefono(val){
	var tel= new Telefono(val);
	if(tel.telefono==null || tel.telefono.length==0){
		tel.message="telefono non corretto";
		tel.valid=false;
		validTel=false;
		eMsgTel(tel.message);
		return;
	}

	var lengthTel = tel.telefono.length;
	var subTel = tel.telefono.slice(1, lengthTel);
	var firstTel = tel.telefono.slice(0,1);
	var secondTel = tel.telefono.slice(1,2);
	if ((firstTel!="+" && firstTel!="3" && firstTel!="0") || isNaN(subTel) || secondTel=="0"){
		tel.message="Inserire un numero telefonico valido";
		tel.valid=false;
		validTel=false;
		eMsgTel(tel.message);
		return;
	}
	
	if(lengthTel<6 || lengthTel>13){
		tel.message="Inserire un numero telefonico valido";
		tel.valid=false;
		validTel=false;
		eMsgTel(tel.message);
		return;
	}
	tel.valid=true;
	validTel=true;
}

function doSomething(id){
	document.getElementById("messaggi_errore").innerHTML = "Il campo "+id+" non puo' essere vuoto";
	selDiv = document.getElementById(id);
	selDiv.style.backgroundColor = "#ff7575";
}

function doSomethingElse(id){
	document.getElementById("messaggi_errore").innerHTML = "";
	selDiv = document.getElementById(id);
	selDiv.style.backgroundColor = "#cfcfcf";
}