var shapes;
var markers = [];
var polys = [];
var markerCluster;
var map_saved_center;
var map_saved_zoom;
var sidebar_html;
function oneNeigh(i) {
  markerCluster.clearMarkers();
  map.clearOverlays();
  center = markers[i].getLatLng();
  bounds = polys[i].getBounds();
  map.setZoom(map.getBoundsZoomLevel(bounds)-1);
  map.panTo(center);
  map.addOverlay(polys[i]);
  map.addOverlay(markers[i]);
};
function loadshapes() {
 minlat = map.getBounds().getSouthWest().lat();
 minlon = map.getBounds().getSouthWest().lng();
 maxlat = map.getBounds().getNorthEast().lat();
 maxlon = map.getBounds().getNorthEast().lng();
 GDownloadUrl("/places/neighborhood_shapes", function(data) {
   sidebar_html = "<ul>\n";
   sidebar_html += "<li><a href=\"#\" onClick=\"displayShapes();return false;\"> -- RESET -- </a></li>\n";
   if (!data) { return false; };
   shapes = eval( '(' + data + ')' );
   shapes.each( function(s,i) {
     polys[i] = new GPolygon.fromEncoded({
      polylines: [ { points: s.poly.points, levels: s.poly.levels, color: "#0000ff",
        weight: 2, opacity: 0.5, zoomFactor: s.poly.zoomFactor, numLevels: s.poly.numLevels } ],
        fill: true, color: "#0000af", opacity: 0.15, outline: true });
     map.addOverlay(polys[i]);
     icon = new GIcon();
     icon.image = s.marker.image;
     icon.iconSize = new GSize(s.marker.width, s.marker.height);
     icon.iconAnchor = new GPoint(parseInt(s.marker.width/2),parseInt(s.marker.height/2));
     icon.shadowSize = new GSize(0, 0);
     markers[i] = new GMarker(new GLatLng(s.marker.latitude,s.marker.longitude), {icon: icon, draggable:false});
     sidebar_html += "<li><a href=\"#\" onClick=\"oneNeigh("+i+");return false;\">"+shapes[i].name+"</a></li>\n";
   });
   sidebar_html += "</ul>\n";
   markerCluster = new MarkerClusterer(map, markers, { gridSize: 30 } );
   $('neighsformap').update(sidebar_html);
   sprout_neighs();
   map_saved_center = map.getCenter();
   map_saved_zoom = map.getZoom();
 }, "minlat="+minlat+"&minlon="+minlon+"&maxlat="+maxlat+"&maxlon="+maxlon);
};
function displayShapes() {
  markerCluster.clearMarkers();
  map.clearOverlays();
  map.setCenter(map_saved_center,map_saved_zoom);
  polys.each( function(p,i) { map.addOverlay(p); } );
  markerCluster = new MarkerClusterer(map, markers, { gridSize: 30 } );
};
