function isObject(a) {
    return (a && typeof a == 'object');
}

function showImage(imagename, imageurl, errors) {
	document[imagename].src = imageurl;
	if (!haveerrors && errors) haveerrors = errors;
}

function toForm() {
	document.NormalForm.cognome.focus();
}


<!-- Begin



var haveerrors = 0;

function validateForm(f) {
haveerrors = 0;


// Controllo date arrivo - partenza
var monthLength = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var monthLength_back = new Array(31,28,31,30,31,30,31,31,30,31,30,31);

var ArriveDateOk = true;
var BackDateOk = true;
var dateExists = true;
var dateExists_back = true;

var day = f.giorno_arrivo.value;
var month = f.mese_arrivo.value;
var year = f.anno_arrivo.value;

var day_back = f.giorno_partenza.value;
var month_back = f.mese_partenza.value;
var year_back = f.anno_partenza.value;

if (year/4 == parseInt(year/4))
	monthLength[1] = 29;

if (month <1)
	dateExists = false;

if (day <1)
	dateExists = false;

if (day > monthLength[month-1])
	dateExists = false;

monthLength[1] = 28;

if (!dateExists) ArriveDateOk = false;

if (year_back/4 == parseInt(year_back/4))
	monthLength_back[1] = 29;

if (month_back<1)
	dateExists_back = false;

if (day_back<1)
	dateExists_back = false;

if (day_back > monthLength_back[month_back-1])
	dateExists_back = false;

monthLength_back[1] = 28;

if (!dateExists_back) BackDateOk = false;

var now = new Date();
//now = now.getTime(); //NN3
now = Math.round(now.getTime()/1000); //NN3

var dateToCheck = new Date();
//dateToCheck.setYear(year);
//dateToCheck.setMonth(month-1);
//dateToCheck.setDate(day);
//var checkDate = dateToCheck.getTime();
dateToCheck.setFullYear(year,month-1,day);
var checkDate = Math.round(dateToCheck.getTime()/1000);

var dateToCheck_back = new Date();
//dateToCheck_back.setYear(year_back);
//dateToCheck_back.setMonth(month_back-1);
//dateToCheck_back.setDate(day_back);
//var checkDate_back = dateToCheck_back.getTime();
dateToCheck_back.setFullYear(year_back,month_back-1,day_back);
var checkDate_back = Math.round(dateToCheck_back.getTime()/1000);

var ArriveDate = (now <= checkDate);
var BackDate = (checkDate_back > checkDate);

if (!ArriveDate) ArriveDateOk = false;
if (!BackDate) BackDateOk = false;

if(year=="" || month=="" || day == "") ArriveDateOk = false;
if(year_back=="" || month_back=="" || day_back=="") BackDateOk = false;

// var pastDate = (now > checkDate);
// END - Controllo date arrivo - partenza

function isChecked(strField){
if (!strField.length) return strField.checked; // not a group
for(var i = 0; i < strField.length; i++){
if(strField[i].checked) return true; // yes one was ticked
}
return false;
}

Filtro = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
FiltroAnagrafica = /[a-zA-Z0-9\'\.]+/;

(FiltroAnagrafica.test(f.nome.value)) == false
? showImage("nome_error", "http://www.netplan.it/img_form/error.gif", true)   // no semi-colon after this line!
: showImage("nome_error", "http://www.netplan.it/img_form/empty.gif", false); // true = errors, false = no errors

(FiltroAnagrafica.test(f.nominativo.value)) == false
? showImage("nominativo_error", "http://www.netplan.it/img_form/error.gif", true)   // no semi-colon after this line!
: showImage("nominativo_error", "http://www.netplan.it/img_form/empty.gif", false); // true = errors, false = no errors

(Filtro.test(f.email.value)) == false
? showImage("email_error", "http://www.netplan.it/img_form/error.gif", true)   // no semi-colon after this line!
: showImage("email_error", "http://www.netplan.it/img_form/empty.gif", false); // true = errors, false = no errors

if(isObject(f.confermaemail) && (Filtro.test(f.email.value)==true) ){
	(f.confermaemail.value != f.email.value)
	? showImage("confermaemail_error", "http://www.netplan.it/img_form/error.gif",true)   // no semi-colon after this line!
	: showImage("confermaemail_error", "http://www.netplan.it/img_form/empty.gif",false); // true = errors, false = no errors
}

if(isObject(f.appellativo) ){
	(f.appellativo.options[f.appellativo.selectedIndex].value.length < 1 ) || (FiltroAnagrafica.test(f.cognome.value)) == false
	? showImage("cognome_error", "http://www.netplan.it/img_form/error.gif",true)   // no semi-colon after this line!
	: showImage("cognome_error", "http://www.netplan.it/img_form/empty.gif",false); // true = errors, false = no errors
}else{
	(FiltroAnagrafica.test(f.cognome.value)) == false
	? showImage("cognome_error", "http://www.netplan.it/img_form/error.gif", true)   // no semi-colon after this line!
	: showImage("cognome_error", "http://www.netplan.it/img_form/empty.gif", false); // true = errors, false = no errors
}


if( isObject(f.nazione) ){
	(f.nazione.options[f.nazione.selectedIndex].value.length < 1 )
	? showImage("nazione_error", "http://www.netplan.it/img_form/error.gif",true)   // no semi-colon after this line!
	: showImage("nazione_error", "http://www.netplan.it/img_form/empty.gif",false); // true = errors, false = no errors
}

(!ArriveDateOk)
? showImage("arrivo_error", "http://www.netplan.it/img_form/error.gif", true)
: showImage("arrivo_error", "http://www.netplan.it/img_form/empty.gif", false);

(!BackDateOk)
? showImage("partenza_error", "http://www.netplan.it/img_form/error.gif", true)
: showImage("partenza_error", "http://www.netplan.it/img_form/empty.gif", false);

(f.quantita_alloggio_richiesta_1.value.length < 1)
? showImage("quantita_alloggio_richiesta_1_error", "http://www.netplan.it/img_form/error.gif", true)   // no semi-colon after this line!
: showImage("quantita_alloggio_richiesta_1_error", "http://www.netplan.it/img_form/empty.gif", false); // true = errors, false = no errors

(f.tipo_alloggio_richiesta_1.value.length < 1)
? showImage("tipo_alloggio_richiesta_1_error", "http://www.netplan.it/img_form/error.gif", true)   // no semi-colon after this line!
: showImage("tipo_alloggio_richiesta_1_error", "http://www.netplan.it/img_form/empty.gif", false); // true = errors, false = no errors

(f.totale_adulti.value.length < 1)
? showImage("totale_adulti_error", "http://www.netplan.it/img_form/error.gif", true)   // no semi-colon after this line!
: showImage("totale_adulti_error", "http://www.netplan.it/img_form/empty.gif", false); // true = errors, false = no errors

(!isChecked(f.consenso))
? showImage("consenso_error", "http://www.netplan.it/img_form/error.gif", true)   // no semi-colon after this line!
: showImage("consenso_error", "http://www.netplan.it/img_form/empty.gif", false); // true = errors, false = no errors

if(haveerrors){
	alert(errorStr);
}
return (!haveerrors);
}
//  End
 -->

