/**********************************************************/
/* 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);
	
	switch(obj.type) {
		case 'select-multiple':
		case 'text':
		case 'textarea':
			if(obj.value=='') complete=false;
			break;
		case 'hidden':
			if(obj.value=='' || obj.value==0) complete=false;
			break;
		case 'select-one':
			if(obj.value==0) complete=false;
			break;
		case 'checkbox':
			if(!(obj.checked)) complete=false;
			break;
		default:
			if(obj.length > 1) {	// array di radio button o checkbox
				for(i=0; i<obj.length; i++) {
					if(obj[i].checked) { 
						tmp=1; 
						break; 
					}
				}
				if(tmp==0) { 
					complete=false;
					obj=obj[0];
				}
			}				
			break;
	}
	
	if(!complete) {
		if(alarm==true) {
			alert('mancanza di dati obbligatori: '+id);			
			if(obj.type != 'hidden' && !obj.disabled) 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,j;
	for(i=0; i<inpNames.length; i++ ) {
		txtObj=getObj(inpNames[i],frmName);		
		if(txtObj.length > 1) {
			for(j=0; j<txtObj.length; j++) {
				txtObj[j].disabled=stat;
			}
		} else 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());
}

// cambia il valore di un input
function change_inp(frm_name,inp_name,val) {
	var inp;
	inp=getObj(inp_name,frm_name);
	inp.value=val;
}


function swap_img(img,src_new) {
	img.src = src_new;
}

/***************************************************************************/
// gestione input di tipo Link
function parse_anchor_pn(html,arr_name) {	//per pneditor
	var a,ini,fin,str;
	var myArguments = new Array();

	ini = html.search(/href/i);
	str = html.substr(ini);
	myArguments['LinkUrl'] = get_content('"','"',str);

	ini = html.search(/target/i);
	str = html.substr(ini);
	myArguments['LinkTarget'] = get_content('"','"',str);
	
	ini = html.search(/title/i);
	str = html.substr(ini);
	myArguments['LinkTitle'] = get_content('"','"',str);

	str = html;
	myArguments['LinkText'] = get_content('>','</a>',str);
	
	eval(arr_name+'=myArguments;');

}

function parse_anchor(html,arr_name) {	
	var a,ini,fin,str;
	var aProps = {};

	aProps.anchors=new Array();

	ini = html.search(/href/i);
	str = html.substr(ini);
	aProps.href = get_content('"','"',str);

	ini = html.search(/target/i);
	str = html.substr(ini);
	aProps.target = get_content('"','"',str);
	
	ini = html.search(/title/i);
	str = html.substr(ini);
	aProps.title = get_content('"','"',str);

	str = html;
	aProps.description = get_content('>','</a>',str);
	
	eval(arr_name+'=aProps;');

}

// gestisce il retVal per lo spaw editor
function get_a_html(aProps) {
	var a;
	
	a = '<a href="'+aProps.href+'" name="'+aProps.name+'" title="'+aProps.title+'" target="'+aProps.target+'" >'+aProps.description+'</a>';
	
	return a;
}


function get_content(ini,fin,str) {
	var l_edge,r_edge;
	l_edge = str.search(ini)+ini.length;
	str = str.substr(l_edge);
	r_edge = str.search(fin);
	str = str.substring(0,r_edge);
	return str;
}


