var automatic_refresh = false;
var toc_changed = false;

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { 
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_swapImage() { 
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

/*
function FB_swapImage(cheImg,cheSrc){
	document.images[cheImg].src = cheSrc;
}*/

function itemEnvelope(minx, miny, maxx, maxy) {	
	this.minx = minx;
	this.miny = miny;
	this.maxx = maxx;
	this.maxy = maxy;
}

function itemTema(text, id, vis, esplorabile, scala_min, scala_max, env, priorita, interrogabile) {
   	this.testo = text;
   	this.id = id;
   	this.visibile = vis;
   	this.esplorabile = esplorabile;
   	this.scala_min = scala_min;
   	this.scala_max = scala_max;
   	this.env = env;
    this.priorita = priorita;
   	this.interrogabile = interrogabile;
}

function itemGruppo(apertura,vis,esplorabile,nome,temi) {
	this.aperto=apertura;
	this.visibile = vis;
	this.esplorabile = esplorabile;
	this.testo=nome;
	this.instemi=temi;
	this.aperti=0;
	this.lunghezza=temi.length;
	for (i=0;i<temi.length;i++) {
		var tema=temi[i];
		if (tema.visibile==true)
			this.aperti++;
	}
}

function itemCartografia(apertura,esplorabile,nome,gruppi){
	this.aperto=apertura;
	this.esplorabile=esplorabile;
	this.testo=nome;
	this.insgruppi=gruppi;
	this.aperti=0;
	this.chiusi=0;
	this.lunghezza=gruppi.length;
	for (i=0;i<this.insgruppi.length;i++){
		var gruppo=this.insgruppi[i];
		if (gruppo.aperti==gruppo.lunghezza)
			this.aperti++;
		else {
			if (gruppo.aperti==0)
				this.chiusi++;
		}
	}
}

function layerAttivo(nomeTema){
	parent.PostFrame.document.theForm.layerAttivo.value = nomeTema;
	parent.EmptyFrame3.location.href = 'toc.htm';
}
				
function setRefreshCommand() {
	var tocCommandCheck = parent.MapFrame.document.getElementById('tocCommandCheck');
	var tocCommandButton = parent.MapFrame.document.getElementById('tocCommandButton');
	if(tocCommandCheck.checked) {
		automatic_refresh = true;
		tocCommandButton.disabled = true;
	}
	else {
		automatic_refresh = false;
		tocCommandButton.disabled = false;
	}
}

function apriCartografia(nomeCartografia) {
	var cartografie = parent.PostFrame.document.gruppi;
	for (i=0; i<cartografie.length;i++) {
		var cartografia = cartografie[i];
		if (cartografia.testo == nomeCartografia) {
			cartografia.aperto = true;
			var imgNode = parent.MapFrame.document.getElementById('imgTree_Cartografia_' + i);
			var imgFolder = parent.MapFrame.document.getElementById('imgFolder_Cartografia_' + i);
			var linkNode = parent.MapFrame.document.getElementById('linkTree_Cartografia_' + i);
			imgNode.alt = imgNode.alt.replace('Apri','Chiudi');
			imgNode.title = imgNode.title.replace('Apri','Chiudi');
			imgNode.src = imgNode.src.replace('chiuso','aperto');
			imgFolder.src = imgFolder.src.replace('closed','open');
			linkNode.href = linkNode.href.replace('apri','chiudi');
			var allDiv = parent.MapFrame.document.getElementById('Cartografia_All_' + i);
			allDiv.style.display = 'block';
		}
	}
}
		
function chiudiCartografia(nomeCartografia) {
	var cartografie = parent.PostFrame.document.gruppi;
	for (i=0; i<cartografie.length;i++) {
		var cartografia = cartografie[i];
		if (cartografia.testo == nomeCartografia) {
			cartografia.aperto = false;
			var imgNode = parent.MapFrame.document.getElementById('imgTree_Cartografia_' + i);
			var imgFolder = parent.MapFrame.document.getElementById('imgFolder_Cartografia_' + i);
			var linkNode = parent.MapFrame.document.getElementById('linkTree_Cartografia_' + i);
			imgNode.alt = imgNode.alt.replace('Chiudi','Apri');
			imgNode.title = imgNode.title.replace('Chiudi','Apri');
			imgNode.src = imgNode.src.replace('aperto','chiuso');
			imgFolder.src = imgFolder.src.replace('open','closed');
			linkNode.href = linkNode.href.replace('chiudi','apri');
			var allDiv = parent.MapFrame.document.getElementById('Cartografia_All_' + i);
			allDiv.style.display = 'none';
		}
	}
}

// aggiorna tutti i temi contenuti in una cartografia anche nelle altre cartografie
function aggiornaTemi(nomeCartografia, gruppi, flag) {

	for (i=0; i<gruppi.length;i++) {
		cartografia=gruppi[i];
		if (cartografia.testo==nomeCartografia) {
			insGruppi=cartografia.insgruppi;
			for (j=0; j<insGruppi.length;j++) {	
				gruppo = insGruppi[j]; 
				insTemi=gruppo.instemi;
				for (k=0; k<insTemi.length;k++) {
					nomeTema=insTemi[k].testo;
					// scorre tutte le altre cartografie per accendere i temi
					for (x=0; x<gruppi.length;x++) {
						cartografia=gruppi[x];
						if (cartografia.testo!=nomeCartografia) {
							insGruppi=cartografia.insgruppi;
								for (y=0; y<insGruppi.length;y++) {
									insTemi=insGruppi[y].instemi;
									for (t=0; t<insTemi.length;t++) {
										tema=insTemi[t];
										if (tema.testo==nomeTema) {
											tema.visibile=flag;
										}
									}
								}
						}
					}
					
				}
			}
		}
	}

}

function refreshCartografia(nomeCartografia,id,level){

	// Imposto il flag che indica un cambiamento nella TOC
	parent.PostFrame.document.theForm.tocChanged.value = true;

	flag = parent.MapFrame.document.getElementById('Check*' + level + '_' + id).checked;

	var gruppiCartografia = new Array();
	var cartografie = parent.PostFrame.document.gruppi;

	// aggiorna tutti i temi contenuti nella cartografia anche nelle altre cartografie
	for (i=0; i<cartografie.length;i++) {
		cartografia = cartografie[i];
		if (cartografia.testo == nomeCartografia) {
			insGruppi = cartografia.insgruppi;
			for (j=0; j<insGruppi.length;j++) {	
				gruppo = insGruppi[j]; 
				insTemi = gruppo.instemi;
				for (k=0; k<insTemi.length;k++) {
					nomeTema = insTemi[k].testo;

					// scorre tutte le altre cartografie per accendere il tema
					for (x=0; x<cartografie.length;x++) {
						cartoTemp = cartografie[x];
						if (cartoTemp.testo != nomeCartografia) {
							gruppiTemp = cartoTemp.insgruppi;
							for (y=0; y<gruppiTemp.length;y++) {
								gruppoTemp = gruppiTemp[y];
								temiTemp = gruppoTemp.instemi;								
								for (t=0; t<temiTemp.length;t++) {
                                    tema = temiTemp[t];
                                    if (tema.testo == nomeTema) {
										if (tema.visibile == flag) break;
                                        tema.visibile = flag;
										if (flag == false){
											gruppoTemp.aperti--;
											// se tutti i temi sono chiusi, decremento la cartografia
											if (gruppoTemp.aperti == 0) 
												cartoTemp.chiusi++;
											if (gruppoTemp.lunghezza-gruppoTemp.aperti == 1) 
												cartoTemp.aperti--;
										}	
										else {
											gruppoTemp.aperti++;
											// se tutti i temi sono aperti, incremento la cartografia
											if (gruppoTemp.aperti == gruppoTemp.lunghezza)
												cartoTemp.aperti++;
											if (gruppoTemp.aperti == 1)
												cartoTemp.chiusi--;
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}

	for (i=0; i<cartografie.length;i++) {
		cartografia = cartografie[i];
		if (cartografia.testo == nomeCartografia) {
			cartografia.visibile = flag;
			if (flag == true){
                // tutti i gruppi accesi
				cartografia.aperti = cartografia.lunghezza;
				cartografia.chiusi = 0;
			}
            else {			
                // tutti i gruppi spenti
				cartografia.aperti = 0;
				cartografia.chiusi = cartografia.lunghezza;
			}
			insGruppi = cartografia.insgruppi;
			for (j=0; j<insGruppi.length;j++) {	
				gruppo = insGruppi[j];
				gruppiCartografia[j] = gruppo;
				gruppo.visibile = flag;
	            if (flag == true) {
					gruppo.aperti = gruppo.lunghezza;
                } else {
					gruppo.aperti = 0;
                 }
				insTemi = gruppo.instemi;
				for (k=0; k<insTemi.length;k++) {
					tema = insTemi[k];
					tema.visibile = flag;
				}
			}
		}
	}

	// scorre le cartografie per accendere i gruppi della cartografia precedente 
	for (i=0; i<cartografie.length;i++) {
		carto = cartografie[i];		
		insGruppi = carto.insgruppi;
		for (j=0; j<insGruppi.length;j++) {
			gruppo = insGruppi[j];
			for (x = 0; x<gruppiCartografia.length; x++) {
				if (gruppo.testo == gruppiCartografia[x].testo && carto.testo != nomeCartografia) {
					gruppo.visibile = flag;
					if (flag == true) {
						// se il gruppo ? gi? aperto, non lo apro di nuovo
						if (gruppo.aperti != gruppo.lunghezza)
							carto.aperti++;
						// ? blu
						if (gruppo.aperti == 0)
							carto.chiusi--;
						// tutti i temi accesi
						gruppo.aperti = gruppo.lunghezza;
					} else {
						if (gruppo.aperti == gruppo.lunghezza)
							carto.aperti--;
						// se il gruppo ? gi? chiuso, non lo chiudo di nuovo
						if (gruppo.aperti == gruppo.lunghezza)
							carto.chiusi++;
						// tutti i temi spenti
						gruppo.aperti = 0;
					}
					insTemi = gruppo.instemi;
					for (k=0; k<insTemi.length;k++) {
						tema = insTemi[k];
						tema.visibile = flag;
					}
				}
			}		
		}
	}
	
	if(automatic_refresh) refresh();
}

function apriGruppo(nomeGruppo) {
	var cartografie = parent.PostFrame.document.gruppi;
	for (i=0; i<cartografie.length;i++) {
		var cartografia = cartografie[i];
		var gruppi = cartografia.insgruppi;
		for (j=0; j<gruppi.length;j++) {
			var gruppo = gruppi[j];
			if (gruppo.testo == nomeGruppo) {
				gruppo.aperto = true;
				var groupId = '';
				/*if(cartografia.testo != 'Altro')*/ groupId = 'Gruppo_' + i + '_' + j;
				//else groupId = 'Gruppo_' + j;
				var imgNode = parent.MapFrame.document.getElementById('imgTree_' + groupId);
				var imgFolder = parent.MapFrame.document.getElementById('imgFolder_' + groupId);
				var linkNode = parent.MapFrame.document.getElementById('linkTree_' + groupId);
				imgNode.alt = imgNode.alt.replace('Apri','Chiudi');
				imgNode.title = imgNode.title.replace('Apri','Chiudi');
				imgNode.src = imgNode.src.replace('chiuso','aperto');
				imgFolder.src = imgFolder.src.replace('closed','open');
				linkNode.href = linkNode.href.replace('apri','chiudi');
				var layers = gruppo.instemi;
				var layerId = '';
				for (k=0; k<layers.length;k++) {
					/*if(cartografia.testo != 'Altro')*/ layerId = 'Tema_' + i + '_' + j + '_' + k;
					//else layerId = 'Tema_' + j + '_' + k;
					var temaNode = parent.MapFrame.document.getElementById(layerId);
					temaNode.style.display = 'block';
				}
			}
		}
	}
}

// apre il gruppo che contiene un certo tema 
function apriGruppoTema(nomeTema) {
	var carto = parent.PostFrame.document.gruppi;
	for (i=0; i!=carto.length; i++) {
		cartografia = carto[i];
		gruppi = cartografia.insgruppi;
		for (j=0; j!=gruppi.length; j++){
			gruppo = gruppi[j];
			insTemi = gruppo.instemi;
			for (k=0; k!=insTemi.length; k++){
				tema = insTemi[k];
				if (tema.testo==nomeTema) {
					cartografia.aperto = true;
					gruppo.aperto = true;
					parent.PostFrame.document.gruppi = carto;
					return;
				}
			}		
		}
	}
}

function chiudiGruppo(nomeGruppo) {
	var cartografie = parent.PostFrame.document.gruppi;
	for (i=0; i<cartografie.length;i++) {
		var cartografia = cartografie[i];
		var gruppi = cartografia.insgruppi;
		for (j=0; j<gruppi.length;j++) {
			var gruppo = gruppi[j];
			if (gruppo.testo == nomeGruppo) {
				gruppo.aperto = false;
				var groupId = '';
				/*if(cartografia.testo != 'Altro')*/ groupId = 'Gruppo_' + i + '_' + j;
				//else groupId = 'Gruppo_' + j;
				var imgNode = parent.MapFrame.document.getElementById('imgTree_' + groupId);
				var imgFolder = parent.MapFrame.document.getElementById('imgFolder_' + groupId);
				var linkNode = parent.MapFrame.document.getElementById('linkTree_' + groupId);
				imgNode.alt = imgNode.alt.replace('Chiudi','Apri');
				imgNode.title = imgNode.title.replace('Chiudi','Apri');
				imgNode.src = imgNode.src.replace('aperto','chiuso');
				imgFolder.src = imgFolder.src.replace('open','closed');
				linkNode.href = linkNode.href.replace('chiudi','apri');
				var layers = gruppo.instemi;
				var layerId = '';
				for (k=0; k<layers.length;k++) {
					/*if(cartografia.testo != 'Altro')*/ layerId = 'Tema_' + i + '_' + j + '_' + k;
					//else layerId = 'Tema_' + j + '_' + k;
					var temaNode = parent.MapFrame.document.getElementById(layerId);
					temaNode.style.display = 'none';
				}
			}
		}
	}
}

function refreshGruppo(nomeGruppo,id,level){
	
	// Imposto il flag che indica un cambiamento nella TOC
	parent.PostFrame.document.theForm.tocChanged.value = true;
	
	flag = parent.MapFrame.document.getElementById('Check*' + level + '_' + id).checked;
	
	var temiGruppo = new Array();
	var cartografie = parent.PostFrame.document.gruppi;
	for (k=0; k<cartografie.length;k++){
		carto = cartografie[k];
		gruppi = carto.insgruppi;
		for (i=0; i<gruppi.length;i++) {
			gruppo = gruppi[i];
			if (gruppi[i].testo == nomeGruppo) {
				gruppi[i].visibile = flag;
				if (flag == true) {
                     carto.aperti++;
                     // ? blu
                     if (gruppo.aperti == 0)
                         carto.chiusi--;
                     // tutti i temi accesi
                     gruppo.aperti = gruppo.lunghezza;
				}
				else {
                    if (gruppo.aperti == gruppo.lunghezza)
                        carto.aperti--;
                    carto.chiusi++;    
                    // tutti i temi spenti
                    gruppo.aperti = 0;
				}

				insTemi = gruppi[i].instemi;
				for (j=0; j!=insTemi.length;j++) {
                     tema=insTemi[j];
                     tema.visibile=flag;
					 temiGruppo[j]= tema;
				}
		  	}
		}
	}
	
	// scorre le cartografie per accendere i gruppi della cartografia precedente 
	for (i=0; i<cartografie.length;i++) {
		carto = cartografie[i];		
		gruppi = carto.insgruppi;
		for (j=0; j<gruppi.length;j++) {
			gruppo = gruppi[j];			
			temi = gruppo.instemi;
			if (gruppo.testo != nomeGruppo) {
				for (k=0; k<temi.length;k++) {
					tema= temi[k];
					for (x=0; x<temiGruppo.length;x++) {
						if (temiGruppo[x].testo == tema.testo) {
							if (tema.visibile == flag)
								break;
							tema.visibile = flag;
							if (flag == false){
								gruppo.aperti--;
								if (gruppo.aperti == 0)
									carto.chiusi++;
								if (gruppo.lunghezza-gruppo.aperti == 1)
									carto.aperti--;
							}	
							else {
								gruppo.aperti++;
								if (gruppo.aperti == gruppo.lunghezza)
									carto.aperti++;
								if (gruppo.aperti == 1)
									carto.chiusi--;
							}
						}
					}
				}
			}
		}
	}	
	if(automatic_refresh) refresh();
}

// per i metadati del repertorio applicativo
function infoTema(nomeTema) {
	var theForm = parent.PostFrame.document.theForm;
	var catalogForm = parent.PostFrame.document.catalog;
	parent.MapFrame.showLayer("LoadData");

	catalogForm.target = "EmptyFrame1";

	parent.PostFrame.document.frame.ricerca.value = "false";
	catalogForm.service_name.value = "InfoMetadatiTema";
	catalogForm.nomeInfoTema.value = nomeTema;
	catalogForm.ricerca.value = "false";
	catalogForm.submit();
}

// per i metadati iso
function infoMetadatiTema(nomeTema, url_plugin) {

	var theForm = parent.PostFrame.document.theForm;
	
	// imposto a null l'eventuale url_plugin impostato da un plugin di tipo mapclick
	theForm.old_url_plugin.value = theForm.url_plugin.value;
	theForm.url_plugin.value = "";
	
	// risultato nel frame di ricerca
	if (theForm.infoNewWindow.value=="false") {
		//parent.MapFrame.showLayer("LoadData");
		theForm.target="SearchFrame";
		
		// chiude la finestra dei metadati se precedentemente ? stata aperta
		if (theForm.oldSearch.value=="NewWin")  {
			window.open('','Risultati','resizable=yes,scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no').close();
		}
		if (parent.OptionFrame.arBt[1][0]==1)
			parent.OptionFrame.arBt[1][0]=0;
		FB_swapImage("img1",parent.OptionFrame.arBt[1][1]);
		theForm.oldSearch.value="SearchFrame";
		
	} else { 
	
		// ricreazione del search frame e impostazione del pulsante "attiva frame ricerca"
		if (theForm.oldSearch.value=="SearchFrame")  {
			parent.PostFrame.document.frame.service_name.value="Search";
			parent.PostFrame.document.frame.target="SearchFrame";
			parent.PostFrame.document.frame.submit();
			if (parent.OptionFrame.arBt[1][0]==0)
				parent.OptionFrame.arBt[1][0]=1;
			FB_swapImage("img1",parent.OptionFrame.arBt[1][3]);
			parent.PostFrame.document.frame.ricerca.value="true";
		}
	
		// apre una nuova finestra
		var newWin=new Object();
		newWin=window.open('about:blank','pluginwindow','resizable=yes,scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,width=800,height=600,top=50,left=150');
		newWin.focus();
		theForm.target="pluginwindow";
		theForm.oldSearch.value="NewWin";

	}
	
	// imposta i dati per la submit verso il clientweb
	theForm.service_name.value="InfoMetadatiTema";
	theForm.nome_tema_metadati.value=nomeTema;
	theForm.submit();
	return;
	
}


function refreshTema(nomeTema,id,clicked,level) {
	
	// Imposto il flag che indica un cambiamento nella TOC
	parent.PostFrame.document.theForm.tocChanged.value = true;
	
	var checkBoxCaller = parent.MapFrame.document.getElementById('Check*' + level + '_' + id);
	if(checkBoxCaller != undefined) flag = checkBoxCaller.checked;
	else flag = true;
	var cartografie = parent.PostFrame.document.gruppi;
	
	for (k=0; k<cartografie.length;k++) {
		carto = cartografie[k];
		gruppi = carto.insgruppi;
		for (i=0; i<gruppi.length;i++) {
			gruppo = gruppi[i];
			insTemi = gruppo.instemi;
			for (j=0; j<insTemi.length;j++) {
				tema = insTemi[j];
				if (tema.testo==nomeTema && tema.visibile!=flag) {
					tema.visibile = flag;
					if (flag==false) {
						gruppo.aperti--;
						if (gruppo.aperti==0)
							carto.chiusi++;
						if (gruppo.lunghezza-gruppo.aperti==1)
							carto.aperti--;
					}	
					else {
						gruppo.aperti++;
						if (gruppo.aperti==gruppo.lunghezza)
							carto.aperti++;
						if (gruppo.aperti==1)
							carto.chiusi--;
					}
				}
			}
		}
	}
	if(clicked != undefined && automatic_refresh) refresh();
}		

function visualizzaLegenda() {
	parent.TOCFrame.location.href="legenda.htm";
}		

function toggleImage(id) {
	var imgLayerOOS = parent.MapFrame.document.getElementById('Check_' + id);
	if(imgLayerOOS.src.indexOf('check_disabled_ch.gif') != -1) {
		imgLayerOOS.src = 'imgs/tree/check_disabled_unch.gif';
	}
	else imgLayerOOS.src = 'imgs/tree/check_disabled_ch.gif';
}

function propagateClicks(tipo,level,indexCarto,indexGroup) {
	var checkArray = parent.MapFrame.document.getElementsByTagName('input');
	var groupsCounter = 0;
	var layersCounter = 0;
	var checkCarto;
	var checkGroup;
	for(i=0;i<checkArray.length;i++) {
		var tempCheck = checkArray[i];
		if(tempCheck.type == 'checkbox') {
			var id = tempCheck.id;
			// Se sto accendendo una cartografia, devo accendere i suoi gruppi ed i temi dei suoi gruppi.
			// Per fare ci? recupero gli id tramite l'indice della cartografia
			if(tipo == 'Cartografia') {
				var statoCarto;
				// Devo salvare lo stato iniziale della cartografia per propagare coerentemente il click
				if((id.indexOf('*' + level + '_Cartografia' + '_' + indexCarto) != -1)) {
					statoCarto = tempCheck.checked;
				}
				if((id.indexOf('*' + (level + 1) + '_Gruppo' + '_' + indexCarto) != -1) || (id.indexOf('*' + (level + 2) + '_Tema' + '_' + indexCarto) != -1)) {
					// L'azione deve seguire il tipo di operazione (accensione o spegnimento) effettuato sulla cartografia
					tempCheck.checked = statoCarto;
				}
			}
			// Se sto accendendo un gruppo, devo accendere i suoi temi ed eventualmente la cartografia cui appartiene.
			// Se sto spegnendo un gruppo, devo spegnere la cartografia solo se ? l'ultimo gruppo acceso
			// Per fare ci? recupero gli id tramite l'indice della cartografia (passato in input anche se il click ? su un gruppo)
			if(tipo == 'Gruppo') {
				var statoGruppo;
				// Salvo lo stato della cartografia
				if((id.indexOf('*' + (level - 1) + '_Cartografia' + '_' + indexCarto) != -1) && (level == 1)) {
					checkCarto = tempCheck;
				}
				// Devo salvare lo stato iniziale del gruppo per propagare coerentemente il click (secondo livello)
				if((id.indexOf('*' + level + '_Gruppo' + '_' + indexCarto + '_' + indexGroup) != -1) && (level == 1)) {
					statoGruppo = tempCheck.checked;
				}
				// Devo salvare lo stato iniziale del gruppo per propagare coerentemente il click (primo livello)
				if((id.indexOf('*' + level + '_Gruppo' + '_' + indexGroup) != -1) && (level == 0)) {
					statoGruppo = tempCheck.checked;
				}
				// Conto i gruppi accesi
				if((id.indexOf('*' + level + '_Gruppo' + '_' + indexCarto) != -1) && (level == 1)) {
					if(tempCheck.checked) groupsCounter++;
				}
				// Eseguo l'operazione su tutti i temi se il gruppo ? al secondo livello
				if((id.indexOf('*' + (level + 1) + '_Tema' + '_' + indexCarto + '_' + indexGroup) != -1) && (level == 1)) {
					// L'azione deve seguire il tipo di operazione (accensione o spegnimento) effettuato sulla cartografia
					tempCheck.checked = statoGruppo;
				}
				// Eseguo l'operazione su tutti i temi se il gruppo ? al primo livello
				if((id.indexOf('*' + (level + 1) + '_Tema' + '_' + indexGroup) != -1) && (level == 0)) {
					// L'azione deve seguire il tipo di operazione (accensione o spegnimento) effettuato sulla cartografia
					tempCheck.checked = statoGruppo;
				}
			}
			// Se sto accendendo un tema, devo eventualmente accendere il gruppo e la cartografia cui appartiene.
			if(tipo == 'Tema') {
				// Salvo lo stato della cartografia
				if((id.indexOf('*' + (level - 2) + '_Cartografia' + '_' + indexCarto) != -1)) {
					checkCarto = tempCheck;
				}
				// Conto i gruppi accesi
				if((id.indexOf('*' + (level - 1) + '_Gruppo' + '_' + indexCarto) != -1)) {
					if(tempCheck.checked) groupsCounter++;
				}
				// Salvo lo stato del gruppo specifico (terzo livello)
				if((id.indexOf('*' + (level - 1) + '_Gruppo' + '_' + indexCarto + '_' + indexGroup) != -1) && (level == 2)) {
					checkGroup = tempCheck;
				}
				// Salvo lo stato del gruppo specifico (secondo livello)
				if((id.indexOf('*' + (level - 1) + '_Gruppo' + '_' + indexGroup) != -1) && (level == 1)) {
					checkGroup = tempCheck;
				}
				// Conto i temi accesi (terzo livello)
				if((id.indexOf('*' + level + '_Tema' + '_' + indexCarto + '_' + indexGroup) != -1) && (level == 2)) {
					if(tempCheck.checked) layersCounter++;
				}
				// Conto i temi accesi (secondo livello)
				if((id.indexOf('*' + level + '_Tema' + '_' + indexGroup) != -1) && (level == 1)) {
					if(tempCheck.checked) layersCounter++;
				}
			}
		}
	}
	// Accendo la cartografia se almeno un gruppo ? acceso, altrimenti la spengo
	// Accendo il gruppo se almeno un tema ? acceso, altrimenti lo spengo
	if(tipo == 'Tema') {
		if(level == 2) {
			if(layersCounter > 0) {
				checkGroup.checked = true;
				checkCarto.checked = true;
			}
			else {
				if(groupsCounter == 1) checkCarto.checked = false;	
				checkGroup.checked = false;	
			}
		}
		else if(level == 1) {
			if(layersCounter > 0) {
				checkGroup.checked = true;
			}
			else {
				checkGroup.checked = false;	
			}
		}
	}
	// Accendo la cartografia se almeno un gruppo ? acceso, altrimenti la spengo
	if(tipo == 'Gruppo' && level == 1) {
		if(groupsCounter > 0) checkCarto.checked = true;
		else checkCarto.checked = false;
	}
}

function refresh() {

	var theForm = parent.PostFrame.document.theForm;
	parent.MapFrame.showLayer("LoadMap");
	
	var xml = creaXml(parent.PostFrame.document.gruppi, false);
	
	theForm.gruppi.value = xml;
	theForm.moveaction.value = "Refresh";
	theForm.service_name.value = "NavigaMappa";
	
	// Salva le coordinate per lo zoom to last extent
	theForm.lastMinx.value = parent.PostFrame.document.theForm.minx.value;
	theForm.lastMiny.value = parent.PostFrame.document.theForm.miny.value;
	theForm.lastMaxx.value = parent.PostFrame.document.theForm.maxx.value;
	theForm.lastMaxy.value = parent.PostFrame.document.theForm.maxy.value;	
	theForm.target = "EmptyFrame1";
	
	theForm.map_width.value = parent.MapFrame.mWidth;
	theForm.map_height.value = parent.MapFrame.mHeight;
	theForm.scale.value = parent.MapFrame.document.getElementById('scaleValue').value;
	theForm.submit();
	
}

function unSoloTema(nomeTema){
			
  var cartografie=parent.PostFrame.document.gruppi;
	
	for (k=0; k<cartografie.length;k++){
		carto=cartografie[k];
		gruppi=carto.insgruppi;
		for (i=0; i<gruppi.length;i++) {
			gruppo=gruppi[i];
			insTemi=gruppo.instemi;
			for (j=0; j<insTemi.length;j++) {
				tema=insTemi[j];
				if (tema.testo==nomeTema) {
					tema.visibile=true;
					gruppo.aperti++;
					if (gruppo.aperti==gruppo.lunghezza)
						carto.aperti++;
					if (gruppo.aperti==1)
						carto.chiusi--;
					}
				}
			}
		}
	parent.PostFrame.document.gruppi=cartografie;
    parent.PostFrame.document.theForm.gruppi.value=creaXml(cartografie, false);
			
}

function creaXml(cartografie, filtraInterrogabili) {

	var xml_temi="";
	var cartografia;
	
	xml_temi+="<temi>\n";
	for (k=0; k<cartografie.length; k++){
  		cartografia=cartografie[k];
  		gruppi=cartografia.insgruppi;
  		for (i=0; i<gruppi.length; i++){
			gruppo=gruppi[i];
			temi=gruppo.instemi;
			for (j=0; j<temi.length; j++) {
				tema=temi[j];
				if(xml_temi.indexOf("id_tema=\""+tema.id+"\"") == -1)
				{
					if(!filtraInterrogabili)
					{
						xml_temi+="\t<tema nome_tema=\""+tema.testo+"\" id_tema=\"" + tema.id + "\" interrogabile=\""+tema.interrogabile+"\" esplorabile=\""+tema.esplorabile+"\" visibile=\""+tema.visibile+"\">\n";
						if (tema.scala_min!="")
							xml_temi+="\t\t<scala_min value=\""+tema.scala_min+"\"/>\n";
						if (tema.scala_max!="")
							xml_temi+="\t\t<scala_max value=\""+tema.scala_max+"\"/>\n";	
						xml_temi+="\t\t<envelope minx=\""+tema.env.minx+"\" miny=\""+tema.env.miny+"\" maxx=\""+tema.env.maxx+"\" maxy=\""+tema.env.maxy+"\" />\n";
						xml_temi+="\t</tema>\n";						
					}
					else
					{
						if(tema.interrogabile=="true")
						{
							xml_temi+="\t<tema nome_tema=\""+tema.testo+"\" id_tema=\"" + tema.id + "\" interrogabile=\""+tema.interrogabile+"\" esplorabile=\""+tema.esplorabile+"\" visibile=\""+tema.visibile+"\">\n";
							if (tema.scala_min!="")
								xml_temi+="\t\t<scala_min value=\""+tema.scala_min+"\"/>\n";
							if (tema.scala_max!="")
								xml_temi+="\t\t<scala_max value=\""+tema.scala_max+"\"/>\n";	
							xml_temi+="\t\t<envelope minx=\""+tema.env.minx+"\" miny=\""+tema.env.miny+"\" maxx=\""+tema.env.maxx+"\" maxy=\""+tema.env.maxy+"\" />\n";
							xml_temi+="\t</tema>\n";						
						}
					}
				}
			}
		}
	}
	xml_temi+="</temi>\n";
	return(xml_temi);
}

function refreshNoSubmit() {
	
	parent.MapFrame.showLayer("LoadMap");	
	var xml = creaXml(parent.PostFrame.document.gruppi, false);
	
	parent.PostFrame.document.theForm.gruppi.value=xml;
	parent.PostFrame.document.theForm.service_name.value="ApriMappa";
	parent.PostFrame.document.theForm.service_action.value="Refresh";
	parent.PostFrame.document.theForm.target="MapFrame";
	
	parent.PostFrame.document.theForm.map_width.value = parent.MapFrame.mWidth;
	parent.PostFrame.document.theForm.map_height.value = parent.MapFrame.mHeight;
}			

