// COSTANTI

NUMERI = "0123456789";
TELEFONO = NUMERI + " /-";
LETTERE_NUMERI_SIMBOLI = "ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz 0123456789?+().,;'-/=*$%&@:ö";
LETTERE_NUMERI = "ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz 0123456789'.ö";
LETTERE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' .ö";
MAIUSCOLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZ' ";
MINUSCOLE = "abcdefghijklmnopqrstuvwxyz' ";
DISTANZA = NUMERI + " kKmMTt"
COSTO = NUMERI +","
//Caratteri validi per un campo email
CARATTERIMAIL = "qwertyuiopasdfghjklzxcvbnm.-_0123456789@:/"

//-------------------------------------------------------------------------
// Restituisce 'true' se la stringa 'input' contiene solo caratteri
// compresi nella stringa <legalchars>. Usata per i campi che accettano
// solo un certo insieme di caratteri.
//-------------------------------------------------------------------------
function isLegal(input, legalchars) {
	var ok = true;
	var chr = null;
	var i = 0;
	for (i=0; (i<input.length) && (ok); i++) {
		chr = input.charAt(i);
		ok = (legalchars.indexOf(chr,0) != -1);
	}
	return ok;
}

//------------------------------------------------------------------------------
// La funzione controlla che il campo passato come parametro sia stato riempito.
//------------------------------------------------------------------------------
function testBlank(firstForm) {
	if (firstForm.value == "") {		
		return(true);
	}		
	else return(false);
}	

//Funzione che controlla che un parametro passato come input sia
//compatibile con i legalchars passati ; restituisce true se sono
//tutti validi , false altrimenti

function checkString(input, legalchars){
    return isLegal(input,legalchars);	  
}

function numerico(input){
    return (checkString(input,NUMERI));  
}

//Conta quanti caratteri ci sono di tipo char in una stringa
function contaCar(input, carattere) {
	var i = 0;
	var occorrenze = 0;
	
	for (i=0; (i<input.length) ; i++) {
		chr = input.charAt(i);
		if(chr == carattere){
		   occorrenze++;
		}
	}
	return occorrenze;
}

//-------------------------------------------------------------------------
// Restituisce 'true' se la stringa 'input' contiene solo caratteri
// compresi nella stringa <legalchars>. Usata per i campi che accettano
// solo un certo insieme di caratteri.
//-------------------------------------------------------------------------
function legale(input, legalchars) {
	var ok = true;
	var chr = null;
	var i = 0;
	for (i=0; (i<input.length) && (ok); i++) {
		chr = input.charAt(i);		
		ok = !(legalchars.indexOf(chr,0));
	}
	return ok;
}

//Controllo che all'interno della stringa di input non ci siano 2 caratteri
//char(secondo argomento)consecutivi
function isDoppio(input, carattere) {
	var doppio = false;
	var chr = null;
	var chrSuccessivo = null;
	var i = 0;
	
	for (i=0; (i<input.length-1) && (!doppio); i++) {
		chr = input.charAt(i);
		if(chr == carattere){
		    chrSuccessivo = input.charAt(i+1);
		    if(chrSuccessivo == carattere){
		        doppio=true;
		    }
		}
	}
	return doppio;
}
//-----------------------------------------------------------------------------
//Controlla che il campo e-mail sia corretto ; il parametro passato è l'input type
//e-mail da controllare
//-----------------------------------------------------------------------------
//

function controllaMail(mail){

    var controllo = true;
    var indice = (mail.value).indexOf("@");
    var Email = mail.value + "";
    

				
	if (Email != ""){
		if ( (Email.indexOf("@") == -1) |
			 (Email.indexOf(".") == -1)) {
		   
				alert("Controllare che l'indirizzo E-Mail sia corretto.");
				mail.focus();
				controllo = false;
				
		} else if( (Email.length < 6) | (Email.length > 50) ){
		
			alert("L'indirizzo e-mail deve essere compreso tra 6 e 50 caratteri.Si prega di modificarlo");
			mail.focus();
			controllo = false;
			    
		} else if (Email.indexOf(" ") != -1){
		
			alert("Controllare che non ci siano spazi nell'indirizzo E-Mail.");
			mail.focus();
			controllo = false;
			
		} else if (Email.charAt(indice+1) == "."){
		
			alert("Non si può mettere il punto dopo il carattere @");
			mail.focus();
			controllo = false;
			
		} else if (Email.charAt(indice-1) == "."){
		
			alert("Non si può mettere il punto prima del carattere @");
			mail.focus();
			controllo = false;
			
		} else if ((Email.indexOf(".") != -1) && (Email.indexOf(".") == 0)){
		
			alert("Non si può mettere il punto come primo carattere.");
			mail.focus();
			controllo = false;
			
		} else if ((Email.indexOf("@") != -1) && (Email.indexOf("@") == 0)){
		
			alert("Non si può mettere il carattere @ in prima posizione.");
			mail.focus();
			controllo = false;
			
		} else if ((Email.indexOf(".") != -1) && (Email.lastIndexOf(".") == Email.length - 1)){
		
			alert("Non si può mettere il punto come ultimo carattere.");
			mail.focus();
			controllo = false;
			
		} else if ((Email.indexOf("@") != -1) && (Email.lastIndexOf("@") == Email.length - 1)){
		
			alert("Non si può mettere il carattere @ in ultima posizione.");
			mail.focus();
			controllo = false;
			
		} else if (!checkString(Email, CARATTERIMAIL)){
		
			alert("L'indirizzo e-mail può contenere solo caratteri minuscoli, numeri e i caratteri speciali '.','-','_','@'.");
			mail.focus();
			controllo = false;
			
		} else if(isDoppio(Email,'.')){
		
			alert("Non si possono mettere due punti uno di seguito all'altro.");
			mail.focus();
			controllo = false;
			
		} else if (Email.indexOf("@") != Email.lastIndexOf("@")){
		
		    alert("L'indirizzo E-Mail deve contenere un solo carattere @.");
			mail.focus();
			controllo = false;
			
		} else if (!punto(indice, Email)){
		
		    alert("Deve essere presente un punto dopo il carattere '@'.");
			mail.focus();
			controllo = false;
		}
			
					
	}else{
	    alert("Inserire l'indirizzo e-mail.");
		mail.focus();
		controllo = false;
	}
	
	return controllo;
}

//-------------------------------------------------------------------------
//Controlla che dopo il carattere '@' ci sia il punto
//-------------------------------------------------------------------------

function punto(indice, mail){
    
    var flag = false;
    var i = indice + 1;
    
    for (i; i<mail.length && !flag; i++){
    
        if(mail.charAt(i) == "."){
        
            flag = true;
        }
    }
    return flag;
}

//-----------------------------------------------------------------------------
//Controlla che il campo codice_fiscale sia corretto ; il parametro passato 
//è l'elemento text nel quale è contenuto il codice fiscale
//-----------------------------------------------------------------------------
//

function controlla_codice(campo){
   caratteri= new Array ("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z")
   pari= new Array (0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25)
   dispari=new Array (1,0,5,7,9,13,15,17,19,21,1,0,5,7,9,13,15,17,19,21,2,4,18,20,11,3,6,8,12,14,16,10,22,25,24,23)
   cod=campo.value.toLowerCase();
   check=true;
   if (cod.length!=16){
      check=false
      }
     else
      {
      lettere=cod.substr(0,6)+cod.substr(8,1)+cod.substr(11,1)+cod.substr(15);
      numeri=cod.substr(6,2)+cod.substr(9,2)+cod.substr(12,3);
      for (i=0;i<10;i++){
         if (lettere.charCodeAt(i)<97 || lettere.charCodeAt(i)>122){
            check=false;}
      }
      for (i=0;i<8;i++){
         if (numeri.charCodeAt(i)<48 || numeri.charCodeAt(i)>57){
            check=false;
         }
      }   
     }
   //checksum del codice fiscale
   test=cod.substr(15,1);
   var somma=0
   for (i=0;i<16;i=i+2){ //dispari
       carattere=cod.substr(i,1)
       for (k=0;k<36;k++){
          if (carattere==caratteri[k]){
             somma=somma+dispari[k]
             break
          }
       }
    }
    for (i=1;i<15;i=i+2){ //pari
       carattere=cod.substr(i,1)
       for (k=0;k<36;k++){
          if (carattere==caratteri[k]){
             somma=somma+pari[k]
             break
          }
       }
    }
   resto=somma % 26;
   var lettera=String.fromCharCode(97+resto);            
   if (test != lettera){
      check=false;
      }   
   if (check==false){
      alert("Codice fiscale errato!")
      }
   return check;
}

//-----------------------------------------------------------------------------
//Controlla che il campo partita iva sia corretto ; il parametro passato 
//è l'elemento text nel quale è contenuta la partita iva
//-----------------------------------------------------------------------------
//

function controlla_partita(campo){
   cod=campo.value;
   check=true;
   if (cod.length!=11){
      check=false
      }
     else
      {
      for (i=0;i<11;i++){
         if (cod.charCodeAt(i)<48 || cod.charCodeAt(i)>57){
            check=false;
         }
      }   
     }
   if (check==false){
      alert("Partita iva errata!")
      }
   return check;
}


