﻿	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;
	
	G_DEFAULT_ICON.iconSize=new GSize(25, 36);
	G_DEFAULT_ICON.iconAnchor=new GPoint(12, 35);
	G_DEFAULT_ICON.infoWindowAnchor=new GPoint(12, 18);
	G_DEFAULT_ICON.shadow = '';
	
	function createMarker(point,name,html,gicon) {

		var marker = new GMarker(point,gicon);
		//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 (document.getElementById("gmap_info"))	{
			//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 (document.getElementById("gmap_info"))	{
		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 + ')');

			if (document.getElementById("side_bar_tipologie"))	{
				side_bar_tipologie_html = '<ul id="nav">';
		        for (var i=0; i<jsonData.icontype.length; i++) {
				  if (!gicons[ jsonData.icontype[i].id ]) {
				  	  var cGIcon = 	new GIcon(G_DEFAULT_ICON, jsonData.icontype[i].url) ;
					  cGIcon.printImage = jsonData.icontype[i].url;
					  cGIcon.mozPrintImage = jsonData.icontype[i].url;
					  gicons[ jsonData.icontype[i].id ] = cGIcon;
					  gicon_markers[ jsonData.icontype[i].id ] = []
						}
				  side_bar_tipologie_html += '<li id="li-gicon-' + jsonData.icontype[i].id + '"><div class="contentli">';
				  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></div>';
				  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, gicons[ jsonData.markers[i].idicona ]);
				  mm.addMarker(marker,0,17); 
				}  
	        }
			
			for (var i=0; i<jsonData.icontype.length; i++) {
				var li = document.getElementById( 'li-gicon-' + jsonData.icontype[i].id );
				var side_bar_tipologie_html_markers = ''
				if (li)	{
					side_bar_tipologie_html_markers = '<ul>';
					for (var k=0; k<gicon_markers[jsonData.icontype[i].id].length; k++) {
						side_bar_tipologie_html_markers += '<li><a href="javascript:markerClick(' + gicon_markers[jsonData.icontype[i].id][k] + ');"><span>' + labels[gicon_markers[jsonData.icontype[i].id][k]] + '</span></a></li>';
						}
					side_bar_tipologie_html_markers += '</ul>';	
					li.innerHTML += side_bar_tipologie_html_markers;
					}
				}
		}
	
	function initGMaps( sDivMap, dLat, dLng, dZoom, sUrlBaseMarkers, sUrlIcona ) {
	
	    if (GBrowserIsCompatible()) {
		  window.unload = GUnload();
		  map = new GMap(document.getElementById(sDivMap)); 
		  map.enableScrollWheelZoom();
		  if (sUrlBaseMarkers!='')	{
			map.addControl(new GLargeMapControl());
			map.addControl(new GMapTypeControl());
		    map.enableGoogleBar();
				}
		  else		
			map.addControl(new GSmallMapControl ());
		  map.setCenter(new GLatLng(dLat,dLng),dZoom);
		  GEvent.addListener(map, "moveend", Gmaps_onmove);
		//  GEvent.addListener(map, "zoomend", Gmaps_onzoom);
		  mm = new GMarkerManager(map); 	   
		  urlBaseMarker = sUrlBaseMarkers;
		  
	      if (sUrlBaseMarkers!='')
				{
	        Gmaps_onmove();
				}
	      else  
	        {
			  var cGIcon = 	new GIcon(G_DEFAULT_ICON, sUrlIcona) ;
			  cGIcon.printImage = sUrlIcona;
			  cGIcon.mozPrintImage = sUrlIcona;
              var marker = createMarker(new GLatLng(dLat,dLng), '', '', cGIcon);
              map.addOverlay(marker);
	        }  
	    }

	    else {
	      alert("Sorry, the Google Maps API is not compatible with this browser");
	    }
	}	