function checkMail (sMail) {
        var aMail = new Array ();        var aDomain = new Array ();
        
        aMail = sMail.split (/\@/);
        var res = true
        var username = new String (); username = aMail[0];
        var domain = new String (); domain = aMail[1];
        
        if (aMail.length <2 ) return false;
        if (username == "") return false;
        if (domain == "" ) 
           return false;
        else {
            aDomain = domain.split (/\./);
            if (aDomain.length <2) return false;
        }
        
        return res;
    }
            
    function checkCF (cf) {
        return true;
    }    

    function checkSubmit () {
        var res = (checkMail (document.form.EMAIL.value) && checkCF (document.form.CF.value) )
        if (!res) window.alert ("Errori nell'indirizzo di email o nel codice fiscale");
        return res;
    }
        
    function toggleDisplay (sID) {
    
      eval (" var sObj = "+sID+".style") 
      var bDisplay = sObj.display
      if (bDisplay == "") {
          sObj.display = "none"
      } else {
          sObj.display = ""
      }                
    }      
    
    function validateNull (formname,field,desc) {
        var res = ""
        var obj;
        eval ("obj = document."+formname+"."+field)
        if  ( (!obj.value) || (obj.value == "") )
            res = "Il campo " + desc + " e' vuoto, e dovrebbe essere riempito.\n"
        return res;
    }
    
    function validateDate(formname,field,desc) {
        var res = ""
        var obj;
        var i;
        eval ("obj = document."+formname+"."+field)
    	
        i = Date.parse (obj.value)
        if (isNaN(i)) 
            res = "Il campo " + desc + " non e' una data valida. Bisogna correggerla.\n";
        return res
    }
    
    function validateInt(formname,field,desc) {
        var res = ""
        var obj;
        var i;
        eval ("obj = document."+formname+"."+field)
        
        var txt = obj.value;
        
        if (txt != "") 	{
    	i = parseInt(txt, 10);
    	if (isNaN(i) || (i.toString(10)) != txt.replace(re, ""))
                res = "Il campo " + desc + " non e' un numero intero valido"
        } 
        return res
    }
    
    function validateNum(formname,field,desc) {
        var res = ""
        var obj;
        var i;
        eval ("obj = document."+formname+"."+field)
        var txt = obj.value;
        if (txt != "") 	{
    	if (isNaN(txt))
                res = "Il campo " + desc + " non e' un numero valido"
        } 
        return res
    }
    
    
    function validateMail (formname,field,desc) {
        var res = ""
        var obj;
        var i;
        eval ("obj = document."+formname+"."+field)
    
        var aMail = new Array ();
        var aDomain = new Array ();
        var sMail = new String (obj.value)    
        
        aMail = sMail.split (/\@/);
        var res = ""
        var username = new String (); username = aMail[0];
        var domain = new String (); domain = aMail[1];
    
            if (aMail.length <2 ) return "Indirizzo Email " + desc + " incompleto\n";
            if (username == "") return "Indirizzo Email " + desc + " incompleto\n";
            if (domain == "" ) 
               return "Indirizzo Email " + desc + " con il dominio mancante\n";
            else {
                aDomain = domain.split (/\./);
                if (aDomain.length <2) return "Indirizzo Email " + desc + " con il dominio errato\n";
            }
            
            return "";
    }
    
    
    function validateCF (formname, field, desc){
       eval ("var campo=document."+formname+"."+field);
       var check = ""
       
       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+="lunghezza del codice errata\n"
          }
         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+="errore nelle lettere\n";}
          }
          for (i=0;i<8;i++){
             if (numeri.charCodeAt(i)<48 || numeri.charCodeAt(i)>57){
                check+="errore nei numeri\n";
             }
          }   
         }
       //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+="Errore. test non e' lettera\n"
          }   
    
       return check;
    }
    
    
    function validatePI (formname,field,desc) {
        var res = ""
        var obj;
        var i;
        eval ("obj = document."+formname+"."+field)
        var pi = obj.value
    
    	if( pi.length != 11 )
    		return "La lunghezza della partita IVA  del campo " + desc + "non e\n" +
    			"corretta: la partita IVA dovrebbe essere lunga\n" +
    			"esattamente 11 caratteri.\n";
    	validi = "0123456789";
    	for( i = 0; i < 11; i++ ){
    		if( validi.indexOf( pi.charAt(i) ) == -1 )
    			return "La partita IVA del campo " + desc + "contiene un carattere non valido `" +
    				pi.charAt(i) + "'.\nI caratteri validi sono le cifre.\n";
    	}
    	s = 0;
    	for( i = 0; i <= 9; i += 2 )
    		s += pi.charCodeAt(i) - '0'.charCodeAt(0);
    	for( i = 1; i <= 9; i += 2 ){
    		c = 2*( pi.charCodeAt(i) - '0'.charCodeAt(0) );
    		if( c > 9 )  c = c - 9;
    		s += c;
    	}
    	if( ( 10 - s%10 )%10 != pi.charCodeAt(10) - '0'.charCodeAt(0) )
    		return "La partita IVA del campo " + desc + " non e valida:\n" +
    			"il codice di controllo non corrisponde.\n";
    	return '';
    }
    
    function validateCFPI (formname,field,desc) {
       var res1="";
       var res2="";
    
       res1=validatePI (formname,field,desc);
       res2=validateCF (formname,field,desc);
       
       if ((res1=="") || (res2=="")) 
          return "";
       else
          return "Il campo " + desc + " non e un CF o una P.IVA valida:\n";
    }
   
   
   
    		function chiedi()
    		{
    			var features = 'dialogHeight:300px;dialogWidth:500px;center:yes;help:no;scroll:no;status:no;resizable:yes'
    			var retVal = showModalDialog('atecotree.html',null,features)
    			if (retVal != null)
    				txt.value = retVal
    		}
    
    function validateForm () {
       var res = validateCFPI ("form","cf","Codice Fiscale");
    
       if (res != "") {
          window.alert (res);
          return false;
       } else {
          return true;
       }
    
}
