var new_fieldname = ""
var pivacheck = 1

function Check(form)
{
var NumFields				// numero di campi del form
var message = ""			// messaggio di errore

	NumFields = form.all.length;							// conta i campi

   	for (var i = 0; i < NumFields; i++)						// per ciascun campo
   	{
		var field	   = form.all[i]
		var fieldname  = field.name;					// prende il nome
		var fieldtitle = field.title;
		var fieldkey   = field.accessKey;
		if (fieldkey > '')
		{
		
		// controlla il campo
	
			if (fieldkey.indexOf("R") > -1 ) message += check_required (field); // required
			if (fieldkey.indexOf("I") > -1 ) message += check_integer (field);  // integer
			if (fieldkey.indexOf("Z") > -1 ) message += check_greaterzero (field);  // 
			
			if (fieldkey.indexOf("M") > -1 ) 
			{ // controllo se non è una partita iva
				if (fieldkey.indexOf("V") > -1 )
				{
					if (pivacheck == 1)
						message += check_mustfill (field);  // must fill
				}
				else
				{
					message += check_mustfill (field);  // must fill
				}
			}
			if (fieldkey.indexOf("D") > -1 ) message += check_data (field);  // data gg/mm/yyyy
			if (fieldkey.indexOf("E") > -1 ) ;//alert("email");
			if (fieldkey.indexOf("F") > -1 ) ;//alert("float");
			if (fieldkey.indexOf("C") > -1 ) ;//alert("CodFisc");
			if (fieldkey.indexOf("V") > -1 ) message += check_integer (field);  // per ora part.controlata come intero
		}
	}
	
	// se il mesaggio finale è non vuoto, lo mostra
	// altrimenti fa il Submit del form
	
	if (message > "")
		{
		alert("Sono stati rilevati errori nella compilazione del modulo:\n\n" + message + "\nSi prega di correggere o completare, e di rieseguire l'invio");
		return false;
		}
	else
		return true;
}

// controlla i campi obbligatori

function check_required(field)
{
	if (field.value == "")
	{
   		return("Il campo '" + field.title + "' e' obbligatorio.\n");
   	}
   	return "";
}
			
// controlla i campi interi

function check_integer(field)
{
	if (isNaN(field.value))
	{
  		return("Il campo '" + field.title + "' deve contenere un numero.\n");
   	}
  	return "";
}	

function check_greaterzero(field)
{
	if (isNaN(field.value))
	{
  		return("Il campo '" + field.title + "' deve contenere un numero intero.\n");
   	}
   	else
   	{
		if (field.value<=0)
		{
	  		return("Il campo '" + field.title + "' deve contenere un numero maggiore di zero\n");
		}
   	}
  	return "";
}	
	
function chkRange(numero,min,max)
{
	if (isNaN(numero))
	{
  		return false;
   	}
   	if (numero < min || numero > max)
	{
  		return false;
   	}
   	
  	return true;
}	
// controlla i campi che devono essere riempiti totalmente

function check_mustfill(field)
{
	if (field.value.length != field.maxLength && field.value.length > 0)
	{
   		return("Il campo '" + field.title + "' deve essere completato (" + field.maxLength + " caratteri).\n");
   	}
   	return "";
}	

// controlla i campi di tipo data

function check_data(field)
{
	if (field.value.length == 0) return "";
	
var ArPart;

	ArPart=field.value.split('/');
	if (ArPart.length  != 3)
	{
   		return("Il campo '" + field.title + "' e' una data, e deve essere inserito nella forma GG/MM/AAAA. ( avete inserito invece " + field.value + ")\n");
   	}

   	// devo scambiare gg con MM perchè java vuole le date MM/DD/YY
	
	var dField = ArPart[1] + '/' +ArPart[0] + '/' +ArPart[2] 
	var dt = new Date(dField);
	
	if ( dt.getDate()  != ArPart[0] ) return ("Il campo '" + field.title + "' e' una data, ma il valore del giorno e' scorretto. (" + field.value + ")\n");
	if ( dt.getMonth()+1 != ArPart[1] ) return ("Il campo '" + field.title + "' e' una data, ma il valore del mese e' scorretto. (" + field.value + ")\n");
	
	var anno = dt.getYear();
	
	if (anno<100)  
	{
		if (anno<10)  
			anno += 2000;
		else
			anno += 1900;
	}		
	
	if (anno < 1890 || anno > 2010) return("Il campo '" + field.title + "' e' una data, ma il valore dell' anno sembra sbagliato.\n");
   	
   	field.value = dt.getDate() + "/" + (dt.getMonth()+1) +"/" + anno;
   	return ("");
}	


