	//*******************************
	// Codice scritto da Marco Guiso
	// laureando in Informatica
	// Universita' di Cagliari
	//*******************************
	
	//Ciclo principale
	var tabella_html4old="";
	var tabella_html4="";
	var zoom=7;
	var centro= new GLatLng(40,9);
	var map;
	var np=false;
	var pp=[];
	var sw=false;
	
	var current=G_SATELLITE_MAP;
	
	
function Crea(){
	
	//Uso le API di GMAP			
  
	// Configuro il navigatore
  var mapOpts = {
			draggableCursor:"default",
			draggingCursor:"default"
			// mapTypes: GMAP.mapTypes
		}
	
	// Creo  Mappa
			
	// Server RAS WMS

	WMS_RAS='http://webgis.regione.sardegna.it/geoserver/wms? ';
	//Server Batimetriche
	WMS_DEMIS='http://www2.demis.nl/mapserver/request.asp?';
	//Server 3D ombreggiato
	WMS_ICEDS='http://iceds.ge.ucl.ac.uk/cgi-bin/icedswms?';
	//Server landsat 5
	WMS_LS5='http://iceds.ge.ucl.ac.uk/cgi-bin/icedswms?';
	//WMS_WTH='http://iceds.ge.ucl.ac.uk/cgi-bin/wms?';
	//Server 3D grezzo
	WMS_3D='http://www.marine-geo.org/services/wms?'
	
	//Aggiungo i layer con gmap	
	var G_MAP_WMS_S1 = creaWMS(WMS_RAS, "RAS", "RAS", piani);
  var G_MAP_WMS_S2 = creaWMS(WMS_DEMIS, "DEMIS", "DEMIS", "Bathymetry,Topography");
  var G_MAP_WMS_S3 = creaWMS(WMS_ICEDS, "ICEDS", "ICEDS", "srtm30,srtm,metarweather");
  var G_MAP_WMS_S4 = creaWMS(WMS_LS5, "LS5", "LS5", "landsat5");
  var G_MAP_WMS_S6 = creaWMS(WMS_3D, "3D-2", "3D-2", "DEM-256,DEM-128,DEM-064,DEM-032,DEM-016,DEM-008,DEM-004,DEM-002");
	
	
	// Creo Mappa GMAP
	map = new GMap2(document.getElementById("map"), mapOpts);
	
	// Aggiungo pulsanti
	map.addMapType(G_SATELLITE_MAP);

	// Creo Sovrapposizione		
	var G_MAP_WMS_OVERLAY_S1 = creaWMSOvr(G_SATELLITE_MAP, G_MAP_WMS_S1, "RASoS", "RasoS");
	var G_MAP_WMS_OVERLAY_S2 = creaWMSOvr(G_NORMAL_MAP, G_MAP_WMS_S1, "RASoN", "RasoN");
	var G_MAP_WMS_OVERLAY_S3 = creaWMSOvr(G_MAP_WMS_S2, G_MAP_WMS_S1, "Bathym", "Bathym");
	var G_MAP_WMS_OVERLAY_S4 = creaWMSOvr(G_MAP_WMS_S3, G_MAP_WMS_S1, "3D", "3D");
	var G_MAP_WMS_OVERLAY_S5 = creaWMSOvr(G_MAP_WMS_S4, G_MAP_WMS_S1, "LS5", "LS5");
	var G_MAP_WMS_OVERLAY_S7 = creaWMSOvr(G_MAP_WMS_S6, G_MAP_WMS_S1, "3D-2", "3D-2");
		
	//Posiziono gli elementi nella mappa
	map.addMapType(G_MAP_WMS_S1);
	map.addMapType(G_MAP_WMS_OVERLAY_S1);
	map.addMapType(G_MAP_WMS_OVERLAY_S2);
	map.addMapType(G_MAP_WMS_OVERLAY_S3);
	map.addMapType(G_MAP_WMS_OVERLAY_S4);
	map.addMapType(G_MAP_WMS_OVERLAY_S5);
	map.addMapType(G_MAP_WMS_OVERLAY_S7);
		
	//Aggiungo i controlli ad es. zoom ...
	map.addControl(new GOverviewMapControl());
	map.addControl(new GLargeMapControl());
	map.addControl(new GScaleControl());
	map.addControl(new GMapTypeControl(true));
		
	map.enableContinuousZoom();
	map.enableDoubleClickZoom();
	
	//Centro la Mappa Latitudine e Longitudine
	map.setCenter(centro,zoom,current);
		
	//Aggiungo l'evento click del mouse
	GEvent.addListener(map,'click', function coordinate(overlay,latlng)
	{
			//Visualizzo le coordinate	
			var cll=[];
				
			//Prelevo la max dimensione della mappa
			cll[0] = map.getBounds().getSouthWest().lat();
			cll[1] = map.getBounds().getSouthWest().lng();
			cll[2] = map.getBounds().getNorthEast().lat();
			cll[3] = map.getBounds().getNorthEast().lng();
			
			//Prelevo la max dimensione della mappa in pixel
			var pos= map.fromLatLngToDivPixel(latlng);
			
			//Chiamo la procedura per la visualizzazione
			info(cll,pos,latlng);
			
			if(sw==true)
			{
				if (document.getElementById("s").checked == true)
				{
					document.getElementById("d").checked = false;
					np=false;
					document.getElementById("tab_lato6").innerHTML='';
					document.getElementById("tab_lato7").innerHTML='';	
			  }
    		else
				{
					document.getElementById("s").checked = false;
				
					if(np==true)
					{
						pp[1]=latlng;
						np=false;
						var d=pp[1].distanceFrom(pp[0]);
						//alert("Distanza tra i due punti: "+d+" metri");
						document.getElementById("tab_lato6").innerHTML=document.getElementById("tab_lato3").innerHTML
						document.getElementById("tab_lato7").innerHTML = 'Distanza tra i due punti:<br>'+d+' metri';
					}
					else 
					{
						pp[0]=latlng;
						np=true;
						document.getElementById("tab_lato6").innerHTML='';
						document.getElementById("tab_lato7").innerHTML='';
					}
			  }
				//Crea un marker nel punto selezionato
				var marker = new GMarker(latlng,{title:latlng});
      	//Click su un marker
      	GEvent.addListener(marker, "click", function() {
          marker.openInfoWindowHtml(tabella_html4);});
        map.addOverlay(marker);
			}
		});
			
	GEvent.addListener(map,'zoomend',function(oldLevel,newLevel){
			zoom=newLevel;});	
		
	GEvent.addListener(map,'moveend',function(){
			//Aggiorno offset mappa
			centro=map.getCenter();
			current=map.getCurrentMapType();
			map.clearOverlays();
			Crea();
			});
			
	//Leggo il file xml con le province
	tabella_html1 = "";
	
	//tento la connessione con sito ras
	var requestCitta = GXmlHttp.create();
	requestCitta.open("GET", "Citta.xml", true);
  requestCitta.onreadystatechange = function() 
		{
  			if (requestCitta.readyState == 4) 
				{
       			var xmlDoc = requestCitta.responseXML;
       			// Calcola array per i marker
       			var markers = xmlDoc.documentElement.getElementsByTagName("marker");
						tabella_html1='<table><tr><td><b>Principali collegamenti ARST:</b></td>';
       			for (i = 0; i < markers.length; i++) 
			 			{
            	// Ottieni gli attributi per ogni marker
            	lat[i] = parseFloat(markers[i].getAttribute("lat"));
            	lng[i] = parseFloat(markers[i].getAttribute("lng"));
            	var point = new GLatLng(lat[i],lng[i]);
            	var html = markers[i].getAttribute("html");
            	label[i] = markers[i].getAttribute("label");
            
							// crea il marker
            	var marker = createMarker(point,label[i],html);
            	map.addOverlay(marker);
       			}
          // visualizza attributo html nella tabella
          tabella_html1+='</tr></table>';
          document.getElementById("tab_lato1").innerHTML = tabella_html1;
    		}
  	}
  requestCitta.send(null);
}

//Leggi xml da RAS
function info(cl,pixel,latlng)
{
	tabella_html4 = "";
	
	//Max dimensione in pixel dell'immagine	
	var dx=600;
	var dy=450;
	
	//Tenta la scalata ai privilegi per mozilla
	try 
	{
			if (netscape.security.PrivilegeManager.enablePrivilege) 
			{
				netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
			}
	} catch (ex) {}

	//Costruisce la richiesta getfeatureinfo	
	var richiesta= 'http://webgis.regione.sardegna.it/wmsconnector/com.esri.wms.Esrimap/ras_wms?';
	 richiesta+='request=getfeatureinfo&version=1.0.0&service=wms&';
	 richiesta+='query_layers=Comuni,Province,Inviluppi%20Urbani,Specchi%20Acqua,Vulcani,Tratte%20Ferroviarie,Monumenti%20Naturali,Tratti%20di%20Strada';
	 richiesta+='&x=' + pixel.x+ '&y=' +pixel.y;
	 richiesta+='&bbox=' + cl[1] + ',' + cl[0] + ',' + cl[3] + ',' + cl[2] + '&info_format=text/xml&';
	 richiesta+='srs=EPSG:4326&width=' + dx + '&height=' + dy;
	  
	//Effettua la richiesta
	var requestRAS = GXmlHttp.create();
	
	requestRAS.open("GET",richiesta , true);
  requestRAS.onreadystatechange = function() 
	{
  	if (requestRAS.readyState == 4) 
		{
       var xmlDoc = requestRAS.responseXML;
       // Calcola array per le informazioni ricevute
       var dati = xmlDoc.documentElement.getElementsByTagName("FIELDS");
       
			 tabella_html4='<b>Selezione:</b><br><b>lat:</b>'+latlng.lat()+ '<br><b>long:</b>'+latlng.lng();
			 if (dati.length>0)
			 {
			 			var somma="",comuni="",province="",urb="";
			 			
			 			for(k=0;k<dati.length;k++)
			 			{
            	// Ottieni gli attributi dal file xml
            	var piani=dati[k].getAttribute("_LAYERID_");
            	
            	//Interpreto l'attributo
            	if(piani=='Comuni'){ 
								var comuni = dati[k].getAttribute("SIT_ADM.IDT_AA01G_COMUNI.AA01_NOME");
								var area = dati[k].getAttribute("SIT_ADM.IDT_AA01G_COMUNI.AA01_AREA");
								//somma='<td> Comune di:' + comuni+ ' area:' + area+'</td>';}
								somma='<br><b>Comune di:</b>' + comuni+ '<br><b>area:</b>' + area;}
							if(piani=='Province'){ 
								var province = dati[k].getAttribute("SIT_ADM.IDT_AA02G_PROVINCE.AA02_NOME");
								var area=dati[k].getAttribute("SIT_ADM.IDT_AA02G_PROVINCE.AA02_AREA");
								//somma='<td>Provincia di:' + province+ ' area:'+area+'</td>';}
								somma='<br><b>Provincia di:</b>' + province+ '<br><b>area:</b>'+area;}
								
							if(piani=='Inviluppi Urbani'){ 
								var urb = dati[k].getAttribute("SIT_ADM.IDT_AA07G_CENTRIURB.AA07_NOME");
								var abitanti = dati[k].getAttribute("SIT_ADM.IDT_AA07G_CENTRIURB.AA07_ABITANTI");
								var quota = dati[k].getAttribute("SIT_ADM.IDT_AA07G_CENTRIURB.AA07_QUOTA");
								//somma='<td>Centro abitato di:' + urb+ ' abitanti: '+abitanti+' quota:'+quota+'</td>';}
								somma='<br><b>Centro abitato di:</b>' + urb+ '<br><b>abitanti:</b>'+abitanti+'<br><b>quota:</b>'+quota;}
								
							if(piani=='Specchi Acqua'){ 
								var spacq = dati[k].getAttribute("SIT_ADM.IDT_RI03G_SPECCHI_ACQUA.RI03_NOME");
								//somma=' - Specchio Acqua:' + spacq;}
								somma='<br><b>Specchio Acqua:</b>' + spacq;}
							
							if(piani=='Vulcani'){ 
								vulc = dati[k].getAttribute("SIT_ADM.IDT_VI09G_VULCANI.VI09_NOME");
								//somma=' - Vulcano di:' + vulc;}
								somma='<br><b>Vulcano di:</b>' + vulc;}
							
							if(piani=='Tratte Ferroviarie'){ 
								var ferr = dati[k].getAttribute("SIT_ADM.IDT_RF01G_TRATTE_FERR.RF01_NOME");
								//somma='<td>Tratta ferroviaria:' + ferr+ '</td>';}
								somma='<br><b>Tratta ferroviaria:</b>' + ferr;}
							
							if(piani=='Monumenti Naturali'){ 
								var monnat = dati[k].getAttribute("SIT_ADM.IDT_VI02G_MON_NAT.VI02_NOME");
								//somma='<td>Monumento naturale:' + monnat+ '</td>';}
								somma='<br><b>Monumento naturale:</b>' + monnat;}
							
							if(piani=='Tratti di Strada'){ 
								var strad = dati[k].getAttribute("SIT_ADM.IDT_RS01G_TRATTI_STRADA.RS01_NOME");
								//somma='<td>Strada:' + strad+ '</td>';}
								somma='<br><b>Strada:</b>' + strad;}
							
							tabella_html4+=somma;			
							
           }
            //costruisce la tabella
						//alert("Hai selezionato un punto nel Comune:"+ comuni+ " Provincia: " + province+" altri particolari nella tabella");
						sw=true;}	
				else
				{ tabella_html4+='<br> punto non riconosciuto'; sw=false;}
        // visualizza attributo html nella tabella
        tabella_html4+='</tr></table>';
        document.getElementById("tab_lato3").innerHTML = tabella_html4;
        
    }
  }
  requestRAS.send(null);
}

// Funzione che crea il marker

function createMarker(point,name,html) {
      var marker = new GMarker(point,{title:name});
      
      //Click su un marker
      GEvent.addListener(marker, "click", function() {
          marker.openInfoWindowHtml(html);
          leggiorari(name);
        });
        
        // salvo le informazioni da utilizzare
        gmarkers[i] = marker;
        htmls[i] = html;
        // aggiungi una linea nella tabella
        tabella_html1 += '<td><a href="javascript:ioclick(' + i + ',\''+name+'\')">' + name + '</a></td>';
        return marker;
}

// Click in attributo della tabella

var n='';
function ioclick(i, n) {
        gmarkers[i].openInfoWindowHtml(htmls[i]);
        //Leggi orari da file xml
        leggiorari(n);
}


function pulsante()
{
	piani='Province';

for (var j = 0; j < layers.length; j++) 
{

	if(document.getElementById("c"+j).checked == true)
	{
			piani+=','+ document.getElementById("c"+j).value;
	}
}
	//Richiama la funzione di creazione  
	map.clearOverlays();
	Crea();
}

// Leggi i dati dal file xml
function leggilayer(){
	tabella_html2 = "";
	var lablay="";
  i = 0;

	//Visualizzo informazioni e scelte utili	
	document.getElementById("tab_lato3").innerHTML = 'Descrizione punto selezionato';
	document.getElementById("tab_lato5").innerHTML = '<b>Visualizza:</b> <input name="scelta" type="radio" id="d" value="d">Distanza <input name="scelta" type="radio" id="s" value="s" checked="True">Selezione';
	//document.getElementById("tab_lato6").innerHTML = "Descrizione punto selezionato";
	
	//legge xml
	var requestLayers = GXmlHttp.create();
	requestLayers.open("GET", "Layers.xml", true);
  requestLayers.onreadystatechange = function() 
	{
  	if (requestLayers.readyState == 4) 
		{
       xmlDoc = requestLayers.responseXML;
       
       // Calcola array per i layer
       layers = xmlDoc.documentElement.getElementsByTagName("layer");
       
       //costruisce la tabella
       tabella_html2='<center><h4>Layer</h4></center>';
       tabella_html2+='<input type=checkbox  value="Province" enabled="False" visible="True" checked="True">Province<br>';
       for (i = 0; i < layers.length; i++) 
			 {
            // Ottieni gli attributi per ogni layer
            lablay = layers[i].getAttribute("label");
            // crea tab layer
            tabella_html2+='<input type=checkbox id="c' + i + '" value="' + lablay + '">'+lablay+'<br>';
       }
          tabella_html2+='<br><center><input type=button value="Aggiorna" onclick="pulsante(this.form)"></center>';
          // visualizza attributo html nella tabella
          document.getElementById("tab_lato2").innerHTML = tabella_html2;
    }
  }
  requestLayers.send(null);
}

//funzione per leggere gli orari ARST principali

function leggiorari(citta)
{
	var label1,label2,collegamenti;
	
	//legge il file xml
	var requestLayers = GXmlHttp.create();
	requestLayers.open("GET", "coll" + citta + ".xml", true);

  requestLayers.onreadystatechange = function() 
	{
  	if (requestLayers.readyState == 4) 
		{
       xmlDoc = requestLayers.responseXML;
       // Calcola array per i layer
       collegamenti = xmlDoc.documentElement.getElementsByTagName("collega");
       tabella_html3='<center><h3> da '+citta + '</h3></center><br>';
       tabella_html3+='<table border=1><tr><td>per:</td><td>Orario</td></tr>';
       
      for (i = 0; i < collegamenti.length; i++) 
				{
            // Ottieni gli attributi per ogni Destinazione
            label1 = collegamenti[i].getAttribute("label");
            
            //Disegna una linea di collegamento se possibile
            
            
            label2 = collegamenti[i].getAttribute("orario");
            // crea tab layer
            tabella_html3+='<tr><td>'+ label1 + '</td><td>' +label2 +'</td></tr>';
        }          
       tabella_html3+='</table>';
       // visualizza attributo html nella tabella
       document.getElementById("tab_basso").innerHTML = tabella_html3;
  	}
  	else 
		{ 
			tabella_html3= '<center>La richiesta non puo \' essere soddisfatta</center>';
			document.getElementById("tab_basso").innerHTML = tabella_html3;
		}
	}	
  requestLayers.send(null);
    
}
