var separatore_data = '-';
var separatore_currency = '.';
var separatore_currency_decimale = ',';
var punto_decimale = '.';
var virgola_decimale = ',';
var separatore_orario='.';
var INTEGER_LIM_INF=-2147483648;
var INTEGER_LIM_SUP=+2147483647;
var SMALLINT_LIM_INF=-32768;
var SMALLINT_LIM_SUP=+32767;


//POSIZIONE CARATTERI
//Nota: il carattere b prima di ! è blank
//                          'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxb!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_'abcdefghijklmnopqrstuvwxyz{|}~xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
var allowed_chars_ridotto='0000000000000000000000000000000010000000000000001111111111000000000000000000000000000000000000010111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
var allowed_chars='0000000000100100000000000000000011100111111111111111111111111111111111111111111111111111111000010111111111111111111111111110000010000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000011000000110011000011000001100000';
var textarea_chars='0000000000100100000000000000000011100111111111111111111111111111111111111111111111111111111000010111111111111111111111111110000010000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000011000000110011000011000001100000';
var  folder_chars='0000000000000000000000000000000011011111110111101111111111010100111111111111111111111111111000011111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
var giorni_per_mese = new Array(13);
giorni_per_mese[1] = 31;
giorni_per_mese[2] = 29;   
giorni_per_mese[3] = 31;
giorni_per_mese[4] = 30;
giorni_per_mese[5] = 31;
giorni_per_mese[6] = 30;
giorni_per_mese[7] = 31;
giorni_per_mese[8] = 31;
giorni_per_mese[9] = 30;
giorni_per_mese[10] = 31;
giorni_per_mese[11] = 30;
giorni_per_mese[12] = 31;

function errore (campo) {
        campo.focus();
        if ((campo.type=='text')||(campo.type=='textarea'))  campo.select();
        return false;
}

function vuoto (stringa) {
  return ((stringa == null)||(stringa.length==0))
}

function compatta (stringa) {
  s = new String('');
  for (i = 0; (stringa.charAt(i)==' ')&&(i<stringa.length); i++);
  for (j = stringa.length-1; (stringa.charAt(j)==' ')&&(j>=0); j--);
  s = stringa.substr(i,j-i+1);  
  return s;
}

function cifra (c) {
  return ((c >= '0') && (c <= '9'));
}

function StrToInt(stringa) {
    
 for (i = 0; i < stringa.length; i++) {   
  c = stringa.charAt(i);
  if (!cifra(c)) return -1;
 }
 i_stringa = parseInt(stringa,10);
 return i_stringa;
}

function ctrl_obbl(campo, label)
{
    s = compatta(campo.value);
    if (vuoto(s)) 
    {
      alert('Il campo '+label+' non puo\' essere lasciato vuoto');
      return errore(campo);
    }
    return true;
}

function ctrl_obbl_new(campo, label)
{
    s = compatta(campo.value);
    if (vuoto(s)) 
    {
      //alert('Il campo '+label+' non puo\' essere lasciato vuoto');
      return ('\nIl campo '+label+' non puo\' essere lasciato vuoto');
    }
    return '';
}

function ctrl_obbl_lingua(campo, label)
{
    s = compatta(campo.value);
    if (vuoto(s)) 
    {
      alert(label);
      return errore(campo);
    }
    return true;
}

function ctrl_caratteri (campo) {
    if (campo.type=='textarea')
        chars=textarea_chars;
    else
        chars=allowed_chars;
    for (i = 0; i < campo.value.length; i++){
        c = campo.value.charCodeAt(i);
        if (chars.charAt(c) == '0')
        {
        alert('L\'utilizzo del carattere '+campo.value.charAt(i)+' non e\' consentito');
        return errore(campo);
        }
    }
    return true;
  }

function ctrl_caratteri_ridotto (campo) {
    for (i = 0; i < campo.value.length; i++){
        c = campo.value.charCodeAt(i);
        if (allowed_chars_ridotto.charAt(c) != '1')
        {
        alert('Sono consentiti solo: lettere minuscole, cifre e il carattere "_"');
        return errore(campo);
        }
    }
    return true;
  }
  
function ctrl_spazi (campo, label) {
    
    for (i = 0; i < campo.value.length; i++){
        
        c = campo.value.charAt(i);
        if (c == ' ')
        {
        alert('Il campo '+label+' non puo\' contenere spazi');
        return errore(campo);
        }
    }
    return true;
  }

function is_integer (campo) { 
    s = compatta(campo.value);
    campo.value = s;
    if (!vuoto(s)) {
      if (s.charAt(0)=='+') {
        j = 1;
        campo.value = s.substr(1,s.length-1); 
      }
      else if (s.charAt(0)=='-')
        j = 1;
      else j = 0;
      for (i = j; i < s.length; i++)
      {   
        c = s.charAt(i);
        if (!cifra(c)) {
            alert('Il valore inserito non e\' un numero intero');
            return errore(campo);
        }
      }
      num = parseInt(s,10);
      if ((num<INTEGER_LIM_INF) || (num>INTEGER_LIM_SUP)) {
        alert('Il valore inserito non e\' compreso tra '+INTEGER_LIM_INF+' e '+INTEGER_LIM_SUP);
          return errore(campo);
      }    
    }
  return true;
}

function is_integer_compreso (campo, a, b, label)
{
  if((label=='') || (label==null)) label=''; else label=label+' ';
    if (!is_integer(campo)) return false;
    s=campo.value;
    if (!vuoto(s)) {
      num = parseInt(campo.value,10);
      if ((num<a) || (num>b)) {
        alert('Il valore del campo ' + label + 'non e\' compreso tra '+a+' e '+b);
        return errore(campo);
      }    
    }
  return true;
}

function is_integer_positivo (campo,flag_no_zero, label) {   
    if (!is_integer(campo)) 
         return errore(campo);

    s=campo.value;
    if (!vuoto(s)) {
      num = parseInt(campo.value,10);
      if (num<0) {
        alert(label+' deve essere un numero intero positivo.');
        return errore(campo);
      }    
      if ((flag_no_zero) && (num==0)) {
        alert('Il valore zero non e\' ammesso per '+label);
        return errore(campo);
      }    
    }
  return true;
}


function controllaData(campo) {
	var fake = compatta(campo.value)
	if (vuoto(fake))
	{
		alert('La data immessa non è valida.');
		return errore(campo);
	}
	else
	{
		
		var giorno='';
		giorno = fake.substring(0,2);
		
		var mese='';
		mese = fake.substring(3,5);

		var anno='';
		anno = fake.substring(6,10);
		if (anno <= 1000) {anno=''}

		data_inserita='';
		data_inserita=giorno + '/' + mese + '/' + anno
		var newDateObj = new Date(mese + '/' + giorno + '/' + anno);

		if (isNaN(newDateObj)) 
		{
			alert('La data immessa non è valida.');
			return errore(campo);
		}
		else
		{
			giorno='';
			giorno = newDateObj.getDate()
			giorno = '00' + giorno
			m = giorno.length
			giorno = giorno.substring(m-2,m)

			mese='';
			mese = newDateObj.getMonth() + 1
			mese = '00' + mese
			m = mese.length
			mese = mese.substring(m-2,m)

			anno='';
			anno = newDateObj.getFullYear()
			anno = '0000' + anno
			m = anno.length
			anno = anno.substring(m-4,m)
			
			uscita='';
			uscita = giorno + '/' + mese + '/' + anno
			//alert(uscita)
			//alert(data_inserita)
			if (uscita!=data_inserita)
			{
				alert('La data immessa non è valida.');
				return errore(campo);
				
			}
		}
	}
	return true;
}

function controllaDataLingua(campo, label) {
	var fake = compatta(campo.value)
	if (vuoto(fake))
	{
		alert(label);
		return errore(campo);
	}
	else
	{
		
		var giorno='';
		giorno = fake.substring(0,2);
		
		var mese='';
		mese = fake.substring(3,5);

		var anno='';
		anno = fake.substring(6,10);
		if (anno <= 1000) {anno=''}

		data_inserita='';
		data_inserita=giorno + '/' + mese + '/' + anno
		var newDateObj = new Date(mese + '/' + giorno + '/' + anno);

		if (isNaN(newDateObj)) 
		{
			alert(label);
			return errore(campo);
		}
		else
		{
			giorno='';
			giorno = newDateObj.getDate()
			giorno = '00' + giorno
			m = giorno.length
			giorno = giorno.substring(m-2,m)

			mese='';
			mese = newDateObj.getMonth() + 1
			mese = '00' + mese
			m = mese.length
			mese = mese.substring(m-2,m)

			anno='';
			anno = newDateObj.getFullYear()
			anno = '0000' + anno
			m = anno.length
			anno = anno.substring(m-4,m)
			
			uscita='';
			uscita = giorno + '/' + mese + '/' + anno
			//alert(uscita)
			//alert(data_inserita)
			if (uscita!=data_inserita)
			{
				alert(label);
				return errore(campo);
				
			}
		}
	}
	return true;
}


function is_date (campo_giorno, campo_mese, campo_anno)
{
  s_giorno = campo_giorno.value;
  s_mese = campo_mese.value;
  s_anno = campo_anno.value;
   
  if (s_anno.length!=4) {
    alert('Anno non valido');
    return errore(campo_anno);
  }
  for (i = 0; i < s_anno.length; i++) {   
    c = s_anno.charAt(i);
    if (!cifra(c)) {
      alert('Anno non valido');
      return errore(campo_anno);
    }
  }
  anno = parseInt(s_anno,10);
  mese = parseInt(s_mese,10);
  if ((mese<1)||(mese>12)) {
    alert('Mese non valido');
    return errore(campo_mese);
  }

  if ((anno%4==0)&&((!(anno%100==0))||(anno%400==0)))
    giorni_per_mese[2]=29;
  else
    giorni_per_mese[2]=28;
    
  giorno = parseInt(s_giorno,10);
  if ((giorno<1)||(giorno>giorni_per_mese[mese])) {
    alert('Giorno non valido');
    return errore(campo_giorno);
  }
  return true;
}

function is_date_prec_oggi (campo_giorno, campo_mese, campo_anno)
{
  if (is_date(campo_giorno, campo_mese, campo_anno)) {
    var data = new Date();
    var currdate = data.getYear()* 10000 + (data.getMonth()+1)* 100 + data.getDate()       
    var dataob = parseInt(campo_anno.value + campo_mese.value + campo_giorno.value)
    if (dataob >= currdate) {
      alert('La data deve essere precedente alla data corrente');    
      return errore(campo_giorno);
    }
    return true;
  }
  return false;
}

function is_date_succ_oggi (campo_giorno, campo_mese, campo_anno)
{
  if (is_date(campo_giorno, campo_mese, campo_anno)) {
    var data = new Date();
    var currdate = data.getYear()* 10000 + (data.getMonth()+1)* 100 + data.getDate()  
    var dataob = parseInt(campo_anno.value + campo_mese.value + campo_giorno.value)
    if (dataob <= currdate) {
      alert('La data deve essere successiva alla data corrente');    
      return errore(campo_giorno);
    }
    return true;
  }
  return false;
}

function is_time (campo)
{
    s = compatta(campo.value);
    if (!vuoto(s)) 
    {
      s = s.replace(/\.|:/gi,separatore_orario); // aggiungere i ':' e togliere quello che non serve
      h = s.indexOf(separatore_orario);
      if (h!=-1) {
       ora = s.substr(0,h);
       min = s.substr(h+1,s.length);
       if (min=='') min = '00';
      } else {
       ora = s;
       min = '00';
      }
      ora_i = StrToInt(ora);
      min_i = StrToInt(min);
      if ((ora_i<0) || (ora_i>23)) {
        alert('Ora non valida');
        return errore(campo);
      }
      if ((min_i<0) || (min_i>59)) {
        alert('Minuti non validi');
        return errore(campo);
      }
      if ((ora_i==24) && (min_i>0)) {
        alert('Minuti non validi');
        return errore(campo);
      }
      if ((ora_i<10) && (ora.length < 2)) ora='0'+ora;    
      if ((min_i<10) && (min.length < 2)) min='0'+min;    
      campo.value = ora+separatore_orario+min;
    }
  return true;
}

function is_time_compreso (campo,orainf,orasup,flag_no_estremi,label)
{
  if((label=='') || (label==null)) label=''; else label=label + ' ';
    if (orainf=='' || orainf==null) {orainf='00.00'; i_orainf=0; }
    else i_orainf=parseInt(orainf.substr(0,2) + orainf.substr(3,2),10);
    if (orasup=='' || orasup==null) {orasup='23.59'; i_orasup=2359; }
    else { 
     if (orasup=='00.00') i_orasup=2359;// sono le 00.00 cioe' le 24.00
     else i_orasup=parseInt(orasup.substr(0,2) + orasup.substr(3,2),10);
    }
    if (is_time(campo)) Icampo=parseInt(campo.value.substr(0,2) + campo.value.substr(3,2),10); else return false;
     s = campo.value;
     if (!vuoto(s)) {
      if ((Icampo<i_orainf) || (Icampo>i_orasup)) {
          if ((i_orainf!=0) && (i_orasup!=2359)) alert('Il valore del campo '+ label +'non e\' compreso tra '+ orainf +' e '+ orasup);
          if ((i_orainf==0) && (i_orasup!=2359)) alert('Il valore del campo ' + label + 'non e\' inferiore a '+ orasup);
          if ((i_orainf!=0) && (i_orasup==2359)) alert('Il valore del campo ' + label + 'non e\' superiore a '+ orainf);
          return errore(campo);
      }
      if (flag_no_estremi) {
        if (Icampo==i_orainf) {
          alert('Il valore del campo ' + label + 'non e\' superiore a '+ orainf);
          return errore(campo);
        }
        if (Icampo==i_orasup) {
          alert('Il valore del campo ' + label + 'non e\' inferiore a ' + orasup);
          return errore(campo);
        }
       }
     }
  return true;
} 

function is_decimal (campo, cifre, decimali)
{
    s = compatta(campo.value);
    campo.value = s;
    if (!vuoto(s)) {
      if (s.charAt(0)=='+') {
        j = 1;
        campo.value = s.substr(1,s.length-1); 
      }
      else if (s.charAt(0)=='-')
        j = 1;
      else j = 0;
      h = s.indexOf(punto_decimale);
      k = s.indexOf(virgola_decimale);
      if ((h > -1) && (k > -1))
         {
          alert('Il valore inserito non e\' numerico');
          return errore(campo);
         } 
      else
         {     
          if (k > -1) {
              h=k;
              s=s.substr(0, k)+punto_decimale+s.substr(k+1, s.length);
          }  
          for (i = j; i < s.length; i++) {
            if (i!=h) {
               c = s.charAt(i);
               if (!cifra(c)) {
                  alert('Il valore inserito non e\' numerico');
                  return errore(campo);
                  }
               } 
            }
          }
      if (h==-1) 
      {
        if (s.length-j>(cifre-decimali)) {
          alert('Il valore inserito e\' un intero con piu\' di '+(cifre-decimali)+' cifre');
          return errore(campo);
        }
      }
      else     
      {
         intero = s.substr(j,h);
         decimale = s.substr(h+1, s.length-h-1);
         if (s.length-1-j>cifre) {
           alert('Il valore inserito ha piu\' di '+cifre+' cifre');
           return errore(campo);
         }
        if (intero.length>(cifre-decimali)) {
          alert('Il valore inserito ha piu\' di '+(cifre-decimali)+' cifre per la parte intera');
          return errore(campo);
        }
        if (decimale.length>decimali) {
          alert('Il valore inserito ha piu\' di '+decimali+' cifre decimali');
          return errore(campo);
        }
      }
    }
  return true;
}

function is_decimal_positivo (campo, cifre, decimali, flag_no_zero) {   
    if (!is_decimal(campo, cifre, decimali)) return errore(campo);
    s = campo.value;
    if (!vuoto(s)) {
      num = parseFloat(campo.value);
      cond = (num >= 0);
      if (num<0) {
        alert('Il valore inserito non e\' positivo');
        return errore(campo);
      }    
      if ((flag_no_zero) && (num==0)) {
        alert('Il valore zero non e\' ammesso per questo campo');
        return errore(campo);
      }    
    }
  return true;
}

function is_char (campo, lunghezza, label) {
    cond = (campo.value.length<=lunghezza);
    if (!cond) 
      if (confirm('Il campo '+label+' supera la lunghezza consentita ('+lunghezza+' caratteri)\nDevo troncarlo ?')) {
        campo.value = campo.value.substr(0,lunghezza);
        cond = true;
      }
    if (!cond) return errore(campo);
  return true;
}

function is_char_esatto (campo, lunghezza, label) {
  if (campo.value.length!=lunghezza) {
    alert('Il campo '+label+' deve essere lungo '+lunghezza+' caratteri')
    return errore(campo);
  }
  return true;
}

function confrontaPSW(campo1, campo2) {
    var s1 = compatta(campo1.value);
	var s2 = compatta(campo2.value);
    if (s1.toLowerCase() != s2.toLowerCase()) 
    {
      alert('Le password non sono uguali');
      return errore(campo2);
    }
    return true;

}

function confrontaPSW_Lingua(campo1, campo2, label) {
    var s1 = compatta(campo1.value);
	var s2 = compatta(campo2.value);
    if (s1.toLowerCase() != s2.toLowerCase()) 
    {
      alert(label);
      return errore(campo2);
    }
    return true;
}

function controlloPSW(campo) {
	if (window.RegExp) {
		s = campo.value;
		var patternvalido = "^[a-zA-Z0-9]+$";
		var regv = new RegExp(patternvalido);
		if(s.match(regv)) {
			return true;
		}
		else {
		  alert('La Password può contenere solo lettere maiuscole, minuscole e numeri (senza spazi).');
		  return errore(campo);
		}			
	}
	else {
		return true;
	}
}

function controlloPSW_Lingua(campo, label) {
	if (window.RegExp) {
		s = campo.value;
		var patternvalido = "^[a-zA-Z0-9]+$";
		var regv = new RegExp(patternvalido);
		if(s.match(regv)) {
			return true;
		}
		else {
		  alert(label);
		  return errore(campo);
		}			
	}
	else {
		return true;
	}
}

function eliminaSpaziInterni(sValue) {
   var spazi=/\s+/g; 
   return sValue.replace(spazi,"");
}

function controlloLunghezzaMin_Lingua(campo, lunghezza, label) {
	var s = compatta(campo.value);
	if (s.length<lunghezza) {
		  alert(label);
		  return errore(campo);
	} else { return true; }
}


function is_email(campo) {
	if (window.RegExp) {
		s = campo.value;
		var nonvalido = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)|(')";
		var valido = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";
		var regnv = new RegExp(nonvalido);
		var regv = new RegExp(valido);
		if (!regnv.test(s) && regv.test(s)) {
			return true;
		}
		else {
		  alert('e-mail non valida');
		  return errore(campo);
		}
	}
	else {
	  s = compatta(campo.value);
	  if (!vuoto(s)) {
		h = s.indexOf('@');
		if (h==-1) {
		  alert('e-mail non valida');
		  return errore(campo);
	  }
	  else {
		i = s.length
		if ((i==h) || (h==0)) {          /* se è stata omessa la user */
		  alert('e-mail non valida'); 
		  return errore(campo);
		}
		else {
		  dominio = compatta(s.substr(h+1,i-(h+1)));
		  k = dominio.indexOf('.');
		  if (k == -1) {                 /* dominio non valido */
			alert('e-mail non valida');  /* non rispetta il    */ 
			return errore(campo);        /* formato "yyyy.xx"  */
		  }
		  else
			if (k == 0) {                      /* dominio di secondo */
			  alert('e-mail non valida');   /* livello non valido */
			  return errore(campo);         /* manca "yyyy."       */
			}
			else { 
			  dominio2 = compatta(dominio.substr(k+1,dominio.length-(k+1)));
			  
			  if (dominio2.length < 2) {        /* dominio non valido */
				alert('e-mail non valida');     /* manca ".xxx"       */
				return errore(campo);
			  }
			}
		  }
		}
	  }
	  return true;
	}
}

function is_email_lingua(campo,label) {
	if (window.RegExp) {
		s = campo.value;
		var nonvalido = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)|(')";
		var valido = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";
		var regnv = new RegExp(nonvalido);
		var regv = new RegExp(valido);
		if (!regnv.test(s) && regv.test(s)) {
			return true;
		}
		else {
		  alert(label);
		  return errore(campo);
		}
	}
	else {
	  s = compatta(campo.value);
	  if (!vuoto(s)) {
		h = s.indexOf('@');
		if (h==-1) {
		  alert(label);
		  return errore(campo);
	  }
	  else {
		i = s.length
		if ((i==h) || (h==0)) {          /* se è stata omessa la user */
		  alert(label); 
		  return errore(campo);
		}
		else {
		  dominio = compatta(s.substr(h+1,i-(h+1)));
		  k = dominio.indexOf('.');
		  if (k == -1) {                 /* dominio non valido */
			alert(label);  /* non rispetta il    */ 
			return errore(campo);        /* formato "yyyy.xx"  */
		  }
		  else
			if (k == 0) {                      /* dominio di secondo */
			  alert(label);   /* livello non valido */
			  return errore(campo);         /* manca "yyyy."       */
			}
			else { 
			  dominio2 = compatta(dominio.substr(k+1,dominio.length-(k+1)));
			  
			  if (dominio2.length < 2) {        /* dominio non valido */
				alert(label);     /* manca ".xxx"       */
				return errore(campo);
			  }
			}
		  }
		}
	  }
	  return true;
	}
}

function is_email_linguaG (campo)
{
  s = compatta(campo.value);
  if (!vuoto(s)) {
    h = s.indexOf('@');
    if (h==-1) {
      //alert('e-mail non valida');
       return false;
	  }
	else {
    i = s.length
    if ((i==h) || (h==0)) {          /* se è stata omessa la user */
      //alert('e-mail non valida'); 
       return false;
    }
    else {
      dominio = compatta(s.substr(h+1,i-(h+1)));
      k = dominio.indexOf('.');
      if (k == -1) {                 /* dominio non valido */
        //alert('e-mail non valida');  /* non rispetta il    */ 
         return false;       /* formato "yyyy.xx"  */
      }
      else
        if (k == 0) {                      /* dominio di secondo */
          //alert('e-mail non valida');   /* livello non valido */
           return false;       /* manca "yyyy."       */
        }
        else { 
          dominio2 = compatta(dominio.substr(k+1,dominio.length-(k+1)));
          
          if (dominio2.length < 2) {        /* dominio non valido */
            //alert('e-mail non valida');     /* manca ".xxx"       */
             return false;
          }
        }
      }
    }
  }
  else{
	  return false;
  }
  return true;
}

function is_email_old (campo)
{
  s = compatta(campo.value);
  if (!vuoto(s)) {
    h = s.indexOf('@');
    if (h==-1) {
      alert('e-mail non valida');
      return errore(campo);
  }
  else {
    i = s.length
    if ((i==h) || (h==0)) {          /* se è stata omessa la user */
      alert('e-mail non valida'); 
      return errore(campo);
    }
    else {
      dominio = compatta(s.substr(h+1,i-(h+1)));
      k = dominio.indexOf('.');
      if (k == -1) {                 /* dominio non valido */
        alert('e-mail non valida');  /* non rispetta il    */ 
        return errore(campo);        /* formato "yyyy.xx"  */
      }
      else
        if (k == 0) {                      /* dominio di secondo */
          alert('e-mail non valida');   /* livello non valido */
          return errore(campo);         /* manca "yyyy."       */
        }
        else { 
          dominio2 = compatta(dominio.substr(k+1,dominio.length-(k+1)));
          
          if (dominio2.length < 2) {        /* dominio non valido */
            alert('e-mail non valida');     /* manca ".xxx"       */
            return errore(campo);
          }
        }
      }
    }
  }
  return true;
}

function isPartitaIvaLingua(campo, label) {
	var n_Val,n_Som1=0,n_Som2=0,lcv;
	var sz_Codice = compatta(campo.value);
	if (vuoto(sz_Codice)) {
		alert(label);
		return errore(campo);
	} else {
		if (sz_Codice.length!=11 || isNaN(parseFloat(sz_Codice)) || parseFloat(sz_Codice)<parseFloat(0)) {
			alert(label);
			return errore(campo);
		} else {
			for (lcv=0;lcv<9;lcv+=2)
			{
			  n_Val=parseInt(sz_Codice.charAt(lcv));
			  n_Som1+=n_Val;
			  n_Val=parseInt(sz_Codice.charAt(lcv+1));
			  n_Som1+=Math.floor(n_Val/5) + (n_Val<<1) % 10;
			}
			n_Som2 = 10 - (n_Som1 % 10);
			n_Val=parseInt(sz_Codice.charAt(10));
			if (n_Som2==n_Val) {
			  return true;
			} else {
				alert(label);
				return errore(campo);
			}
		}
	}
}

function CalcolaCodiceFiscaleLingua(dataNascita, sCognome, sNome, sSesso, codComune, codFiscale, label)
{
 var gs=0;
 var i=0;
 var somma=0;

 strCodFis="";
 strcognome="";
 strnome="";
 strgiornosex="";
 chrcontrollo='';
 
 var Giorno=parseInt(dataNascita.substr(0,2),10);
 var Mese=parseInt(dataNascita.substr(3,2),10);
 switch (Mese) 
 {
  case 1: {chrcontrollo='A'; break;}
  case 2: {chrcontrollo='B'; break;}
  case 3: {chrcontrollo='C'; break;}
  case 4: {chrcontrollo='D'; break;}
  case 5: {chrcontrollo='E'; break;}
  case 6: {chrcontrollo='H'; break;}
  case 7: {chrcontrollo='L'; break;}
  case 8: {chrcontrollo='M'; break;}
  case 9: {chrcontrollo='P'; break;}
  case 10: {chrcontrollo='R'; break;}
  case 11: {chrcontrollo='S'; break;}
  case 12: {chrcontrollo='T'; break;}
 }
 var AnnoCento=parseInt(dataNascita.substr(6,2),10);
 var AnnoDieci=parseInt(dataNascita.substr(8,1));
 var AnnoZero=parseInt(dataNascita.substr(9,1));
 var Comune=codComune;
 var Sesso=parseInt(sSesso,10);
 //alert(Giorno + ' ' + chrcontrollo + ' ' + AnnoCento + ' ' + AnnoDieci + ' ' + AnnoZero);

  // Processa il cognome
  //----------------------------------------------------------------
    var cognome=sCognome.toUpperCase();

    for (i=0; i<cognome.length; i++) 
        {
         switch (cognome.charAt(i)) 
                {
                  case 'A':
                  case 'E':
                  case 'I':
                  case 'O':
                  case 'U': break;            
                  default : 
                  if((cognome.charAt(i)<='Z')&&(cognome.charAt(i)>'A'))
                   strcognome = strcognome + cognome.charAt(i);
                }
        }
    if (strcognome.length < 3) 
      {
       for (i=0; i<cognome.length; i++) 
          {
           switch (cognome.charAt(i)) 
                 {
                  case 'A':
                  case 'E':
                  case 'I':
                  case 'O':
                  case 'U': strcognome = strcognome + cognome.charAt(i);
                 }
          }
       if (strcognome.length < 3) 
         {
          for (i=strcognome.length; i<=3; i++) 
             { strcognome = strcognome + 'X'; }
         }
      }
   strcognome = strcognome.substring(0,3);
   //alert(strcognome);
 //------------------------------------------------------------ 

  // processa il nome
  //----------------------------------------------------------------
   var nome=sNome.toUpperCase();
    for (i=0; i<nome.length; i++) 
       {
        switch (nome.charAt(i)) 
              {
               case 'A':
               case 'E':
               case 'I':
               case 'O':
               case 'U': break;
               default:
			  if((nome.charAt(i)<='Z')&& (nome.charAt(i)>'A'))
                  strnome = strnome + nome.charAt(i);
              }
       }
    if (strnome.length > 3) 
      {
        strnome = strnome.substring(0,1) + strnome.substring(2,4);
      } 
    else {
          if (strnome.length < 3) 
            {
             for (i=0; i<nome.length; i++) 
                {
                  switch (nome.charAt(i)) 
                        {
                         case 'A':
                         case 'E':
                         case 'I':
                         case 'O':
                         case 'U': strnome = strnome + nome.charAt(i);
                        }
                }
             if (strnome.length < 3) 
               {
                for (i=strnome.length; i<=3; i++) 
                   {strnome = strnome + 'X';}
               }
            }
          strnome = strnome.substring(0,3);
         }
		 //alert(strnome);
 //--------------------------------------- Fine processa nome

  // processa giorno e sesso
 //--------------------------------------------
  gs = Giorno + (40 * Sesso);
  if(gs<10) strgiornosex = "0" + gs;
  else strgiornosex =  gs;
  //alert(strgiornosex);
 //--------------------------------------------


 strCodFis = strcognome + strnome + AnnoDieci + AnnoZero + chrcontrollo + strgiornosex + Comune;
 //alert(strCodFis);

  
 // calcola la cifra di controllo
 //--------------------------------------------
    for (i=0; i<15; i++) 
       {
        if (((i+1) % 2) != 0) //caratteri dispari
          {
           switch (strCodFis.charAt(i)) 
                 {
                  case '0':
                  case 'A':{ somma += 1; break;}
                  case '1':
                  case 'B':{ somma += 0; break;}
                  case '2':
                  case 'C':{ somma += 5; break;}
                  case '3':
                  case 'D':{ somma += 7; break;}
                  case '4':
                  case 'E':{ somma += 9; break;}
                  case '5':
                  case 'F':{ somma += 13; break;}
                  case '6':
                  case 'G':{ somma += 15; break;}
                  case '7':
                  case 'H':{ somma += 17; break;}
                  case '8':
                  case 'I':{ somma += 19; break;}
                  case '9':
                  case 'J':{ somma += 21; break;}
                  case 'K':{ somma += 2; break;}
                  case 'L':{ somma += 4; break;}
                  case 'M':{ somma += 18; break;}
                  case 'N':{ somma += 20; break;}
                  case 'O':{ somma += 11; break;}
                  case 'P':{ somma += 3; break;}
                  case 'Q':{ somma += 6; break;}
                  case 'R':{ somma += 8; break;}
                  case 'S':{ somma += 12; break;}
                  case 'T':{ somma += 14; break;}
                  case 'U':{ somma += 16; break;}
                  case 'V':{ somma += 10; break;}
                  case 'W':{ somma += 22; break;}
                  case 'X':{ somma += 25; break;}
                  case 'Y':{ somma += 24; break;}
                  case 'Z':{ somma += 23; break;}
                 }
          } 
        else //caratteri pari
            {
              switch (strCodFis.charAt(i)) 
                 {
                  case '0':
                  case 'A':{ somma += 0; break;}
                  case '1':
                  case 'B':{ somma += 1; break;}
                  case '2':
                  case 'C':{ somma += 2; break;}
                  case '3':
                  case 'D':{ somma += 3; break;}
                  case '4':
                  case 'E':{ somma += 4; break;}
                  case '5':
                  case 'F':{ somma += 5; break;}
                  case '6':
                  case 'G':{ somma += 6; break;}
                  case '7':
                  case 'H':{ somma += 7; break;}
                  case '8':
                  case 'I':{ somma += 8; break;}
                  case '9':
                  case 'J':{ somma += 9; break;}
                  case 'K':{ somma += 10; break;}
                  case 'L':{ somma += 11; break;}
                  case 'M':{ somma += 12; break;}
                  case 'N':{ somma += 13; break;}
                  case 'O':{ somma += 14; break;}
                  case 'P':{ somma += 15; break;}
                  case 'Q':{ somma += 16; break;}
                  case 'R':{ somma += 17; break;}
                  case 'S':{ somma += 18; break;}
                  case 'T':{ somma += 19; break;}
                  case 'U':{ somma += 20; break;}
                  case 'V':{ somma += 21; break;}
                  case 'W':{ somma += 22; break;}
                  case 'X':{ somma += 23; break;}
                  case 'Y':{ somma += 24; break;}
                  case 'Z':{ somma += 25; break;}
                 }
            }
    }
   somma %= 26;
   switch (somma) 
         {
          case 0: {chrcontrollo='A'; break;}
          case 1: {chrcontrollo='B'; break;}
          case 2: {chrcontrollo='C'; break;}
          case 3: {chrcontrollo='D'; break;}
          case 4: {chrcontrollo='E'; break;}
          case 5: {chrcontrollo='F'; break;}
          case 6: {chrcontrollo='G'; break;}
          case 7: {chrcontrollo='H'; break;}
          case 8: {chrcontrollo='I'; break;}
          case 9: {chrcontrollo='J'; break;}
          case 10: {chrcontrollo='K'; break;}
          case 11: {chrcontrollo='L'; break;}
          case 12: {chrcontrollo='M'; break;}
          case 13: {chrcontrollo='N'; break;}
          case 14: {chrcontrollo='O'; break;}
          case 15: {chrcontrollo='P'; break;}
          case 16: {chrcontrollo='Q'; break;}
          case 17: {chrcontrollo='R'; break;}
          case 18: {chrcontrollo='S'; break;}
          case 19: {chrcontrollo='T'; break;}
          case 20: {chrcontrollo='U'; break;}
          case 21: {chrcontrollo='V'; break;}
          case 22: {chrcontrollo='W'; break;}
          case 23: {chrcontrollo='X'; break;}
          case 24: {chrcontrollo='Y'; break;}
          case 25: {chrcontrollo='Z'; break;}
         }
 //--------------------------------------------

 var CodFiscCalcolato=(strCodFis + chrcontrollo);
 var tmpCodFisc=codFiscale.toUpperCase();
 //alert(CodFiscCalcolato);
 if(tmpCodFisc!=CodFiscCalcolato) {
	 alert(label);
	 return false;
 }
 else return true;
}


function is_folder (campo)
{
  for (i = 0; i < campo.value.length; i++){
        c = campo.value.charCodeAt(i);
        if (folder_chars.charAt(c) == '0')
        {
        alert('L\'utilizzo del carattere '+campo.value.charAt(i)+' non e\' consentito');
        return errore(campo);
        }
    }
    return true;
}

/*
function check_frm_ricerca(redirect, tiporicerca)
{
	switch (tiporicerca)
	{
	case "1":
		
		var testo=document.frm_menu.strRicerca1.value
		if (!vuoto(testo) && testo.length>1)
		{
			window.location = redirect+"&tiporicerca=1&strRicerca1="+document.frm_menu.strRicerca1.value;			
		}
		break;	
	case "2":
		var frm=document.frmCambio
		termine1=frm.strRicerca1.value
		termine2=frm.strRicerca2.value
		termine3=frm.strRicerca3.value
		sel1 = frm.sel1[frm.sel1.selectedIndex].value 
		sel2 = frm.sel2[frm.sel2.selectedIndex].value 
		if (!vuoto(termine1) || !vuoto(termine2) || !vuoto(termine3))
		{
			window.location = redirect	+ "&tiporicerca=2" + "&strRicerca1=" + termine1 + "&strRicerca2=" + termine2 + "&strRicerca3=" + termine3 + "&sel1=" + sel1 + "&sel2=" + sel2
		}	
		break;
	}
}
*/


function check_frm_ricerca(redirect, tiporicerca)
{
	switch (tiporicerca)
	{
	case "1":
		
		var testo=document.frm_menu.strRicerca1.value
		//if (!vuoto(testo) && testo.length>1)
		//{
			window.location = redirect+"&tiporicerca=1&strRicerca1="+document.frm_menu.strRicerca1.value + "&RicInt1=1";			
		//} 			
		break;	
	case "2":
		var frm=document.frmCambio
		termine1=frm.strRicerca1.value
		termine2=frm.strRicerca2.value
		termine3=frm.strRicerca3.value
		sel1 = frm.sel1[frm.sel1.selectedIndex].value 
		sel2 = frm.sel2[frm.sel2.selectedIndex].value		
		frm.RicInt[0].checked ? Ric1=1 : Ric1=0; 
		frm.RicInt[1].checked ? Ric2=1 : Ric2=0; 
		frm.RicInt[2].checked ? Ric3=1 : Ric3=0; 
		//if (!vuoto(termine1) || !vuoto(termine2) || !vuoto(termine3))
		//{
			window.location = redirect	+ "&tiporicerca=2" + "&strRicerca1=" + termine1 + "&strRicerca2=" + termine2 + "&strRicerca3=" + termine3 + "&sel1=" + sel1 + "&sel2=" + sel2 + "&RicInt1=" + Ric1 + "&RicInt2=" + Ric2 + "&RicInt3=" + Ric3
		//}	
		break;
	}
}

function MM_openBrWindow(theURL, winName, features, width, height, bReturnObject)
{ 
	var window_width;
	var window_height;

	if(!width) 
			window_width = (screen.width/2)+150;
	else
		window_width = width;

	if(!height) 
		window_height = (screen.height/2)+130;
	else
		window_height = height;
			
	var window_top = (screen.height-window_height)/2;
	var window_left = (screen.width-window_width)/2;
	var newfeatures = features+",width="+window_width+",height="+window_height+",top="+window_top+",left="+window_left
	objWindow = window.open(theURL,winName,newfeatures);
	if(typeof(objWindow)=='object') { 
		objWindow.focus(); 
	} else {
		alert('Attenzione! Attivare popup!');
	}
	if (bReturnObject)
	{
		return objWindow;
	}
}

function BrowserSniff(){
	if (document.layers) return "NS";
	if (document.all) return "IE";
	if (document.getElementById) return "MOZ";
	return "OTHER";
}

function printit(){ 
	var Browser = BrowserSniff();
	switch( Browser ) {
		case 'NS':
			return; 
			break;
		case 'IE':
			var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
			document.body.insertAdjacentHTML('beforeEnd', WebBrowser);
			WebBrowser1.ExecWB(6, 2);   
			WebBrowser1.outerHTML = "";  
			break;
		case 'MOZ':
			window.print(); 
			break;
		case 'OTHER':
			return;
			break;
	}
}

function addBookmark(title,url) {
	if (window.sidebar) {
		window.sidebar.addPanel(title, url,"");
	} else if( document.all ) {
		window.external.AddFavorite( url, title);
	} else if( window.opera && window.print ) {
		return true;
	}
}

function homepage(url) { 
	if(document.all) {
		try
		{
			document.body.style.behavior='url(#default#homepage)';
			document.body.setHomePage(url);
		}
		catch (e)
		{
			var testo = "";
			testo += "Per Internet Explorer fino alla versione 4: \n";
			testo += "- Dal menu 'Visualizza' andare su 'Opzioni Internet'\n";
			testo += "- Nella cartella 'Generale' premere il pulsante 'Pagina Corrente'\n\n";
			testo += "PER NETSCAPE versione 4 o superiore, seguire questi passi: \n";
			testo += "- Dal menu 'Modifica' andare a 'Preferenze'\n";
			testo += "- Nella finestra di dialogo selezionare 'Navigator'\n";
			testo += "- Premere il pulsante 'Usa pagina corrente'";
			alert(testo);
		}
	}
} 

function mailThisUrl(){
   u = window.location;
   m = "Ti segnalo questo sito";
   campo=prompt("Inserisci l'e-mail:","")
   if(campo) window.location = "mailto:"+campo+"?subject="+m+"&body="+document.title+" "+u;
}

var _sLinkOver;
function LinkOver() {
	status=_sLinkOver; 
	return true;
}

function LinkOut() {
	status='';
}

function impostaPaginaWeb(sLinkText) {
	var thelinks = document.links;

	_sLinkOver = sLinkText;
	status =_sLinkOver;
	for (var j = 0; j < thelinks.length; j++) {
			if(document.links[j].name!='NORESET') {
				thelinks[j].onmouseover = LinkOver;
				thelinks[j].onmouseout = LinkOut;
			}
		}
}
