var	required = new Array();

	required['nuovoUtenteDatiF'] = new Array();
	required['nuovoUtenteDatiF']['obblEmail'] = new Array('email|email');
	required['nuovoUtenteDatiF']['obblUserPwd'] = new Array('password|password','confermapassword|conferma Password');	
	required['nuovoUtenteDatiF']['obblNomi'] = new Array('nome|nome','cognome|cognome','citta|citta');
	required['nuovoUtenteDatiF']['obblTesti'] = new Array('nickname|nickname','indirizzo|indirizzo');
	required['nuovoUtenteDatiF']['obblUserPwd'] = new Array('password|password','confermapassword|conferma Password');
	required['nuovoUtenteDatiF']['obblTelefonici'] = new Array('cap|CAP');
	required['nuovoUtenteDatiF']['obblMenu'] = new Array('provincia|provincia');

/* immagini Blog */

	required['nuovaNewsDatiF'] = new Array();
	required['nuovaNewsDatiF']['obblTesti'] = new Array('titolo|titolo','alt|alt');

	required['modificaNewsDatiF'] = new Array();
	required['modificaNewsDatiF']['obblTesti'] = new Array('titolo|titolo','alt|alt');



/*
nuovoUtenteDati2F
si trova in
http://www.gisgroup.org/pages/ita/areaRiservata/gestioneUtenti/nuovoUtenteGisGroup2.asp
pagina che mi \u00E8 servita per testare i controlli mentre li facevo
*/

	//required['inserimentoBlogF'] = new Array();
	//required['inserimentoBlogF']['obblTesti'] = new Array('titolo|titolo');
	
	required['nuovoUtenteNewsLetterDatiF'] = new Array();
	required['nuovoUtenteNewsLetterDatiF']['obblTesti'] = new Array('nome|nome','cognome|cognome');
	required['nuovoUtenteNewsLetterDatiF']['obblEmail'] = new Array('email|email');

	required['invioNewsLetterF'] = new Array();
	required['invioNewsLetterF']['obblTesti'] = new Array('soggetto|soggetto','testoMail|testo della newsLetter');



	required['nuovoUtenteDati2F'] = new Array();
	required['nuovoUtenteDati2F']['obblNomi'] = new Array('nome|nome','cognome|cognome','citta|citta','provincia|provincia');
	required['nuovoUtenteDati2F']['obblTesti'] = new Array('indirizzo|indirizzo');
	required['nuovoUtenteDati2F']['obblUserPwd'] = new Array('loginI|username','password|password');
	required['nuovoUtenteDati2F']['obblEmail'] = new Array('email|email');

/* fine descrizioni per nuovoUtenteDati2F */

	required['invioNewsLetterF'] = new Array();
	//required['invioNewsLetterF']['obblTesti'] = new Array('soggetto|soggetto');

	required['nuovoUtenteNewsLetterDatiE'] = new Array();
	required['nuovoUtenteNewsLetterDatiE']['obblTesti'] = new Array('nome|nome','cognome|cognome');
	required['nuovoUtenteNewsLetterDatiE']['obblEmail'] = new Array('email|email');

	required['nuovoUtenteNewsLetterDatiF'] = new Array();
	required['nuovoUtenteNewsLetterDatiF']['obblTesti'] = new Array('nome|nome','cognome|cognome');
	required['nuovoUtenteNewsLetterDatiF']['obblEmail'] = new Array('email|email');

	required['modificaUtenteNewsLetterDatiF'] = new Array();
	required['modificaUtenteNewsLetterDatiF']['obblTesti'] = new Array('nome|nome','cognome|cognome');
	required['modificaUtenteNewsLetterDatiF']['obblEmail'] = new Array('email|email');

	required['modificaUtenteDatiF'] = new Array();
	required['modificaUtenteDatiF']['obblTesti'] = new Array('nome|nome','cognome|cognome','citta|citta','provincia|provincia','loginI|login','password|password');
	required['modificaUtenteDatiF']['obblEmail'] = new Array('email|email');
	required['modificaUtenteDatiF']['obblCAP'] = new Array('cap|cap');
	required['modificaUtenteDatiF']['obblMenu'] = new Array('tipo_ditta|tipologia societ\u00E0','dirittiS|diritti');

	required['nuovaNewsDatiF'] = new Array();
	required['nuovaNewsDatiF']['obblTesti'] = new Array('titolo|titolo','abstract|sottotitolo','testo|testo');

	required['modificaNewsDatiF'] = new Array();
	required['modificaNewsDatiF']['obblTesti'] = new Array('titolo|titolo','abstract|sottotitolo','testo|testo');

	required['inserimentoLinksF'] = new Array();
	required['inserimentoLinksF']['obblTesti'] = new Array('titolo|titolo','testoLink|testo del link');
	required['inserimentoLinksF']['obblWeb'] = new Array('Link|Link');

	required['modificaLinksF'] = new Array();
	required['modificaLinksF']['obblTesti'] = new Array('titolo|titolo','testoLink|testo del link');
	required['modificaLinksF']['obblWeb'] = new Array('Link|Link');

	required['invioMotivazioneF'] = new Array();
	required['invioMotivazioneF']['obblTesti'] = new Array('motivazione|motivazione');

	required['inserimentoEvidenzaDatiF'] = new Array();
	required['inserimentoEvidenzaDatiF']['obblTesti'] = new Array('titolo|titolo','testoBreve|sottotitolo');

	required['modificaEvidenzaDatiF'] = new Array();
	required['modificaEvidenzaDatiF']['obblTesti'] = new Array('titolo|titolo','testoBreve|sottotitolo');

	required['inserimentoDownloadsF'] = new Array();
	required['inserimentoDownloadsF']['obblTesti'] = new Array('titolo|titolo');
	required['inserimentoDownloadsF']['obblFiles'] = new Array('fileD|file del download|gif_jpg_zip_doc_xls_exe_pdf');
	required['inserimentoDownloadsF']['obblMenu'] = new Array('lingua|lingua','giudizio|giudizio');

	required['modificaDownloadsF'] = new Array();
	required['modificaDownloadsF']['obblTesti'] = new Array('titolo|titolo');
	required['modificaDownloadsF']['obblFiles'] = new Array('fileD|file del download|gif_jpg_zip_doc_xls_exe_pdf');
	required['modificaDownloadsF']['obblMenu'] = new Array('lingua|lingua','giudizio|giudizio');

	required['nuovoTipologieDownloadF'] = new Array();
	required['nuovoTipologieDownloadF']['obblTesti'] = new Array('nomeI|nome area');

	required['modificaTipologieDownloadF'] = new Array();
	required['modificaTipologieDownloadF']['obblTesti'] = new Array('nomeI|nome area');

	required['nuovoSessioniEventoF'] = new Array();
	required['nuovoSessioniEventoF']['obblTesti'] = new Array('nomeSessione|nome sessione');

	required['modificaSessioniEventoF'] = new Array();
	required['modificaSessioniEventoF']['obblTesti'] = new Array('nomeSessione|nome sessione');
	
	required['nuovoAreeSitiF'] = new Array();
	required['nuovoAreeSitiF']['obblTesti'] = new Array('nomeI|nome sessione');

	required['modificaAreeSitiF'] = new Array();
	required['modificaAreeSitiF']['obblTesti'] = new Array('nomeI|nome sessione');	

	required['rispondiQuesitoEspertoRispondeF'] = new Array();
	required['rispondiQuesitoEspertoRispondeF']['obblTesti'] = new Array('paroleChiave|parole chiave','autoreRisposta|autore risposta','risposta|risposta');

	required['inserisciQuesitoF'] = new Array();
	required['inserisciQuesitoF']['obblTesti'] = new Array('paroleChiave|parole chiave','testoQuesito|quesito');
	required['inserisciQuesitoF']['obblMenu'] = new Array('settore|settore');

	required['nuovaPaginaDinamicaIncludesF'] = new Array();
	required['nuovaPaginaDinamicaIncludesF']['obblTesti'] = new Array('descrizione|descrizione');

	required['modificaPaginaDinamicaIncludesF'] = new Array();
	required['modificaPaginaDinamicaIncludesF']['obblTesti'] = new Array('descrizione|descrizione');

	required['inserimentoBannerF'] = new Array();
	required['inserimentoBannerF']['obblTesti'] = new Array('titolo|titolo','cliente|cliente','prezzo|prezzo','Link|Link');
	required['inserimentoBannerF']['obblFiles'] = new Array('immagine|immagine|gif_jpg_swf');
	required['inserimentoBannerF']['obblMenu'] = new Array('numeroBanner|numero banner');

	required['modificaBannerF'] = new Array();
	required['modificaBannerF']['obblTesti'] = new Array('titolo|titolo','cliente|cliente','prezzo|prezzo','Link|Link');
	required['modificaBannerF']['obblFiles'] = new Array('immagine|immagine|gif_jpg');
	required['modificaBannerF']['obblMenu'] = new Array('numeroBanner|numero banner');

	required['inserimentoSitiF'] = new Array();
	required['inserimentoSitiF']['obblTesti'] = new Array('titolo|titolo','testoLink|testo link','Link|Link');
	required['inserimentoSitiF']['obblMenu'] = new Array('area|area','lingua|lingua','giudizio|giudizio');

	required['modificaSitiF'] = new Array();
	required['modificaSitiF']['obblTesti'] = new Array('titolo|titolo','testoLink|testo link','Link|Link');
	required['modificaSitiF']['obblMenu'] = new Array('area|area','lingua|lingua','giudizio|giudizio');

	required['iscrizioneEventoUsrPsw'] = new Array();
	required['iscrizioneEventoUsrPsw']['obblTesti'] = new Array('user|username','passwordC|password');

/* test ammissibili per i campi obbligatori
	required['nomeForm'] = new Array();

	required['nomeForm']['obblNomi'] = new Array('nomeElementoForm|testo alert');
	regola: no vuoto, inizia e termina con una lettera [non fa differenza tra maiuscole e minuscole], accetta spazi bianchi, punti o altro all'interno, ma non numeri

	required['nomeForm']['obblTesti'] = new Array('nomeElementoForm|testo alert');
	regola: no vuoto, non ha per estremi o unici contenuti caratteri non alfanumerici

	required['nomeForm']['obblUserPwd'] = new Array('nomeElementoForm|testo alert');
	regola: no vuoto, sequenza alfanumerica ininterrotta

	required['nomeForm']['obblEmail'] = new Array('nomeElementoForm|testo alert');
	regola: no vuoto, rispetto sintassi email

	required['nomeForm']['obblKeyWords'] = new Array('nomeElementoForm|testo alert');
	regola: no vuoto, sequenze di caratteri separate da virgole, non necessaria virgola finale

	required['nomeForm']['obblWeb'] = new Array('nomeElementoForm|testo alert');
	regola: no vuoto, richiede sequenza alfanumerica e almeno un punto, ma non alla fine

	required['nomeForm']['obblTelefonici'] = new Array('nomeElementoForm|testo alert');
	regola: no vuoto, sequenza ininterrotta di soli numeri

	required['nomeForm']['obblCAP'] = new Array('nomeElementoForm|testo alert');
	regola: no vuoto, sequenza di 5 numeri

	required['nomeForm']['Orario'] = new Array('nomeElementoForm|testo alert');
	regola: no vuoto, sequenza tipo 20:30

	required['nomeForm']['obblFiles'] = new Array('nomeElementoForm|testo alert|[tipo00_tipo01_tipo02_ ... _tipoN]'); [] = opzionale, se non indicata vengono accettati tutti i tipi di file
	regola: no vuoto, verifica che l'estensione di un file sia stata indicata e che rientri nella lista delle estensioni accettate

	required['nomeForm']['obblMenu'] = new Array('nomeElementoForm|testo alert');
	regola: verifica che non si sia lasciata incompiuta una scelta da menu a tendina di un form
*/

//-------------------------------------------------------------------------------------------------------------

var	toVerify = new Array();

	toVerify['nuovaNewsDatiF'] = new Array();
	toVerify['nuovaNewsDatiF']['verifFiles'] = new Array('immagine|immagine|jpg_gif','download|download|doc_rtf_txt_pdf_zip');

	toVerify['modificaNewsDatiF'] = new Array();
	toVerify['modificaNewsDatiF']['verifFiles'] = new Array('immagine|immagine|jpg_gif','download|download|doc_rtf_txt_pdf_zip');

	toVerify['nuovoUtenteDatiF'] = new Array();
	toVerify['nuovoUtenteDatiF']['verifWeb'] = new Array('www|www');
	toVerify['nuovoUtenteDatiF']['verifTelefonici'] = new Array('telefono|telefono','fax|fax');

	toVerify['nuovoUtenteDati2F'] = new Array();
	toVerify['nuovoUtenteDati2F']['verifWeb'] = new Array('www|www');
	toVerify['nuovoUtenteDati2F']['verifTelefonici'] = new Array('telefono|telefono','fax|fax');
	toVerify['nuovoUtenteDati2F']['verifNomi'] = new Array('stato|stato');
	toVerify['nuovoUtenteDati2F']['verifTesti'] = new Array('nome_ditta|societ\u00E0','professione|professione');

	toVerify['inserimentoLinksF'] = new Array();
	toVerify['inserimentoLinksF']['verifFiles'] = new Array('immagine|immagine|jpg_gif');

	toVerify['modificaLinksF'] = new Array();
	toVerify['modificaLinksF']['verifFiles'] = new Array('immagine|immagine|jpg_gif');

	toVerify['inserimentoEvidenzaDatiF'] = new Array();
	toVerify['inserimentoEvidenzaDatiF']['verifFiles'] = new Array('immagine|immagine|gif_jpg');

	toVerify['modificaEvidenzaDatiF'] = new Array();
	toVerify['modificaEvidenzaDatiF']['verifFiles'] = new Array('immagine|immagine|gif_jpg');

	toVerify['inserimentoSitiF'] = new Array();
	toVerify['inserimentoSitiF']['verifFiles'] = new Array('immagine|immagine|jpg_gif');

	toVerify['modificaSitiF'] = new Array();
	toVerify['modificaSitiF']['verifFiles'] = new Array('immagine|immagine|jpg_gif');

/* test ammissibili per i campi facoltativi
	toVerify['nomeForm'] = new Array();

	toVerify['nomeForm']['verifNomi'] = new Array('nomeElementoForm|testo alert');
	regola: inizia e termina con una lettera [non fa differenza tra maiuscole e minuscole], accetta spazi bianchi, punti o altro all'interno, ma non numeri

	toVerify['nomeForm']['verifTesti'] = new Array('nomeElementoForm|testo alert');
	regola: non ha per estremi o unici contenuti caratteri non alfanumerici

	toVerify['nomeForm']['verifUserPwd'] = new Array('nomeElementoForm|testo alert');
	regola: sequenza alfanumerica ininterrotta

	toVerify['nomeForm']['verifEmail'] = new Array('nomeElementoForm|testo alert');
	regola: rispetto sintassi email

	toVerify['nomeForm']['verifKeyWords'] = new Array('nomeElementoForm|testo alert');
	regola: sequenze di caratteri separate da virgole, non necessaria virgola finale

	toVerify['nomeForm']['verifWeb'] = new Array('nomeElementoForm|testo alert');
	regola: richiede sequenza alfanumerica e almeno un punto, ma non alla fine

	toVerify['nomeForm']['verifTelefonici'] = new Array('nomeElementoForm|testo alert');
	regola: sequenza ininterrotta di soli numeri

	toVerify['nomeForm']['verifCAP'] = new Array('nomeElementoForm|testo alert');
	regola: sequenza di 5 numeri

	toVerify['nomeForm']['Orario'] = new Array('nomeElementoForm|testo alert');
	regola: sequenza tipo 20:30

	toVerify['nomeForm']['verifFiles'] = new Array('nomeElementoForm|testo alert|[tipo00_tipo01_tipo02_ ... _tipoN]'); [] = opzionale, se non indicata vengono accettati tutti i tipi di file
	regola: verifica che l'estensione di un file sia stata indicata e che rientri nella lista delle estensioni accettate

	toVerify['nomeForm']['verifMenu'] = new Array('nomeElementoForm|testo alert');
	regola: verifica che non si sia lasciata incompiuta una scelta da menu a tendina di un form
*/

//-------------------------------------------------------------------------------------------------------------

function validate(formName,mode){ /* valori per mode: 'required' o 'toVerify' */
	// \u00A9 2003  Daniele Marchesini All Rights reserved
	var prefix = (mode=='required')?'obbl':'verif';
	var okForm = true;
	var report = '';
	var tempVal;
	var tempObj;
	var theForm = document.forms[formName];
	var okVerify = false;
	var okRequired = (mode=='required')?true:false;

	var req = eval(mode+'[\''+formName+'\']');

	if(req[prefix+'Nomi']){
		var verNomi = req[prefix+'Nomi'];
		var numNomi = verNomi.length;
		var re_Nomi = /^[^a-zA-Z]+|[1-9]+|[^a-zA-Z]+$/;

		for(i=0; i<numNomi; i++){
			tempObj = theForm.elements[verNomi[i].split('|')[0]];
			if(!tempObj.disabled){
				tempVal = tempObj.value;
				if(mode=='toVerify'){
					okVerify = (tempVal=='')?false:true;
				}else{
					okVerify = false;
				}
				if(okVerify || okRequired){
					if(re_Nomi.test(tempVal)||tempVal==''){
						report = 'il campo\n' + verNomi[i].split('|')[1] + '\nnon \u00E8 stato compilato correttamente\nnon pu\u00F2:\n- essere vuoto\n- iniziare, terminare o essere costituito interamente da caratteri diversi da una lettera dell\'alfabeto\n- contenere numeri';
						alert(report);
						tempObj.focus();
						okForm = false;
						if(mode=='required'){
							return false;
						}
					}
				}
			}
		}
	}

	if(req[prefix+'Testi']){
		var verTesti = req[prefix+'Testi'];
		var numTesti = verTesti.length;
		var re_Testi = /^[^a-zA-Z0-9]+|[^a-zA-Z0-9]+$/;

		for(i=0; i<numTesti; i++){
			tempObj = theForm.elements[verTesti[i].split('|')[0]];
			if(!tempObj.disabled){
				tempVal = tempObj.value;
				if(mode=='toVerify'){
					okVerify = (tempVal=='')?false:true;
				}else{
					okVerify = false;
				}
				if(okVerify || okRequired){
					if(re_Testi.test(tempVal)||tempVal==''){
						report = 'il campo\n' + verTesti[i].split('|')[1] + '\nnon \u00E8 stato compilato correttamente\nnon pu\u00F2:\n- essere vuoto\n- avere per estremi o unici contenuti caratteri non alfanumerici';
						alert(report);
						tempObj.focus();
						okForm = false;
						if(mode=='required'){
							return false;
						}
					}
				}
			}
		}
	}

	if(req[prefix+'UserPwd']){
		var verUserPwd = req[prefix+'UserPwd'];
		var numVerUserPwd = verUserPwd.length;
		var re_UserPwd  = /^[ \t]+|[ \t]+|[ \t]+$/;

		for(i=0; i<numVerUserPwd; i++){
			tempObj = theForm.elements[verUserPwd[i].split('|')[0]];
			if(!tempObj.disabled){
				tempVal = tempObj.value;
				if(mode=='toVerify'){
					okVerify = (tempVal=='')?false:true;
				}else{
					okVerify = false;
				}
				if(okVerify || okRequired){
					if(re_UserPwd.test(tempVal)||tempVal==''){
						report = 'il campo\n' + verUserPwd[i].split('|')[1] + '\nnon \u00E8 stato compilato correttamente\nnon pu\u00F2:\n- essere vuoto\n- iniziare, terminare, contenere o essere composto da spazi bianchi';
						alert(report);
						tempObj.focus();
						okForm = false;
						if(mode=='required'){
							return false;
						}
					}
				}
			}
		}
	}

	if(req[prefix+'Email']){
		var verEmail = req[prefix+'Email'];
		var numVerEmail = verEmail.length;
		var re_Email  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

		for(i=0; i<numVerEmail; i++){
			tempObj = theForm.elements[verEmail[i].split('|')[0]];
			if(!tempObj.disabled){
				tempVal = tempObj.value;
				if(mode=='toVerify'){
					okVerify = (tempVal=='')?false:true;
				}else{
					okVerify = false;
				}
				if(okVerify || okRequired){
					if(!re_Email.test(tempVal)){
						report = 'il campo\n' + verEmail[i].split('|')[1] + '\n\u00E8 vuoto o non \u00E8 stato compilato correttamente';
						alert(report);
						tempObj.focus();
						okForm = false;
						return false;
					}
				}
			}
		}
	}

	if(req[prefix+'KeyWords']){
		var verKeyWords = req[prefix+'KeyWords'];
		var numKeyWords = verKeyWords.length;
		var re_KeyWords  = /^(([ a-zA-Z0-9\_\-\.])+[,]?)+$/;

		for(i=0; i<numKeyWords; i++){
			tempObj = theForm.elements[verKeyWords[i].split('|')[0]];
			if(!tempObj.disabled){
				tempVal = tempObj.value;
				if(mode=='toVerify'){
					okVerify = (tempVal=='')?false:true;
				}else{
					okVerify = false;
				}
				if(okVerify || okRequired){
					if(!re_KeyWords.test(tempVal)){
						report = 'il campo\n' + verKeyWords[i].split('|')[1] + '\n\u00E8 vuoto o non \u00E8 stato compilato correttamente';
						alert(report);
						tempObj.focus();
						okForm = false;
						return false;
					}
				}
			}
		}
	}


/*

http://www.regular-expressions.info/javascriptexample.html

*/

	if(req[prefix+'Web']){
		var verWeb = req[prefix+'Web'];
		var numVerWeb = verWeb.length;
		var re_Web = /^[a-zA-Z]([a-zA-Z0-9\-\.])+\.[a-zA-Z]{2,4}([\/]*[\w+\.\~]+)+[\?]*(\w*\=\w*)*(\&*(\w*\=\w*)*)*\w*$/;

		for(i=0; i<numVerWeb; i++){
			tempObj = theForm.elements[verWeb[i].split('|')[0]];
			if(!tempObj.disabled){
				tempVal = tempObj.value;
				if(mode=='toVerify'){
					okVerify = (tempVal=='')?false:true;
				}else{
					okVerify = false;
				}
				if(okVerify || okRequired){
					if(!re_Web.test(tempVal)){
						report = 'il campo\n' + verWeb[i].split('|')[1] + '\nnon \u00E8 stato compilato correttamente\nnon sono ammessi spazi bianchi ed \u00E8 necessario almeno un punto, ma non agli estremi dell\'indirizzo web\nnon inserire all\'inizio \'http://\'';
						alert(report);
						tempObj.focus();
						okForm = false;
						return false;
					}
				}
			}
		}
	}

	if(req[prefix+'Telefonici']){
		var verTelefonici = req[prefix+'Telefonici'];
		var numVerTelefonici = verTelefonici.length;
		var re_Telefonici = /^([0-9]+)$/;
//		var re_Telefonici = /^[\+]+([0-9]{2,3})+[\-]+([0-9]+)+[\-]+([0-9]+)$/;

		for(i=0; i<numVerTelefonici; i++){
			tempObj = theForm.elements[verTelefonici[i].split('|')[0]];
			if(!tempObj.disabled){
				tempVal = tempObj.value;
				if(mode=='toVerify'){
					okVerify = (tempVal=='')?false:true;
				}else{
					okVerify = false;
				}
				if(okVerify || okRequired){
					if(!re_Telefonici.test(tempVal)){
						report = 'il campo\n' + verTelefonici[i].split('|')[1] + '\nnon \u00E8 stato compilato correttamente\ninserire solo le cifre numeriche senza separarle con spazi bianchi, trattini o altro';
						alert(report);
						tempObj.focus();
						okForm = false;
						return false;
					}
				}
			}
		}
	}

	if(req[prefix+'CAP']){
		var verCAP = req[prefix+'CAP'];
		var numVerCAP = verCAP.length;
		var re_CAP = /^[0-9]{5}$/;

		for(i=0; i<numVerCAP; i++){
			tempObj = theForm.elements[verCAP[i].split('|')[0]];
			if(!tempObj.disabled){
				tempVal = tempObj.value;
				if(mode=='toVerify'){
					okVerify = (tempVal=='')?false:true;
				}else{
					okVerify = false;
				}
				if(okVerify || okRequired){
					if(!re_CAP.test(tempVal)){
						report = 'il campo\n' + verCAP[i].split('|')[1] + '\nnon \u00E8 stato compilato correttamente';
						alert(report);
						tempObj.focus();
						okForm = false;
						return false;
					}
				}
			}
		}
	}

	if(req[prefix+'Orario']){
		var verOrario = req[prefix+'Orario'];
		var numVerOrario = verOrario.length;
		var re_Orario = /^[0-9]{1,2}:[0-9]{1,2}$/;

		for(i=0; i<numVerOrario; i++){
			tempObj = theForm.elements[verOrario[i].split('|')[0]];
			if(!tempObj.disabled){
				tempVal = tempObj.value;
				if(mode=='toVerify'){
					okVerify = (tempVal=='')?false:true;
				}else{
					okVerify = false;
				}
				if(okVerify || okRequired){
					if(!re_Orario.test(tempVal)){
						report = 'il campo\n' + verOrario[i].split('|')[1] + '\nnon \u00E8 stato compilato correttamente';
						alert(report);
						tempObj.focus();
						okForm = false;
						return false;
					}else{
						var ora = parseInt(tempVal.split(':')[0]);
						if(ora<0 || ora>24){
							alert('l\'ora deve essere compresa tra le 00 e le 24');
							tempObj.focus();
							okForm = false;
							return false;
						}
						var minuti = parseInt(tempVal.split(':')[1]);
						if(minuti<0 || minuti>60){
							alert('i minuti devono essere compresi tra 00 e 60');
							tempObj.focus();
							okForm = false;
							return false;
						}
					}
				}
			}
		}
	}

	if(req[prefix+'Files']){
		var verFiles = req[prefix+'Files'];
		var numVerFiles = verFiles.length;

		var typesString;
		var typesArray;
		var numTypes;
		var extension;
		var matched;

		for(i=0; i<numVerFiles; i++){
			tempObj = theForm.elements[verFiles[i].split('|')[0]];
			if(!tempObj.disabled){
				tempVal = tempObj.value;
				if(mode=='toVerify'){
					okVerify = (tempVal=='')?false:true;
				}else{
					okVerify = false;
				}
				if(okVerify || okRequired){
					if(tempVal == ''){
						report = 'il campo\n' + verFiles[i].split('|')[1] + '\nnon \u00E8 stato compilato';
						alert(report);
						tempObj.focus();
						okForm = false;
						if(mode=='required'){
							return false;
						}
					}else{
						if(verFiles[i].split('|').length == 3){
							typesString = verFiles[i].split('|')[2];
							typesArray = typesString.split('_');
							numTypes = typesArray.length;
							extension = tempVal.substring(tempVal.lastIndexOf('.')+1,tempVal.length);
							matched = false
							for(j=0; j<numTypes; j++){
								if(extension == typesArray[j]){
									matched = true;
									break;
								}
							}
							if(!matched){
								alert('campo:\n'+verFiles[i].split('|')[1]+'\n\nil tipo di file selezionato ha estensione\n\n\t\t'+extension+'\n\n e non \u00E8 del tipo corretto\n\n\u00E8 possibile inserire solo files di tipo\n'+typesArray.join(', ')+'\npena il non invio del modulo');
								tempObj.focus();
								okForm = false;
								if(mode=='required'){
									return false;
								}
							}
						}
					}
				}
			}
		}
	}

	if(req[prefix+'Menu']){
		var verMenu = req[prefix+'Menu'];
		var numVerMenu = verMenu.length;
		for(i=0; i<numVerMenu; i++){
			tempObj = theForm.elements[verMenu[i].split('|')[0]];
			if(tempObj.type=='select-one'){
				tempSelInd = tempObj.selectedIndex;
				tempVal = tempObj.options[tempSelInd].value;
				if(tempVal == 'void'){
					report = 'il campo\n' + verMenu[i].split('|')[1] + '\nnon \u00E8 stato compilato correttamente';
					alert(report);
					tempObj.focus();
					okForm = false;
					if(mode=='required'){
						return false;
					}
				}
			}
		}
	}
	return okForm;
}

//-------------------------------------------------------------------------------------------------------------

function initDate(dateType){ // imposta la data odierna come data inizio validita
	// \u00A9 2003  Daniele Marchesini All Rights reserved
	var theForm = document.forms[document.nomeForm];
	var daySelect = theForm.elements['giorno'+dateType];
	var monthSelect = theForm.elements['mese'+dateType];
	var yearSelect = theForm.elements['anno'+dateType];

	var today = new Date();

	var dateElements = document.today.split('/');
	today.setDate(dateElements[0]);
	today.setMonth(parseInt(dateElements[1])-1);
	today.setFullYear(dateElements[2]);

	var day = today.getDate();
	var month = today.getMonth() + 1;
	var year = today.getFullYear()%2000 - 2;

	daySelect.selectedIndex = day;
	monthSelect.selectedIndex = month;
	yearSelect.selectedIndex = year;
}

//-------------------------------------------------------------------------------------------------------------

function datesManager(formName,startDaySelectName,startMonthSelectName,startYearSelectName,finishDaySelectName,finishMonthSelectName,finishYearSelectName){
	// \u00A9 2003  Daniele Marchesini All Rights reserved
	var startDate = checkDate(formName,startDaySelectName,startMonthSelectName,startYearSelectName);
	if(!startDate){
		return false;
	}

	var finishDate = checkDate(formName,finishDaySelectName,finishMonthSelectName,finishYearSelectName);
	if(!finishDate){
		return false;
	}

	var compDates = compareDates(formName,startDaySelectName,startMonthSelectName,startYearSelectName,finishDaySelectName,finishMonthSelectName,finishYearSelectName);
	if(!compDates){
		return false;
	}

	return true;
}

//-------------------------------------------------------------------------------------------------------------

function compareDates(formName,startDaySelectName,startMonthSelectName,startYearSelectName,finishDaySelectName,finishMonthSelectName,finishYearSelectName){
	// \u00A9 2003  Daniele Marchesini All Rights reserved
	var startDaySelect = document.forms[formName].elements[startDaySelectName];
	var startDaySelInd = startDaySelect.selectedIndex;
	var startDay = startDaySelect.options[startDaySelInd].value;

	var startMonthSelect = document.forms[formName].elements[startMonthSelectName];
	var startMonthSelInd = startMonthSelect.selectedIndex;
	var startMonth = startMonthSelect.options[startMonthSelInd].value;

	var startYearSelect = document.forms[formName].elements[startYearSelectName];
	var startYearSelInd = startYearSelect.selectedIndex;
	var startYear = startYearSelect.options[startYearSelInd].value;

	var startDate = new Date();
	startDate.setDate(startDay);
	startDate.setMonth(startMonth-1);
	startDate.setFullYear(startYear);

	var finishDaySelect = document.forms[formName].elements[finishDaySelectName];
	var finishDaySelInd = finishDaySelect.selectedIndex;
	var finishDay = finishDaySelect.options[finishDaySelInd].value;

	var finishMonthSelect = document.forms[formName].elements[finishMonthSelectName];
	var finishMonthSelInd = finishMonthSelect.selectedIndex;
	var finishMonth = finishMonthSelect.options[finishMonthSelInd].value;

	var finishYearSelect = document.forms[formName].elements[finishYearSelectName];
	var finishYearSelInd = finishYearSelect.selectedIndex;
	var finishYear = finishYearSelect.options[finishYearSelInd].value;

	var finishDate = new Date();
	finishDate.setDate(finishDay);
	finishDate.setMonth(finishMonth-1);
	finishDate.setFullYear(finishYear);

	var differenza = Math.round(eval((finishDate.getTime()-startDate.getTime())/86400000));
	var report = '';

	var okCompare;

	if(differenza<0){
		report += 'attenzione:\nl\'annotazione in fase di inserimento risulta SCADUTA da '+ eval(-1 * differenza)+' giorni\n';
		report += 'e NON SAR\u00C0 EVIDENZIATA NEL SITO\ncontinuare?';
		okCompare = confirm(report);
	}else{
		if(differenza==0){
			report += 'attenzione:\nl\'annotazione in fase di inserimento SCADE OGGI\ncontinuare?';
			okCompare = confirm(report);
		}else{
			if(document.valSempre){
				report += 'l\'annotazione in fase di inserimento non ha data di scadenza ed \u00E8 quindi sempre valida';
				okCompare = true;
				// alert(report);
			}else{
				report += 'l\'annotazione in fase di inserimento scadr\u00E0 fra '+ eval(differenza)+' giorni\n';
				okCompare = true;
				// alert(report);
			}
		}
	}
	return okCompare;
}

//-------------------------------------------------------------------------------------------------------------

function validoSempre(checkObject,formName,finishDayElementName,finishMonthElementName,finishYearElementName,startDateRowName,finishDateRowName,startDataHeaderName,finishDataHeaderName){
	// \u00A9 2003  Daniele Marchesini All Rights reserved
	var theForm = document.forms[formName];
	var finishDaySelect = theForm.elements[finishDayElementName];
	var finishMonthSelect = theForm.elements[finishMonthElementName];
	var finishYearSelect = theForm.elements[finishYearElementName];

	if(checkObject.checked){
		document.getElementById(startDateRowName).style.display='none';
		document.getElementById(finishDateRowName).style.display='none';
		document.getElementById(startDataHeaderName).style.display='none';
		document.getElementById(finishDataHeaderName).style.display='none';

		finishDaySelect.selectedIndex = finishDaySelect.options.length-1;
		finishMonthSelect.selectedIndex = finishMonthSelect.options.length-1;
		finishYearSelect.selectedIndex = finishYearSelect.options.length-1;

		document.valSempre = true;
	}else{
		finishDaySelect.selectedIndex = 0;
		finishMonthSelect.selectedIndex = 0;
		finishYearSelect.selectedIndex = 0;

		document.getElementById(startDateRowName).style.display='block';
		document.getElementById(finishDateRowName).style.display='block';
		document.getElementById(startDataHeaderName).style.display='block';
		document.getElementById(finishDataHeaderName).style.display='block';

		document.valSempre = false;
	}
}

//-------------------------------------------------------------------------------------------------------------
function radioGroupCheck(formName,radioGroupName,valueToCheck,fieldToFillName,errorMessage,typeOfIndagine,typeOfData){
	// \u00A9 2003  Daniele Marchesini All Rights reserved
/*
	formName			=	nome del form in cui indagare
	radioGroupName		=	nome del gruppo di radiobuttons su cui indagare
	valueToCheck		=	valore associato al radiobutton per il quale e previsto un campo da compilare
							aggiuntivo
	fieldToFillName		=	nome del campo aggiuntivo collegato al radiobutton avente per valore
							valueToCheck
	errorMessage		=	messaggio di errore da visualizzare in caso di mancata o non corretta
							compilazione del campo aggiuntivo di nome fieldToFillName
	typeOfIndagine		=	natura della verifica: required impone la presenza e la correttezza della
							compilazione, toVerify controlla solo la correttezza della compilazione se
							questa e avvenuta
	typeOfData			=	natura delle informazioni che saranno inserite nel campo di nome
							fieldToFillName.
							Per maggiori informazioni sulle tipologie supportate, vedi
							"test ammissibili per i campi obbligatori"
							e
							"test ammissibili per i campi da controllare se compilati"
							piu sopra

*/
	var radioGroupObj = document.forms[formName].elements[radioGroupName];
	var numRadio = radioGroupObj.length;
	var radioChecked;

	for(i=0; i<numRadio; i++){
		if(radioGroupObj[i].checked){
			radioChecked = radioGroupObj[i];
			if(radioChecked.value == valueToCheck){
				var validateArray = eval(typeOfIndagine+'[\''+formName+'\'][\''+typeOfData+'\']');
				validateArray[validateArray.length] = fieldToFillName+'|'+errorMessage;
			}
		}
	}
}

//-------------------------------------------------------------------------------------------------------------

function checkBoxCheck(checksArray){
	// \u00A9 2003  Daniele Marchesini All Rights reserved

	/* cancello la versione corrente di required */
	required.length = 0;

	/*
		ripristino la versione originale di required.
		indispensabile nel caso in cui questa funzione in chiamate precedenti abbia alterato la
		composizione di required aggiungendo campi da controllare
	*/
	for(a in document.originalRequired){
		required[a] = new Array();
		for(b in document.originalRequired[a]){
			required[a][b] = new Array();
			for(c in document.originalRequired[a][b]){
				required[a][b][c] = document.originalRequired[a][b][c];
			}
		}
	}

	var totChecks = checksArray.length;

	var checkObj;
	var validateArray;
	var tempArray = new Array();

	for(i=0; i<totChecks; i++){
		checkObj = document.forms[checksArray[i][0]].elements[checksArray[i][1]];
		validateArray = eval(checksArray[i][4]+'[\''+checksArray[i][0]+'\'][\''+checksArray[i][5]+'\']');
		if(checkObj.checked){
			validateArray[validateArray.length] = checksArray[i][2] + '|' + checksArray[i][3];
		}
	}

/*
	routine per la stampa dei contenuti dei vettori required e document.originalRequired nelle textarea
	elencoEsperienzeLavorative e commenti rispettivamente
*/
/*
	var rep1 = 'required\n\n';
	for(a in required){
		if(a == 'invioCurriculum'){
			rep1 += a + '\n';
			for(b in required[a]){
				if(b == 'obblTesti'){
					rep1 += '-' + b + '\n';
					for(c in required[a][b]){
						rep1 += '--' + required[a][b][c] + '\n';
					}
				}
			}
		}
	}

	document.getElementById('elencoEsperienzeLavorative').value = rep1;

	var rep2 = 'document.originalRequired\n\n';
	for(a in document.originalRequired){
		if(a == 'invioCurriculum'){
			rep2 += a + '\n';
			for(b in document.originalRequired[a]){
				if(b == 'obblTesti'){
					rep2 += '-' + b + '\n';
					for(c in document.originalRequired[a][b]){
						rep2 += '--' + document.originalRequired[a][b][c] + '\n';
					}
				}
			}
		}
	}

	document.getElementById('Commenti').value = rep2;
*/
}

//-------------------------------------------------------------------------------------------------------------

function checkDate(formName,daySelectName,monthSelectName,yearSelectName){
	// \u00A9 2003  Daniele Marchesini All Rights reserved
	var daySelect = document.forms[formName].elements[daySelectName];
	var daySelInd = daySelect.selectedIndex;
	var giorno = daySelect.options[daySelInd].value;

	var monthSelect = document.forms[formName].elements[monthSelectName];
	var monthSelInd = monthSelect.selectedIndex;
	var mese = monthSelect.options[monthSelInd].value;

	var yearSelect = document.forms[formName].elements[yearSelectName];
	var yearSelInd = yearSelect.selectedIndex;
	var anno = yearSelect.options[yearSelInd].value;

	if (giorno == 'void'){
		alert('Attenzione, inserire il giorno');
		daySelect.focus();
		return false;
	}

	if(mese == 'void'){
		alert('Attenzione, inserire il mese');
		monthSelect.focus();
		return false;
	}

	if(anno == 'void'){
		alert('Attenzione, inserire l\'anno');
		yearSelect.focus();
		return false;
	}

	var bisestile = ((anno-2000)%4 == 0)?true:false;
	var giorniFebbraio = (bisestile)?29:28;

	var datiMesi = new Array();
		datiMesi[0] = new Array('gennaio',31);
		datiMesi[1] = new Array('febbraio',giorniFebbraio);
		datiMesi[2] = new Array('marzo',31);
		datiMesi[3] = new Array('aprile',30);
		datiMesi[4] = new Array('maggio',31);
		datiMesi[5] = new Array('giugno',30);
		datiMesi[6] = new Array('luglio',31);
		datiMesi[7] = new Array('agosto',31);
		datiMesi[8] = new Array('settembre',30);
		datiMesi[9] = new Array('ottobre',31);
		datiMesi[10] = new Array('novembre',30);
		datiMesi[11] = new Array('dicembre',31);

	var okGiorno = (giorno <= datiMesi[mese-1][1])?true:false;

	if (okGiorno == false){
		alert('Attenzione, la data inserita non \u00E8 corretta.\n probabilmente il numero dei giorni non coincide con la durata del mese selezionato\nanche in coerenza con gli anni bisestili\n\nverificare e modificare, grazie.');
		/*
		alert('Attention, please, the date you have just inserted is wrong:\nprobably the number of the day do not match the real length of the selected month, in according with bixestyle years too.\nRetry, please.');
		*/
		return false;
	}

	return true;
}


//-------------------------------------------------------------------------------------------------------------

function compareDates(formName,startDaySelectName,startMonthSelectName,startYearSelectName,finishDaySelectName,finishMonthSelectName,finishYearSelectName){
	// \u00A9 2003  Daniele Marchesini All Rights reserved
	var startDaySelect = document.forms[formName].elements[startDaySelectName];
	var startDaySelInd = startDaySelect.selectedIndex;
	var startDay = startDaySelect.options[startDaySelInd].value;

	var startMonthSelect = document.forms[formName].elements[startMonthSelectName];
	var startMonthSelInd = startMonthSelect.selectedIndex;
	var startMonth = startMonthSelect.options[startMonthSelInd].value;

	var startYearSelect = document.forms[formName].elements[startYearSelectName];
	var startYearSelInd = startYearSelect.selectedIndex;
	var startYear = startYearSelect.options[startYearSelInd].value;

	var startDate = new Date();
	startDate.setDate(startDay);
	startDate.setMonth(startMonth-1);
	startDate.setFullYear(startYear);

	var finishDaySelect = document.forms[formName].elements[finishDaySelectName];
	var finishDaySelInd = finishDaySelect.selectedIndex;
	var finishDay = finishDaySelect.options[finishDaySelInd].value;

	var finishMonthSelect = document.forms[formName].elements[finishMonthSelectName];
	var finishMonthSelInd = finishMonthSelect.selectedIndex;
	var finishMonth = finishMonthSelect.options[finishMonthSelInd].value;

	var finishYearSelect = document.forms[formName].elements[finishYearSelectName];
	var finishYearSelInd = finishYearSelect.selectedIndex;
	var finishYear = finishYearSelect.options[finishYearSelInd].value;

	var finishDate = new Date();
	finishDate.setDate(finishDay);
	finishDate.setMonth(finishMonth-1);
	finishDate.setFullYear(finishYear);

	var differenza = Math.round(eval((finishDate.getTime()-startDate.getTime())/86400000));
	var report = '';

	var okCompare = true; // per ora inutile, ma se un domani vogliamo fare in modo che vengano bloccate le date scadute, servira ...

	if(differenza<0){
		report += 'attenzione:\nla data relativa ai dati in fase di inserimento risulta SCADUTA da '+ eval(-1 * differenza)+' giorni\n';
		report += 'pertanto i dati NON SARANNO VISUALIZZATI NEL SITO\ncontinuare?';
		okCompare = confirm(report);
	}else{
		if(differenza==0){
			report += 'attenzione:\nla data relativa ai dati in fase di inserimento COINCIDE CON QUELLA ODIERNA\ncontinuare?';
			okCompare = confirm(report);
		}else{
			if(document.valSempre){
				report += 'i dati in fase di inserimento non hanno una data di scadenza assegnata e risultano quindi sempre validi';
				alert(report);
			}else{
				report += 'i dati in fase di inserimento scadranno fra '+ eval(differenza)+' giorni\ndopo tale termine non saranno pi\u00F9 visualizzati nel sito';
				alert(report);
			}
		}
	}

	return okCompare;
}

/*
		report += 'dati letti dai select:\n';
		report += 'data inizio: ';
		report += startDay+' '+startMonth+' '+startYear+'\nin ms dal 01/01/1790: '+startDate.getTime()+'\n';
		report += 'data fine: ';
		report += finishDay+' '+finishMonth+' '+finishYear+'\nin ms dal 01/01/1790: '+finishDate.getTime()+'\n';
		report += '------\n';
		report += 'dati ricavati dall\'oggetto Date:\n';
		report += 'data inizio: ';
		report += startDate.getDate()+' : '+eval(startDate.getMonth()+1)+' : '+startDate.getFullYear()+'\n';
		report += 'data fine: ';
		report += finishDate.getDate()+' : '+eval(finishDate.getMonth()+1)+' : '+finishDate.getFullYear()+'\n';
		report += '------\n';
		report += 'differenza [in giorni]: '+differenza;
*/


//-------------------------------------------------------------------------------------------------------------

function checkListValidator(formName,chkListNames){
	// \u00A9 2003  Daniele Marchesini All Rights reserved
	var oneCheck = false;
	var totChecks = chkListNames.length;
	var theForm = document.forms[formName];

	for(i=0; i<totChecks; i++){
		if(theForm.elements[chkListNames[i]].checked){
			oneCheck = true;
		}
	}
	return oneCheck;
}

//-------------------------------------------------------------------------------------------------------------

function initStartDate(){ // imposta la data odierna come data inizio validita
	// \u00A9 2003  Daniele Marchesini All Rights reserved
	var theForm = document.forms[document.nomeForm];
	var daySelect = theForm.elements['giornoS'];
	var monthSelect = theForm.elements['meseS'];
	var yearSelect = theForm.elements['annoS'];

	var today = new Date();

	var dateElements = document.today.split('/');

	today.setDate(dateElements[0]);
	today.setMonth(parseInt(dateElements[1])-3);

	today.setFullYear(dateElements[2]);

	var day = today.getDate();
	var month = today.getMonth();
	var year = today.getFullYear()%2000 - 2;

	daySelect.selectedIndex = day;
	monthSelect.selectedIndex = month;
	yearSelect.selectedIndex = year;
}

//-------------------------------------------------------------------------------------------------------------

function fullLink(formName,linkText,linkUrl){ //verifica che nell'inserimento di un link si indichino tanto il testo quanto l'url
	// \u00A9 2003  Daniele Marchesini All Rights reserved
	var linkTextValue = document.forms[formName].elements[linkText].value;
	var linkUrlValue = document.forms[formName].elements[linkUrl].value;

	if(linkTextValue == '' && linkUrlValue != ''){
		alert('non \u00E8 possibile inserire l\'indirizzo del link e non il testo ad esso relativo');
		document.forms[formName].elements[linkText].focus();
		return false;
	}

	if(linkTextValue != '' && linkUrlValue == ''){
		alert('non \u00E8 possibile inserire il testo del link e non l\'indirizzo ad esso relativo');
		document.forms[formName].elements[linkUrl].focus();
		return false;
	}

	return true;
}


//-------------------------------------------------------------------------------------------------------------
function okPrivacy(nomeForm,nomeRadio){
	// \u00A9 2003  Daniele Marchesini All Rights reserved
	var radioAccetta = document.forms[nomeForm].elements[nomeRadio];
	var numeroScelte = radioAccetta.length;
	for(i=0; i<numeroScelte; i++){
		if(radioAccetta[i].checked){
			if(radioAccetta[i].value == 'si'){
				return true;
			}
		}
		alert('per poter procedere con la registrazione \u00E8 necessario accettare le condizioni sulla privacy');
		return false;
	}
}