     //<![CDATA[

	//map.js
	//Copyright 2008 Evangelical Association of Reformed and Congregational Christian Churches
	//Updated 7-20-2009
	
    var map = null;
    var geocoder = null;
	var baseIcon = null;

	function loadGMap() {
		if (GBrowserIsCompatible()) {
			geocoder = new GClientGeocoder();
			map = new GMap2(document.getElementById('map_canvas'));
			map.addControl(new GLargeMapControl());
			map.addControl(new GMapTypeControl());
			map.setCenter(new GLatLng(40, -100), 4);
			
			var sidebar = document.getElementById('map_sidebar');
			sidebar.innerHTML = 'Enter an address and click Search.';

			baseIcon = new GIcon(G_DEFAULT_ICON);
		    //baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
		    baseIcon.iconSize = new GSize(32, 32);
		    baseIcon.shadowSize = new GSize(49, 32);
		    baseIcon.iconAnchor = new GPoint(16, 16);
		    baseIcon.infoWindowAnchor = new GPoint(23, 9);
		}
	}

	function searchLocations() {
		var sidebar = document.getElementById('map_sidebar');
		sidebar.innerHTML = 'Searching...';

		var address = document.getElementById('addressInput').value;
		if (geocoder) {
			geocoder.getLatLng(
				address,
				function(latlng) {
					if (!latlng) {
				 		sidebar.innerHTML = address + ' not found.';
						alert(address + ' not found');
					} else {
						searchLocationsNear(latlng);
					}
				}
			);
		}
	}

	function searchLocationsNear(center) {
		var radius = document.getElementById('radiusSelect').value;
		var searchUrl = 'search.php?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=' + radius;

		GDownloadUrl(
			searchUrl, 
			function(data) {
				var xml = GXml.parse(data);
				var markers = xml.documentElement.getElementsByTagName('marker');
				map.clearOverlays();
	
				var sidebar = document.getElementById('map_sidebar');
				sidebar.innerHTML = '';
				if (markers.length == 0) {
					sidebar.innerHTML = 'No results found.';
					map.setCenter(new GLatLng(40, -100), 4);
					return;
				}
	
				var bounds = new GLatLngBounds();
				
				// step through each result and add a marker for it
				for (var i = 0; i < markers.length; i++) {
					var thisMarkerXML = markers[i];
					var point = new GLatLng(parseFloat(thisMarkerXML.getAttribute('lat')),
						parseFloat(thisMarkerXML.getAttribute('lng')));
					
					var marker = createMarker(point, thisMarkerXML);
					map.addOverlay(marker);
					
					var distance = parseFloat(thisMarkerXML.getAttribute('distance'));
					var sidebarEntry = createSidebarEntry(marker, distance, thisMarkerXML);
					sidebar.appendChild(sidebarEntry);
					bounds.extend(point);
				}
				map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
			}
		);
	}

	function getMarkerHTML(markerXML) {
		var html = '';
		var church = markerXML.getAttribute('church');
		var pastor = markerXML.getAttribute('pastor');
		
		if (markerXML.getAttribute('image') != "") html += '<img src="http://www.evangelicalassociation.org/maps/images/image' + markerXML.getAttribute('image') + '.jpg" align="right">';
		
		if (church == "") {
			html += '<b>' + pastor + '</b> <br /> <br />';
		} else {
			html += '<b>' + church + '</b> <br /> &nbsp;&nbsp;&nbsp;<i>' + pastor + '</i> <br /> <br />';
		}
		
		html += markerXML.getAttribute('address') + '<br />';
		html += markerXML.getAttribute('city') + ', ';
		html += markerXML.getAttribute('state') + ' ';
		html += markerXML.getAttribute('zip') + '<br /><br />';
		if (markerXML.getAttribute('phone') != "") html += 'Phone: ' + markerXML.getAttribute('phone') + '<br />';
		if (markerXML.getAttribute('email') != "") html += 'Email: ' + markerXML.getAttribute('email') + '<br />';
		if (markerXML.getAttribute('website') != "") html += 'Website: <a href="' + markerXML.getAttribute('website') + '" target="_blank">' + markerXML.getAttribute('website') + '</a><br />';
		if (markerXML.getAttribute('comments') != "") html += '<br />' + markerXML.getAttribute('comments');
		
		return html;
	}
	
	// Creates a marker whose info window displays the letter corresponding
	// to the given index.
	function createMarker(point, markerXML) {
		// Create a lettered icon for this point using our icon class
		var thisIcon = new GIcon(baseIcon);
		if (markerXML.getAttribute('icon') == "1") {
			thisIcon.image = "http://www.evangelicalassociation.org/noncms/maps/mapicons/church_icon.png";
			thisIcon.shadow = "http://www.evangelicalassociation.org/noncms/maps/mapicons/shadow-church_icon.png";
		}
		if (markerXML.getAttribute('icon') == "2") {
			thisIcon.image = "http://www.evangelicalassociation.org/noncms/maps/mapicons/dot_icon.png";
			thisIcon.shadow = "http://www.evangelicalassociation.org/noncms/maps/mapicons/shadow-dot_icon.png";
		}
		
		// Set up our GMarkerOptions object
		markerOptions = { icon:thisIcon };
		var marker = new GMarker(point, markerOptions);
		
		GEvent.addListener(marker, "click", function() {
			marker.openInfoWindowHtml(getMarkerHTML(markerXML));
		});
		return marker;
	}

	function createSidebarEntry(marker, distance, markerXML) {
		var div = document.createElement('div');
		
		var html = '';
		var church = markerXML.getAttribute('church');
		var pastor = markerXML.getAttribute('pastor');
		
		if (church == "") {
			html = '<b>' + pastor + '</b> <br />';
		} else {
			html = '<b>' + church + '</b> <br /> &nbsp;&nbsp;&nbsp;' + pastor + ' <br />';
		}
		
		html += markerXML.getAttribute('city') + ', ';
		html += markerXML.getAttribute('state') + '<br />';
		html += 'Distance: ' + distance.toFixed(1) + ' miles';

		div.innerHTML = html;
		div.style.cursor = 'pointer';
		div.style.marginBottom = '5px'; 
		GEvent.addDomListener(div, 'click', function() {
			GEvent.trigger(marker, 'click');
		});
		GEvent.addDomListener(div, 'mouseover', function() {
			div.style.backgroundColor = '#eee';
		});
		GEvent.addDomListener(div, 'mouseout', function() {
			div.style.backgroundColor = '#fff';
		});
		return div;
	}

    //]]>
