///////////////////////////////////////////////////////
//
// Funzioni AJAX
//
///////////////////////////////////////////////////////

	function semaforo()
	{
		var frm = document.forms['oa_obbl'];
		if(undefined!=frm)
		{
			for(i=0; i!=frm.length; i++)
			{
				if(frm[i].value=='')
				{
					var campo = frm[i].id + '_list';
					campoid = document.getElementById(campo);
					if(undefined!= campoid)
					{
						if(campoid.innerHTML!='')
							frm[i].style.border="1px solid green";
					}
					else
						frm[i].style.border="1px solid red";
				}
				else
				{
					frm[i].style.border="1px solid green";
				}
			}
		}
	}

	function associa_immagini(idopera,cod_commessa)
	{
	    //document.forms.oa_sint.cod_commessa.disabled=true;
	    var pars = "idopera="+idopera+"&cod_commessa="+cod_commessa;
	    var myAjax = new Ajax.Updater('notification', ajax_folder+'/associa_immagini.php', {parameters: pars, evalScripts:true, asynchronous:false});
     /*onComplete:
			function()
			{
				document.forms.oa_sint.cod_commessa.disabled=false;
			}*/

	}

	function change_div(div_name,url,type)
	{
		var pars = {
			rac: Math.random(),
			type: type,
			idopera: js_idopera
		};
		var myAjax = new Ajax.Updater(div_name, url,{method:'get',parameters:pars});
	}


//	*****************************************************
//	*			Funzioni per l'update dei campi			*
//	*****************************************************

	function update_field(table, id, field, obbl)
	{
		if(Validation.validate(field))
		{
            // Prepare query string and send AJAX request
			var pars = "table=" + table + "&field=" + field + "&entry=" + $F(field) + "&id=" + id + "&idvalue=" + js_idopera + "&LANG=" + js_LANG;
			var myAjax = new Ajax.Updater('notification', ajax_folder+'/update.php', {parameters: pars, asynchronous:false});
		}
		if (''!=obbl && 'undefined'!=obbl)
		    semaforo();
	}

	function update_field_gen(table, id, field, idvalue, obbl)
	{
		// questa la uso per i campi multipli. field e' il campo da aggiornare nel db
		if(Validation.validate(field))
		{
			var pars = "table=" + table + "&field=" + field + "&entry=" + encodeURIComponent($F(field)) + "&id=" + id + "&idvalue=" + idvalue + "&LANG=" + js_LANG;
			var myAjax = new Ajax.Updater('notification', ajax_folder+'/update.php', {parameters: pars, asynchronous:false});
		}
		if (''!=obbl && 'undefined'!=obbl)
		    semaforo();
	}
	
 	function update_cod_commessa(idopera,only_validate)
	{
	    mc = 0;
	    cod_commessa = document.getElementById('cod_commessa');
	    advice_div = document.getElementById('cod_commessa_advice');
	    notification_div = document.getElementById('notification');
	    feedback = function(t)
		{
			if(('no'==t.responseText) && (only_validate))
        	{
        	    advice_div.innerHTML = "codice commessa non esistente";
				advice_div.style.display = "block";
				cod_commessa.focus();
				return false;
            }
		}
		// Prepare query string and send AJAX request
		var pars = "new_cod_commessa=" + cod_commessa.value + "&idopera=" + idopera + "&LANG=" + js_LANG + "&only_validate=" + only_validate;
		var myAjax = new Ajax.Updater('notification', ajax_folder+'/update_cod_commessa.php', {parameters: pars, asynchronous:false, onSuccess: feedback});
	}

	function update_field_date(table, id, field, fieldtocatch, idvalue)
	{
		//questa la uso per i campi multipli. field e' il campo da aggiornare nel db
		//per ora commento la validazione. Tante volte.
		if(Validation.validate(fieldtocatch))
		{
			var pars = "table=" + table + "&field=" + field + "&entry=" + $F(fieldtocatch) + "&id=" + id + "&idvalue=" + idvalue + "&LANG=" + js_LANG;
			var myAjax = new Ajax.Updater('notification', ajax_folder+'/update_date.php', {parameters: pars, asynchronous:false});
		}
	}


//	*********************************************************
//	*		Funzioni per il caricamento dei template		*
//	*********************************************************

	function fill_template(template,table,fields,values,order,limit)
	{
		if(undefined==limit)
			var limite = 0;
		else
			var limite = limit;
		// Prepare query string and send AJAX request
		var pars = "table=" + table + "&fields=" + fields + "&values=" + values+'&order='+order+'&template='+template+'&limit='+limite;
		var myAjax = new Ajax.Updater(template, ajax_folder+'/fill_template.php', {parameters: pars,evalScripts:true, asynchronous:false});
		return true;
	}

	function tab_label(template,table,fields,values,order,limit)
	{
		if(undefined==limit)
			var limite = 0;
		else
			var limite = limit;
		// Prepare query string and send AJAX request
		var pars = "table=" + table + "&fields=" + fields + "&values=" + values+'&order='+order+'&template='+template+'&limit='+limite;
		var myAjax = new Ajax.Updater(template, ajax_folder+'/tab_panel.php', {parameters: pars,evalScripts:true, asynchronous:false});
		return true;
	}

	function fill_combo(combo,table,searchfields,value,chiave,testo,order)
	{
		// Prepare query string and send AJAX request
		var pars = "combo=" + combo + "&table=" + table + "&searchfields=" + searchfields + "&value=" + value+'&key='+chiave+'&text='+testo+'&order='+order;
		var myAjax = new Ajax.Updater(combo, ajax_folder+'/fill_combo.php', {parameters: pars,evalScripts:true, asynchronous:false});
		return true;
	}

	function fill_combocheck(combo,table,value,chiave,testo,order,tipo_assoc)
	{
		var searchfields = '';
		var comma = '';
		var frm = document.forms[0];
		var lunghezza = frm.length;
		for(i=0;i!=lunghezza;i++)
		{
			if(frm[i].type=='checkbox')
				if(frm[i].checked)
				{
					searchfields = searchfields + comma +frm[i].value;
					comma = ',';
				}
		}
		var id_assoc_value = document.getElementById('id'+tipo_assoc).value;

		// Prepare query string and send AJAX request

		var pars = "combo=" + combo + "&table=" + table + "&searchfields=" + searchfields + "&value=" + value+'&key='+chiave+'&text='+testo+'&order='+order+'&tipo_assoc='+tipo_assoc+'&id'+tipo_assoc+'='+id_assoc_value;
		var myAjax = new Ajax.Updater(combo, ajax_folder+'/fill_combo.php', {parameters: pars,evalScripts:true, asynchronous:false});
		var ris_div = document.getElementById('risultati_ricerca');
		ris_div.style.display= 'block';
		return false;
	}

	function seleziona_lista(prefisso, indice)
	{
		var primo = '';
		var lis = document.getElementsByTagName("li");
		for (i = 0; i != lis.length; i++)
		{
			var mioid = lis[i].id;
			var tre = mioid.substring(0,prefisso.length);
			if(tre == prefisso)
			{
			    if(primo == '')
				{
					primo = mioid;
				}
				document.getElementById(mioid).className = 'inactive';
			}
		}
		if (undefined==indice)
		{
			//a questo punto devo selezionare il primo che trovo....
			var selezionatoid = document.getElementById(primo);
		}
		else
		{
			var selezionato = prefisso + '_' + indice;
			var selezionatoid = document.getElementById(selezionato);
		}
		if (undefined==selezionatoid)
			return;
		selezionatoid.className = 'active';
		var lista = selezionatoid.getElementsByTagName("a");
		if(lista[0].text==''||lista[0].text==undefined)
		{
			lista[0].innerHTML = '<span> * nuovo * </span>';
		}
		return false;
	}


//	*********************************************************
//	*		Funzioni per la visualizzazione di campi 		*
//	*********************************************************

//select_field('str_matcost','str_subreference,str_tablename,str_sezione','matcost_arriccio','1,manage_str_dm,arriccio');
	function select_field(table, id, field, id_val)
	{
		var nome_div = field+'_list';
		if (undefined==id_val)
		    var idvalue = js_idopera;
		else
		{
		    var idvalue = id_val.toString();
			var idvalue_split = idvalue.split(",");
			if (2<idvalue_split.length)
				nome_div = field+'_list__'+idvalue_split[2];
		}

		// Prepare query string and send AJAX request
		var pars = "table=" + table + "&field=" + field + "&id=" + id + "&idvalue="+idvalue;
		var myAjax = new Ajax.Updater(nome_div, ajax_folder+'/select.php', {parameters: pars, evalScripts:true});
	}

    function select_partecipanti(mainreference, rif_tabella, funzione)
	{
		var pars = "rif_tabella=" + rif_tabella + "&funzione=" + funzione + "&mainreference=" + mainreference;	
		var myAjax = new Ajax.Updater(funzione+'_list', ajax_folder+'/select_partecipanti.php', {parameters: pars});
	}
	

//	*****************************************************
//	*		Funzioni per l'inserimento di campi 		*
//	*****************************************************

	function insert_field(table,id,fields,entries,id_val)
	{
		if(undefined==id_val)
			var idvalue = js_idopera;
		else
			var idvalue = id_val;

		// Prepare query string and send AJAX request
		var pars = "table=" + table + "&fields=" + fields + "&id=" + id + "&idvalue=" + idvalue + "&" + entries;
		var myAjax = new Ajax.Updater('notification', ajax_folder+'/insert.php', {parameters: pars, asynchronous:false});
        return false;
	}

	function aggiungi(field,template,indice)
	{
		var valmainref = '';
		if(undefined==indice)
			valmainref = js_idopera;
		else
			valmainref = indice;
		sub_tab1 = 'sub_' + field;
		insert_field(sub_tab1,'mainreference','','',valmainref);
		fill_template(template,sub_tab1,'mainreference',valmainref,'subcounter',1);
		fill_template(template+'_lista',sub_tab1,'mainreference',valmainref	,'subcounter');
	}


//	*****************************************************
//	*		Funzioni per l'eliminazione di campi 		*
//	*****************************************************

  	function rimuovi(darimuovere, template, field, subfield1, subfield2)
	{
		sub_tab1 = 'sub_' + field;
		if(remove_field(sub_tab1, darimuovere))
		{
			if (undefined!=subfield1)
			{
				sub_tab2 = 'sub_' + subfield1;
				remove_field_silent(sub_tab2, darimuovere,'subreference');
			}
			if (undefined!=subfield2)
			{
					sub_tab3 = 'sub_' + subfield2;
					remove_field_silent(sub_tab3, darimuovere,'subreference');
			}
		}

		fill_template(template,sub_tab1,'mainreference',js_idopera,'subcounter',1);
		seleziona_lista(template);
		fill_template(template+'_lista',sub_tab1,'mainreference',js_idopera,'subcounter');
	}

	function remove_field(table, todelete, key)
	{
		if(undefined==key)
			key = 'subcounter';
		var ok = confirm('sei sicuro di eliminare la voce?');
		if (ok)
		{
			remove_field_silent(table, todelete, key);
			return true;
		}
		else
			return false;
	}

	function remove_field_silent(table, todelete, key)
	{
		// Prepare query string and send AJAX request
		var pars = "table=" + table + "&todelete="+todelete+'&key='+key;
		var myAjax = new Ajax.Updater('notification', ajax_folder+'/delete.php', {parameters: pars, asynchronous:false});
	}


//	*********************************************************
//	*		Funzioni per la gestione dei vocabolari			*
//	*********************************************************

	function autocomplete_field_closed(table, field, tocomplete, andfield, pattern)
	{
	    andfield_value='';
	    if (''!=andfield && 'undefined'!=andfield)
	        andfield_value = "&"+andfield+"="+$F(andfield);
		var url = ajax_folder+"/autocomplete_closed.php?table="+table+"&field="+field+"&tocomplete="+tocomplete+"&andfield="+andfield+andfield_value+"&pattern="+pattern+"&LANG="+js_LANG;
  		var myAjax = new Ajax.Autocompleter(tocomplete, tocomplete+"_choices", url, {paramName: tocomplete, minChars: 1,  updateElement: closed_voc_validation =
			function(li)
			{
			    input_field = document.getElementById(tocomplete);
			    advice_div = document.getElementById(tocomplete+'_advice');
			    if ('found'==li.id)
		    	{
		    	    var tmp_html = li.innerHTML;
		    	    var tmp_indexof = tmp_html.indexOf('<');
		    	    if (tmp_indexof>0)
						input_value = tmp_html.substring(0,tmp_indexof);
					else
					    input_value = tmp_html;
                    input_field.value=input_value;
		    	    advice_div.style.display="none";
		    	    return true;
		    	}
				else
				{
					input_field.value = '';
				    advice_div.innerHTML = "<int>Voce inesistente</int>";
				    advice_div.style.display="block";
				    return false;
                }
			}
		});
	}

	function autocomplete_field(table, field, tocomplete, pattern)
	{
		var url = ajax_folder+"/autocomplete.php?table="+table+"&field="+field+"&tocomplete="+tocomplete+"&pattern="+pattern;
		var myAjax = new Ajax.Autocompleter(tocomplete, tocomplete+"_choices", url, {paramName: tocomplete, minChars: 1});
	}

	function autocomplete_field_multi(table, field, tocomplete, pattern)
	{
		var url_prov = ajax_folder+"/autocomplete_closed.php?table="+table+"&field="+field+"&tocomplete="+tocomplete+"&pattern="+pattern;
		var auto_prov = new Ajax.Autocompleter(tocomplete, tocomplete+'_choices', url_prov, {paramName: tocomplete, minChars: 1, indicator: tocomplete+'_indicator',updateElement: prov_com_validation =
			function(li)
			{
			    input_field = document.getElementById(tocomplete);
			    advice_div = document.getElementById(tocomplete+'_advice');
       			if ('found'==li.id)
		    	{
		    	    var prov = li.innerHTML.substring(0,2);
		    	    input_field.value=prov;
		    	    advice_div.style.display="none";
		    	    var url_comuni = ajax_folder+"/autocomplete_closed.php?table=voc_pvc_cp&field=pvcc&tocomplete=pvcc&pattern=&andfield=pvcp&pvcp="+prov+"&LANG="+js_LANG;
                    var auto_comuni = new Ajax.Autocompleter('pvcc', "pvcc_choices", url_comuni, {paramName: 'pvcc', minChars: 1, indicator: 'pvcc_indicator',updateElement: closed_voc_validation =
						function(li)
						{
						    input_field = document.getElementById('pvcc');
						    advice_div = document.getElementById('pvcc_advice');
			       			if ('found'==li.id)
					    	{
					    	    var tmp_html = li.innerHTML;
		    	    			var tmp_indexof = tmp_html.indexOf('<');
					    	    if (tmp_indexof>0)
									input_value = tmp_html.substring(0,tmp_indexof);
								else
								    input_value = tmp_html;
			                    input_field.value=input_value;
					    	    advice_div.style.display="none";
					    	}
							else
							{
								input_field.value = '';
							    advice_div.innerHTML = "<int>Voce inesistente</int>";
							    advice_div.style.display="block";
			                }
						}
					});
		    	}
				else
				{
					input_field.value = '';
				    advice_div.innerHTML = "<int>Voce inesistente</int>";
				    advice_div.style.display="block";
                }
			}
		});
	}


