var localSearch = new GlocalSearch();

function load_map()
{
	// Expects eithter postcode to be set, or x_lat and x_long to be already set
	if (typeof magnif   == 'undefined') magnif = 16;
	if (typeof postcode != 'undefined')
	{
		usePointFromPostcode(postcode, function(point)
			{
				var x_lat = point.lat();
				var y_long = point.lng();
				load_map_from_lat_long(x_lat, y_long, magnif);
			}
		);
	}
	else
	{
		load_map_from_lat_long(x_lat, y_long, magnif);
	}
}

function usePointFromPostcode(postcode, callbackFunction) {
	
	localSearch.setSearchCompleteCallback(null, 
		function()
		{
			if (localSearch.results[0])
			{		
				var resultLat = localSearch.results[0].lat;
				var resultLng = localSearch.results[0].lng;
				var point = new GLatLng(resultLat,resultLng);
				callbackFunction(point);
			}
			else
			{
				alert('Postcode not found!');
			}
		}
	);	
	localSearch.execute(postcode + ', UK');
}

function load_map_from_lat_long(x_lat, y_long, magnif)
{
	if (GBrowserIsCompatible())
	{
		var map = new GMap2(document.getElementById('map'));
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		map.setCenter(new GLatLng(x_lat, y_long), magnif, G_NORMAL_MAP);

		// Highlight JMP office
		var office = new GMarker(new GLatLng(x_lat, y_long));
		GEvent.addListener(office, 'click', function()
			{
				office.openInfoWindowHtml("<p>John McAslan is here</p>");
			}
		);
		map.addOverlay(office);
	}
}