var map;
var markers = [];
var mgr;
var infowindow = [];
var arptIcon;

function initialize() {
  if (google.maps.BrowserIsCompatible()) {
   
    var mapOpts = {googleBarOptions: 
      {resultList: document.getElementById("gbresults"),
        suppressInitialResultSelection: true,
        adsOptions: {
          adsafe: 'medium',
          channel: '7874091883', 
          client: 'pub-5275454312970767'
        }
      }
    };

    var start_lat = window.location.search.replace(/^\?(.*)\,(.*)$/, "$1");
    var start_lng = window.location.search.replace(/^\?(.*)\,(.*)$/, "$2");
    var center = new google.maps.LatLng(start_lat, start_lng);
    if ( ((/^\([N]/).test(center)) || !window.location.search) {
      center = new google.maps.LatLng(39.070379,-120.498047);
    }
 
    // Set up the map
    map = new google.maps.Map2(document.getElementById("map_canvas"), mapOpts);
    google.maps.Event.addListener(map, "load", function(){
      mgr = new MarkerManager(map);
      getMarkers();
    });
    map.addMapType(G_PHYSICAL_MAP);
    map.setCenter(center, 9, G_PHYSICAL_MAP);
    
    map.addControl(new google.maps.MenuMapTypeControl());
    map.addControl(new google.maps.LargeMapControl());
    map.addControl(new google.maps.ScaleControl(),
      new google.maps.ControlPosition(G_ANCHOR_BOTTOM_RIGHT, new google.maps.Size(15,15))
    );
    map.enableGoogleBar();
    
    // Set up arpt icon
    arptIcon = new google.maps.Icon();
    arptIcon.image = "/maps/images/acivil.gif";
    arptIcon.iconAnchor = new google.maps.Point(15, 15);
    arptIcon.infoWindowAnchor = arptIcon.iconAnchor;
    
    google.maps.Event.addListener(map, "moveend", function(){getMarkers();});
  }
}


function getMarkers() {

  // Params for JSON request
  var zoomLevel = map.getZoom();
  var cgi_param = 'bounds=' + map.getBounds() + '&zoom=' + zoomLevel;
  
  jQuery.getJSON("/maps/feed.cgi", cgi_param,
    function(json){
      jQuery.each(json, function(ident, arpt){

        // Skip the marker if it already exists.
        if (markers[ident]) {
          return 1;
        };

        // Create the marker and info window
        var markerOptions = {
          title: arpt.name,
          icon: arptIcon
        };
        markers[ident] = new google.maps.Marker(new google.maps.LatLng(arpt.lat, arpt.lng), markerOptions);
        var infoHtml = '<a href="/wad.cgi?id=' + ident + '">'
          + arpt.name + '</a>' +
          '<br>Latitude: ' + arpt.lat + '<br>Longitude: ' + arpt.lng;
        markers[ident].bindInfoWindowHtml(infoHtml);
        mgr.addMarker(markers[ident], arpt.min_zoom);
      });
    });
}

