﻿	var side_bar_tipologie_html = "";
	var markerId = [];
	var gmarkers = [];
	var iconType = [];
	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, bChecked ) {

			iconType['id'+nID]=bChecked;
			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();
				}
			Gmaps_onmove();	
		  }

	function markerClick(nIndex) {
		gmarkers[nIndex].openInfoWindowHtml(htmls[nIndex]);
	  }

	function searchString (arrayToSearch, stringToSearch) {
	    for (var i = 0; i < arrayToSearch.length; i++) {
	        if (arrayToSearch[i] == stringToSearch)
	            return true;
	     }
	    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"))	{
				GDownloadUrl(urlBaseMarker + sQuery, loadMarker);
					}
		}

	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 i punti d'interesse"
			}
		}	
		
	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.icontypepadre.length; i++) {
				  side_bar_tipologie_html += '<li id="li-gicon-' + jsonData.icontypepadre[i].id + '"><div class="contentli">';
				  side_bar_tipologie_html += '<label><span>' + jsonData.icontypepadre[i].label + '</span></label></div>';
				  side_bar_tipologie_html += '<ul id="ul-gicon-' + jsonData.icontypepadre[i].id + '"></ul>';			  
				  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.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 ] = []
						}

				  var oPadre = document.getElementById('ul-gicon-' + jsonData.icontype[i].idpadre);
				  if (oPadre) {
					var oLI = document.createElement('li');
					oLI.id = 'li-gicon-' + jsonData.icontype[i].id;
					oLI.innerHTML = '<div class="contentli"><img src="' + jsonData.icontype[i].url + '" /><input type="checkbox" id="chk' + jsonData.icontype[i].id + '" name="chk' + +jsonData.icontype[i].id + '" onClick="showhideMarker(' + jsonData.icontype[i].id + ', this.checked);" /><label for="chk' + +jsonData.icontype[i].id + '"><span>' + jsonData.icontype[i].label + '</span></label></div>';
					oPadre.appendChild(oLI);
					}
				  }
				}

			for (var i=0; i<jsonData.icontype.length; i++) {
				if  (iconType['id'+jsonData.icontype[i].id]==undefined) iconType['id'+jsonData.icontype[i].id] = true;
				}
				
	        for (var i=0; i<jsonData.markers.length; i++) {
			  if (!markerId[jsonData.markers[i].id])	
				{
				  markerId[jsonData.markers[i].id] = gindex;
				  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); 
				  map.addOverlay(marker)
				}  
			  if (!iconType['id'+jsonData.markers[i].idicona]) gmarkers[markerId[jsonData.markers[i].id]].hide();
			}

			for (var i=0; i<jsonData.icontype.length; i++) {
				if (iconType['id'+jsonData.icontype[i].id]) {
					var li = document.getElementById( 'li-gicon-' + jsonData.icontype[i].id );
					var side_bar_tipologie_html_markers = ''
					if (li)	{
						var oUL = document.createElement('ul');
						oUL.id = "list"
						for (var k=0; k<gicon_markers[jsonData.icontype[i].id].length; k++) {
							var oLIF = document.createElement('li');
							oLIF.innerHTML = '<a href="javascript:markerClick(' + gicon_markers[jsonData.icontype[i].id][k] + ');"><span>' + labels[gicon_markers[jsonData.icontype[i].id][k]] + '</span></a>';
							oUL.appendChild(oLIF)
							}
						li.appendChild(oUL)
						}
					}	
				var ochk = document.getElementById( 'chk' + jsonData.icontype[i].id );
				if (ochk) ochk.checked = iconType['id'+jsonData.icontype[i].id];
				}
		}
	
	function initGMaps( sDivMap, dLat, dLng, dZoom, sUrlBaseMarkers, nIDIcona ) {
	
	    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, 'img/icone/gmaps/ico-' + nIDIcona + '.png') ;
			  cGIcon.printImage = 'img/icone/gmaps/ico-' + nIDIcona + '.png';
			  cGIcon.mozPrintImage = 'img/icone/gmaps/ico-' + nIDIcona + '.png';
              var marker = createMarker(new GLatLng(dLat,dLng), '', '', cGIcon);
              map.addOverlay(marker);
	        }  
	    }

	    else {
	      alert("Sorry, the Google Maps API is not compatible with this browser");
	    }
	}	