/**********************************************************/
/* ritorna l'oggetto javascript in base al nome o all'id (devono coincidere) */
function getObj(id,frm) {
	var obj;
	if(obj=eval('document.'+frm+'.'+id)) return obj;
	else if(obj=document.getElementById(id)) return obj;
	else {
		// alert('oggetto non trovato: '+id);
		return false;
	}
}

/****************************************************************************/
function validate(frmId,campiObb) {

	var ret=true,i=0;
			
	while( (i<campiObb.length)&&(ret) ) {
		ret=chkFld(campiObb[i],frmId,true);
		i++;
	}

	return ret;
}

/****************************************************************************/
function reload(frm) {
	frm.action='obj_frm.php?reload=yes'
	frm.submit();
}


function chkFld(id,frmId,alarm) {
	var obj,obj1,obj1Id,complete=true;
	var tmp=0,i=0;
	
	obj=getObj(id,frmId);
	
	// alert('name='+obj.name+' value='+obj.value);
	
	if( (obj.type =="text")||(obj.type =="select-multi")||(obj.type =="textarea") ) {
		if(obj.value=='') complete=false;
	} else if(obj.type =="select-one") {
		if(obj.value==0) complete=false;
	} else if(obj.type =="checkbox")  {	
		if(!(obj.checked)) complete=false;
	} else if(obj.length > 1) {	// array di radio button
		for(i=0; i<obj.length; i++) {
			if(obj[i].checked) { 
				tmp=1; 
				break; 
			}
		}
		if(tmp==0) { 
			complete=false;
			obj=obj[0];
		}
	}

	if(!complete) {
		if(alarm==true) {
			alert('mancanza di dati obbligatori: '+obj.name);			
			obj.focus();
		}
		return false;	
	}

	else return true;
}

/****************************************************************************/

var isSelected=false; 

function dateX(obj,len) {
	var obj2;
	if((obj.value.length==len)&&(!isSelected)) {
		if((obj.nextSibling) && (obj.nextSibling != null) && (obj.nextSibling.name!=null) ) {
			obj2=obj.nextSibling;
			obj2.focus();
			if(obj2.value!='') obj2.select();
		}
	} else isSelected=false;
}

/****************************************************************************/

function stopDateX() {
	if(!isSelected) isSelected=true;
}

/***************************************************************************/
// inverte lo stato di un input (da abilitato a disabilitato o viceversa)
function toggle(frm,name) {
	var inpObj,cur_stat;
	if(inpObj=getObj(name,frm.name)) {
		cur_stat=inpObj.disabled;
		inpObj.disabled=!cur_stat;
	}
}

/***************************************************************************/
// controlla lo stato di un check, se è selezionato abilita il corrispondente campo text di input
function initcheck(frm, nameck, nametx) {
	var inpObjck, inpObjtx;
	if(inpObjck=getObj(nameck,frm)) {
		//alert(inpObjck.name);
		if (inpObjck.checked==true){
		   inpObjtx=getObj(nametx,frm);
		   inpObjtx.disabled=false;
		}   
	} 
}

/***************************************************************************/
/* setta lo stato di uno o + input in base a quale opzione è selezionata nel radio button 
txtNames deve esssere un Array */
function setInpByRadio(optObj,testVal,txtNames,stat) {
	var txtObj,formName,i;
				
	formName=optObj.form.name;
	if(optObj.value!=testVal) stat=!stat; 
	setStat(txtNames,formName,stat);

}

/***************************************************************************/
/* setta lo stato di uno o + input in base a quale opzione è selezionata nel radio button 
txtNames deve esssere un Array */
function setInpByChk(chkObj,txtNames,stat) {
	var txtObj,formName,i;

	if(!chkObj.checked) stat=!stat; 
	formName=chkObj.form.name;
	setStat(txtNames,formName,stat);

}


/***************************************************************************/
/* setta lo stato di uno o + input. inpNames deve essere un Array */
function setStat(inpNames,frmName,stat) {
	var i;
	for(i=0; i<inpNames.length; i++ ) {
		txtObj=getObj(inpNames[i],frmName);
		txtObj.disabled=stat;
	}
}

/* aggiunge o toglie nomi di input al vettore dei campi obbligatori (mode=add/del) */
function updManFlds(inpNames,mode) {
	var i;
	for(i=0; i<inpNames.length; i++ ) {
		if(mode=='add') fields.push(inpNames[i]);
		else if(fields.length>0) fields.pop();
	}
	alert(fields.toString());
}
