function getYear4() {
	var RightNow = new Date();
	var TheYear = RightNow.getYear()
	if (TheYear >= 100 && TheYear <= 1999) {
		TheYear=TheYear + 1900
	} else {
		TheYear=TheYear
	}
	return TheYear;
}

function ToUpper(objID) {
 objID.value = objID.value.toUpperCase(); 
}
function changePage(pagName) {
	document.location('index.php#'+pagName);
}

function IsChecked(objName) {
	return document.getElementById(objName).checked
}

function GetElm(objName) {
	return $(objName);
}
function SaveExitContinue(frmToTest,dSaveAndExit,varValid) {
	frmToTest.SaveAndExit.value=dSaveAndExit;
 	varValid.validate();
}		

//Usata solo per la pagina 9 : scheda personale
function AddAndContinue(frmToTest,varValid) {
	frmToTest.AddOrDelete.value=0; //Add
 	varValid.validate();
}		
//Usata solo per la pagina 9 : scheda personale
function DeletePersonale(frmToTestId,PersID) {
	frmToTest=document.getElementById(frmToTestId);
	frmToTest.AddOrDelete.value=1; //Delete
	frmToTest.Pers2Delete.value=PersID; //Delete PersID
	var agree = confirm("ATTENZIONE!\nSicuro di voler cancellare l'ID n. "+PersID+" ?");
	if (agree) frmToTest.submit();
}

var Alerts="ATTENZIONE!\nUno o più campi della scheda non sono stati completati.\n\nPremere:\nOK per continuare (sarà possibile aggiornarli in un secondo momento)\nANNULLA per rivedere il modulo, inserendo subito i valori mancanti.";

function show_associated(mySelfField,arrFields) {
	for( var i=0 ; i < arrFields.length; i++ ) {
		divToManage=document.getElementById(arrFields[i]);
		if (mySelfField.checked) {
			divToManage.style.visibility="visible"
			divToManage.style.display="inline"
		} else {
			divToManage.style.visibility="hidden"
			divToManage.style.display="none"
		}
	}
}

function hide_associated(mySelfField,arrFields) {
	for( var i=0 ; i < arrFields.length; i++ ) {
		divToManage=document.getElementById(arrFields[i]);
		if (mySelfField.checked) {
			divToManage.style.visibility="hidden"
			divToManage.style.display="none"
		} else {
			//divToManage.style.visibility="visible"
			//divToManage.style.display="inline"
		}
	}
}

function hide_reverse_associated(mySelfField,arrFields) {
	for( var i=0 ; i < arrFields.length; i++ ) {
		divToManage=document.getElementById(arrFields[i]);
		if (mySelfField.checked) {
			divToManage.style.visibility="hidden"
			divToManage.style.display="none"
		} else {
			divToManage.style.visibility="visible"
			divToManage.style.display="inline"
		}
	}
}
/*function CheckEmptyField(fldName) {
	var retVal=false;
	elm=document.getElementsByName(fldName)[0];
	if (elm.value=="") { 
		retVal=true;
		MakeAdviceDiv(fldName);
	}
	return retVal;
}*/

//Controlla se vuoti uno o più campi - Si ferma sul primo errore e scrive messaggio
function CheckEmptyFields(arrFldName,forceBottom) {
	var retVal=false;
	for( var i=0 ; i < arrFldName.length; i++ ) {	
		elm=document.getElementsByName(arrFldName[i])[0];
		if (elm.value=="") { 
			retVal=true;			
		}
	}
	if (retVal) {
		i=i-1;
		MakeAdviceDiv(arrFldName[i],"Uno o più campi sono stati lasciati vuoti");
		ShowAdvice(arrFldName[i]);
	} 	
	return retVal;
}

function CheckEmptyFieldsAbsolute(arrFldName,forceBottom,newclass) {
	var retVal=false;
	for( var i=0 ; i < arrFldName.length; i++ ) {	
		elm=document.getElementsByName(arrFldName[i])[0];
		if (elm.value=="") { 
			MakeAdviceDiv(arrFldName[i],"Uno o più campi sono stati lasciati vuoti",forceBottom,null,newclass);
			ShowAdviceAbsolute(arrFldName[i]);
			return true;
		}
	}
	return false;
}				


//Variante: mette il messaggio sull'ultimo oggetto della lista
function CheckEmptyFields2(arrFldName,forceBottom) {
	if (forceBottom==null) forceBottom=false;

	var retVal=false;
	for( var i=0 ; i < arrFldName.length; i++ ) {	
		elm=document.getElementsByName(arrFldName[i])[0];
		if (typeof(elm)=="object")
			if (elm.value=="") retVal=true;
	}
	if (retVal) {
		MakeAdviceDiv(arrFldName[i-1],"Uno o più campi sono stati lasciati vuoti",forceBottom);
		ShowAdvice(arrFldName[i-1]);
	} else {
		HideAdvice(arrFldName[i-1]);
	}

	return retVal;
}


//Variante: senza visualizzare gli Advice
function CheckEmptyFields_NoAdvice(arrFldName) {
	var retVal=false;
	for( var i=0 ; i < arrFldName.length; i++ ) {	
		elm=document.getElementsByName(arrFldName[i])[0];
		if (elm.value=="" || elm.length == 0) { 
			retVal=true;
		}
	}
	return retVal;
}

function checkIfArrValEmpty(arrFldName) {
	var retVal=true;
	for( var i=0 ; i < arrFldName.length; i++ ) {	
		elm=document.getElementsByName(arrFldName[i])[0];
		if (elm.value=="" || elm.length == 0) { 
			retVal=false;
		}
	}
	return retVal;
}

function checkIfEmpty(fldName) {
	return ($(fldName).value=="" || $(fldName).lenght==0);
}
//Controlla se c'è almeno un ND nell'elenco
function CheckIfND (arrFldName) {
	var retVal=false;
	for( var i=0 ; i < arrFldName.length; i++ ) {	
		elm=document.getElementsByName(arrFldName[i])[0];
		if (elm.value=="ND") { 
			retVal=true;
		}
	}
	return retVal;
}

function ShowGeneralAlert(divGeneral,divName,warnMessage) {
	advice = "<div id='"+divName+"' class='alert'>"+warnMessage+"</div>";
	new Insertion.Top(divGeneral, advice);
	return false;
}

function HideGeneralAlert(divGeneral) {
	elm=document.getElementById(divGeneral);
	elm.innerHTML="";
	//elm.hide();
}	


function ShowAdvice(fldName) {
	advice=$('advice2-'+fldName);
	advice.style.display = 'inline';			
}

function ShowAdviceAbsolute(fldName) {
	advice=$('advice2-'+fldName);
	advice.style.display = 'absolute';	
}

function GetAdvice(fldName) {
	return $('advice2-' + fldName);
	//return $('advice-' + fldName + '-' + 'cucu') || $('advice-' + fldName);
}




function MakeAdviceDiv(fldName,errorMsg,forceBottom,forceRewrite,newclass) {
	if (forceRewrite==null) forceRewrite=false;
	if (forceBottom==null) forceBottom=false;
	if (errorMsg==null | errorMsg == "") errorMsg="Campo vuoto";
	if (newclass==null) myclass="validation-alert-advice";
		else myclass=newclass;
	advice=GetAdvice(fldName);
	if ( advice == null) {
		advice = '<div class="'+myclass+'" id="advice2-' + fldName + '" style="display:hidden"> ' + errorMsg + ' </div>';
		p=document.getElementById(fldName).parentNode;
		if (p) {
			if (forceBottom)
				new Insertion.Bottom(p, advice); 
			else
				new Insertion.After(p, advice); 
		} else {
			if (forceBottom)
				new Insertion.Bottom(fldName, advice); 
			else
				new Insertion.After(fldName, advice); 
		}
		//alert(document.getElementById('advice2-'+fldName).style.display);
		return false;
	} else if (forceRewrite) {
		//alert(2);
		Element.remove(advice);
		MakeAdviceDiv(fldName,errorMsg,forceBottom,forceRewrite);
		ShowAdvice(fldName);
		return false;
	} else {
		//alert(3);
		Element.remove(advice);
		MakeAdviceDiv(fldName,errorMsg,forceBottom,forceRewrite);
		ShowAdvice(fldName);
		return false;
	}

}
function HideAllAdvices(frmName) {
	elemArr=frmName; //document.getElementsByName(frmName);
	i=0;	
	while (i < elemArr.length){
		advice=GetAdvice(elemArr[i].id);
		if (advice != null)
			advice.hide();
		i++
	}
}
function HideAdvice(fldName) {
	advice=GetAdvice(fldName);
	if (advice != null)
		advice.hide();
}

function checkbox_controllo(objCheckBox) {
	var objCheckBoxArr=document.getElementsByName(objCheckBox.name);
	for (var i = 0; i < objCheckBoxArr.length; i++) {
		 if (objCheckBoxArr[i]!=objCheckBox && objCheckBoxArr[i].checked) objCheckBoxArr[i].checked=false;
		 HideAdvice(objCheckBoxArr[i].id);
  	}
	
}


//Validazioni: funzioni generali

function CheckSelectBox(fldName,forcebottom) {
	de = $(fldName).options[$(fldName).selectedIndex].value;
	retVal=false;
	fldToCheck = document.getElementById(fldName);
	advField = fldToCheck.id;
	if ( de == "" ) {
		MakeAdviceDiv(advField,'Selezionare una voce',forcebottom);
		ShowAdvice(advField);
		retVal = true;
	} 
	return retVal;
}


function SelectBoxIsSelected(fldName) {
	de = $(fldName).options[$(fldName).selectedIndex].value;
	if (de == "") return false;
	else return true;
}

//Controlla se un singolo campo è vuoto!
	function CheckEmptyField(fldName,forcebottom) {
		retVal=false;
		fldToCheck = document.getElementById(fldName);
		advField = fldToCheck.id;
		if ( fldToCheck.value == "" ) {
			MakeAdviceDiv(advField,'Questo campo è vuoto',forcebottom);
			ShowAdvice(advField);
			retVal = true;
		} 
		return retVal;
	}
	

	//Controlla se almeno un Checkbox di uno stesso array è selezionato
	function CheckboxEmpty(fldName,forceBottom) {

		if (forceBottom==null) forceBottom=false;
		i=0;
		chkBoxChecked=false;
		arrChkBoxes=document.getElementsByName(fldName);

		while (i < arrChkBoxes.length){
			if (arrChkBoxes[i].checked) 
				chkBoxChecked=true;
			i++
		}

		advField=arrChkBoxes[i-1].id;
		if ( !chkBoxChecked  ) {
			MakeAdviceDiv(advField,'Non è stata selezionata alcuna opzione',forceBottom);
			ShowAdvice(advField);
			return true;
		} 
		return false;
	}

	//Controlla se almeno un Checkbox diversi tra loro è selezionato
	function CheckboxEmpty2(arrFldName,forceBottom) {
		if (forceBottom==null) forceBottom=false;
		i=0;
		chkBoxChecked=false;
		while (i < arrFldName.length){
			var chkBox=document.getElementById(arrFldName[i]);
			if (chkBox.checked) 
				chkBoxChecked=true;
			i++
		}
		advField=arrFldName[i-1];
		if ( !chkBoxChecked  ) {
			MakeAdviceDiv(advField,'Non è stata selezionata alcuna opzione',forceBottom);
			ShowAdvice(advField);
			return true;
		} 
		return false;
	}


	//Controlla se almeno un Checkbox diversi tra loro è selezionato
	function CheckboxEmpty3(arrFldName,forceBottom) {
		var rq=false;
		for (k=1; k<=16; k++) {
			checkboxElement = arrFldName+"_"+k;
			if ( $(checkboxElement) == null ) { 
				;
			} else {
				advField=arrFldName+"_"+k;
				rq = rq || $(checkboxElement).checked;
			}	
		}
		if (!rq) {
			MakeAdviceDiv(advField,'Non è stata selezionata alcuna opzione',forceBottom);
			ShowAdvice(advField);
			return true;
		} 
		return false;
	}

	function CheckSumOk(arrFields,forceBottom,forceRewrite) { //l'ultimo elemento contiene la somma
		if (forceRewrite==null) forceRewrite=false;
		if (forceBottom==null) forceBottom=false;
		var elmSum=0;
		var elmVal=0;

		for( var i=0 ; i < arrFields.length-1; i++ ) {
			elmVal = document.getElementById(arrFields[i]).value;
			if (elmVal=="ND") {
				elmVal=0;
			} else if (isNaN(elmVal) || elmVal=="") {	
				return true; //elmVal=0;
			}
			elmSum = elmSum + (elmVal*1);
		}
		valToCheckAgainst=document.getElementById(arrFields[i]).value;
		if (valToCheckAgainst=="" || valToCheckAgainst=="ND" )
			return false;

		if (valToCheckAgainst == elmSum) {
			return false;
		} else {
			MakeAdviceDiv(arrFields[i],"Totale errato",forceBottom,forceRewrite);
			ShowAdvice(arrFields[i]);
			return true;
		}
	}

	//Fa la somma dei valori in chiaro e verifica che sia maggiore o uguale al totale
	function CheckSumGTOk(arrFields,forceBottom,forceRewrite) { //l'ultimo elemento contiene la somma
		if (forceRewrite==null) forceRewrite=false;
		if (forceBottom==null) forceBottom=false;
		var elmSum=0;
		var elmVal=0;
		for( var i=0 ; i < arrFields.length-1; i++ ) {
			elmVal = document.getElementById(arrFields[i]).value;
			if (elmVal=="ND") {
				elmVal=0;
			} else if (isNaN(elmVal) || elmVal=="") {	
				return true; //elmVal=0;
			}
			elmSum = elmSum + (elmVal*1);
		}

		valToCheckAgainst=document.getElementById(arrFields[i]).value; //il totale scritto dall'utente
		if (valToCheckAgainst=="" || valToCheckAgainst=="ND" )
			return false;

		if (valToCheckAgainst >= elmSum) {
			return false;
		} else {
			MakeAdviceDiv(arrFields[i],"Totale errato",forceBottom,forceRewrite);
			ShowAdvice(arrFields[i]);
			return true;
		}
	}

		function CheckLessThen(valA,valB) {
			objValA=document.getElementById(valA);
			objValB=document.getElementById(valB);
			if ((objValA.value*1)<(objValB.value*1)) {
				MakeAdviceDiv(valB,"Questo valore deve essere inferiore o uguale al numero delle Camere",true);
				ShowAdvice(valB);
				return true;
			}	
			return false;
		}

		function showInfo(objID) {
			var div2show=$(objID);
			new Effect.Appear(objID, {duration : 1 });
			div2show.addClassName('infobox2');
		}

		function hideInfo(objID) {
			var div2show=$(objID);
			div2show.hide();
		}