
function CheckStep0(form)
	{
	if ( !(form.elements.privacy[0].checked) )
		{
		alert('Errore: è necessario accettare le condizioni esposte nella INFORMATIVA AI SENSI DELLA LEGGE 196/2003!');
		form.elements.privacy[0].focus();
		return false;
		}
	return true;
	}
	
function CheckStep1(form)
	{
	var err = 0;
	var i = 0;
	for (i=0; i<form.elements.env_id.length; i++)
		{
		if (!(form.elements.env_id[i].checked))
			{
			err++;
			}
		}
	if (err == form.elements.env_id.length)
		{
		alert('Errore: è necessario scegliere una Facoltà/Corso di Laurea');
		form.elements.env_id[0].focus();
		return false;
		}
	if ( (form.elements.cfu.options[form.elements.cfu.selectedIndex] == "") || (form.elements.cfu.options[form.elements.cfu.selectedIndex] == "undefined") )
		{
		alert('Errore: il campo CFU non può essere vuoto: devi inserire un valore!'+form.elements.cfu.selectedIndex);
		form.elements.cfu.focus();
		return false;
		}
	if ( (form.elements.cfu.options[form.elements.cfu.selectedIndex] < 30) || (form.elements.cfu.options[form.elements.cfu.selectedIndex] > 60) )
		{
		alert('Errore: il campo CFU non contiene un valore valido!'+form.elements.cfu.selectedIndex);
		form.elements.cfu.focus();
		return false;
		}
	return true;
	}
	
function CheckStep2(form)
	{
	var expr01 = new RegExp("^([a-zA-Z]{2})$");
	var expr02 = new RegExp("^([0-9]{4})$");
	if ( (form.elements.firstname.value == "") || (form.elements.firstname.value == "undefined") )
		{
		alert('Errore: il campo Nome non può essere vuoto: devi inserire un valore!');
		form.elements.firstname.focus();
		return false;
		}
	if ( (form.elements.lastname.value == "") || (form.elements.lastname.value == "undefined") )
		{
		alert('Errore: il campo Cognome non può essere vuoto: devi inserire un valore!');
		form.elements.lastname.focus();
		return false;
		}
	if ( (form.elements.birthcity.value == "") || (form.elements.birthcity.value == "undefined") )
		{
		alert('Errore: il campo Luogo di Nascita non può essere vuoto: devi inserire un valore!');
		form.elements.birthcity.focus();
		return false;
		}
	if ( (form.elements.birthprov.value == "") || (form.elements.birthprov.value == "undefined") )
		{
		alert('Errore: il campo Provincia non può essere vuoto: devi inserire un valore!');
		form.elements.birthprov.focus();
		return false;
		}
	if ( (!(expr01.test(form.elements.birthprov.value))) || (form.elements.birthprov.value.length != 2))
		{
		alert('Errore: il campo Provincia non contiene un valore valido!');
		form.elements.birthprov.focus();
		return false;
		}
	if ( (form.elements.birthday.options[form.elements.birthday.selectedIndex] == "") || (form.elements.birthday.options[form.elements.birthday.selectedIndex] == "undefined") )
		{
		alert('Errore: il campo Data Nascita [giorno] non contiene un valore valido!');
		form.elements.birthday.focus();
		return false;
		}
	if ( (form.elements.birthmonth.options[form.elements.birthmonth.selectedIndex] == "") || (form.elements.birthmonth.options[form.elements.birthmonth.selectedIndex] == "undefined") )
		{
		alert('Errore: il campo Data Nascita [mese] non contiene un valore valido!');
		form.elements.birthmonth.focus();
		return false;
		}
	if ( (form.elements.birthyear.value == "") || (form.elements.birthyear.value == "undefined") )
		{
		alert('Errore: il campo Data di Nascita [anno] non può essere vuoto: devi inserire un valore!');
		form.elements.birthyear.focus();
		return false;
		}
	if ( (!(expr02.test(form.elements.birthyear.value))) || (form.elements.birthyear.value.length != 4))
		{
		alert('Errore: il campo Data di Nascita [anno] non contiene un valore valido!');
		form.elements.birthyear.focus();
		return false;
		}
	var err = 0;
	var i = 0;
	for (i=0; i<form.elements.gender.length; i++)
		{
		if (!(form.elements.gender[i].checked))
			{
			err++;
			}
		}
	if (err == form.elements.gender.length)
		{
		alert('Errore: è necessario indicare il sesso (m/f)');
		form.elements.gender[0].focus();
		return false;
		}
	if ( (form.elements.birthcountry.value == "") || (form.elements.birthcountry.value == "undefined") )
		{
		alert('Errore: il campo Nazione non può essere vuoto: devi inserire un valore!');
		form.elements.birthcountry.focus();
		return false;
		}
	if ( (form.elements.nationality.value == "") || (form.elements.nationality.value == "undefined") )
		{
		alert('Errore: il campo Cittadinanza non può essere vuoto: devi inserire un valore!');
		form.elements.nationality.focus();
		return false;
		}
	if ( (form.elements.fiscalcode.value == "") || (form.elements.fiscalcode.value == "undefined") )
		{
		alert('Errore: il campo Codice Fiscale non può essere vuoto: devi inserire un valore!');
		form.elements.fiscalcode.focus();
		return false;
		}
	else if (form.elements.fiscalcode.value.length != 16)
		{
		alert('Errore: un codice fiscale deve essere lungo 16 caratteri!');
		form.elements.fiscalcode.focus();
		return false;
		}
	else
		{
		var err1 = ControllaCF(form.elements.fiscalcode.value);
		}
	if( err1 > '' )
		{
		alert('Errore:'+err1);
		form.elements.fiscalcode.focus();
		return false;
		}
	return true;
	}

function CheckStep3(form)
	{
	var expr01 = new RegExp("^([0-9]{5})$");
	var expr02 = new RegExp("^([a-zA-Z]{2})$");
	var expr03 = new RegExp("^([0-9]+)$");
	if ( (form.elements.address.value == "") || (form.elements.address.value == "undefined") )
		{
		alert('Errore: il campo Indirizzo non può essere vuoto: devi inserire un valore!');
		form.elements.address.focus();
		return false;
		}
	if ( (form.elements.city.value == "") || (form.elements.city.value == "undefined") )
		{
		alert('Errore: il campo Comune non può essere vuoto: devi inserire un valore!');
		form.elements.city.focus();
		return false;
		}
	if ( (form.elements.cap.value == "") || (form.elements.cap.value == "undefined") )
		{
		alert('Errore: il campo C.A.P. non può essere vuoto: devi inserire un valore!');
		form.elements.cap.focus();
		return false;
		}
	if ( (!(expr01.test(form.elements.cap.value))) || (form.elements.cap.value.length != 5))
		{
		alert('Errore: il campo C.A.P. non contiene un valore valido!');
		form.elements.cap.focus();
		return false;
		}
	if ( (form.elements.prov.value == "") || (form.elements.prov.value == "undefined") )
		{
		alert('Errore: il campo Provincia non può essere vuoto: devi inserire un valore!');
		form.elements.prov.focus();
		return false;
		}
	if ( (!(expr02.test(form.elements.prov.value))) || (form.elements.prov.value.length != 2))
		{
		alert('Errore: il campo Provincia non contiene un valore valido!');
		form.elements.prov.focus();
		return false;
		}
	if ( (form.elements.phone.value == "") || (form.elements.phone.value == "undefined") )
		{
		alert('Errore: il campo Recapito Telefonico non può essere vuoto: devi inserire un valore!');
		form.elements.phone.focus();
		return false;
		}
	if ( (!(expr03.test(form.elements.phone.value))))
		{
		alert('Errore: il campo Recapito Telefonico non contiene un valore valido!');
		form.elements.phone.focus();
		return false;
		}
	if ( (form.elements.email.value == "") || (form.elements.email.value == "undefined") )
		{
		alert('Errore: il campo E-mail non può essere vuoto: devi inserire un valore!');
		form.elements.email.focus();
		return false;
		}
	if (!(ControllaMail(form.elements.email.value)))
		{
		alert('Errore: il campo E-mail non contiene un valore valido!');
		form.elements.email.focus();
		return false;
		}
	return true;
	}
	
function CheckStep4(form)
	{
	var expr01 = new RegExp("^([0-9]{4})$");
	var expr02 = new RegExp("^([0-9]{1,3})$");
	var expr03 = new RegExp("^([0-9]{5})$");
	var expr04 = new RegExp("^([a-zA-Z]{2})$");
	if ( (form.elements.certificate.value == "") || (form.elements.certificate.value == "undefined") )
		{
		alert('Errore: il campo Titolo di Studio non può essere vuoto: devi inserire un valore!');
		form.elements.certificate.focus();
		return false;
		}
	if ( (form.elements.year0.value == "") || (form.elements.year0.value == "undefined") )
		{
		alert('Errore: il campo Anno Scolastico non può essere vuoto: devi inserire un valore!');
		form.elements.year0.focus();
		return false;
		}
	if ( (!(expr01.test(form.elements.year0.value))) || (form.elements.year0.value.length != 4))
		{
		alert('Errore: il campo Anno Scolastico non contiene un valore valido!');
		form.elements.year0.focus();
		return false;
		}
	if ( (form.elements.year1.value == "") || (form.elements.year1.value == "undefined") )
		{
		alert('Errore: il campo Anno Scolastico non può essere vuoto: devi inserire un valore!');
		form.elements.year1.focus();
		return false;
		}
	if ( (!(expr01.test(form.elements.year1.value))) || (form.elements.year1.value.length != 4))
		{
		alert('Errore: il campo Anno Scolastico non contiene un valore valido!');
		form.elements.year1.focus();
		return false;
		}
	var sum = form.elements.year0.value;
	sum++;
	if ( form.elements.year1.value != sum )
		{
		alert('Errore: il campo Anno Scolastico non contiene un valore valido!');
		form.elements.year0.focus();
		return false;
		}
	if ( (form.elements.rate.value == "") || (form.elements.rate.value == "undefined") )
		{
		alert('Errore: il campo Votazione non può essere vuoto: devi inserire un valore!');
		form.elements.rate.focus();
		return false;
		}
	if ( (!(expr02.test(form.elements.rate.value))) || (!((form.elements.rate.value.length >= 1) && (form.elements.rate.value.length <= 3))) || (form.elements.rate.value > 100) )
		{
		alert('Errore: il campo Votazione non contiene un valore valido!');
		form.elements.rate.focus();
		return false;
		}
	var err = 0;
	var i = 0;
	for (i=0; i<form.elements.unit.length; i++)
		{
		if (!(form.elements.unit[i].checked))
			{
			err++;
			}
		}
	if (err == form.elements.unit.length)
		{
		alert('Errore: è necessario indicare la unità di misura!');
		form.elements.unit[0].focus();
		return false;
		}
	if ( (form.elements.school_name.value == "") || (form.elements.school_name.value == "undefined") )
		{
		alert('Errore: il campo Denominazione non può essere vuoto: devi inserire un valore!');
		form.elements.school_name.focus();
		return false;
		}
	if ( (form.elements.school_address.value == "") || (form.elements.school_address.value == "undefined") )
		{
		alert('Errore: il campo Indirizzo non può essere vuoto: devi inserire un valore!');
		form.elements.school_address.focus();
		return false;
		}
	if ( (form.elements.school_city.value == "") || (form.elements.school_city.value == "undefined") )
		{
		alert('Errore: il campo Città non può essere vuoto: devi inserire un valore!');
		form.elements.school_city.focus();
		return false;
		}
	if ( (form.elements.school_cap.value == "") || (form.elements.school_cap.value == "undefined") )
		{
		alert('Errore: il campo C.A.P. non può essere vuoto: devi inserire un valore!');
		form.elements.school_cap.focus();
		return false;
		}
	if ( (!(expr03.test(form.elements.school_cap.value))) || (form.elements.school_cap.value.length != 5))
		{
		alert('Errore: il campo C.A.P. non contiene un valore valido!');
		form.elements.school_cap.focus();
		return false;
		}
	if ( (form.elements.school_prov.value == "") || (form.elements.school_prov.value == "undefined") )
		{
		alert('Errore: il campo Provincia non può essere vuoto: devi inserire un valore!');
		form.elements.school_prov.focus();
		return false;
		}
	if ( (!(expr04.test(form.elements.school_prov.value))) || (form.elements.school_prov.value.length != 2))
		{
		alert('Errore: il campo Provincia non contiene un valore valido!');
		form.elements.school_prov.focus();
		return false;
		}
	return true;
	}


function ControllaMail(mail)
	{
	var expr01 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,4})(\\]?)$");
	if (expr01.test(mail))
		{
		return true;
		}
	return false;
	}

function ControllaCF(cf)
	{
	var validi, i, s, set1, set2, setpari, setdisp;
	if( cf == '' )  return '';
	cf = cf.toUpperCase();
	if( cf.length != 16 )
		return "La lunghezza del codice fiscale non è\n"
		+"corretta: il codice fiscale dovrebbe essere lungo\n"
		+"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 "";
	}