var map = new GMap2(document.getElementById("map"));
var postcode='';
var localSearch = new GlocalSearch();

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);
			var marker = new GMarker(point);
			map.addOverlay(marker);
		}
		else
		{
			alert("Postcode not found!");
		}
	});
	
	localSearch.execute(postcode + ", UK");
}

function placeMarkerAtPoint(point)
{
	var marker = new GMarker(point);
	map.addOverlay(marker);
}

function setCenterToPoint(point)
{
	map.setCenter(point, 15);
}

function showPointLatLng(point)
{
	alert("Latitude: " + point.lat() + "\nLongitude: " + point.lng());
}

function mapLoad()
{
	if(GBrowserIsCompatible())
	{
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
	}
}

function addLoadEvent(func)
{
	var oldonload = window.onload;
	
	if(typeof window.onload != 'function')
	{
		window.onload = func;
	}
	else
	{
		window.onload = function()
		{
			oldonload();
			func();
		}
	}
}

function addUnLoadEvent(func)
{
	var oldonunload = window.onunload;
	
	if(typeof window.onunload != 'function')
	{
		window.onunload = func;
	}
	else
	{
		window.onunload = function()
		{
			oldonunload();
			func();
		}
	}
}

function runSetCenterToPoint()
{
	usePointFromPostcode(postcode, setCenterToPoint);
}

function runPlaceMarkerAtPoint()
{
	usePointFromPostcode(postcode, placeMarkerAtPoint);
}