		var geocoder = null;
		var map = null;
		var SADDR = "";
		var orgMarkers = null;
		var orgIds = null;
		// LAT: N(+)/S(-), LNG: W(-)/E(+) 
		var Center = new GLatLng(35, -88);
		
		function changeBodyClass(from, to) 
		{
			document.body.className = document.body.className.replace(from, to);
			return false;
		}
		
		var markerCount = 0;
		var overlayCount = 0;
		var addOverlayListener = null;
		function load() {
			if (GBrowserIsCompatible() == false)
		  	{
				return;
		  	}
			map = new GMap2(document.getElementById("map"));
			addOverlayListener = GEvent.addListener(map, "addoverlay", function(overlay) {
				overlayCount += 1;
				if (overlayCount > 4)
				{
					changeBodyClass('loading', 'standby');
					GEvent.removeListener(addOverlayListener);
				}
			});
			
		    map.addControl(new GLargeMapControl());
		    map.addControl(new GMapTypeControl());

			geocoder = new GClientGeocoder(false);

			// Download the data from getevents 
			var year = getQueryVariable("y");
			geUrl = "http://www.ffmsd.com/cal/getevents.php?orgs=y";
			if (year) geUrl += "&y=" + year;
			
			GDownloadUrl(geUrl, 
			function(data, responseCode) {
				var xml = GXml.parse(data);
				var events = xml.documentElement.getElementsByTagName("event");
				markerCount = events.length;
				orgMarkers = new Array(markerCount);
				orgIds     = new Array(markerCount);
			    for (var i = 0; i < markerCount; i++) 
				{
					setMarker(events[i], i);
			  	}

				map.setCenter(Center,3);
			});

	  	    var filters = document.orgfilter.getElementsByTagName('input');
			for ( var ff = 0; ff < filters.length; ff++)
			{
				filters[ff].checked = true;
			}
		}
		
		function setMarker(eventInfo, id)
		{
			var loc = eventInfo.getAttribute("loc");
			var clid = eventInfo.getAttribute("cid");
			var info = getEventInfoHtml(eventInfo);
		
			if (!geocoder) { return; }
	        geocoder.getLatLng(loc,
			function(point) 
			{
 			    if (point) 
				{
				  if (info == null)
				  {
				  	info = "<p>" + loc + "</p>";
				  }
				  
				  var marker = createMarkerWIcon(point, info, clid);
				  
				  orgIds[id]     = clid;
				  orgMarkers[id] = marker;
    	          map.addOverlay(marker);
            	}
          	});
		}
		
		function createMarkerWIcon(point, html, clid)
		{
			  var icon = new GIcon();
			  icon.image = "http://www.ffmsd.com/images/gmap/iconr" + clid + ".png";
			  //icon.image = "http://www.ffmsd.com/images/gmap/arrw05_76b.gif";
			  icon.shadow = "http://www.ffmsd.com/images/gmap/shadow.png";
			  icon.iconSize = new GSize(12, 20);
			  icon.shadowSize = new GSize(22, 20);
			  icon.iconAnchor = new GPoint(6, 20);
			  icon.infoWindowAnchor = new GPoint(5, 1);

			  var marker = new GMarker(point);
			  GEvent.addListener(marker, "click", function() 
			  {
					marker.openInfoWindowHtml(html);
			  });
			  
			  return marker;
		}
		
		function getEventInfoHtml(event)
		{
			var html = "<p>" + event.firstChild.nodeValue + "<br/>";
			html += event.getAttribute("loc") + "<br/>";
			html += event.getAttribute("date-str") + "<br/>";
			html += "<a target=\"_eventwebsite\" href=\"" + event.getAttribute("website") + "\">website</a>";
			return html;
		}

		function doFilter(checkbox, id)
		{
			for (var i = 0; i < orgIds.length; i++)
			{
				if (orgIds[i] == id)
				{
					var marker = orgMarkers[i];
					if (checkbox.checked == true)
					{
						map.addOverlay(marker);
					}
					else 
					{
						map.removeOverlay(marker);
					}
				}
			}
		}

