$(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();
  var global_bird_ids = "65696,78373,78374,78375,78379,78382,89247,89248,89249,89250,89251,89252,89253,89254,89255,89256,89257,89258,89259,89260,89261,89262,89263,89264,89265,89266,89267,89268,89269,89270,89271,89272,89273,89274,89275,89276,89277,89278,89279,89280,89281,89282,89283,89284,89285,89286,89287,89288,89289,89290,89291,89292,189253,189274,989285";
  
  function resize_map(){
    var new_height = $(window).height() - 280;
    if(new_height < 360) new_height = 360;
    $("#google-map, #map-sidebar").css("height", new_height);
  }
  
  resize_map();
  $(window).resize(function(){
    resize_map();
    goog_map.checkResize();
  });
  
  $("#slider").slider({
    value: 100,
		min: 1,
		max: 100,
		step: 1,
		change: function(event, ui) {
		  var one_day=1000*60*60*24;
		  
      var earliest=new Date();
      earliest.setFullYear(2009,02,01);
		  var today=new Date();
		  
		  var total_days_in_scale = (today - earliest) / one_day;
		  
		  var day_to_display = Math.floor(total_days_in_scale * ui.value / 100) + 1;
      
      earliest.setDate(earliest.getDate() + day_to_display);
      
      picked_date = earliest.getFullYear() + "-" + (earliest.getMonth() + 1) + "-" + earliest.getDate() + "%20" + earliest.getHours() + ":" + earliest.getMinutes() + ":" + earliest.getSeconds();
      
		  loadOverlay(global_bird_ids, goog_map.getZoom(), goog_map.getCenter().lat(), goog_map.getCenter().lng(), picked_date);
		}
  });
  
  //$("input.bird-checkbox").attr("checked",false);
  var focalids = new Array(89255,89284,89270,89268,89259,89263,89281,89269,89276);
  for(i in focalids){
    //$("#" + focalids[i] + "_checkbox").attr("checked",true);
    $("#" + focalids[i] + "_checkbox").parent().remove().prependTo("#map-sidebar ul:first");
  }
  
  $("input.bird-checkbox").change(function(){
    global_bird_ids = "";
    $("input.bird-checkbox:checked").each(function(){
      global_bird_ids += this.value + ",";
    });
    global_bird_ids = global_bird_ids.slice(0, -1);
    loadOverlay(global_bird_ids, goog_map.getZoom(), goog_map.getCenter().lat(), goog_map.getCenter().lng(),picked_date);
  });
  $("input.all").change(function(){
    if($("input.bird-checkbox:checked").length == $("input.bird-checkbox").length){
      $("input.bird-checkbox").attr("checked",false);
      $(this).attr("checked",false);
    }else{
      $("input.bird-checkbox").attr("checked",true);
      $(this).attr("checked",true);
    }
    global_bird_ids = "";
    $("input.bird-checkbox:checked").each(function(){
      global_bird_ids += this.value + ",";
    });
    global_bird_ids = global_bird_ids.slice(0, -1);
    loadOverlay(global_bird_ids, goog_map.getZoom(), goog_map.getCenter().lat(), goog_map.getCenter().lng(),picked_date);
  });
  
  if (GBrowserIsCompatible()) {
    var goog_map = new GMap2(document.getElementById("google-map"));
    goog_map.setMapType(G_SATELLITE_MAP);
    goog_map.setCenter(new GLatLng(59.22093407615045, -8.525390625), 4);
    goog_map.addControl(new GLargeMapControl());
    goog_map.addControl(new GMapTypeControl());
    goog_map.addMapType(G_SATELLITE_3D_MAP);
    goog_map.enableScrollWheelZoom();
    
    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;
      var topleft = new GLatLng(goog_map.getCenter().lat() - Math.abs(visibleHeightInDegrees), goog_map.getCenter().lng() - Math.abs(visibleWidthInDegrees));
      var bottomright = new GLatLng(goog_map.getCenter().lat() + Math.abs(visibleHeightInDegrees), goog_map.getCenter().lng() + Math.abs(visibleWidthInDegrees));
      var polyline = new GPolyline([topleft,bottomright], "#ff0000", 10);
      goog_map.addOverlay(polyline);
      return;*/
      
      //display loading indicator
      
      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,4,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);
    });*/
  }
});