//<![CDATA[
 
    var polys = [];
 //create polygons
function createPolygon(polygon, html) {
   var infoHtml = html;
   polys.push(polygon);
   GEvent.addListener(polygon, "click", function(overlaylatlng) {
   });
   return polygon;
}
 //draw a circle 1 mile radius
function drawCircle(point, radius, map) { 
//GLog.write("drawCircle("+point+","+radius+")");
var d2r = Math.PI / 180;   // degrees to radians 
var r2d = 180 / Math.PI;   // radians to degrees 
var earthsradius = 3963; // 3963 is the radius of the earth in miles
 
   var points = 32; 
 
   // find the raidus in lat/lon 
   var rlat = (radius / earthsradius) * r2d; 
   var rlng = rlat / Math.cos(point.lat() * d2r); 
 
   var extp = new Array(); 
   for (var i=0; i < points+1; i++) // one extra here makes sure we connect the 
   { 
      var theta = Math.PI * (i / (points/2)); 
      ex = point.lng() + (rlng * Math.cos(theta)); // center a + radius x * cos(theta) 
      ey = point.lat() + (rlat * Math.sin(theta)); // center b + radius y * sin(theta) 
      extp.push(new GPoint(ex, ey)); 
   } 
   return extp;
   }
 
 
var map;
var mapMarkers = [];
var mapHTMLS = [];
var geocoder;
 
//create new icon
var baseIcon = new GIcon();
baseIcon.image = 'markers/image.png';
baseIcon.printImage = 'markers/printImage.gif';
baseIcon.mozPrintImage = 'markers/mozPrintImage.gif';
baseIcon.iconSize = new GSize(27,34);
baseIcon.shadow = 'markers/shadow.png';
baseIcon.transparent = 'markers/transparent.png';
baseIcon.shadowSize = new GSize(44,34);
baseIcon.printShadow = 'markers/printShadow.gif';
baseIcon.iconAnchor = new GPoint(14,34);
baseIcon.infoWindowAnchor = new GPoint(14,0);
baseIcon.imageMap = [25,0,26,1,26,2,26,3,25,4,25,5,25,6,25,7,25,8,25,9,25,10,25,11,25,12,25,13,25,14,25,15,25,16,25,17,25,18,25,19,25,20,25,21,25,22,25,23,25,24,25,25,25,26,25,27,24,28,23,29,21,30,20,31,19,32,17,33,12,33,4,32,0,31,0,30,2,29,3,28,3,27,3,26,3,25,3,24,3,23,3,22,3,21,3,20,3,19,3,18,3,17,3,16,3,15,3,14,3,13,3,12,3,11,3,10,3,9,3,8,3,7,3,6,3,5,3,4,1,3,1,2,1,1,1,0];
 
// Change these parameters to customize map -- spreadsheet fields
var param_titleColumn = "whatisyourname";
var param_descriptionColumn = "contactinformation";
var param_descriptionColumn2 = "numberofhives";
var param_latColumn = "latitude";
var param_lngColumn = "longitude";
 
//loads map
function load() {  
  if (GBrowserIsCompatible()) {
	geocoder = new GClientGeocoder();//enables geocoder
    map = new GMap2(document.getElementById("map"), mapOptions);
    map.addControl(new GLargeMapControl3D());//3D control
    map.addControl(new GMapTypeControl());
    map.setCenter(new GLatLng( 40.257787,-111.359741), 2);//center point
	map.enableScrollWheelZoom();//wheel zoom
	map.addMapType(G_PHYSICAL_MAP);
	map.removeMapType(G_SATELLITE_MAP);
    getJSON();//gets data
	//search on the map
	var mapOptions = {
    googleBarOptions : {
      style : "new"
    }
  }
	map.enableGoogleBar();
  } else {
    alert("Sorry, the Google Maps API is not compatible with this browser");
  } 
}
 //locate bar
function showAddress(address) {
      geocoder.getLatLng(
        address,
        function(point) {
          if (!point) {
            alert(address + " not found");
          } else {
            map.clearOverlays();
            map.setCenter(point, 17);
            var marker = new GMarker(point, {draggable: true});
            GEvent.addListener(marker, "dragend", function() {
              var latlng = marker.getLatLng();
              document.getElementById("latbox").value = latlng.lat();
              document.getElementById("lonbox").value = latlng.lng();
            });
            var latlng = marker.getLatLng();
            document.getElementById("latbox").value = latlng.lat();
            document.getElementById("lonbox").value = latlng.lng();
            map.addOverlay(marker);
          }
        }
      );
    }
 
/**
 * Function called when marker on the map is clicked.
 * Opens an info window (bubble) above the marker.
 * @param {Number} markerNum Number of marker in global array
 */
function markerClicked(markerNum) {
  mapMarkers[markerNum].openInfoWindowHtml(mapHTMLS[markerNum]);
}
     
function loadMapJSON(json) {
  var bounds = new GLatLngBounds();	  
 
  for (var i = 0; i < json.feed.entry.length; i++) {
    var entry = json.feed.entry[i];
    if(entry["gsx$" + param_latColumn]) {
      var lat = parseFloat(entry["gsx$" + param_latColumn].$t);
      var lng = parseFloat(entry["gsx$" + param_lngColumn].$t);
      var point = new GLatLng(lat,lng);
      var html = "<div style='font-size:20px'>";
      html += "<strong>Beekeeper: " + entry["gsx$"+param_titleColumn].$t
              + "</strong>";
      var label = entry["gsx$"+param_titleColumn].$t;
      if(entry["gsx$" + param_descriptionColumn]) {
        html += "<br/> Contact Information: " + entry["gsx$"+param_descriptionColumn].$t + "<br/> Number of Hives: " + entry["gsx$"+param_descriptionColumn2].$t;
	 
      }
      html += "</div>";
 
      // create the marker and adds polygons
      var marker = createMarker(point,label,html);
      map.addOverlay(marker);
      var poly = createPolygon(new GPolygon(drawCircle(point,1.0,map), "#FFFC17", 4,0.5, "#FFFF00", 0.1), "1 mile radius");
      map.addOverlay(poly);
      mapMarkers.push(marker);
      mapHTMLS.push(html);
      bounds.extend(point); 
	  
    }
 
  }
 
  map.setZoom(map.getBoundsZoomLevel(bounds));
  map.setCenter(bounds.getCenter());
}
 
 
function createMarker(point, title, html) {
  var markerOpts = {};
  var nIcon = new GIcon(baseIcon);
	nIcon.imageOut = "/markers/image.png";
    nIcon.imageOver = "/markers/beehivebees.gif";
    nIcon.image = nIcon.imageOut;
  
 
  markerOpts.icon = nIcon;
  //markerOpts.title = title;	//hover over title	 
  var marker = new GMarker(point, markerOpts);
	
  GEvent.addListener(marker, "click", function() {
    marker.openInfoWindowHtml(html);
  });
  GEvent.addListener(marker, "mouseover", function() {
    marker.setImage(marker.getIcon().imageOver);
  });
  GEvent.addListener(marker, "mouseout", function() {
    marker.setImage(marker.getIcon().imageOut);
  });
  GEvent.addListener(marker, "infowindowopen", function() {
    marker.setImage(marker.getIcon().imageOver);
  });
  GEvent.addListener(marker, "infowindowclose", function() {
    marker.setImage(marker.getIcon().imageOut);
  });
  return marker;
}
 
function getJSON() {
 
  // Retrieve the JSON feed.
  var script = document.createElement('script');
 
  script.setAttribute('src', 'http://spreadsheets.google.com/feeds/list/0AmeO3tHOAofgdF9wYm5tOElGYjV2UEdsT0dDdjdmQmc/od6/public/values?alt=json-in-script&callback=loadMapJSON');
  script.setAttribute('id', 'jsonScript');
  script.setAttribute('type', 'text/javascript');
  document.documentElement.firstChild.appendChild(script);
}
 
setTimeout('load()', 500); 
 
//]]>
