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 placeMarkerAtPoint(point)
{
	var marker = new GMarker(point,icon);
	map.addOverlay(marker);
}

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

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

function initMap(point) {
	setCenterToPoint(point);
	placeMarkerAtPoint(point);
}

function mapLoad() {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map"));
		map.addControl(new GSmallMapControl());
		map.setCenter(new GLatLng(54.622978,-2.592773), 13, G_NORMAL_MAP);
		usePointFromPostcode('WN4 9DE',initMap);
	}
}

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 checkPostCode (toCheck) 
{
  // This array holds the regular expressions for the valid postcodes
  var pcexp = new Array ();

  // Expression for postcodes: AN NAA, ANN NAA, AAN NAA, and AANN NAA
  pcexp.push (/^([a-z]{1,2}[0-9]{1,2})(\s*)([0-9]{1}[abdefghijlnpqrstuwxyx][a-z])$/i);

  // Expression for postcodes: ANA NAA, and AANA  NAA
  pcexp.push (/^([a-z]{1,2}[0-9]{1}[a-z]{1})(\s*)([0-9]{1}[abdefghijlnpqrstuwxyx][a-z])$/i);

  // Exception for the special postcode GIR 0AA
  pcexp.push (/^(GIR)(\s*)(0AA)$/i);

  // Load up the string to check
  var postCode = toCheck;

  // Assume we're not going to find a valid postcode
  var valid = false;

  // Check the string against both post codes
  for (i=0; i<pcexp.length; i++) {
    if (pcexp[i].test(postCode)) {
      // The post code is valid - split the post code into component parts
      pcexp[i].exec(postCode);
 
      // Copy it back into the original string, converting it to uppercase and
      // inserting a space between the inward and outward codes
      postCode = RegExp.$1.toUpperCase() + " " + RegExp.$3.toUpperCase();
 
 	  // Load new postcode back into the form element
	  valid = true;

      // Remember that we have found that the code is valid and break from loop
      break;
    }
  }

  // Return with either the reformatted valid postcode or the original invalid 
  // postcode
  if (valid) {return postCode;} else return false;
}

function test_code () 
{
	var txtpc = document.getElementById('pc');

	if (checkPostCode (txtpc.value)) 
	{
		var reformedpc = checkPostCode (txtpc.value);
		txtpc.value = reformedpc;
		var gmstr = "http://maps.google.co.uk/maps?f=q&hl=en&q="+reformedpc.replace(" ", "+")+"+to+WN4+9DE&om=1";
		window.open(gmstr,"gmap");
	}
	else 
	{
		txtpc.focus();
		txtpc.select();
		alert('Please enter a valid postcode');
	}
}

function valBooking() {
	var bln_err = false;
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	var err_msg = 'There are problems with your enquiry:\n\n';
	
	if($('vname').value == '') {
		bln_err = true;
		err_msg+= '* Please enter your name\n';
	}
	
	if(!filter.test($('email').value) && $('tel').value == '' && $('mobile').value == '') {
		bln_err = true;
		err_msg+= '* Please enter your email, telephone or mobile number\n';
	}
	
	if($('date').value == '') {
		bln_err = true;
		err_msg+= '* Please select a date for your occasion\n';
	}
	
	if(bln_err == true) {
		alert(err_msg);
		return false;
	} else {
		return true;
	}
}

function showSendFriend() {
	$('light').style.display='block';
	$('fade').style.display='block';
}

function hideSendFriend() {
	$('light').style.display='none';
	$('fade').style.display='none';
}

function valSendFriend() {
	var bln_err = false;
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	var err_msg = 'There are problems with your message:\n\n';
	
	if($('sender').value == '') {
		bln_err = true;
		err_msg+= '* Please enter your name, maximum 10 characters\n';
	} else if($('sender').value.length > 10) {
		bln_err = true;
		err_msg+= '* Maximum 10 characters for your name\n';
	}
	
	if(!filter.test($('semail').value)) {
		bln_err = true;
		err_msg+= '* Please enter your email address\n';
	}
	
	if(!filter.test($('remail').value)) {
		bln_err = true;
		err_msg+= '* Please enter your friends email address\n';
	}
	
	if($('recip').value == '') {
		bln_err = true;
		err_msg+= '* Please enter your friends name, maximum 10 characters\n';
	} else if($('recip').value.length > 10) {
		bln_err = true;
		err_msg+= '* Maximum 10 characters for your friends name\n';
	}
	
	if($('captcha_code').value == '') {
		bln_err = true;
		err_msg+= '* Please enter the security code\n';
	}
	
	if(bln_err == true) {
		alert(err_msg);
		return false;
	} else {
		return true;
	}
}