//                ((( Daniele Marchesini email: skylark@iol.it  İ 2003  All Rights reserved )))
//ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ

function initDate(dateType){ // imposta la data odierna come data inizio validità
	// İ 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){
	// İ 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 validoSempre(checkObject,formName,finishDayElementName,finishMonthElementName,finishYearElementName,startDateRowName,finishDateRowName,startDataHeaderName,finishDataHeaderName){
	// İ 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];

	var firstTime = false;

	if(checkObject.length){
		checkObject = document.forms[formName].elements[checkObject];
		firstTime = true;
	}

	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;
		
		initDate('S');

		document.valSempre = true;
	}else{
		if(!firstTime){
			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 validate(formName,mode){ /* valori per mode: 'required' o 'toVerify' */
	// İ 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+'Testi']){
		var verTesti = req[prefix+'Testi'];
		var numVerTesti = verTesti.length;
		for(i=0; i<numVerTesti; 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(tempVal == ''){
						report = 'il campo\n' + verTesti[i].split('|')[1] + '\nnon è stato compilato correttamente';
						alert(report);
						if(!document.noFocusOggetto)
						{
							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è vuoto o non è 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è vuoto o non è stato compilato correttamente\n\nle parole chiave possono contenere\nspazi bianchi, trattini o punti\ne devono essere separate necessariamente\nda una virgola';
						alert(report);
						tempObj.focus();
						okForm = false;
						return false;
					}
				}
			}
		}
	}

	if(req[prefix+'Web']){
		var verWeb = req[prefix+'Web'];
		var numVerWeb = verWeb.length;
		var re_Web  = /^(\S+\.)+\S+$/; //accetto tutto tranne spazi bianchi e pretendo almeno un punto all'interno

		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 è stato compilato correttamente';
						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 è 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 è 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 è 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 è 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 è del tipo corretto\n\nè 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 è stato compilato correttamente';
					alert(report);
					tempObj.focus();
					okForm = false;
					if(mode=='required'){
						return false;
					}
				}
			}
		}
	}

	if(req[prefix+'Euro']){
		var verEuro = req[prefix+'Euro'];
		var numVerEuro = verEuro.length;
		var re_Euro = /^[0-9]+,[0-9]{2}$/;

		for(i=0; i<numVerEuro; i++){
			tempObj = theForm.elements[verEuro[i].split('|')[0]];
			if(!tempObj.disabled){
				tempVal = tempObj.value;
				if(mode=='toVerify'){
					okVerify = (tempVal=='')?false:true;
				}else{
					okVerify = false;
				}
				if(okVerify || okRequired){
					if(!re_Euro.test(tempVal)){
						report = 'il campo\n' + verEuro[i].split('|')[1] + '\nnon è stato compilato o i dati non sono stati inseriti correttamente.\nIl formato corretto richiede l\'inserimento del valore in euro\nseguito da una virgola e da due cifre indicanti i centesimi';
						alert(report);
						tempObj.focus();
						okForm = false;
						return false;
					}
				}
			}
		}
	}

	return okForm;
}

//-------------------------------------------------------------------------------------------------------------
function radioGroupCheck(formName,radioGroupName,valueToCheck,fieldToFillName,errorMessage,typeOfIndagine,typeOfData){
	// İ 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 è 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 è 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"
							più 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){
	// İ 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){
	// İ 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 è 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.');
		*/
		daySelect.focus();
		return false;
	}

	return true;
}


//-------------------------------------------------------------------------------------------------------------

function compareDates(formName,startDaySelectName,startMonthSelectName,startYearSelectName,finishDaySelectName,finishMonthSelectName,finishYearSelectName){
	// İ 2003  Daniele Marchesini All Rights reserved
	if(document.forms[formName].elements[startDaySelectName]){
		var startDaySelect = document.forms[formName].elements[startDaySelectName];
		var startDaySelInd = startDaySelect.selectedIndex;
		var startDay = startDaySelect.options[startDaySelInd].value;
	}else{
		var startDay = document.today.split('/')[0];
	}

	if(document.forms[formName].elements[startDaySelectName]){
		var startMonthSelect = document.forms[formName].elements[startMonthSelectName];
		var startMonthSelInd = startMonthSelect.selectedIndex;
		var startMonth = startMonthSelect.options[startMonthSelInd].value;
	}else{
		var startMonth = document.today.split('/')[1];
	}

	if(document.forms[formName].elements[startYearSelectName]){
		var startYearSelect = document.forms[formName].elements[startYearSelectName];
		var startYearSelInd = startYearSelect.selectedIndex;
		var startYear = startYearSelect.options[startYearSelInd].value;
	}else{
		var startYear = document.today.split('/')[2];
	}

	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, servirà ...

	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);
		if(finishDaySelect){
			finishDaySelect.focus();
		}
	}else{
		if(differenza==0){
			report += 'attenzione:\nla data relativa ai dati in fase di inserimento COINCIDE CON QUELLA ODIERNA\ncontinuare?';
			okCompare = confirm(report);
			if(finishDaySelect){
				finishDaySelect.focus();
			}
		}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ù 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){
	// İ 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 validità
	// İ 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]));

	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
	// İ 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 è 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 è possibile inserire il testo del link e non l\'indirizzo ad esso relativo');
		document.forms[formName].elements[linkUrl].focus();
		return false;
	}

	return true;
}

//-------------------------------------------------------------------------------------------------------------

/* versione vecchia non più usata

function _compareDates(formName,startDaySelectName,startMonthSelectName,startYearSelectName,finishDaySelectName,finishMonthSelectName,finishYearSelectName){
	// İ 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À 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 è quindi sempre valida';
				okCompare = true;
				// alert(report);
			}else{
				report += 'l\'annotazione in fase di inserimento scadrà fra '+ eval(differenza)+' giorni\n';
				okCompare = true;
				// alert(report);
			}
		}
	}
	return okCompare;
}

*/


function okPrivacy(nomeForm,nomeRadio){
	// İ 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 è necessario accettare le condizioni sulla privacy');
		return false;
	}
}