﻿	var side_bar_tipologie_html = "";
	var markerId = [];
	var gmarkers = [];
	var labels = [];
	var htmls = [];
	var gicons = [];
	var gicon_markers = [];
	var gindex = 0;
	var map; 
	var mm;
	var urlBaseMarker;
	
	
	function createMarker(point,name,html) {

		var marker = new GMarker(point);
		if (html!='')
		        {
		    GEvent.addListener(marker, "click", function() {
		      marker.openInfoWindowHtml(html);
		    });
		        }
		gmarkers[gindex] = marker;
		htmls[gindex] = html;
		labels[gindex] = name;
		gindex++;
		return marker;
		}

	function showhideMarker( nID ) {
			
			for (var i=0; i<gicon_markers[nID].length; i++) {
				if (gmarkers[gicon_markers[nID][i]].isHidden()) 
					gmarkers[gicon_markers[nID][i]].show()
				else
					gmarkers[gicon_markers[nID][i]].hide()
				}
		  }

	function markerClick(nIndex) {
		gmarkers[nIndex].openInfoWindowHtml(htmls[nIndex]);
	  }

	function searchString (arrayToSearch, stringToSearch) {
	    //arrayToSearch.sort();

	    for (var i = 0; i < arrayToSearch.length; i++) {
	        // need to use a double equals sign "==" to test for equality
	        if (arrayToSearch[i] == stringToSearch)
	            return true;
	    // following code is unnecessary
	      //  else if (stringToSearch < arrayToSearch[i])
	          //  return false;
	     }
	    return false;
	}
	  
	function Gmaps_onmove() {
		var sQuery = '?OLat=' + map.getBounds().getSouthWest().lat() + '&ELat=' + map.getBounds().getNorthEast().lat() + '&NLng=' + map.getBounds().getNorthEast().lng() + '&SLng=' + map.getBounds().getSouthWest().lng() 
		//if  (map.getZoom() >= 15) 	{
			document.getElementById("gmap_info").innerHTML = "Caricamento in corso"
			GDownloadUrl(urlBaseMarker + sQuery, loadMarker);
			document.getElementById("gmap_info").innerHTML = "Caricamento completato"
				//}
		}

	function Gmaps_onzoom() {

	if (map.getZoom() >= 15)
			document.getElementById("gmap_info").innerHTML = ""
		else	
			document.getElementById("gmap_info").innerHTML = "A queto livello di zoom non è possibile visulizzare le fermate"
		}
		
	function loadMarker( doc )	{
		 var jsonData = eval('(' + doc + ')');

//			side_bar_tipologie_html = '<ul>';
//	        for (var i=0; i<jsonData.icontype.length; i++) {
//			  gicons[ jsonData.icontype[i].id ] = new GIcon(G_DEFAULT_ICON, jsonData.icontype[i].url );
//			  gicon_markers[ jsonData.icontype[i].id ] = jsonData.icontype[i].markers;
//			  side_bar_tipologie_html += '<li>';
//			  side_bar_tipologie_html += '<img src="' + jsonData.icontype[i].url + '" /><input type="checkbox" id="chk' + +jsonData.icontype[i].id + '" name="chk' + +jsonData.icontype[i].id + '" checked="checked" onClick="showhideMarker(' + +jsonData.icontype[i].id + ');" /><label for="chk' + +jsonData.icontype[i].id + '"><span>' + jsonData.icontype[i].label + '</span></label>';
//			  side_bar_tipologie_html += '<ul>';
//			  for (var k=0; k<jsonData.icontype[i].markers.length; k++) {
//				side_bar_tipologie_html += '<li><a href="javascript:markerClick(' + jsonData.icontype[i].markers[k].index + ');"><span>' + jsonData.icontype[i].markers[k].label + '</span></a></li>';
//				}
//			  side_bar_tipologie_html += '</ul>';
//			  side_bar_tipologie_html += '</li>';
//	        }
//	        side_bar_tipologie_html += '</ul>';

			side_bar_tipologie_html = '<ul>';
	        for (var i=0; i<jsonData.icontype.length; i++) {
			  if (!gicons[ jsonData.icontype[i].id ]) {
				  gicons[ jsonData.icontype[i].id ] = new GIcon(G_DEFAULT_ICON, jsonData.icontype[i].url );
				  gicon_markers[ jsonData.icontype[i].id ] = []
					}
			  side_bar_tipologie_html += '<li id="li-gicon-' + jsonData.icontype[i].id + '">';
			  side_bar_tipologie_html += '<img src="' + jsonData.icontype[i].url + '" /><input type="checkbox" id="chk' + +jsonData.icontype[i].id + '" name="chk' + +jsonData.icontype[i].id + '" checked="checked" onClick="showhideMarker(' + +jsonData.icontype[i].id + ');" /><label for="chk' + +jsonData.icontype[i].id + '"><span>' + jsonData.icontype[i].label + '</span></label>';
			  side_bar_tipologie_html += '</li>';			  
			  }
			side_bar_tipologie_html += '</ul>';
			document.getElementById("side_bar_tipologie").innerHTML = side_bar_tipologie_html;
			
	        for (var i=0; i<jsonData.markers.length; i++) {
			  if (!markerId[jsonData.markers[i].id])	
				{
				  markerId[jsonData.markers[i].id] = 1;
				  gicon_markers[ jsonData.markers[i].idicona ].push(gindex);
		          var point = new GLatLng(jsonData.markers[i].lat, jsonData.markers[i].lng);
		          var marker = createMarker(point, jsonData.markers[i].label, jsonData.markers[i].html);
				  mm.addMarker(marker,0,17); 
				}  
	        }
			
//			for (var i=0; i<jsonData.icontype.length; i++) {
//				var li = document.getElementById( 'li-gicon-' + jsonData.icontype[i].id )
//				if (li)	{
//					li.innerHTML += '<ul>';
//					for (var k=0; k<gicon_markers[jsonData.icontype[i].id].length; k++) {
//						li.innerHTML += '<li><a href="javascript:markerClick(' + gicon_markers[jsonData.icontype[i].id][k] + ');"><span>' + labels[gicon_markers[jsonData.icontype[i].id][k]] + '</span></a></li>';
//						}
//					li.innerHTML += '</ul>';	
//					}
//				}
			
		}
	
	function initGMaps( sDivMap, dLat, dLng, dZoom, sUrlBaseMarkers ) {
	
	    if (GBrowserIsCompatible()) {
		  window.unload = GUnload();
		  map = new GMap(document.getElementById(sDivMap)); 
		  map.enableScrollWheelZoom();
		  if (sUrlBaseMarkers!='')
			map.addControl(new GLargeMapControl());
		  else		
			map.addControl(new GSmallMapControl ());
		  map.addControl(new GMapTypeControl());
		  map.setCenter(new GLatLng(dLat,dLng),dZoom);
		  map.enableGoogleBar();
		  GEvent.addListener(map, "moveend", Gmaps_onmove);
		//  GEvent.addListener(map, "zoomend", Gmaps_onzoom);
		  mm = new GMarkerManager(map); 	   
		  urlBaseMarker = sUrlBaseMarkers;
		  
	      if (sUrlBaseMarkers!='')
				{
	        Gmaps_onmove();
			//GDownloadUrl(sUrlMarker, loadMarker);
				}
	      else  
	        {
              var marker = createMarker(new GLatLng(dLat,dLng), '', '');
              map.addOverlay(marker);
	        }  
	    }

	    else {
	      alert("Sorry, the Google Maps API is not compatible with this browser");
	    }
	}	
