function ckin(str, nome, nr)	{
	
		if (null != nome)	{
			switch (nome)	{
				case 'cf': {
					clear(str);
					if(ckcf(str) == false) {
						alert("Il codice fiscale inserito non è corretto");
						str.select();
						str.focus();
						return false;
					}
					break;
				}
				case 'num': {
					clear(str);
					if(cknum(str, nr) == false) {
						str.select();
						str.focus();
						return false;
					}
					break;
				}
				case 'txt': {
					clear(str);
					if(cktxt(str, nr) == false) {
						str.select();
						str.focus();
						return false;
					}
					break;
				}
				case 'email': {
					clearemail(str);
					if(ckemail(str) == false) {
						alert("L'indirizzo e-mail non è corretto");
						str.select();
						str.focus();
						return false;
					}
					break;
				}
				case 'piva': {
					clear(str);
					if(ckpiva(str) == false) {
						alert("La partita IVA inserita non è corretta");
						str.select();
						str.focus();
						return false;
						
					}
					break;
				}
				case 'ckdata': {
					cleardata(str);
					if(fckdata(str) == false) {
						alert("La data inserita non è corretta");
						str.select();
						str.focus();
						return false;
						
					}
					break;
				}
				case 'soft': {
					clearsoft(str);
					break;
				}
			}
		}
	else { clear(str);	}
}

function clear(str)	{
			str.value = str.value.replace(/\<|\>|\"|\%|\;|\(|\)|\&|\+|\-|\@|\_|\*|\!|\$|\#|\ç|\°|\§|\[|\*]|\^|\{|\}|/g,"");
		return;
}
function clearemail(str) {
		str.value = str.value.replace(/\/|\<|\>|\"|\%|\;|\(|\)|\&|\+|\*|\!|\$|\#|\ç|\°|\§|\[|\*]|\^|\{|\}|/g,"");
		return;
}
function clearsoft(str) {
		str.value = str.value.replace(/\<|\>|\"|\%|\;|\(|\)|\&|\+|\$|\#|\ç|\°|\§|\[|\*]|\^|\{|\}|/g,"");
		return;
}
function cleardata(str)	{
			str.value = str.value.replace(/\<|\>|\"|\%|\;|\(|\)|\&|\+|\:|\@|\_|\,|\.|\-|\/|\*|\!|\$|\#|\ç|\°|\§|\[|\*]|\^|\{|\}|/g,"");
		return;
}

function cknum(str, nr) {
	if (str.value.length == 0) {
		return true;
	} else if (null != nr) {
		if (str.value.length != nr) {
			alert("Il campo deve contenere " + nr + " caratteri");
			return false;
		}
	}
	var lh = str.value.length; 
 	for (i = 1; i <= lh; i++) {
		if (!(str.value.substring(i - 1, i)).match(/[0-9]/)) {
			alert("Il campo accetta solo caratteri numerici");
			return false;
	
		}
	}
}

function cktxt(str, nr) {
	if (str.value.length == 0) {
		return true;
	} else if (null != nr) {
		if (str.value.length != nr) {
			alert("Il campo deve contenere " + nr + " caratteri");
			return false;
		}
	}
	var lh = str.value.length; 
 	for (i = 1; i <= lh; i++) {
		if (!(str.value.substring(i - 1, i)).match(/[a-zA-Z]/)) {
			alert("Il campo accetta solo caratteri alfabetici");
			return false;
	
		}
	}
}

function ckemail(str)	{
	var ckidx = str.value.indexOf(".");
   	var ckidx2 = str.value.indexOf("@");
	var no = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; 
    var ok = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/;
	
	if (str.value.length == 0) {
		return true;
   	}
    else if ( ckidx <= 0 || ckidx == str.value.length - 1) {
      return false;
    }
    else if ( ckidx2 <= 0 || ckidx2 == str.value.length - 1) {
      return false;
   }
  
   else if ( !ok.test(str.value) && no.test(str.value) ) {
      return false;
   }
   return true;
}

function ckpiva(str) {
	var Somma = 0;
	var SommaPari = 0;
	var ValorePari = 0;
	var SommaDispari = 0;
	var Resto = 0;
	var Appoggio = '';
	var CarattereControllo = '';
	var ctr = 0;
	
	if (str.value.length == 0) {
		return true;
	}
	else if (str.value.length == 16) {
		if (ckcf(str) != true) { return false; } else { return true; }
	} 
	else if (str.value.length != 11) {
		return false;
	} 
	else {
		for (i = 1; i <= 11; i++) {
			if (!(str.value.substring(i - 1, i)).match(/[0-9]/)) {
				return false;
			} else { var ctr = ctr + str.value.substring(i - 1, i);	}
			
		}
		if (ctr == 0)	{
			return false;
		}
	
	for (i = 1; i <= 10; i++) {
			if ((i % 2) == 0 ) {
				ValorePari = (((str.value.substring(i - 1, i)) / 1) * 2);
				if (ValorePari > 9) {
					ValorePari = parseInt((ValorePari.toString()).substring(0, 1)) + parseInt((ValorePari.toString()).substring(1, 2));
				}
				SommaPari = SommaPari + ValorePari;
			} else {
				SommaDispari = SommaDispari + parseInt((str.value.substring(i - 1, i)));
			}
		}
		
		Somma = SommaPari + SommaDispari;
		Appoggio = (Somma.toString()).length;
		Resto = 10 - parseInt((Somma.toString()).substring(Appoggio - 1, Appoggio));
		Appoggio = (Resto.toString()).length;
		CarattereControllo = (Resto.toString()).substring(Appoggio- 1, Appoggio);
		if ((str.value.toString()).substring(10, 11) != CarattereControllo) {
			return false;
		}
		return true;
	}
}

function ckcf(str) {
	var Somma = 0;
	var Resto = 0;
	var CarattereControllo = '';
	var LeftPari = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
	var LeftDispari = 'BAKPLCQDREVOSFTGUHMINJWZYX';
	var Dispari = '10   2 3 4   5 6 7 8 9';
	
	if (str.value.length == 0) {
		return true;
	}
	else if (str.value.length != 16) {
		return false;
	} 
	else {
		str.value = str.value.toUpperCase();
		for (i = 1; i <= 16; i++) {
			if (((str.value.substring(i - 1, i)).match(/\[A-Z]/)) || ((str.value.substring(i - 1, i)).match(/\[0-9]/))) {
				return false;
			}
			if ((i <= 6) || (i == 9) || (i == 12) || (i == 16)) {
				if (str.value.substring(i - 1, i).match(/\[0-9]/)) {
					return false;
				}					
			}
		}
		
		for (i = 1; i <= 15; i++) {
			if ((i % 2) == 0 ) {
				if (isNaN(str.value.substring(i - 1, i))) {
					Somma = Somma + LeftPari.search(str.value.substring(i - 1, i));
				} else {
					Somma = Somma + ((str.value.substring(i - 1, i)) / 1);
				}
			} else {
				if (isNaN(str.value.substring(i - 1, i))) {
					Somma = Somma + LeftDispari.search(str.value.substring(i - 1, i));
				} else {
					Somma = Somma + Dispari.search(str.value.substring(i - 1, i));
				}
			}
		}
		
		Resto = Somma % 26;
		CarattereControllo = LeftPari.substring(Resto, Resto + 1);
		if (CarattereControllo != str.value.substring(15, 16)) {
			return false;
		}
		return true;
	}
}

function ckvuoto(str, nome)	{
	 
      if (null == nome) { var nome = " "; } else { nome = ' "' + nome + '" '; }
	  
	  if (str.value.length == 0) {
      	alert('Il campo' + nome + 'è obbligatorio');
		str.focus();
	  	return false;
   	  }
	  return true; 
}

function fckdata(str){

  if (str.value.length == 0) {
		return true;
	}
  else	{
	var dt=new Date();
	var y=dt.getFullYear()-2000;
	var yl=dt.getFullYear()-110;
	//if(str.value.indexOf("/")>0) var sep="/"; else if(str.value.indexOf("-")>0) var sep="-"; else if(str.value.indexOf(".")>0) var sep="."; else 
	if(str.value.length==8 || str.value.length==6) {var sep="/"; str.value=str.value.substr(0,2)+sep+str.value.substr(2,2)+sep+str.value.substr(4);}
	var dPart = str.value.split(sep);
  	if(dPart.length==3){
    	if(dPart[2].length==2) { if (dPart[2]<=y) dPart[2] = "20"+dPart[2]; else dPart[2] = "19"+dPart[2]; }
    	var aDate = new Date(dPart[2],dPart[1]-1,dPart[0]);
    	if(aDate.getDate()==dPart[0] && dPart[1]<13 && aDate.getFullYear()>yl && aDate<=dt){
      	var MM = aDate.getMonth()+1;
      	var DD = aDate.getDate();
      	var YY = aDate.getFullYear();
      	if(MM<10) MM="0"+MM;
      	if(DD<10) DD="0"+DD;
      	str.value = DD+"/"+MM+"/"+YY;
      	return true;
    	}
  	}
  	return false;
  }
 }

