/***************************************************
	C O N T R      1.01
	Copyrigth 2002-2004 Interactive Marketing srl
	Autore: Luca Cicale
***************************************************/



var email_reg_exp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
function genCtrl(aTstFnc,aMsgErrFnc,isObbl){
	this.testFnc=aTstFnc;
	this.test=getTest;
	this.getMsgErr=aMsgErrFnc;
	this.isObbl=isObbl;
}

function getTest(fld,tstCond,aMsgErr,fldFcs){
	var test=false;
	var testObbl=false;
	var strErr="";
	if (aMsgErr==undefined) aMsgErr="";
	if (fldFcs==undefined) fldFcs=fld;
	this.fld=fld;
	this.cond=tstCond;
	if (this.isObbl){
		testObbl=TstObbl(fld);
		if (!testObbl){
			strErr=TstObblErr();
			if (aMsgErr!="") strErr+="\n";
		}			
	} else testObbl=true;
	test=this.testFnc(fld,tstCond);
	
	if (!(test && testObbl) ){
		strErr+=this.getMsgErr(fld,tstCond);
		if (strErr!=""){
	 		alert(strErr+"\n"+aMsgErr);
			fldFcs.focus()}}
	return test;}

	
// funzioni di test

//Obbligatorio
function TstObbl(fld){
	var val=fld.value;
	return (val!="");
}
function TstObblErr(){
	return "I campi contrassegnati da * sono obbligatori. ";
}


//Lungo meno di
function TstLngtLss(fld, cond){
	var val=fld.value;
	var test=TstObbl(fld)&&(val.length<=cond);
	return test;}
function TstLngtLssErr(){
	return "La lunghezza massima del campo e\' di  "+this.cond+" caratteri";
}	

//Lungo eq
function TstLngtEq(fld, cond){
	var val=fld.value;
	var test=TstObbl(fld)&&(val.length==cond);
	return test}
function TstLngtEqErr(){
	return "Il campo deve essere formato da "+this.cond+" caratteri";
}	
//Il valore  eq a
function TstVal(fld, cond){
	var val=fld.value;
	var test=(val==cond);
	return test}
function TstValErr(){
	return "";
}	

function TstEmail(fld){
	var val=fld.value;
	var test=(email_reg_exp.test(val)||(val==""));
	return test}
function TstEmailObbl(fld){
	var val=fld.value;
	var test=(email_reg_exp.test(val));
	return test}
	
	
function TstEmailErr(){
	return "\nL'indirizzo E-mail inserito non e\' corretto";
}	


//Ricava chi è chechekd tra i radio
function getChecked(aradio){
	var c;
	for (c=0;c<aradio.length;c++){
		if (aradio[c].checked) return c;
	}
	c=undefined;
	return c;
}

//Verifica se il valore è checked
function tstCheched(aradio,cond){
	var test=(getChecked(aradio)==cond)
	return test;
}
//Verifica che almeno un radio è cecked
function TstHasCheck(aradio){
	return (getChecked(aradio)!=undefined);
}

//verifica che è un numero
function TstIsNumeric(afld){
	astr=afld.value;
	return (!isNaN(astr));
}
function TstIsNumericErr(){
	return "Il valore inserito deve essere di tipo numerico";
}



function crtTst(){
	isObbl= new genCtrl(TstObbl,TstObblErr);
	isLessThen= new genCtrl(TstLngtLss,TstLngtLssErr,true);
	isEqAt= new genCtrl(TstLngtEq, TstLngtEqErr);
	isVal= new genCtrl(TstVal, TstValErr);
	isEmailObbl= new genCtrl(TstEmailObbl,TstEmailErr,true);
	isEmail= new genCtrl(TstEmail,TstEmailErr,false);
	isChecked = new genCtrl(TstHasCheck,TstObblErr,false)
	isNum= new genCtrl(TstIsNumeric,TstIsNumericErr,false);
	isNumObbl= new genCtrl(TstIsNumeric,TstIsNumericErr,true);
	
	}
	



function cf(fiscale){

	var cost="010005070913151719210100050709131517192102041820110306081214161022252423";
	
	var alfabeto="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	
	var numeri="0123456789";
	
	var numero1=0;
	
	var numero2=0;
	
	for(var w=2;w<15;w+=2)
	
	{
	
		var car=fiscale.substring(w-1,w);
		if(alfabeto.indexOf(car)>-1)
			numero1=numero1+alfabeto.indexOf(car);
		else
			numero1=numero1+eval(car);
	
	}
	
	for(var w=1;w<16;w+=2)
	{
		car=fiscale.substring(w-1,w);
		if(alfabeto.indexOf(car)>-1)
			n=alfabeto.indexOf(car)+11;
		else
			n=numeri.indexOf(car)+1;
	
		numero2=numero2+eval(cost.substring((n*2)-2,((n*2))));
	}
	
	if(fiscale.substring(15,16)!=alfabeto.charAt((numero1+numero2)%26))
	{
		alert("Si prega di inserire un codice fiscale valido");
	}

}

	
crtTst();
