
function ValidLength(str,number) {
	if (str < number)
		return false;
	return true;
}

function ValidChars(CheckStr,chars) {
	for (i = 0;  i < CheckStr.length;  i++) {
		ch = CheckStr.charAt(i);
	for (j = 0;  j < chars.length;  j++)
		if (ch == chars.charAt(j))
			break;
		if (j == chars.length)
		return false;
	}
	return true;
}

function ValidString(CheckStr,RepeatNum) {
	if (CheckStr.length >= RepeatNum) {
		for (k = 0; k < CheckStr.length - 2; k++) {
		l = k+1;
			if  (CheckStr.charAt(k) == CheckStr.charAt(l)) {
				m = l+1;
				if (CheckStr.charAt(k) == CheckStr.charAt(m)) {
					return false;
					break;
				}
				else {
					k++;
				};
			}
		}
	}
	return true;
}

function ValidNumber (checkStr) {
	checkNumber = "0123456789";
	for (z = 0; z < checkStr.length; z++) {
		for (a = 0; a < checkNumber.length; a++) {
			if (checkStr.charAt(z) == checkNumber.charAt(a)) {
				return true;
			}
		}
	}
	return false;
}

function ControllaCF(cf) {
	var validi, i, s, set1, set2, setpari, setdisp;
	if( cf == '' )  return 'Inserire il Codice Fiscale';
	cf = cf.toUpperCase();
	if( cf.length != 16 )
		return "La lunghezza del codice fiscale non è corretta.\n"
		+"Il codice fiscale deve essere lungo esattamente 16 caratteri.\n";
	validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
	for( i = 0; i < 16; i++ ){
		if( validi.indexOf( cf.charAt(i) ) == -1 )
			return "Il codice fiscale contiene un carattere non valido `" +
				cf.charAt(i) +
				"'.\nI caratteri validi sono le lettere e le cifre.\n";
	}
	set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
	setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
	s = 0;
	for( i = 1; i <= 13; i += 2 )
		s += setpari.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
	for( i = 0; i <= 14; i += 2 )
		s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
	if( s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) )
		return "Il codice fiscale non è corretto:\n"+
			"il codice di controllo non corrisponde.\n";
	return "";
}

/*
FUNZIONE validate() - Come dice il nome stesso, controlla i campi di una form prima di spedirli
*/
function validate() {
	if(document.registrazione.nome.value=='') {
		alert("Inserire il Nome");
		document.registrazione.nome.focus();
		return false;
	}

	if(document.registrazione.cognome.value=='') {
		alert("Inserire il Cognome");
		document.registrazione.cognome.focus();
		return false;
	}

/*------------------ INIZIO Validazione Data di nascita -------------------*/
	if(document.registrazione.giorno.value=='') {
		alert("Inserire il giorno di nascita");
		document.registrazione.giorno.focus();
		return false;
	}
	if(document.registrazione.giorno.value.substring(0,2) > 31) {
		alert("Impossibile utilizzare un valore superiore a 31 per i giorni");
		document.registrazione.giorno.focus();
		return false;
	}

	if(document.registrazione.mese.value=='') {
		alert("Inserire il mese di nascita");
		document.registrazione.mese.focus();
		return false;
	}
	if(document.registrazione.mese.value.substring(0,2) > 12) {
		alert("Impossibile utilizzare un valore superiore a 12 per i mesi");
		document.registrazione.mese.focus();
	return false;
	}

	if(document.registrazione.anno.value=='') {
		alert("Inserire l'anno di nascita");
		document.registrazione.anno.focus();
		return false;
	}
	if(document.registrazione.anno.value.substring(0,4) < 1900) {
		alert("Impossibile utilizzare un valore inferiore a 1900 per l'anno");
		document.registrazione.anno.focus();
	return false;
	}

/*------------------ INIZIO Validazione Codice Fiscale -------------------*/
	if (ControllaCF(document.registrazione.codice_fiscale.value) != ''){
		alert(ControllaCF(document.registrazione.codice_fiscale.value));
		document.registrazione.codice_fiscale.focus();
		return false;
	}
//ControllaCF(document.registrazione.codice_fiscale.value);

/*------------------ INIZIO Validazione Indirizzo -------------------*/
var FormAddr1 = document.registrazione.indirizzo.value ;
var ValidAddyChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzùàòèéì'0123456789 *°#.-/,";

	if (!ValidLength(FormAddr1.length, 3)) {
		alert ("Inserire l'Indirizzo.");
		document.registrazione.indirizzo.focus();
		return false;
	}
	if (!ValidNumber(FormAddr1)) {
		alert ("ATTENZIONE! Indirizzo non valido.\nEsempio: via Verdi, 15");
		document.registrazione.indirizzo.focus();
		return false;
	}
	if (!ValidChars(FormAddr1,ValidAddyChars)) {
		alert ("ATTENZIONE! Indirizzo non valido.\nEsempio: via Verdi, 15");
		document.registrazione.indirizzo.focus();
		return false;
	}
/*------------------ Validazione Cap --------------------*/
var FormZip = document.registrazione.cap.value;
var ZipNums = "0123456789";
  
	if (FormZip.length == 0) {
		alert("Inserire il CAP");
		document.registrazione.cap.focus();
		return false;
	}
	if (!ValidChars(FormZip,ZipNums)) {
		alert("ATTENZIONE! CAP non valido.\nEsempio: 46100");
		document.registrazione.cap.focus();
		return false;
	}
	if (FormZip.length == 5)
		null;
	else {
		alert("ATTENZIONE! CAP non valido.\nEsempio: 46100");
		document.registrazione.cap.focus();
		return false;
	}

/*------------------ Validazione Città -------------------*/
	if(document.registrazione.citta.value=='') {
		alert("Inserire la Città");
		document.registrazione.citta.focus();
		return false;
	}

/*------------------ Validazione Provincia --------------------*/
	if(document.registrazione.provincia.value=='') {
		alert("Selezionare la Provincia");
		document.registrazione.provincia.focus();
		return false;
	}

/*------------------ Validazione Email --------------------*/
var FormEmail = document.registrazione.email.value;
ValidEmailChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_@.";

	if (!ValidLength(FormEmail.length, 5)) {
		alert ("Inserire l'indirizzo E-mail");
		document.registrazione.email.focus();
		return false;
	}
dot = FormEmail.indexOf(".");
afterdot = FormEmail.charAt(dot +1);

	if (dot == -1 || afterdot == "") {
		alert("Inserire un indirizzo E-mail valido");
		document.registrazione.email.focus();
		return false;
	}

at = FormEmail.indexOf("@");
afterat = FormEmail.charAt(at +1);

	if (at == -1 || afterat == "") {
		alert("Inserire un indirizzo E-mail valido");
		document.registrazione.email.focus();
		return false;
	}
	if (!ValidChars(FormEmail, ValidEmailChars)) {
		alert("L'indirizzo E-mail non è valido!");
		document.registrazione.email.focus();
		return false;
	}

/*------------------ Validazione Telefono --------------------*/
var FormTel = document.registrazione.telefono.value;
var telNums = "0123456789-/+. ";

	if (FormTel.length == 0) {
		alert("Inserire il Telefono");
		document.registrazione.telefono.focus();
		return false;
	}
	if (!ValidChars(FormTel,telNums)) {
		alert("Numero di Telefono non valido");
		document.registrazione.telefono.focus();
		return false;
	}

/*------------------ Validazione Username -------------------*/
	if(document.registrazione.username.value=='') {
		alert("Inserire uno Username");
		document.registrazione.username.focus();
		return false;
	}

/*------------------ Validazione Privacy --------------------*/
	if(!(document.registrazione.privacy.checked)) {
		alert("E' necessario dare il proprio consenso per il trattamento dei dati personali");
		document.registrazione.privacy.focus();
		return false;
	}
}
