//<![CDATA[
var map;
var geocoder;

function load() {
	if (GBrowserIsCompatible()) {
		var sidebar = document.getElementById('sidebar');
		geocoder = new GClientGeocoder();
		map = new GMap2(document.getElementById('map'));
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		map.setCenter(new GLatLng(54,-3), 5);
		sidebar.innerHTML = '';
		sidebar.innerHTML = 'Empty.';
	}
}

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 = 50;
	var searchUrl = 'locator_gc_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();

		var sidebar = document.getElementById('sidebar');
		sidebar.innerHTML = '';
		if (markers.length == 0) {
			sidebar.innerHTML = 'No results found.';
			map.setCenter(new GLatLng(40, -100), 4);
			return;
		}

		var bounds = new GLatLngBounds();
		for ( var i = 0; i < markers.length; i++) {
			var name = markers[i].getAttribute('name');
			var address = markers[i].getAttribute('address');
			var phone = markers[i].getAttribute('phone');
			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, name, address, phone);
			map.addOverlay(marker);
			var sidebarEntry = createSidebarEntry(marker, name, address,
					distance,phone);
			sidebar.appendChild(sidebarEntry);
			bounds.extend(point);
		}
		map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
	});
}

function createMarker(point, name, address, phone) {
	var marker = new GMarker(point);
	var html = '<img src="/skin/soauk/images/logo.gif"/> <br/> <b>' + name + '</b> <br/>' + address+' <br/><strong>Phone:</strong> '+phone;
	GEvent.addListener(marker, 'click', function() {
		marker.openInfoWindowHtml(html);
	});
	return marker;
}

function createSidebarEntry(marker, name, address, distance, phone) {
	var div = document.createElement('li');
	var html = '<div class="locatorName"><strong>' + name + '</strong> (' + distance.toFixed(1) + ')</div>'
			+ address+' <br/><strong>Phone:</strong> '+phone;
	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;
}
//]]>
