//flag per la gestione dei menu a tendina
var flagSubMenu = "";

/*
fuction: apriMenu
	apre la tendina del menu su cui si � cliccato

Arguments:
	subMenuId - id del div che contiene le voci del menu
	e - oggetto event
*/
function apriMenu(subMenuId, e){
	if (flagSubMenu != subMenuId){
		chiudiMenu();
		flagSubMenu = subMenuId;
		if (window.event) {
			event.cancelBubble=true
		} else if (e.stopPropagation) {
		 	e.stopPropagation()
		}
		subMenu = document.getElementById('sm_'+subMenuId);
		subMenu.className = "sm_visibile";
		setClass(subMenuId, 'menuSelezionato');
	}	else {
		chiudiMenu();
	}
}
/*
fuction: chiudiMenu
	chiude tutti i menu
*/
function chiudiMenu(){
		menu = document.getElementById('menuPrincipale');
		items = menu.getElementsByTagName('div');
		for(var i=0; i<items.length; i++){
			if (items[i].id != "boxRicerca"){
				items[i].className = "sm_nascosto";
			}
		}
		flagSubMenu = "";
		unselect('menuSelezionato', 'menu');
}

/*
fuction: setClass
	setta una classe ad un oggetto

Arguments:
	objId - id dell'oggetto a cui settare la classe
	className - nome della classe
*/
function setClass(objId, className){
	obj = document.getElementById('span_'+objId);
	obj.className = className;
}



/*
fuction: unselect
	deseleziona la voce di menu

Arguments:
	oldClass - nome della classe attuale
	newClass - nome della nuova classe 
*/
function unselect(oldClass, newClass){
	changeClassName(oldClass, newClass);
}

/*
fuction: changeClassName
	modifica il nome della classe

Arguments:
	oldClass - nome della classe attuale
	newClass - nome della nuova classe 
*/
function changeClassName(oldClass, newClass) {
	var allPageTags = new Array(); 
	//Populate the array with all the page tags
	var allPageTags=document.getElementsByTagName("*");
	//Cycle through the tags using a for loop
	for (i=0; i<allPageTags.length; i++) {
		//Pick out the tags with our class name
		if (allPageTags[i].className==oldClass) {
			//Manipulate this in whatever way you want
			allPageTags[i].className=newClass;

		}
	}
}

/*
fuction: selezionaOggetto
	gestisce la selezione nella libreria dei componenti

Arguments:
	child - oggetto su cui si � cliccato
*/
function selezionaOggetto(child){
	selected = document.getElementById('objSelected');
	if (selected != null) {
		selected.id = "";
	}
	child.parentNode.id = "objSelected";
	
	divButton = document.getElementById('PulsantiLibreria');
	var buttons = divButton.getElementsByTagName('input');
	for (i=0; i<buttons.length; i++) {
		buttons[i].disabled=""
	}
}

/*
fuction: displayAttributs
	visualizza i campi oppurtuni nella scheda "campo" al variare del tipo di controllo
 
*/
function displayAttributs(){
	
	ctrl = $('tipocontrollo');
	
	//recupero tutti gli oggetti opzionali e li nascondo
	allCtrls = $$('.ctrl');
	for (i=0;i<allCtrls.length;i++){
	
		allCtrls[i].setStyle('display', 'none');
	}
	
	
	//recupero gli oggetti da mostrare tramite la loro classe	
	if ('.ctrl'+ctrl.value!='.ctrl'){
		ctrls2display = $$('.ctrl'+ctrl.value);
		for (i=0;i<ctrls2display.length;i++){
			ctrls2display[i].setStyle('display', 'block');
		}
	}
}
/*
fuction: callEdit
	da utilizzare per chiamare una form controller da un popup div

	Arguments:
		divId - id del div in cui caricare la form
		url - url della form controller
		centered - se settato consente di centrare nella pagina il div
*/
function callEdit(divId, url, centered){
	mostraPopup(divId);
	new Ajax(url, {
				method: 'get',
				evalScripts: true,
				update: $(divId)
			}).request();		
	$(divId).setStyle('position', 'absolute');
	if (centered){
		//$(divId).setStyle('background-color', 'white');
		$(divId).setStyle('top', '45%');
		$(divId).setStyle('left', '45%');
	}
}
function cambiaTipoNumerazione(divId, url){
	mostraPopup(divId);
	new Ajax(url, {
				method: 'get',
				evalScripts: true,
				update: $(divId)
			}).request();


}
/*
fuction: mostraPopup
	mostra un popup realizzato con un div
	
Arguments:
	id - id del div da mostrare
*/
function mostraPopup(id){
	$(id).setStyle('display', 'block');
}

/*
fuction: chiudiPopup
	chiude un popup realizzato con un div
	
Arguments:
	id - id del div da chiudere
*/
function chiudiPopup(id){
	$(id).setStyle('display', 'none');
}

/*
fuction: mostraSezioni
	mostra le prime istanze delle sezioni
*/
function mostraSezioni(){
	sezioni = $$('fieldset.sezioneDoc');
	for(i=0;i<sezioni.length;i++) {
		idSezione = sezioni[i].id;
		goBottomSection(idSezione);
	}
}

/*
fuction: toggleSezione
	mostra/nasconde una sezione
	
Arguments:
	img - immagine sui si � cliccato	
	id - id della sezione	
*/
function toggleSezione(img, id) {
	toggleSezione(img, id, "nascondi sezione", "mostra sezione");
}

/*
function: toggleSezione
	mostra/nasconde una sezione
	
Arguments:
	img - immagine sui si � cliccato	
	id - id della sezione	
*/
function toggleSezione(img, id, msghide, msgshow){
	sezione = $(id);
	if (sezione.getStyle('display') == 'none'){
		sezione.setStyle('display', 'block');
		img.src="resources/top.gif";
		img.title=msghide;
	} else {
		sezione.setStyle('display', 'none');
		img.src="resources/bottom.gif";
		img.title=msgshow;
	}
}


/*
fuction: goTopSection
	mostra la prima istanza di una sezione
	
Arguments:
	id - id della sezione	
*/
function goTopSection(idSezione){
	istanzeSezione = $$('#'+idSezione+' fieldset.istanzaSezione');
	for(j=0;j<istanzeSezione.length;j++){
		if (istanzeSezione[j].id == idSezione+'_0'){
			$(istanzeSezione[j].id).setStyle('display', 'block');
		} else {
			$(istanzeSezione[j].id).setStyle('display', 'none');
		}
	}
}

/*
fuction: goBottomSection
	mostra l'ultima istanza di una sezione
	
Arguments:
	id - id della sezione	
*/
function goBottomSection(idSezione){
	istanzeSezione = $$('#'+idSezione+' fieldset.istanzaSezione');
	for(j=0;j<istanzeSezione.length;j++){
		if (istanzeSezione[j].id == idSezione+'_'+(istanzeSezione.length-1)){
			$(istanzeSezione[j].id).setStyle('display', 'block');
		} else {
			$(istanzeSezione[j].id).setStyle('display', 'none');
		}
	}
}

/*
fuction: goPrevSection
	mostra l'istanza precedente di una sezione
	
Arguments:
	id - id della sezione	
*/
function goPrevSection(idSezione){
	istanzeSezione = $$('#'+idSezione+' fieldset.istanzaSezione');
	istanzaVisibile=0;
	for(j=0;j<istanzeSezione.length;j++){
		if ($(istanzeSezione[j].id).getStyle('display') == 'block'){
			istanzaVisibile=j;
			j=istanzeSezione.length;
		}	
	}
	$(istanzeSezione[istanzaVisibile].id).setStyle('display', 'none');
	if (istanzaVisibile>0){
		$(istanzeSezione[istanzaVisibile-1].id).setStyle('display', 'block');
	} else {
		$(istanzeSezione[0].id).setStyle('display', 'block');
	}
}

/*
fuction: goNextSection
	mostra l'istanza successiva di una sezione
	
Arguments:
	id - id della sezione	
*/
function goNextSection(idSezione){
	istanzeSezione = $$('#'+idSezione+' fieldset.istanzaSezione');
	istanzaVisibile=0;
	for(j=0;j<istanzeSezione.length;j++){
		if ($(istanzeSezione[j].id).getStyle('display') == 'block'){
			istanzaVisibile=j;
			j=istanzeSezione.length;
		}	
	}
	$(istanzeSezione[istanzaVisibile].id).setStyle('display', 'none');
	if (istanzaVisibile<istanzeSezione.length-1){
		$(istanzeSezione[istanzaVisibile+1].id).setStyle('display', 'block');
	} else {
		$(istanzeSezione[istanzeSezione.length-1].id).setStyle('display', 'block');
	}
}

/*
fuction: eliminaSezione
	elimina l'istanza visibile di una sezione
	
Arguments:
	id - id della sezione	
*/
function eliminaSezione(idSezione){
	//alert(idSezione);
	istanzeSezione = $$('#'+idSezione+' fieldset.istanzaSezione');
	istanzaVisibile=0;
	for(j=0;j<istanzeSezione.length;j++){
		if ($(istanzeSezione[j].id).getStyle('display') == 'block'){
			istanzaVisibile=j;
			j=istanzeSezione.length;
		}	
	}
	//alert($(istanzeSezione[istanzaVisibile].id));
	$(istanzeSezione[istanzaVisibile].id).remove();

}

/*
fuction: settaOrdine
	setta l'ordine corrente dopo il drag&drop mootool
	
Arguments:
	classe - classe degli input	
*/
function settaOrdine(classe){
	inputs = $$('li.'+classe);
	for(i=0;i<inputs.length;i++){
		children = inputs[i].getChildren();
		children[1].setProperty('value', i);
	}
}
/*
fuction: goToPageWithParam
	va alla pagina richiesta specificando un parametro recuperato dalla form
	
Arguments:
	url - url di destinazione
	par - nome del parametro
	cid - id della select di cui recuperare il value per valorizzare il parametro
*/
function goToPageWithParam(url, par, cid){
	/*alert ($(cid))*/
	idx = $(cid).selectedIndex;
	val = $(cid)[idx].value;
	completeUrl = url+'?'+par+'='+val;
	window.location.replace(completeUrl); 
}

/*
fuction: fillSearchOperator
	riempie via AJAX la combo degli operatori di ricerca ammissibili per un determinato campo  
	
Arguments:
	cid - id della select di cui recuperare il value 
	did - id della select di cui impostare i valori 
	index - indeice della sezione 
*/
function fillSearchOperator(cid, did, index){
	idx = $(cid).selectedIndex;
	val = $(cid)[idx].value;
	var gino = val.split("#");
	tipo = gino[1];
	completeUrl = 'fillSearchOperator.htm?TIPO='+tipo+'&index='+index;
	// alert(':['+completeUrl+']:['+val+']:['+tipo+']:'+index);
	new Ajax(completeUrl, {
				method: 'get',
				update: 'operatori_'+index
			}).request();
}

/*
fuction: syncCriteriaOperators
	sincronizza gli operatori nella ricerca per campi rispetto al tipo di dato  
*/
function syncCriteriaOperators(){
  liCriteri = $$('li.criterio');
	for(i=0;i<liCriteri.length;i++){
		selFieldId = 'fld_criterio_'+i;
		selOperatorId = 'op_criterio_'+i;
		selField    = $(selFieldId );
		selOperator = $(selOperatorId);
		oldValue = selOperator.options[selOperator.selectedIndex].value;
		fillSearchOperator(selFieldId, selOperatorId, i);
		for (j=0;j<selOperator.options.length;j++){
			if (selOperator.options[j].value == oldValue){
				selOperator.options[j].selected = true;
				break;
			}
		} 
	}
}
