
    var locations = {};
    var map = null;

    function initialize () {
      map = new GMap2(document.getElementById("map_canvas"));
      map.setCenter(new GLatLng(36.840065,-76.280479), 10);
 	 map.setUIToDefault();

      GDownloadUrl("xml/markerdata.xml", function(data) {
        var xml = GXml.parse(data);
        var markers = xml.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {
        	
          var name = markers[i].getAttribute("name");
          var address = markers[i].getAttribute("address");
          var url = markers[i].getAttribute("url");
          var linkname = markers[i].getAttribute("linkname");
          var text = markers[i].getAttribute("text");
          
          var latlng = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
                                  parseFloat(markers[i].getAttribute("lng")));
          var community = {latlng: latlng, name: name, address: address, url: url, linkname: linkname, text: text};
          var latlngHash = (latlng.lat().toFixed(6) + "" + latlng.lng().toFixed(6));
          latlngHash = latlngHash.replace(".","").replace(".", "").replace("-","");
          if (locations[latlngHash] == null) {
            locations[latlngHash] = []
          }
          locations[latlngHash].push(community);
        }
        for (var latlngHash in locations) {
          var communities = locations[latlngHash];
          if (communities.length > 1) {
            map.addOverlay(createClusteredMarker(communities));
          } else {
            map.addOverlay(createMarker(communities));
          }
         }
      });
    }

function createMarker (communities) 
{
	var community = communities[0];
	var newIcon = MapIconMaker.createMarkerIcon({width: 32, height: 32, primaryColor: "#00ff00"});
	var marker = new GMarker(community.latlng, {icon: newIcon});
		var html = "<b>" + community.name + "</b> <br/><span class='mapclass'>" + community.address;
		html += "<br/><a href='" + community.url + "'>" + community.linkname + "</a>";
		html += "<br/>"+ community.text +"</span>";
		GEvent.addListener(marker, 'click', function() {
		marker.openInfoWindowHtml(html);
		});
	return marker;
}

function createClusteredMarker (communities) 
{
	var newIcon = MapIconMaker.createMarkerIcon({width: 44, height: 44, primaryColor: "#00ff00"});
	var marker = new GMarker(communities[0].latlng, {icon: newIcon});
	var html = "";
	
	for (var i = 0; i < communities.length; i++) {
		html += "<b>" + communities[i].name + "</b> <br/><span class='mapclass'>" + communities[i].address + "<br/>";
		html += "<br/><a href='" + communities[i].url + "'>" + communities[i].linkname + "</a>";
		html += "<br/>"+ communities[i].text +"</span>";
	}
	
	GEvent.addListener(marker, 'click', function() {
		marker.openInfoWindowHtml(html);
		});
	
	return marker;
}
	