//funzioni generali per controllo dati
function isEmpty(str){return (str.replace(/\s/gi,"").length==0)}
		
function _number(nx){
	var str=nx.toString().replace(/\s/gi,"");
	return (nx == str && !isNaN(nx));
}
function _cap(nx){
	return (nx.length==5&&_number(nx));
}
function _phone(nx) {
	if(isNaN(parseInt(nx.charAt(0)))&&nx.charAt(0)!="+") {return false;}
	var newstr = nx.replace(/[^\d-\+\/ ]/gi,"");
	return(nx == newstr);
}
function _cf(str){
	str = str.match(/^[A-Z]{6}[\d]{2}[A-Z]{1}[\d]{2}[A-Z]{1}[\d]{3}[A-Z]{1}$/i);
	return (str)?true:false;	
}
function _iva(nx){
	nx=nx.toString().replace(/[^\d]/g,"");
	return nx.length==11;
}
function _mail(str){
	return str.match(/^([\w\.\-])+@(([\w\-]{2,})+\.)+([a-z0-9]{2,})+$/gi);
}
function _date(datamodulo) {
	var aDate=datamodulo.split("/"),
		cDate=new Date(aDate[2],parseInt(aDate[1],10)-1,aDate[0]);
		datamodulo=parseInt(aDate[0],10)+"/"+parseInt(aDate[1],10)+"/"+aDate[2];
		return ( (cDate.getDate()+"/"+(cDate.getMonth()+1)+"/"+cDate.getFullYear() ) == datamodulo );
}

//funzione specifica di validazione form
function validate(modulo){
	//modulo di registrazione
	if(modulo.cmdHidden.value=="registrazione"){
		if(isEmpty(modulo.nome.value)){
			alert("Compilare il campo nome");
			modulo.nome.focus();
			return false;
		}
		if(isEmpty(modulo.cognome.value)){
			alert("Compilare il campo cognome");
			modulo.cognome.focus();
			return false;
		}
		if(isEmpty(modulo.luogo_nascita.value)){
			alert("Compilare il campo relativo al luogo di nascita");
			modulo.luogo_nascita.focus();
			return false;
		}
		if(isEmpty(modulo.prov_nascita.value)){
			alert("Compilare il campo provincia");
			modulo.prov_nascita.focus();
			return false;
		}
		if(isEmpty(modulo.data_nascita.value)){
			alert("Compilare il campo relativo alla data di nascita");
			modulo.data_nascita.focus();
			return false;
		}
		if(!isEmpty(modulo.data_nascita.value)&&!_date(modulo.data_nascita.value)){
			alert("Compilare la data nel formato gg/mm/aaaa");
			modulo.data_nascita.focus();
			modulo.data_nascita.select();
			return false;
		}
		if(isEmpty(modulo.codice_fiscale.value)){
			alert("Compilare il campo codice fiscale");
			modulo.codice_fiscale.focus();
			return false;
		}
		if(!isEmpty(modulo.codice_fiscale.value)&&!_cf(modulo.codice_fiscale.value)){
			alert("Codice fiscale non valido");
			modulo.codice_fiscale.focus();
			modulo.codice_fiscale.select();
			return false;
		}
		if(!isEmpty(modulo.p_iva.value)&&!_iva(modulo.p_iva.value)){
			alert("Partita iva non valida");
			modulo.p_iva.focus();
			modulo.p_iva.select();
			return false;
		}
		if(isEmpty(modulo.indirizzo.value)){
			alert("Compilare il campo indirizzo");
			modulo.indirizzo.focus();
			return false;
		}
		if(isEmpty(modulo.luogo_residenza.value)){
			alert("Compilare il campo relativo al luogo di residenza");
			modulo.luogo_residenza.focus();
			return false;
		}
		if(isEmpty(modulo.prov_residenza.value)){
			alert("Compilare il campo provincia");
			modulo.prov_residenza.focus();
			return false;
		}
		if(isEmpty(modulo.cap.value)){
			alert("Compilare il campo CAP");
			modulo.cap.focus();
			return false;
		}
		if(!isEmpty(modulo.cap.value)&&!_cap(modulo.cap.value)){
			alert("Compilare il campo CAP con un numero di cinque cifre");
			modulo.cap.focus();
			modulo.cap.select();
			return false;
		}
		if(isEmpty(modulo.email.value)){
			alert("Compilare il campo email");
			modulo.email.focus();
			return false;
		}
		if(!isEmpty(modulo.email.value)&&!_mail(modulo.email.value)){
			alert("Indirizzo e-mail non valido");
			modulo.email.focus();
			modulo.email.select();
			return false;
		}
		if(isEmpty(modulo.telefono.value)||!_phone(modulo.telefono.value)){
			alert("Compilare correttamente il campo telefono");
			modulo.telefono.focus();
			return false;
		}
		if(isEmpty(modulo.fax.value)||!_phone(modulo.fax.value)){
			alert("Compilare correttamente il campo fax");
			modulo.fax.focus();
			return false;
		}
		if(!modulo.ruolo[0].checked&&!modulo.ruolo[1].checked&&!modulo.ruolo[2].checked){
			alert("Selezionare almeno un ruolo");
			modulo.ruolo[0].focus();
			return false;
		}
		if(modulo.ruolo[1].checked){
			if(isEmpty(modulo.ordine_di.value)){
				alert("Compilare il campo relativo al luogo di iscrizione");
				modulo.ordine_di.focus();
				return false;
			}
			if(isEmpty(modulo.dal_.value)){
				alert("Compilare il campo relativo alla data di iscrizione");
				modulo.dal_.focus();
				return false;
			}
			if(!isEmpty(modulo.dal_.value)&&!_date(modulo.dal_.value)){
				alert("Compilare la data nel formato gg/mm/aaaa");
				modulo.dal_.focus();
				modulo.dal_.select();
				return false;
			}
		}
		if(modulo.ruolo[2].checked){
			if(isEmpty(modulo.collegio_di.value)){
				alert("Compilare il campo relativo al luogo di iscrizione");
				modulo.collegio_di.focus();
				return false;
			}
			if(isEmpty(modulo.dal.value)){
				alert("Compilare il campo relativo alla data di iscrizione");
				modulo.dal.focus();
				return false;
			}
			if(!isEmpty(modulo.dal.value)&&!_date(modulo.dal.value)){
				alert("Compilare la data nel formato gg/mm/aaaa");
				modulo.dal.focus();
				modulo.dal.select();
				return false;
			}
		}
		for(var i=1;i<9;i++){
			var ente=eval("modulo.ente_"+i+".value");
			if(!isEmpty(ente)){
				if(!eval("modulo.mandato_"+i+"[0].checked")&&!eval("modulo.mandato_"+i+"[1].checked")){
					alert("Selezionare se primo o secondo mandato");
					eval("modulo.mandato_"+i+"[0]").focus();
					return false;
				}
				if(!eval("modulo.nomina_"+i+"[0].checked")&&!eval("modulo.nomina_"+i+"[1].checked")){
					alert("Selezionare il tipo di nomina");
					eval("modulo.nomina_"+i+"[0]").focus();
					return false;
				}
				if(isEmpty(eval("modulo.scadenza_"+i+".value"))){
					alert("Compilare il campo relativo alla scadenza del mandato");
					eval("modulo.scadenza_"+i).focus();
					return false;
				}
				if(!isEmpty(eval("modulo.scadenza_"+i+".value"))&&!_date(eval("modulo.scadenza_"+i+".value"))){
					alert("Compilare la data nel formato gg/mm/aaaa");
					eval("modulo.scadenza_"+i).focus();
					eval("modulo.scadenza_"+i).select();
					return false;
				}
			}
		}
		if(!modulo.importo_versamento[0].checked&&!modulo.importo_versamento[1].checked){
			alert("Selezionare uno dei due importi");
			modulo.importo_versamento[0].focus();
			return false;
		}
		if(!modulo.tipo_versamento[0].checked&&!modulo.tipo_versamento[1].checked&&!modulo.tipo_versamento[2].checked&&!modulo.tipo_versamento[3].checked&&!modulo.tipo_versamento[4].checked){
			alert("Selezionare una modalitą di versamento");
			modulo.tipo_versamento[0].focus();
			return false;
		}
		if(modulo.tipo_versamento[3].checked){
			if(isEmpty(modulo.sezione.value)){
				alert("Compilare il campo sezione");
				modulo.sezione.focus();
				return false;
			}
		}
		if(isEmpty(modulo.password.value)){
			alert("Compilare il campo password");
			modulo.password.focus();
			return false;
		}
		return true;
	}
	//modulo di contatto
	if(modulo.cmdHidden.value=="contatto" || modulo.cmdHidden.value=="richiestaInfo"){
		if(isEmpty(modulo.descrizione.value)){
			alert("Compilare il campo descrizione richiesta");
			modulo.descrizione.focus();
			return false;
		}
		if(isEmpty(modulo.nome.value)){
			alert("Compilare il campo nome");
			modulo.nome.focus();
			return false;
		}
		if(isEmpty(modulo.cognome.value)){
			alert("Compilare il campo cognome");
			modulo.cognome.focus();
			return false;
		}
		if(!isEmpty(modulo.indirizzo.value) && isEmpty(modulo.telefono.value) && isEmpty(modulo.email.value)){
			if(isEmpty(modulo.citta.value)){
				alert('Compilare il campo cittą');
				modulo.citta.focus();
				return false;
			}
			if(isEmpty(modulo.cap.value)){
				alert("Compilare il campo CAP");
				modulo.cap.focus();
				return false;
			}
			if(!isEmpty(modulo.cap.value)&&!_cap(modulo.cap.value)){
				alert("Compilare il campo CAP con un numero di cinque cifre");
				modulo.cap.focus();
				modulo.cap.select();
				return false;
			}
		}
		else{
			if(!isEmpty(modulo.telefono.value) && isEmpty(modulo.email.value)){
				if(!_phone(modulo.telefono.value)){
					alert ('Numero di telefono non valido');
					modulo.telefono.focus();
					modulo.telefono.select();
					return false;
				}
			}
			else{
				if(!isEmpty(modulo.email.value)){
					if(!_mail(modulo.email.value)){
						alert("Indirizzo e-mail non valido");
						modulo.email.focus();
						modulo.email.select();
						return false;
					}
				}
				else{
					alert('Compilare almeno uno dei campi indirizzo, telefono o email');
					modulo.indirizzo.focus();
					return false;
				}
			}
		}
		
		var rdObj = modulo.autorizzazione_privacy;
		if( rdObj ){
			var bOK = false;
			for(var i = 0; i < rdObj.length; i++) {
				if(rdObj[i].checked) {
					bOK = true;
					break;
				}
			}
			if( !bOK ){
				alert("Attenzione specificare autorizzazione!");
				rdObj[0].focus();
				return false;
			}
		}
		var rdObj = modulo.autorizzazione_pubblicazione;
		if( rdObj ){
			var bOK = false;
			for(var i = 0; i < rdObj.length; i++) {
				if(rdObj[i].checked) {
					bOK = true;
					break;
				}
			}
			if( !bOK ){
				alert("Attenzione specificare autorizzazione!");
				rdObj[0].focus();
				return false;
			}
		}
		
		return true;
	}
}
