function CampoCodice(campo)
{
 if (campo.value.length != 6)
  {
   alert('Attenzione: Il campo Codice Cliente è errato!')
   campo.focus()
   return (false)
  }
return (true)
}

function CampoVuoto(campo,dicitura)
{
 if (campo.value.length == 0)
  {
   alert(dicitura)
   campo.focus()
   return (false)
  }
return (true)
}

Array.prototype.in_array = function(p_val) {
	for(var i = 0, l = this.length; i < l; i++) {
		if(this[i] == p_val) {
			return true;
		}
	}
	return false;
}

function CampoLungo(campo,lungo,dicitura) {
 /* inizio controllo cap vietati */
 if ((campo.name) == 'Z_cap') {
    var v_array = ["60100","70100","24100","40100","25100","09100","95100","50100","16100","19100","57100","98100","20100","80100","35100","90100","06100","65100","56100","89100","00100","84100","10100","34100","30100","28900","37100"];
 	if (v_array.in_array(campo.value)) {
    alert('Attenzione: il cap generico '+campo.value+" non viene più accettato dal servizio postale\nvi preghiamo di correggerlo con il cap della zona specifica" )
    campo.value = campo.value.substring(0,3)
    campo.focus()
    return (false)
   }
 }
 /* fine controllo cap vietati */
 if (campo.value.length < lungo) {
   alert(dicitura)
   campo.focus()
   return (false)
   }
 return (true)
}

function ValidaMail(obj) {
 disallowed="!\"£$%^&*()+={}[]:;\'#<>,?/|\\ "
 valid=true;
 if (obj.indexOf('@')<1) valid=false;
 if (obj.indexOf('.')==0) valid=false;
 for (var i=0;i<28;i++) {
  if (obj.indexOf(disallowed.substring(i,i+1))!=-1) valid=false;
 }
 copy=obj.substring(obj.indexOf('@')+1,obj.length);
 if (copy.indexOf('@')!=-1) valid=false;
 if (copy.indexOf(".")<1) valid=false;
 if (copy.lastIndexOf(".")+1==copy.length) valid=false;
 copy=obj;
 while (copy.indexOf('.')!=-1) {
  copy=copy.substring(copy.indexOf('.')+1,copy.length);
  if (copy.indexOf('.')==0) valid=false;
 }
 if (!valid) 
  alert("Attenzione:\nIl campo e-mail deve contenere un nome di casella valido")
 return valid
}

function ValidaTel(obj) {
	if (obj.indexOf('/')<1) {
		alert ("Si prega di inserire il numero nel formato pref/telefono \nEsempio: 02/1234567");
		return false;
	}
	return true;
}

function ControllaCF(cf) {
	var validi, i, s, set1, set2, setpari, setdisp;
	if( cf == '' )  return '';
	cf = cf.toUpperCase();
	if( cf.length != 16 )
		return "La lunghezza del codice fiscale non è corretta:\n"
		+"il codice fiscale dovrebbe essere lungo\n"
		+"esattamente 16 caratteri.\n";
	validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
	for( i = 0; i < 16; i++ ){
		if( validi.indexOf( cf.charAt(i) ) == -1 )
			return "Il codice fiscale contiene un carattere non valido `" +
				cf.charAt(i) +
				"'.\nI caratteri validi sono le lettere e le cifre.\n";
	}
	set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
	setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
	s = 0;
	for( i = 1; i <= 13; i += 2 )
		s += setpari.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
	for( i = 0; i <= 14; i += 2 )
		s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
	if( s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) )
		return "Il codice fiscale non è corretto:\n"+
			"il codice di controllo non corrisponde.\n";
	return "";
}


function ControllaCF2(pi) {
	if( pi == '' )  return '';
	if( pi == '00000000000' )  return 'Il codice non è valido';
	if( pi.length != 11 )
		return "La lunghezza del codice non è corretta:\n" +
			"non inserire il codice fiscale personale.\n" +
			"Il codice della ditta dovrebbe essere lungo\n" +
			"esattamente 11 caratteri.\n";
	validi = "0123456789";
	for( i = 0; i < 11; i++ ){
		if( validi.indexOf( pi.charAt(i) ) == -1 )
			return "Il codice 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 "Il codice non è valido:\n" +
			"la cifra di controllo non corrisponde.\n";
	return '';
}

function ControllaPIVA(pi) {
	if( pi == '' )  return '';
	if( pi.length != 11 )
		return "La lunghezza della partita IVA non è\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 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 non è valida:\n" +
			"il codice di controllo non corrisponde.\n";
	return '';
}


function ValidaCfPi(cod) {

	if( cod.value.length == 16 )
		err = ControllaCF(cod.value);
	else if( cod.value.length == 11 )
		err = ControllaPIVA(cod.value);
	else
		err = "Il codice introdotto non e' valido:\n" +
			"  - un codice fiscale deve essere lungo 16 caratteri;\n" +
			"  - una partita IVA deve essere lunga 11 caratteri.\n";

	if( err > '' )  {
		alert("VALORE ERRATO\n" + err + "\nCorreggi e riprova!");
		cod.focus();
   		return (false);
	} else {
		return (true);
	}
}

function ValidaCf(cod,tipo) {
	switch (tipo.value) { 
	  case "pri": 
	    err = ControllaCF(cod.value);
	  break; 
	  case "dit": 
	    err = ControllaCF(cod.value);
	  break; 
	  case "soc": 
	    err = ControllaCF2(cod.value);
	  break; 
	  case "ass": 
	    err = ControllaCF2(cod.value);
	  break; 
	  case "ent": 
	    err = ControllaCF2(cod.value);
	  break;
	  default:
		err = "Il codice introdotto non e' valido:\n" +
			"  - il codice dei privati e delle ditte individuali\n" +
			"deve essere lungo 16 caratteri;\n" +
			"  - il codice delle societa'/enti/assoc.\n" +
			"deve essere lungo 11 caratteri.\n";
	}

	if( err > '' )  {
		alert("VALORE ERRATO\n" + err + "\nCorreggi e riprova!");
		cod.focus();
   		return (false);
	} else {
		return (true);
	}
}

