﻿
/* 
 * 
 * 
 *
 */
 
    var map;
    var mgr;
    var icons = {};
    var allmarkers = [];
    var _venue_markers = [];
    var _venue_with_accomodation_markers = [];
    var _gala_venue_markers = [];
    var _accomodation_only_markers = [];
    var _restaurant_markers = [];
    var _spa_wellness_markers = [];
    var _equestrian_markers = [];
    var _golf_course_markers = [];
    var _shopping_area_markers = [];
    var _main_markers = [];

//var geoXml;

    function loadGoogleMap_All() 
    {
        _loadGoogleMap(2); // show all icons
    }
    
    function loadGoogleMap() 
    {
        _loadGoogleMap(1); // only show venue + pin-drop icons
    }
    
    function _loadGoogleMap(a_nShowHideType) {
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));   
        map.addControl(new GLargeMapControl());
        map.addControl(new GOverviewMapControl());
        
// Enable the Earth map type
//map.addMapType(G_SKY_VISIBLE_MAP);
//var mapControl = new GMapTypeControl();
//map.addControl(mapControl);
//map.setMapType(G_SATELLITE_3D_MAP);

//geoXml = new GGeoXml("http://www.redstrand.com/MyPlaces.kml");
//http://api.flickr.com/services/feeds/geo/?g=322338@N20&lang=en-us&format=feed-georss
//http://localhost/BusinessTourism/MyPlaces.kml

        
        if (window.zoomLevel === undefined)
        {
            zoomLevel = 8;
        }
        map.setCenter(new GLatLng(map_latitude, map_longitude), zoomLevel);
        map.enableDoubleClickZoom();
//map.addOverlay(geoXml);
        
        mgr = new MarkerManager(map, {trackMarkers:true});
        setupNearbyMarkers(a_nShowHideType);
        //window.setTimeout("setupNearbyMarkers(" + a_nShowHideType + ");", 0);
      }
    }

    function getIcon(images) {
        var icon = null;
        if (images) 
        {
            if (icons[images[0]]) 
            {
              icon = icons[images[0]];
            } 
            else 
            {
              icon = new GIcon();
              icon.image = iconBaseLocation + images[0] + ".png";
              var size = iconData[images[0]];
              icon.iconSize = new GSize(size.width, size.height);
              icon.iconAnchor = new GPoint(size.width >> 1, size.height >> 1);
              icon.shadow = iconBaseLocation + images[1] + ".png";
              size = iconData[images[1]];
              icon.shadowSize = new GSize(size.width, size.height);
              icons[images[0]] = icon;
            }
        }
        return icon;
    }

    
    function setupNearbyMarkers(a_nShowHideType) 
    {
      allmarkers.length = 0;
      _venue_markers.length = 0;
      _venue_with_accomodation_markers.length = 0;
      _gala_venue_markers.length = 0;
      _accomodation_only_markers.length = 0;
      _restaurant_markers.length = 0;
      _spa_wellness_markers.length = 0;
      _equestrian_markers.length = 0;
      _golf_course_markers.length = 0;
      _shopping_area_markers.length = 0;
      _main_markers.length = 0;
      
      for (var i in nearbyLayer) 
      {
        var layer = nearbyLayer[i];
        var markers = [];
        for (var j in layer["places"]) 
        {
          var place = layer["places"][j];
          var icon = getIcon(place["icon"]);
          var title = place["name"];
          var html = place["html"];
          var id = place["id"];
          var posn = new GLatLng(place["posn"][0], place["posn"][1]);
          var marker;
          //alert (place["icon"]);
          if (place["icon"] == "icon_amenities,icon_shadow")
          {
            marker = createMarker2(posn,title,icon,html,id); 
          }
          else
          {
            marker = createMarker(posn,title,icon,html); 
          }
          
          markers.push(marker);
          allmarkers.push(marker);
          if (place["icon"] == "icon_marker,icon_marker_shadow")
          {
            _main_markers.push(marker);
          }
          if (place["icon"] == "icon_venue,icon_shadow")
          {
            _venue_markers.push(marker);
          }
          if (place["icon"] == "icon_venue_with_accomodation,icon_shadow")
          {
            _venue_with_accomodation_markers.push(marker);
          }
          if (place["icon"] == "icon_gala_venue,icon_shadow")
          {
            _gala_venue_markers.push(marker);
          }
          if (place["icon"] == "icon_accomodation_only,icon_shadow")
          {
            _accomodation_only_markers.push(marker);
          }
          if (place["icon"] == "icon_restaurant,icon_shadow")
          {
            _restaurant_markers.push(marker);
          }
          if (place["icon"] == "icon_spa_wellness,icon_shadow")
          {
            _spa_wellness_markers.push(marker);
          }
          if (place["icon"] == "icon_equestrian,icon_shadow")
          {
            _equestrian_markers.push(marker);
          }
          if (place["icon"] == "icon_golf_course,icon_shadow")
          {
            _golf_course_markers.push(marker);
          }
          if (place["icon"] == "icon_shopping_area,icon_shadow")
          {
            _shopping_area_markers.push(marker);
          }
        }
        mgr.addMarkers(markers, layer["zoom"][0], layer["zoom"][1]);
      }
      mgr.refresh();
      if (a_nShowHideType == 1) // standard, only show Venues + Pin Drop
      {
          hideSomeMarkers();
      }
      // else, show all markers (e.g. local amenities)
    }
  
    function createMarker(posn, title, icon, html) {
        var marker = new GMarker(posn, {title: title, icon: icon, draggable: true });
        //GEvent.addListener(marker, "dblclick", function() { mgr.removeMarker(marker) } ); 
        GEvent.addListener(marker, "click", function() { 
            map.openInfoWindowHtml(posn, html, {maxWidth:620}); 
        }); 
        return marker;
    }
    
    function createMarkerClickHandler(posn, html) {
        return function() {
            map.openInfoWindowHtml(posn, html, {maxWidth:620});
            return false;
        };
    }

    function createMarker2(posn, title, icon, html, id) {
	    
	    opts = {
		    "icon": icon,
		    "clickable": true,
		    "draggable": true,
		    "labelText": id,
		    "labelOffset": new GSize(-10, -11)
	    };
	    
	    var marker = new LabeledMarker(posn, opts);
	    
	    var handler = createMarkerClickHandler(posn, html);
	    GEvent.addListener(marker, "click", handler);
	    
	    return marker;
    }

    function deleteMarker() {
      var markerNum = parseInt(document.getElementById("markerNum").value);
      mgr.removeMarker(allmarkers[markerNum]);
    }
   
    function clearMarkers() {
      mgr.clearMarkers();
    }
   
    function reloadMarkers() {
      setupNearbyMarkers();
    }
    
    function showHideMarker(marker) {
        if(marker != null)
        {   
            if (marker.isHidden()) {
                marker.show();
            } else {
                marker.hide();
            }
        }
    }
    
    function showAllMarkers() {
        var marker;
        //alert('allmarkers.length: ' + allmarkers.length);
        for(var i=0; i<allmarkers.length; i++)
        {
            marker = allmarkers[i];
            
            marker.show();
        }
    }
    
    function hideAllMarkers() {
        var marker;
        for(var i=0; i<allmarkers.length; i++)
        {
            marker = allmarkers[i];
            marker.hide();
        }
    }
    
    function hideSomeMarkers() 
    {
        hideAllMarkers();
        showVenueMarkers();
        //showVenueWithAccomodationMarkers();
        //showVenueAccomodationOnlyMarkers();
        //showRestaurantMarkers();
        showMainMarkers();
        
    }
    
    function showMainMarkers() {
        var marker;
        for(var i=0; i<_main_markers.length; i++)
        {
            marker = _main_markers[i];
            marker.show();
        }
    }
    
    function showVenueMarkers() {
        var marker;
        for(var i=0; i<_venue_markers.length; i++)
        {
            marker = _venue_markers[i];
            marker.show();
        }
    }
    
    function showVenueWithAccomodationMarkers() {
        var marker;
        for(var i=0; i<_venue_with_accomodation_markers.length; i++)
        {
            marker = _venue_with_accomodation_markers[i];
            marker.show();
        }
    }
    
    function showVenueAccomodationOnlyMarkers() {
        var marker;
        for(var i=0; i<_accomodation_only_markers.length; i++)
        {
            marker = _accomodation_only_markers[i];
            marker.show();
        }
    }
    
    function showRestaurantMarkers() {
        var marker;
        for(var i=0; i<_restaurant_markers.length; i++)
        {
            marker = _restaurant_markers[i];
            marker.show();
        }
    }
    
    function showHideVenueMarkers() {
        var marker;
        for(var i=0; i<_venue_markers.length; i++)
        {
            marker = _venue_markers[i];
            showHideMarker(marker);
        }
    }
    
    function showHideVenueWithAccomodationMarkers() {
        var marker;
        for(var i=0; i<_venue_with_accomodation_markers.length; i++)
        {
            marker = _venue_with_accomodation_markers[i];
            showHideMarker(marker);
        }
    }
    
    function showHideEquestrianMarkers() {
        var marker;
        for(var i=0; i<_equestrian_markers.length; i++)
        {
            marker = _equestrian_markers[i];
            showHideMarker(marker);
        }
    }
    
    function showHideGalaMarkers() {
        var marker;
        for(var i=0; i<_gala_venue_markers.length; i++)
        {
            marker = _gala_venue_markers[i];
            showHideMarker(marker);
        }
    }
    
    function showHideAccomodationOnlyMarkers() {
        var marker;
        for(var i=0; i<_accomodation_only_markers.length; i++)
        {
            marker = _accomodation_only_markers[i];
            showHideMarker(marker);
        }
    }
    
    function showHideRestaurantMarkers() {
        var marker;
        for(var i=0; i<_restaurant_markers.length; i++)
        {
            marker = _restaurant_markers[i];
            showHideMarker(marker);
        }
    }
    
    function showHideSpaWellnessMarkers() {
        var marker;
        for(var i=0; i<_spa_wellness_markers.length; i++)
        {
            marker = _spa_wellness_markers[i];
            showHideMarker(marker);
        }
    }
    
    function showHideGolfCourseMarkers() {
        var marker;
        for(var i=0; i<_golf_course_markers.length; i++)
        {
            marker = _golf_course_markers[i];
            showHideMarker(marker);
        }
    }
    
    function showHideShoppingAreaMarkers() {
        var marker;
        for(var i=0; i<_shopping_area_markers.length; i++)
        {
            marker = _shopping_area_markers[i];
            showHideMarker(marker);
        }
    }
