//<![CDATA[

var map;
var posizione_stazioni=new Array();
var reticorrenti=new Array();

function load() {
	var id_max=0;
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("googlemaps"));
		
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.setCenter(new GLatLng(41.0, 12.5), 6, G_SATELLITE_MAP);
//		map.enableScrollWheelZoom();
		
		var icon = new GIcon();
		icon.image = "img/boa.png";
//		icon.iconSize = new GSize(52, 51);
		icon.iconSize = new GSize(26, 25);
		icon.shadowSize = new GSize(54, 53);
		icon.iconAnchor = new GPoint(25, 25);
		icon.infoWindowAnchor = new GPoint(30, 20);
		
		var icon_stazione = new GIcon();
		icon_stazione.image = "img/stazione.png";
//		icon_stazione.iconSize = new GSize(50, 72);
		icon_stazione.iconSize = new GSize(25, 36);
		icon_stazione.shadowSize = new GSize(52, 74);
		icon_stazione.iconAnchor = new GPoint(25, 25);
		icon_stazione.infoWindowAnchor = new GPoint(30, 20);
		
		GEvent.addListener(map, "zoomend", function() {
			if (map.getZoom() >= 7) {
				for (a=1;a<=id_max;a++) {
					label=document.getElementById("label"+a);
					for (reteselezionata in reticorrenti) {
						if(posizione_stazioni[a]["rete"]==reticorrenti[reteselezionata]) {
							label.style.visibility='visible';
							break;
						}
						else {
							label.style.visibility='hidden';
						}
					}
				}
			}
			else {
				for (a=1;a<=id_max;a++) {
					label=document.getElementById("label"+a);
					label.style.visibility='hidden';
				}
			}
		});
		// Creates a marker whose info window displays the given number
		function createMarker(point, desc, id, lat, lon) {
			var marker = new GMarker(point,icon);
		
			// Show this marker's index in the info window when it is clicked
			var html = "<span style=\"color:blue; text-align:center;\">Boa di <b>"+desc+"</b></span><br />"+
						"<i>Latitudine: </i>"+lat+"<br />"+
						"<i>Longitudine: </i>"+lon+"<br />"+
						"<span style=\"font-style:italic; font-size:12px;\">Clicca per maggiori dettagli sulla boa</span>";
			GEvent.addListener(marker, "mouseover", function() {
				marker.openInfoWindowHtml(html);
			});
		
			
			GEvent.addListener(marker, "mouseout", function() {
				map.closeInfoWindow();
			});

			GEvent.addListener(marker, "click", function() {
				window.location = "struttura_scheda.php?RON="+id+"&pagina=scheda"; return false;
			});

			return marker;
		}
		
		function createMarkerStazione(point, desc, id, lat, lon) {
			var marker_stazione = new GMarker(point,icon_stazione);

			// Show this marker's index in the info window when it is clicked
			var html = "<span style=\"color:red; text-align:center;\">Stazione di <b>"+desc+"</b></span><br />"+
						"<i>Latitudine: </i>"+lat+"<br />"+
						"<i>Longitudine: </i>"+lon+"<br />"+
						"<span style=\"font-style:italic; font-size:12px;\">Clicca per maggiori dettagli sulla stazione</span>";
		
			GEvent.addListener(marker_stazione, "mouseover", function() {
				marker_stazione.openInfoWindowHtml(html);
			});

			GEvent.addListener(marker_stazione, "mouseout", function() {
				map.closeInfoWindow();
			});

			GEvent.addListener(marker_stazione, "click", function() {
				window.location = "struttura_scheda.php?RMN="+id+"&pagina=scheda"; return false;
			});
		
			return marker_stazione;
		}
		
		
		var request = GXmlHttp.create();
		request.open("GET", "include/getboe.php", true);
		request.onreadystatechange = function() {
			if (request.readyState == 4) {
				var xmlDoc = request.responseXML;
				var markers = xmlDoc.documentElement.getElementsByTagName("boa");
				var markers_stazione = xmlDoc.documentElement.getElementsByTagName("stazione");
				for (var i = 0; i < markers.length; i++) {
					var point = new GLatLng(parseFloat(markers[i].getAttribute("lat_decimale")),
											parseFloat(markers[i].getAttribute("lon_decimale")),false);
					var marker = createMarker(point,markers[i].getAttribute("desc"),markers[i].getAttribute("id_stazione"),markers[i].getAttribute("lat_gps"),markers[i].getAttribute("lon_gps"));
					map.addOverlay(marker);
					createLabel("boa",markers[i].getAttribute("id_stazione"),markers[i].getAttribute("desc"),parseFloat(markers[i].getAttribute("lat_decimale")),parseFloat(markers[i].getAttribute("lon_decimale")));

					posizione_stazioni[markers[i].getAttribute("id_stazione")]=new Array();
					posizione_stazioni[markers[i].getAttribute("id_stazione")]["oggetto"]=marker;
					posizione_stazioni[markers[i].getAttribute("id_stazione")]["rete"]="RON";
					posizione_stazioni[markers[i].getAttribute("id_stazione")]["desc"]=markers[i].getAttribute("desc");
					posizione_stazioni[markers[i].getAttribute("id_stazione")]["latitudine_gps"]=markers[i].getAttribute("lat_gps");
					posizione_stazioni[markers[i].getAttribute("id_stazione")]["latitudine"]=markers[i].getAttribute("lat_decimale");
					posizione_stazioni[markers[i].getAttribute("id_stazione")]["longitudine_gps"]=markers[i].getAttribute("lon_gps");
					posizione_stazioni[markers[i].getAttribute("id_stazione")]["longitudine"]=markers[i].getAttribute("lon_decimale");

				}
				for (var i = 0; i < markers_stazione.length; i++) {
					var point = new GLatLng(parseFloat(markers_stazione[i].getAttribute("lat_decimale")),
											parseFloat(markers_stazione[i].getAttribute("lon_decimale")),false);
					var marker_stazione = createMarkerStazione(point,markers_stazione[i].getAttribute("desc"),markers_stazione[i].getAttribute("id_stazione"),markers_stazione[i].getAttribute("lat_gps"),markers_stazione[i].getAttribute("lon_gps"));
					map.addOverlay(marker_stazione);
					createLabel("stazione",markers_stazione[i].getAttribute("id_stazione"),markers_stazione[i].getAttribute("desc"),parseFloat(markers_stazione[i].getAttribute("lat_decimale")),parseFloat(markers_stazione[i].getAttribute("lon_decimale")));

					posizione_stazioni[markers_stazione[i].getAttribute("id_stazione")]=new Array();
					posizione_stazioni[markers_stazione[i].getAttribute("id_stazione")]["oggetto"]=marker_stazione;
					posizione_stazioni[markers_stazione[i].getAttribute("id_stazione")]["rete"]="RMN";
					posizione_stazioni[markers_stazione[i].getAttribute("id_stazione")]["desc"]=markers_stazione[i].getAttribute("desc");
					posizione_stazioni[markers_stazione[i].getAttribute("id_stazione")]["latitudine_gps"]=markers_stazione[i].getAttribute("lat_gps");
					posizione_stazioni[markers_stazione[i].getAttribute("id_stazione")]["latitudine"]=markers_stazione[i].getAttribute("lat_decimale");
					posizione_stazioni[markers_stazione[i].getAttribute("id_stazione")]["longitudine_gps"]=markers_stazione[i].getAttribute("lon_gps");
					posizione_stazioni[markers_stazione[i].getAttribute("id_stazione")]["longitudine"]=markers_stazione[i].getAttribute("lon_decimale");
				}
			}
		}
		request.send(null);


		function createLabel(tipo,id,desc,lat,lon) {
			color="red";
			if (tipo=="boa") color="blue";
			var content="<div style=\"color:"+color+"; font-size:12px; text-align:center; background-color:white; font-weight:bold; width:"+desc.length/1.4+"em;\">"+desc+"</div>";
			var label = new TLabel();
			label.id="label"+id;
			if (parseInt(id)>id_max) id_max=parseInt(id);
			label.anchorLatLng=new GLatLng(lat,lon);
			label.anchorPoint = 'bottomCenter';
			label.content=content;
			label.percentOpacity=70;
			label.markerOffset=new GSize(20,-30);
			map.addTLabel(label);
		}

		visualizzarete(new Array('RON','RMN'));
	}
}

function visualizzarete(reti) {

	reticorrenti = new Array();
// Nasconde tutte le boe/stazioni
	for (id in posizione_stazioni) {
		var marker=posizione_stazioni[id]["oggetto"];
		var label=document.getElementById("label"+id);
		marker.hide();
		label.style.visibility='hidden';
	}
// Visualizza le reti richieste

	for (reteselezionata in reti) {
		reticorrenti[reteselezionata]=reti[reteselezionata];
		for (id in posizione_stazioni) {
			var marker=posizione_stazioni[id]["oggetto"];
			var label=document.getElementById("label"+id);
			retemarker=posizione_stazioni[id]["rete"];
			if (retemarker==reti[reteselezionata]) {
				if (map.getZoom() >= 7) label.style.visibility='visible';
				marker.show();
			}
		}
	}
}

//]]>
