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(validTel && validCognome && validProvincia && validComune){
		return true;
	}else{
		checkInvalidValue();
		return false;
	}
}

function isValidAffiliazione(){
	if(validNome && validTel && validMail && validRegione){
		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");
					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.modulo;
	//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"),15000);
					//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 ="confirm_buffer.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 sendDataAffiliazione(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(pathDomain+"/grazieaffiliazione.htm"),15000);
					//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+"/confirmaffiliazione.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 = /^[a-zA-Z0-9]+(\.?[a-zA-Z0-9\-\_]+)*\@/;
	_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].textContent!="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);
	regex = /[0-9./-]+/;
	if ((firstTel!="+" && firstTel!="3" && firstTel!="0") || regex.exec(subTel)!=subTel || secondTel=="0"){
		tel.message="Inserire un numero telefonico valido";
		tel.valid=false;
		validTel=false;
		eMsgTel(tel.message);
		return;
	}
	
	if(lengthTel<6 || lengthTel>14){
		tel.message="Inserire un numero telefonico valido";
		tel.valid=false;
		validTel=false;
		eMsgTel(tel.message);
		return;
	}
	
	if(firstTel=="3"){
		
		if((subTel.indexOf("-")== 2 || subTel.indexOf(".")== 2 || subTel.indexOf("/")== 2)&&(lengthTel<10 || lengthTel>11)){
				tel.message="Inserire un numero telefonico valido";
				tel.valid=false;
				validTel=false;
				eMsgTel(tel.message);
				return;
			}
		if((subTel.indexOf("-")!= 2 && subTel.indexOf(".")!= 2 && subTel.indexOf("/")!= 2) && (lengthTel<9 || lengthTel>10)){
			tel.message="Inserire un numero telefonico valido";
			tel.valid=false;
			validTel=false;
			eMsgTel(tel.message);
			return;
			}
	}
	
	var i;
	var splitTel;
	var firstSplitTel;
	for(i=0;i<=lengthTel-5;i++){
		
		firstSplitTel = tel.telefono.slice(i,i+1);
		splitTel = tel.telefono.slice(i,i+5);
		if(i==0){
			if((splitTel==firstSplitTel + firstSplitTel + firstSplitTel + firstSplitTel + firstSplitTel) && firstSplitTel!="3"){
				tel.message="Inserire un numero telefonico valido";
				tel.valid=false;
				validTel=false;
				eMsgTel(tel.message);
				return;
			}
			if(firstSplitTel=="3" && i==0 && tel.telefono.slice(5,6)=="3" && (splitTel==firstSplitTel + firstSplitTel + firstSplitTel + firstSplitTel + firstSplitTel)){
				tel.message="Inserire un numero telefonico valido";
				tel.valid=false;
				validTel=false;
				eMsgTel(tel.message);
				return;
			}
		}else{
			if((splitTel==firstSplitTel + firstSplitTel + firstSplitTel + firstSplitTel + firstSplitTel)){
				tel.message="Inserire un numero telefonico valido";
				tel.valid=false;
				validTel=false;
				eMsgTel(tel.message);
				return;
			}
		}
	}
	tel.valid=true;
	validTel=true;
}


/*******codice secondo form***************/


function eMsgTel1(msg){
	document.getElementById("messaggi_errore1").innerHTML = msg;
	selDiv = document.getElementById("telefono1");
	selDiv.style.backgroundColor = "#ff7575";
}

function checkTelefono1(val){
	var tel= new Telefono(val);
	if(tel.telefono==null || tel.telefono.length==0){
		tel.message="telefono non corretto";
		tel.valid=false;
		validTel=false;
		eMsgTel1(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;
		eMsgTel1(tel.message);
		return;
	}
	
	if(lengthTel<8 || lengthTel>13){
		tel.message="Inserire un numero telefonico valido";
		tel.valid=false;
		validTel=false;
		eMsgTel1(tel.message);
		return;
	}
	
	if(firstTel=="3" && (lengthTel<9 || lengthTel>10)){
		tel.message="Inserire un numero telefonico valido";
		tel.valid=false;
		validTel=false;
		eMsgTel1(tel.message);
		return;
	}

	
	var i;
	var splitTel;
	var firstSplitTel;
	for(i=0;i<=lengthTel-5;i++){
		
		firstSplitTel = tel.telefono.slice(i,i+1);
		splitTel = tel.telefono.slice(i,i+5);
		if(i==0){
			if((splitTel==firstSplitTel + firstSplitTel + firstSplitTel + firstSplitTel + firstSplitTel) && firstSplitTel!="3"){
				tel.message="Inserire un numero telefonico valido";
				tel.valid=false;
				validTel=false;
				eMsgTel1(tel.message);
				return;
			}
			if(firstSplitTel=="3" && i==0 && tel.telefono.slice(5,6)=="3" && (splitTel==firstSplitTel + firstSplitTel + firstSplitTel + firstSplitTel + firstSplitTel)){
				tel.message="Inserire un numero telefonico valido";
				tel.valid=false;
				validTel=false;
				eMsgTel1(tel.message);
				return;
			}
		}else{
			if((splitTel==firstSplitTel + firstSplitTel + firstSplitTel + firstSplitTel + firstSplitTel)){
				tel.message="Inserire un numero telefonico valido";
				tel.valid=false;
				validTel=false;
				eMsgTel1(tel.message);
				return;
			}
		}
	}
	
	
	tel.valid=true;
	validTel=true;
}

function eMsg1(msg){
	document.getElementById("messaggi_errore1").innerHTML = msg;
	selDiv = document.getElementById("email1");
	selDiv.style.backgroundColor = "#ff7575";
}


// funzione di controlli
function checkAddress1(val, pathDomain){
	var eml= new Email(val);
	eml.validate();
	if(!eml.valid){
		eMsg1(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"){
						eMsg1("Dominio non valido");
						this.valid = false;
						validMail=false;
					}	
				}
			}
		};
		var _url ="domain.php?email="+val;
		rispostaXML.open("get", _url, true);
		rispostaXML.send(null);
	}
}

/*******fine codice secondo form**********/


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 = "#ffffff";
}

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

function doSomethingElse1(id){
	document.getElementById("messaggi_errore1").innerHTML = "";
	selDiv = document.getElementById(id);
	selDiv.style.backgroundColor = "#ffffff";
}

