function checkField(fld)
{
// funz.ausiliaria per notNull
var ret=0;
if (!fld.type && fld.length) 
	{
	for (var i=0; i<fld.length; i++) ret+=checkField(fld[i]); 
	return ret;
	}
if (fld.type.indexOf('text')>-1 || fld.type=='password' || fld.type=='hidden' || fld.type=='file')
	{ return (fld.value!='')? 1 : 0;  }
if (fld.type.indexOf('select')>-1)
	{
    var n=(fld.type=='select-multiple')? 0 : 1;
	return (fld.selectedIndex>=n)? 1: 0; 
	}
if (fld.type=='checkbox')
    { return (fld.checked)? 1: 0; }	
}

function notNull()
{
// vrs. 5.5 15-6-07 con tre varianti;
// 1: nessun argomento, vengono presi tutti i nomi dei campi del form;
// 2: sequenza di argomenti stringa, vengono presi solo i campi indicati col loro ID;
// 3: un solo oggetto {name:'testo', name:'testo'...}: coppie di proprietà con NAME del campo e testo descrittivo
//if (nome) nome=nome.replace(/\[|\]/gi,"");
errors=new Array();  n=0; 
switch (arguments.length)
	{
	case 0:		
    for (var i in document.forms[0].elements)
        { 
		fld=document.forms[0].elements[i]; 
		if (!checkField(fld)) errors[n++]=fld.name; 
		}
	break;
	
	case 1:
	if (typeof arguments[0]=='object')
		{
		for (var i in arguments[0])
    	    { 
			fld=document.forms[0].elements[i]; 
			if (!checkField(fld)) errors[n++]=arguments[0][i]; 
			}
		}
	else 		
		{
		fld=document.getElementById(arguments[0]); 
		if (!checkField(fld)) errors[n++]=arguments[0];
		}
	break;
	
	default:
    for (var i=0; i<arguments.length; i++)
		{ 
		fld=document.getElementById(arguments[i]); 
		if (!checkField(fld)) errors[n++]=arguments[i];
		}
	}

if (errors.length)
	{
	if (!window.reqAlert) reqAlert="Campi richiesti: ";
	alert (reqAlert+errors.join(', '));
	return false;
	}
else return true;	
}

function MaxLen(c,n)
{
if (c.value.length>n)
	{ 
	if (!window.maxlenAlert) maxlenAlert="Max. num. di caratteri: ";
	alert(maxlenAlert+n);
	c.value=c.value.substring(0,n);
	return false;
	}
else return true;	
}

function IsNum(v)
{ if (v.value && isNaN(v.value))
	{
	if (!window.numAlert) numAlert="Inserire solo numeri";
	alert(numAlert);
	v.value="";
	v.focus();
	return false;
	}
 else return true;
}

function IsDate(c)
{
valore=c.value;
re = /(\d{1,2})[-\.\/](\d{1,2})[-\.\/](\d{2,4})/;
tokens=valore.match(re);
if (!tokens || tokens.length<4)
	{
	if (!window.dateAlert) dateAlert="Data errata o incompleta.\nInserire date in un formato standard.";
	alert(dateAlert);
	c.value="";
	}
}

function IsInt(c)
{
if (IsNum(c)) { c.value=parseInt(c.value*1); return true; }
else return false;
}

function IsEmail(c)
{
c.value=c.value.toLowerCase();
var rex=new RegExp("^[\\w\\.=-]+@[\\w\\.-]+\\.[a-z]{2,4}$");
if (!rex.test(c.value))
	{
	if (!window.emailAlert) emailAlert='Indirizzo e-mail non valido';
	alert(emailAlert);
	c.value="";
	}
}

function noApex(c,ap)
{ 
if (ap) c.value=c.value.replace(/"/g,"'"); 
else c.value=c.value.replace(/'|"/g,''); 
}