    var MapMode =false;
    var ewindow;
    var currentLat = "";
    var currentLng = "";
    var gmarkers = [];
    var map;
    var tooltip;
    var largeMapControl;
    var mapTypeControl;
    var extLargeMapControl; 
    var scaleControl;
    var overviewMapControl;
    var zoom = 13;
 
	function setRegionCenter(latitude,longitude,zoomLevel)
	{
		currentLat = latitude;
		currentLng = longitude;
		zoom = parseInt(zoomLevel);
	}
 
    function createMarker(point,name,currentHotel,icon,category,html,CurrentHotelPath,AttractionImagePath,HotelImagePath) 
        {
         var currentIcon = new GIcon(icon);
         if (currentHotel == 1)
         {
            currentIcon.image = CurrentHotelPath;
         }
         else if(category == "Attraction")
         {
            currentIcon.image =AttractionImagePath;
            currentIcon.iconSize = new GSize(15, 15);
            currentIcon.iconAnchor = new GPoint(7, 7);
         }
         else
         {
            category = "hotel";
            currentIcon.image = HotelImagePath;
            currentIcon.iconSize = new GSize(34, 45);
            currentIcon.iconAnchor = new GPoint(17, 45);
         }	
		//currentIcon.shadow = "/Content/Templates/TravelStay/Images/pin_shadow.png";	
        var marker = new GMarker(point, currentIcon);
               
        // ========== Open the EWindow instead of a Google Info Window ==========
        GEvent.addListener(marker, "click", function() {
          ewindow.openOnMarker(marker,html);
          map.panTo( marker.getPoint());
        });
        
        marker.mycategory = category;
        marker.tooltip = '<div class="tooltip" style="padding-top:3px; padding-right:3px; padding-left:3px; padding-bottom:3px;">'+name+'<\/div>';
        
        gmarkers.push(marker);
        
        GEvent.addListener(marker,"mouseover", function() {
          showTooltip(marker);
        });        
        GEvent.addListener(marker,"mouseout", function() {
		tooltip.style.visibility="hidden"
        });        
        return marker;
      }
        
        
             function showMap(URL)
     {   
      if (GBrowserIsCompatible()) 
    {
      document.getElementById('mapImg').style.display = "none";
      document.getElementById('map').style.display = "block";
      document.getElementById('map').style.width = "625px";
      document.getElementById('map').style.height = "453px";
      document.getElementById('map').style.margin = "0 auto 20px";
      // create the map
      //zoom = zoomLevel;
      map = new GMap2(document.getElementById("map"));
      //Set up the size and anchor position of the markers
      var propertyIcon = null;
	  propertyIcon = new GIcon();
      propertyIcon.iconSize = new GSize(46, 61);
      propertyIcon.iconAnchor = new GPoint(23, 61);
      propertyIcon.infoWindowAnchor = new GPoint(100, 15);  
     var bounds = new GLatLngBounds();         
     GDownloadUrl(URL, function(data, responseCode) {
      
      var xml = GXml.parse(data);
      var markers = xml.documentElement.getElementsByTagName("marker");
      for (var i = 0; i < markers.length; i++) {
       
        var lat = parseFloat(markers[i].getElementsByTagName("lat")[0].childNodes[0].nodeValue);
        var lng = parseFloat(markers[i].getElementsByTagName("lng")[0].childNodes[0].nodeValue);
        
            var point = new GLatLng(lat,lng);
            var tooltipName = markers[i].getElementsByTagName("tooltip")[0].childNodes[0].nodeValue;
            var type = markers[i].getElementsByTagName("type")[0].childNodes[0].nodeValue;
            if(type != "Attraction")
            {
                var star = markers[i].getElementsByTagName("rating")[0].childNodes[0].nodeValue;
		var price = markers[i].getElementsByTagName("price")[0].childNodes[0].nodeValue;
        }
            var html = markers[i].getElementsByTagName("infowindow")[0].childNodes[0].nodeValue;
        
            var currentHotel = 0;
            
            var marker = createMarker(point,tooltipName,currentHotel,propertyIcon,type,html,CurrentHotelPath,AttractionImagePath,HotelImagePath);
            //var marker = new GMarker(point);
            map.addOverlay(marker);            
        bounds.extend(point);
      }
     
              map.setCenter(new GLatLng(currentLat,currentLng),zoom);
				
				//Adds latest Google navigation control
				  extLargeMapControl = new ExtLargeMapControl();
				  map.addControl(extLargeMapControl);
      	  
      //Add controls to the map
      mapTypeControl = new GMapTypeControl();
      scaleControl = new GScaleControl();
      overviewMapControl = new GOverviewMapControl(new GSize(150,150));
      map.addControl(mapTypeControl);
      map.addControl(scaleControl);
      map.addControl(overviewMapControl);
      map.enableContinuousZoom();
      map.enableScrollWheelZoom();
      
      // Create an EWindow
      ewindow = new EWindow(map, E_STYLE_7);      
      map.addOverlay(ewindow);
      
      // ===== determine the zoom level from the bounds =====
				//map.setZoom();
								
      // ====== set up marker mouseover tooltip div ======
      tooltip = document.createElement("div");
      document.getElementById("map").appendChild(tooltip);
      tooltip.style.visibility="hidden";
      
     // ========== Close the EWindow if there's a map click ==========
      GEvent.addListener(map, "click", function(overlay,point) {
         if (!overlay) {
             ewindow.hide();
         }
      });
      });
       
    }   
    else {
      alert("Sorry, the Google Maps API is not compatible with this browser");
    }
    }
    
         //Optimize: can be moved to Js
        // ====== This function displays the tooltip ======
        //input parameter: marker = marker on which tooltip has to be displayed
        // it can be called from an icon mousover 
        function showTooltip(marker) {
            tooltip.innerHTML = marker.tooltip;
            var point=map.getCurrentMapType().getProjection().fromLatLngToPixel(map.getBounds().getSouthWest(),map.getZoom());
            var offset=map.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),map.getZoom());
            var anchor=marker.getIcon().iconAnchor;
            var width=marker.getIcon().iconSize.width;
            var pos = new GControlPosition(G_ANCHOR_BOTTOM_LEFT, new GSize(offset.x - point.x - anchor.x + width,- offset.y + point.y +anchor.y)); 
            pos.apply(tooltip);
            tooltip.style.visibility="visible";
        }
 
        // It hides the tooltip      
        function mymouseout() {
            tooltip.style.visibility="hidden";
        }	 
 
        // This function picks up the click and opens the corresponding info window
        function Linkclicked(i) {
            GEvent.trigger(gmarkers[i], "click");
        }
 
        // == shows all markers of a particular category ==
        function show(category) {
            for (var i=0; i<gmarkers.length; i++) {
                if (gmarkers[i].mycategory == category) {
                    gmarkers[i].show();
                }
            }
        }
 
        // == hides all markers of a particular category ==
        function hide(category) {
            for (var i=0; i<gmarkers.length; i++) {
                if (gmarkers[i].mycategory == category) {
                    gmarkers[i].hide();
                }
            }
            // == close the info window, in case its open on a marker that we just hid
            map.closeInfoWindow();
            ewindow.hide();
        }
 
        // == a checkbox has been clicked ==
        //input parameters
        //box: the box clicked
        //category: category checked or uncheked
        function boxclick(box,category) {
            if (box.checked) {
                show(category);
            } else {
                hide(category);
            }
        }
         
        function closeWindow()
        {
            window.close();
        }
         
        