var map;
var geocoder;

function map() {
	if (GBrowserIsCompatible()) {
		geocoder = new GClientGeocoder();
		map = new GMap2(document.getElementById('map'));
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		map.setCenter(new GLatLng(51.04125898093458, -114.05525207519531), 7);
	}
}
 
function searchLocations() {
	var address = document.getElementById('addressInput').value;
	geocoder.getLatLng(address, function(latlng) {
		if (!latlng) {
			alert(address + ' not found');
		} else {
			searchLocationsNear(latlng);
		}
	});
}

function searchLocationsNear(center) {
	var radius = document.getElementById('radiusSelect').value;
	var searchUrl = '/_lib/search_gen_xml.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();
	
		if (markers.length == 0) {         
			map.setCenter(new GLatLng(51.04125898093458, -114.05525207519531), 7);
			return; 
		} 

		var bounds = new GLatLngBounds();
		
		for (var i = 0; i < markers.length; i++) {
			var address = markers[i].getAttribute('title');
			var postal = markers[i].getAttribute('address') + "<br />" + markers[i].getAttribute('postal');
			var distance = parseFloat(markers[i].getAttribute('distance'));
			var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
									parseFloat(markers[i].getAttribute('lng')));
			var marker = createMarker(point, address, postal);
			//marker.image = "http://maps.google.com/intl/en_us/mapfiles/ms/micons/blue-dot.png";
			
			map.addOverlay(marker);
			bounds.extend(point);
		}
		map.setCenter(bounds.getCenter());
	});
}

function createMarker(point, address, postal) {
	var marker = (new GMarker(point));
	var html = '<b>' + address + '</b><br /> ' + postal;
	GEvent.addListener(marker, 'click', function() {
		marker.openInfoWindowHtml(html);
	});
	return marker;
}
