
function checkform(form)
{
	var miadata,day,month,year,ryear
	var vNumber= /\D/
	var vAlfa =/\d|[!"£&()=?$^%#@°*<>§'-+//|\\{}ç~\[\]¿]/
	var vChar= /[a-z]/i
	var charexp =/\S/
	var vEmail = /^[a-z][a-z_0-9\-\.]+@[a-z_0-9\-\.]+\.[a-z]{2,4}$/i
	var vSymbol = /[!"£&()=?$^%#@°*<>§'-+//|\\{}ç~\[\]¿]/
	var vData = /^[0-9]{2}[/][0-9]{2}[/][0-9]{4}$/i
	var vCap= /^\d{5}$|^\d{5}[\-=>\s]?\d{4}$/
	var vPsw = /^\w{4,8}$/
	var vNkname = /^[a-zA-Z0-8]{1}\w{3,7}$/
	//var missinginfo;
	//var info;
	info = "";
	missinginfo = "";
	function isValid(pattern, str){
		return pattern.test(str)}
	function hasChar(str){
		return charexp.test(str)}

		for (i=0;i<form.length;i++) 
		{
			var tempobj=form.elements[i]
			//var tipo=tempobj.tipo;
			var localObj = new Object();
			localObj.tipo=tempobj.tipo;
			//localObj.maxLen=tempobj.maxLen;

			if (tempobj.value.length > tempobj.maxLen){
				info= "\n          e non maggiore a " + tempobj.maxLen + ". Inseriti= " +tempobj.value.length;}

			if ((localObj.tipo=="Obb")&&((!hasChar(tempobj.value))||(info!=""))){
					rName=tempobj.cName.toUpperCase();
					missinginfo += "\n   -"+rName+" Obbligatorio " + info; 
					info="";}

			if ((!localObj.tipo)&&(info!="")){
					rName=tempobj.cName.toUpperCase();
					missinginfo += "\n   -" + rName + " Non superiore a " + tempobj.maxLen + " caratteri. Caratteri inseriti: "+tempobj.value.length;
					info="";}
			
			//if ((localObj.tipo=="ObbLen")&&((tempobj.value.length>tempobj.maxLen)||(tempobj.value.length<1))){
			//		rName=tempobj.cName.toUpperCase();
			//		missinginfo += "\n   -" + rName + " Obbligatorio e non superiore a " + tempobj.maxLen + " caratteri. Caratteri inseriti: "+tempobj.value.length;}
			
			// --- CONTROLLO ALFA ---//
			if ((localObj.tipo=="AlfaOpz")&&(hasChar(tempobj.value))){
					localObj.tipo="Alfa";}
			if ((localObj.tipo=="Alfa")&&((isValid(vAlfa,tempobj.value))||(tempobj.value=="")||(info!=""))){
					rName=tempobj.cName.toUpperCase();
					missinginfo += "\n   -"+ rName +" Inserire solo caratteri compresi tra [A-Z,a-z]" + info;info="";}
				
			// --- CONTROLLO ALFANUMERICO --- //
			if ((localObj.tipo=="AlfaNumOpz")&&(hasChar(tempobj.value))){
					localObj.tipo="AlfaNum";}	
			if ((localObj.tipo=="AlfaNum")&&((isValid(vSymbol,tempobj.value))||(!hasChar(tempobj.value))||(info!=""))){
					rName=tempobj.cName.toUpperCase();
					missinginfo += "\n   -"+ rName +" Inserire solo caratteri alfanumerici" + info; info="";}
				
			
			// --- CONTROLLO NUMERICO --- //
			if ((localObj.tipo=="NumOpz")&&(hasChar(tempobj.value))){
					localObj.tipo="Num";}
			if ((localObj.tipo=="Num")&&( (isValid(vNumber,tempobj.value)||(tempobj.value=="")||(info!="")))){
					rName=tempobj.cName.toUpperCase();
					missinginfo += "\n   -"+ rName +" Inserire solo numeri interi" + info;info="";}
			
			// --- CONTROLLO E-MAIL --- //
			if ((localObj.tipo=="emailOpz")&&(hasChar(tempobj.value))){
					localObj.tipo="email";}
			if ((localObj.tipo=="email")&&((!isValid(vEmail,tempobj.value))||(info!=""))){
					rName=tempobj.cName.toUpperCase();
					missinginfo += "\n   -"+ rName +" Es: nome@dominio.it" + info;info="";}

			if ((localObj.tipo=="CapOpz")&&(hasChar(tempobj.value))){
					localObj.tipo="Cap";}					
			if ((localObj.tipo=="Cap")&&((!isValid(vCap,tempobj.value))||(info!=""))){
					rName=tempobj.cName.toUpperCase();
					missinginfo += "\n   -"+ rName +" Es: 06000" + info;info="";}
			
			if ((localObj.tipo=="Nkname")&&(!isValid(vNkname,tempobj.value))){
					rName=tempobj.cName.toUpperCase();
					missinginfo += "\n   - NickName non corretto";}
			if ((localObj.tipo=="Psw")&&(!isValid(vPsw,tempobj.value))){
					rName=tempobj.cName.toUpperCase();
					missinginfo += "\n   - Password non corretta";}
					
	
			
			// --- TIPO DATA --- //
			if ((localObj.tipo=="DataOpz")&&(hasChar(tempobj.value))){
				localObj.tipo="Data"}
			if ((localObj.tipo=="Data")&&(!isValid(vData,tempobj.value))){
					rName=tempobj.cName.toUpperCase();
					missinginfo += "\n   -"+ rName +" Es: 31/12/2001";}
			else{
				if ((localObj.tipo=="Data")&&(isValid(vData,tempobj.value))){		
					miadata=tempobj.value;
					day=miadata.slice(0,2);
					month=miadata.slice(3,5);
					year=miadata.slice(6,10);
					ryear=year%400;
					ryear2=year%4;
					ryear3=year&100;
					if ((day==0 || day>31)||(month==0 || month>12)||(year==0 || year<1900 || year>2100)){
						rName=tempobj.cName.toUpperCase();
						missinginfo += "\n   -"+ rName +" Es: 31/12/2001";
					}else{
							if (((month==04)||(month==06)||(month==09)||(month==11))&&(day>30)){
								rName=tempobj.cName.toUpperCase();
								missinginfo += "\n   -"+ rName +" Il mese selezionato è di 30gg";
							}
						if	((ryear==0)||(ryear2==0 && ryear3!=0)){
							if ((month==02)&&(day>29)){
								rName=tempobj.cName.toUpperCase();
								missinginfo += "\n   -"+ rName +" L'anno selezionato è bisestile";					
							}
						}else{
							if ((month==02)&&(day>28)){
								rName=tempobj.cName.toUpperCase();
								missinginfo += "\n   -"+ rName +" L'anno selezionato ha febbraio di 28 giorni";					
							}						
						}
					}
				}
			}
			// --- FINE TIPO DATA --- //
						
			if ((tempobj.tipo=="checkbox")&&(tempobj.checked == false))
			{
					rName=tempobj.cName.toUpperCase();
					missinginfo += "\n   -"+ rName +" checkbox";
			}	
			
	}	
		if (missinginfo != "") 
		{
			missinginfo ="_____________________________\n" +
			"Inserimento obbligatorio o non corretto \nper i campi:\n" +
			missinginfo + "\n_____________________________" +
			"\naggiornare i campi visualizzati!";
			alert(missinginfo);
			return false;
		}
	}


