function controlla(f) {

  var Cognome, Nome, Email, Via, Cap, Citta, Damese, Almese, Dagiorno, Algiorno;
  var numerotipo,numerotrattamento;

  Cognome=f.elements['cognome'].value;
  Nome=f.elements['nome'].value;
  Via=f.elements['via'].value;
  Cap=f.elements['cap'].value;
  Citta=f.elements['citta'].value;
  numerotipo=f.elements['sistemazione'].length;
  numerotrattamento=f.elements['trattamento'].length;

  

  
  daAnno=f.elements['daAnno'].value;
daMese=f.elements['daMese'].value;
daGiorno=f.elements['daGiorno'].value;


alAnno=f.elements['alAnno'].value;
alMese=f.elements['alMese'].value;
alGiorno=f.elements['alGiorno'].value;
numerotipoaccetto=f.elements['tipoaccetto'].length;

  Email=f.elements['email'].value;
  

  if (Cognome=='') 
     {
       alert('Il Cognome richiesto! \n Surname is required!');
       return false;
     }

  if (Nome=='') 
     {
       alert('Il Nome richiesto! \n Name is required!');
       return false;
     }


  if (Via=='') 
     {
       alert('La via richiesta! \n Address is required!');
       return false;
     }


  if (Cap=='') 
     {
       alert('Il cap richiesto! \n Zip code is required!');
       return false;
     }

  if (Citta=='') 
     {
       alert('La citta/provincia richiesta! \n Town is required!');
       return false;
     }
     
//inizio controllo email
	if ((Email.length<6)) {
      alert ('Email errata! Email error!')
      return false;
	}
	if (!((navigator.appName=='Netscape') && (navigator.appVersion.split(' ')[0]<5))) {
	    result = Email.match(/^[\w_-]+(\.[\w_-]+)*@[\w_-]+(\.[\w_-]+)*\.[A-Za-z]{2,4}$/)
		   if ((result==null) || (!(result[0].length==Email.length))) {
         		alert("Errore Email! Email error!");
         		return false;
       		}
	}
//Fine controllo email


//inizio controllo date
datainizio=new Date();
datainizio.setFullYear(daAnno);
datainizio.setMonth((daMese-1));
datainizio.setDate(daGiorno);

datafine=new Date();
datafine.setFullYear(alAnno);
datafine.setMonth((alMese-1));
datafine.setDate(alGiorno);

dataodierna= new Date();

if (datainizio < dataodierna){
alert ('Data errata! Date error!')
   return false;
}
if ((datainizio>datafine)||(daGiorno=='')||(alGiorno=='')) {
   alert ('Data errata! Date error!')
   return false;

}
//fine controllo date
// inizio controllo da sabato a sabato
//if (!(datainizio.getDay()==6)) {
//   alert ('La Data di inizio deve essere un sabato!')
//   return false;

//}

//if (!(datafine.getDay()==6)) {
//   alert ('La Data di partenza deve essere un sabato!')
//   return false;

//}

// fine controllo da sabato a sabato
// inizio sistemazione
		var tipologiachecked;
		tipologiachecked=false;
		for (var scorri=0; scorri<numerotipo; scorri++) {

			if (f.elements['sistemazione'][scorri].checked) {
	   		tipologiachecked=true;
			}

		}

		if (!tipologiachecked) {
   			alert('Scegliere almeno una tipo di sistemazione! \n Type of Typology is required!');
   			return false;
		}   
// fine sistemazione
// inizio trattamento
var tipologiachecked1;
		tipologiachecked1=false;
		for (var scorri1=0; scorri1<numerotrattamento; scorri1++) {

			if (f.elements['trattamento'][scorri1].checked) {
	   		tipologiachecked1=true;
			}

		}

		if (!tipologiachecked1) {
   			alert('Scegliere almeno una tipo di trattamento! \n Type of Typology is required!');
   			return false;
		}   
//fine trattamento		 
if(!(Consenso=f.elements['consenso'].checked==true)){
  alert ('Necessario dare il consenso al trattamento dei dati!\n You need to accept the Privacy conditions!')
         return false;
      }
var tipoaccettochecked;
tipoaccettochecked=false;
for (var scorri1=0; scorri1<numerotipoaccetto; scorri1++) {
	if (f.elements['tipoaccetto'][scorri1].checked) {
	   tipoaccettochecked=true;
	}

}

if (!tipoaccettochecked) {
   alert('Necessario scegliere tra SI e NO per l\'invio di informative su tariffe/offerte!\n You need consent to send information about the tariffs and special offers');
      return false;
} 

return true; 
}
