$(function(){

function MarkersFromJSON(map, json_url){
  $.getJSON(json_url, function(locations){
      for (var l = 0; l <= locations.length - 1; l++){
       if (locations[l].location_latitude != null && locations[l].location_longitude != null) {
        latlng = new GLatLng(parseFloat(locations[l].location_latitude), parseFloat(locations[l].location_longitude));
        var marker = new GMarker(latlng);

        GEvent.addListener(marker, "click", markerCallback(marker, locations[l]));

        map.addOverlay(marker);
       };
      };
   });
   function markerCallback(marker, location) {
     return function() {  
       markerInfo(marker, location);  
     }; 
   };
   function markerInfo(marker, location) {
     marker.openInfoWindowHtml("<div class=\"map-info\"><div style=\"float: left;\"><img src=\"" + location.thumbnail + "\" /></div><div style=\"float:right; text-align: left;\">" + location.title + "</div></div>");
   };
};

if (GBrowserIsCompatible()) {
      var map = new GMap2(document.getElementById("quilt_trail_map"));
      var lat;
      var lng;
      var base_url = "http://" + location.hostname + "/";

      switch(window.location.pathname.split("/")[2]){
        case "boyle":
        lat = 37.66099365286694;
        lng = -84.81513977050781;
        MarkersFromJSON(map, base_url + "locations/boyle.json");
        break;
        case "lincoln":
        lat = 37.491204373237466;
        lng = -84.64828491210938;
        MarkersFromJSON(map, base_url + "locations/lincoln.json");
        break;
        case "garrard":
        lat = 37.678386041261184;
        lng = -84.53567504882812;
        MarkersFromJSON(map, base_url + "locations/garrard.json");
        break;
        case "jessamine":
        lat = 37.91170058826019;
        lng = -84.56451416015625;
        MarkersFromJSON(map, base_url + "locations/jessamine.json");
        break;
        case "casey":
        lat = 37.3319485736073;
        lng = -84.89822387695312;
        MarkersFromJSON(map, base_url + "locations/casey.json");
        break;
      }

      map.setCenter(new GLatLng(lat, lng), 10);
      map.addControl(new GSmallMapControl());    

      // iterate through each county
      for (var i = 0; i <= county_data.length - 1; i++)
      {
      
        // iterate through each polyline
        var count = county_data[i].polylines.info.count;
        for (var j = 1; j <= count; j++)
        {
          var key = "polyline" + j;
          var polylines = county_data[i].polylines[key];
          var points = [];

          // iterate through each polyline's point
          for (var p = 0; p < polylines.length; p++)
          {
            points.push( new GLatLng(parseFloat(polylines[p].lat), parseFloat(polylines[p].lng)) );
          }

          // add the points to the map
          var county_polygon = new GPolygon(points, '#ff0000', 2, 1, '#33FF00', .2);
          map.addOverlay(county_polygon); 

        }// end county polyline loop

      }// end county loop

    }// end GBrowserIsCompatible
}); // end jQuery DOM ready.
