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) {
   	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;
}

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.TOCFrame.location.href="toc1.htm";
}
				

function apriCartografia(nomeCartografia) {
				
	var cartografie=parent.PostFrame.document.gruppi;
	
	for (i=0; i<cartografie.length;i++) {
		cartografia=cartografie[i];
		if (cartografia.testo==nomeCartografia) {
			cartografia.aperto=true;
		}
	}
	
	parent.PostFrame.document.gruppi=cartografie;
	parent.PostFrame.document.theForm.target="TOCFrame";
	parent.TOCFrame.location.href="toc1.htm";
	
}
		
function chiudiCartografia(nomeCartografia) {
	
	var cartografie=parent.PostFrame.document.gruppi;

	for (i=0; i<cartografie.length;i++) {
		if (cartografie[i].testo==nomeCartografia) {
			cartografie[i].aperto=false;
		}
	}
	parent.PostFrame.document.gruppi=cartografie;
	parent.PostFrame.document.theForm.target="TOCFrame";
	parent.TOCFrame.location.href="toc1.htm";
	
}

// 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,flag){

	var gruppiCartografia = new Array();
	var gruppi=parent.PostFrame.document.gruppi;

	// aggiorna tutti i temi contenuti nella cartografia anche nelle altre cartografie
	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 il tema
					for (x=0; x<gruppi.length;x++) {
						cartoTemp=gruppi[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<gruppi.length;i++) {
		cartografia=gruppi[i];
		if (cartografia.testo==nomeCartografia) {
			
			gruppi[i].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=gruppi[i].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<gruppi.length;i++) {
		carto=gruppi[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;
                                        }
                                    }
                            }		
                    }
        }
	
	parent.PostFrame.document.gruppi=gruppi;
	parent.PostFrame.document.theForm.target="TOCFrame";
	parent.TOCFrame.location.href="toc.htm";	
	
}

function apriGruppo(nomeGruppo) {

	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 (gruppo.testo==nomeGruppo) {
				gruppo.aperto=true;
			}
		}
	}

	parent.PostFrame.document.gruppi=cartografie;
	parent.PostFrame.document.theForm.target="TOCFrame";
	parent.TOCFrame.location.href="toc1.htm";
	
}

// 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;
				}
			}		
		}
	}

	parent.PostFrame.document.gruppi=carto;
	parent.PostFrame.document.theForm.target="TOCFrame";
	parent.TOCFrame.location.href="toc1.htm";
	
}


function chiudiGruppo(nomeGruppo) {
	
	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++) {
		
			if (gruppi[i].testo==nomeGruppo) {
				gruppi[i].aperto=false;
			}
		}
	}
	parent.PostFrame.document.gruppi=cartografie;
	parent.TOCFrame.location.href="toc1.htm";
}

function refreshGruppo(nomeGruppo,flag){

	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--;
							}
						}
					}
				}
			}
		
		}
		
	}	
	
	parent.PostFrame.document.gruppi=cartografie;
	parent.PostFrame.document.theForm.target="TOCFrame";
	parent.TOCFrame.location.href="toc1.htm";	
}

// 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");
	
	// risultato nel frame di ricerca
	if (theForm.infoNewWindow.value=="false") {
		catalogForm.target="SearchFrame";
		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";

	}
	// risultato in una nuova finestra
	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";
		}
	
		var newWin=new Object();
		newWin=window.open('about:blank','Risultati','resizable=yes,scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,width=800,height=600,top=50,left=150');
		catalogForm.target="Risultati";
		parent.SearchFrame.location.URL="text.htm";
		newWin.focus();
		theForm.oldSearch.value="NewWin";
						
	}

	parent.PostFrame.document.frame.ricerca.value="false";
	catalogForm.service_name.value="InfoMetadatiTema";
	catalogForm.nomeInfoTema.value=nomeTema;
	catalogForm.ricerca.value="false";
	catalogForm.submit();
	
	if(isNav4 || isMoz){window.setTimeout("parent.PostFrame.document.catalog.target=\"MapFrame\"",50);}
	else{parent.PostFrame.document.catalog.target="MapFrame";}
		
}

// 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,flag) {
	
	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--;
					}
				}
			}
		}
	}
	
	parent.PostFrame.document.gruppi=cartografie;
	parent.PostFrame.document.theForm.target="TOCFrame";
	parent.TOCFrame.location.href="toc.htm";
	
}		

function visualizzaLegenda() {
	parent.TOCFrame.location.href="legenda.htm";
}		

function refresh() {

	var theForm = parent.PostFrame.document.theForm;
	parent.MapFrame.showLayer("LoadMap");
	
	var xml=creaXml(parent.PostFrame.document.gruppi)
	
	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="MapFrame";
	
	var mapFrameWidth = (document.all?parent.MapFrame.document.body.clientWidth:parent.MapFrame.window.innerWidth);
	var mapFrameHeight = (document.all?parent.MapFrame.document.body.clientHeight:parent.MapFrame.window.innerHeight);
	
	theForm.map_width.value=mapFrameWidth;
	theForm.map_height.value=mapFrameHeight;
	
	theForm.scale.value=top.frames["ScaleFrame"].document.cheForm.scale.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);
			
}

function creaXml(cartografie) {

//	alert("qui");
	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];
				xml_temi+="\t<tema nome_tema=\""+tema.testo+"\" id_tema=\""+tema.id+"\" 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";
	//alert("toc: " + xml_temi);
	return(xml_temi);
}

function refreshNoSubmit() {
	
	parent.MapFrame.showLayer("LoadMap");	
	var xml=creaXml(parent.PostFrame.document.gruppi);
	
	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";
	
	var mapFrameWidth = (document.all?parent.MapFrame.document.body.clientWidth:parent.MapFrame.window.innerWidth);
	var mapFrameHeight = (document.all?parent.MapFrame.document.body.clientHeight:parent.MapFrame.window.innerHeight);

	parent.PostFrame.document.theForm.map_width.value=mapFrameWidth;
	parent.PostFrame.document.theForm.map_height.value=mapFrameHeight;
	
}			

