function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}

var map;

function runCallBack() {
	if (localSearch.results[0]) {		
		var resultLat = localSearch.results[0].lat;
		var resultLng = localSearch.results[0].lng;
		var point = new GLatLng(resultLat,resultLng);
		callbackFunction(point, this.addID);
	} else{
		alert("Postcode not found! "+this.postcode);
	}
}

function usePointFromPostcode(postcode, callbackFunction) {
	callBack = 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{
			// Postcode not found!
		}
	}
	localSearch.setSearchCompleteCallback(null, callBack);
	localSearch.execute(postcode)
}

function placeMarkerAtPoint(point) {	
	var addrpnt = new GMarker(point, icon);
	map.addOverlay(addrpnt);
	map.setCenter(point, 12);
	MM_showHideLayers('map','','show');
}

function mapLoad(postcode) {
	map = new GMap2(document.getElementById("map"));
	localSearch = new GlocalSearch();
	var start = new GLatLng(52.816900, -2.086960);
 	map.setCenter(start, 3);
	//
	map.addControl(new GLargeMapControl());
 	map.addControl(new GMapTypeControl());
 	map.addControl(new GScaleControl()) ;
 	map.addControl(new GOverviewMapControl()) ;
	//
	icon = new GIcon();
	icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
	icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
	icon.iconSize = new GSize(12, 20);
	icon.shadowSize = new GSize(22, 20);
	icon.iconAnchor = new GPoint(6, 20);
	//
	usePointFromPostcode(postcode, placeMarkerAtPoint);
	
}

window.onunload = GUnload;