$(document).ready(function(){
  var todays_date = new Date();
  var picked_date = todays_date.getFullYear() + "-" + (todays_date.getMonth() + 1) + "-" + todays_date.getDate() + "%20" + todays_date.getHours() + ":" + todays_date.getMinutes() + ":" + todays_date.getSeconds();
  
  if (GBrowserIsCompatible()) {
    var goog_map = new GMap2(document.getElementById("google-map"));
    goog_map.setMapType(G_SATELLITE_MAP);
    goog_map.setCenter(new GLatLng(61.18562468142281, -25.83984375), 3);
    goog_map.addControl(new GLargeMapControl());
    goog_map.addControl(new GMapTypeControl());
    goog_map.addMapType(G_SATELLITE_3D_MAP);
    
    $("a.earth").click(function(){
      $("#map-holder li a").removeClass("selected");
      $(this).addClass("selected");
      goog_map.setMapType(G_SATELLITE_3D_MAP);
      return false;
    });
    $("a.live-map").click(function(){
      $("#map-holder li a").removeClass("selected");
      $(this).addClass("selected");
      goog_map.setMapType(G_SATELLITE_MAP);
      return false;
    });

    var geoXml;
    
    function loadOverlay(birdids, zoom, lat, long, max_date) {
      
      var testlatlong = goog_map.getCurrentMapType().getProjection().fromLatLngToPixel(new GLatLng(180,90),goog_map.getZoom());
      var heights = testlatlong.y / goog_map.getSize().height;
      var widths = testlatlong.x / goog_map.getSize().width;
      var visibleWidthInDegrees = 300 / widths;
      var visibleHeightInDegrees = 75 / heights;
      
      //alert(visibleWidthInDegrees + " , " + visibleHeightInDegrees);
      
      var query_string = "http://www.wwt.org.uk/whooper/bird-data.kml?";
      query_string += "birdid=" + birdids;
      query_string += "&lat=" + lat;
      query_string += "&long=" + long;
      query_string += "&zoom=" + zoom;
      query_string += "&visible_width=" + visibleWidthInDegrees;
      query_string += "&visible_height=" + visibleHeightInDegrees;
      query_string += "&max_date=" + max_date;
      //alert(query_string);
      var geoXml2 = new GGeoXml(query_string);
      
      var overlayLoadedEvent = GEvent.addListener(geoXml2, "load", function(){
        GEvent.removeListener(overlayLoadedEvent); //only do all this once on load of the kml file
        goog_map.addOverlay(geoXml2);
        
        var overlayDisplayedEvent = GEvent.addListener(geoXml2, "load", function(){
          GEvent.removeListener(overlayDisplayedEvent); //only do this once the overlay has been displayed, to prevent flicker effect
          if (typeof(geoXml) != 'undefined') {
            goog_map.removeOverlay(geoXml);
          }
          geoXml = geoXml2;
        });
        
      });
    }
    
    loadOverlay(global_bird_ids,3,54.085173,-0.263672,picked_date);
    
    GEvent.addListener(goog_map, "zoomend", function(oldLevel, newLevel) {
      loadOverlay(global_bird_ids, newLevel, goog_map.getCenter().lat(), goog_map.getCenter().lng(),picked_date);
    });
    
    /*GEvent.addListener(goog_map, "dragend", function(){
      //add intelligence to only reload when they move out of bounds
      //loadOverlay(global_bird_ids, goog_map.getZoom(), goog_map.getCenter().lat(), goog_map.getCenter().lng(),picked_date);
    });*/

    GEvent.addListener(goog_map, "maptypechanged", function(){
      $("#map-holder li a").removeClass("selected");
      if(goog_map.getCurrentMapType() == G_SATELLITE_3D_MAP){
        $("#map-holder li a.earth").addClass("selected");
      }else{
        $("#map-holder li a.live-map").addClass("selected");
      }
    });
  }
});
