function checkData(strData)
{
	if(strData.length==0) return true; //la data nulla è valida, l'obbligatorietà non viene controllata qui!
	if(strData.length!=10) return false;
	var	giorno = strData.slice(0,2);
	var mese = strData.slice(3,5);
	var anno = strData.slice(6,10);
	if ((isNaN(giorno))||(isNaN(mese))||(isNaN(anno))) return false;
	if((parseInt(mese)>12)||(parseInt(mese)<1)) return false;
	var NGMese = new Array();
	NGMese[1] = 31;
	NGMese[2] = 29;
	NGMese[3] = 31;
	NGMese[4] = 30;
	NGMese[5] = 31;
	NGMese[6] = 30;
	NGMese[7] = 31;
	NGMese[8] = 31;
	NGMese[9] = 30;
	NGMese[10] = 31;
	NGMese[11] = 30;
	NGMese[12] = 31;
	if (parseInt(anno)%4 != 0) NGMese[2] = 28;
	if (parseInt(giorno)>NGMese[parseInt(mese)])
	{
		return false;
	}
	return true;
}
function checkMail(mail)
{
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(mail)) return true;
	return false;
}
function checkCodiceFiscale(cf)
{
	if (cf.length==16) return true;
	return false;
}
function checkTipo(valore,tipo)
{
	if(tipo=="numeric")
		if(isNaN(valore)) return false;
	if(tipo=="email") return checkMail(valore);
	if(tipo=="data") return checkData(valore);
	if(tipo=="codiceFiscale") return checkCodiceFiscale(valore);
	return true;
}
function checker(modulo, campi, etichette, tipi, obbligatori)
{
	var strErrori="";
	
	for(i=0; i<campi.length; i++)
	{
		if(obbligatori[i])
		{
			if(modulo[campi[i]].value.length==0)
				strErrori+="  - specificare " + etichette[i] + "\n";
			else
				if(!checkTipo(modulo[campi[i]].value,tipi[i]))
					strErrori+="  - errore nella compilazione del campo " + etichette[i] + "\n";
		}
		else
			if(!checkTipo(modulo[campi[i]].value,tipi[i]))
				strErrori+="  - errore nella compilazione del campo " + etichette[i] + "\n";
	}
	return strErrori;
}
function codificaData(strData)
{
	return strData.slice(6,10)+strData.slice(3,5)+strData.slice(0,2);
}
