function IsPostCodeValid(oPostCode)
{
  test = oPostCode.value;
  size = test.length
  test = test.toUpperCase(); //Change to uppercase
  while (test.slice(0,1) == " ") {
    //Strip leading spaces
    test = test.substr(1,size-1);size = test.length
  }
  while(test.slice(size-1,size)== " ") {
    //Strip trailing spaces
    test = test.substr(0,size-1);size = test.length
  }
  oPostCode.value = test; //write back to form field
  if (size < 6 || size > 8) { //Code length rule
    //alert(test + " is not a valid postcode - wrong length");
    alert('Please enter a valid postcode');
    return false;
  }
  if (!(isNaN(test.charAt(0)))) { //leftmost character must be alpha character rule
   //alert(test + " is not a valid postcode - cannot start with a number");
   alert('Please enter a valid postcode');
   return false;
  }
  if (isNaN(test.charAt(size-3))) { //first character of inward code must be numeric rule
   //alert(test + " is not a valid postcode - alpha character in wrong position");
   alert('Please enter a valid postcode');
   return false;
  }
  if (!(isNaN(test.charAt(size-2)))) { //second character of inward code must be alpha rule
   //alert(test + " is not a valid postcode - number in wrong position");
   alert('Please enter a valid postcode');
   return false;
  }
  if (!(isNaN(test.charAt(size-1)))) { //third character of inward code must be alpha rule
   //alert(test + " is not a valid postcode - number in wrong position");
   alert('Please enter a valid postcode');
   return false;
  }
  if (!(test.charAt(size-4) == " ")) {//space in position length-3 rule
   //alert(test + " is not a valid postcode - no space or space in wrong position");
   alert('Please enter a valid postcode');
   return false;
  }
  count1 = test.indexOf(" ");count2 = test.lastIndexOf(" ");
  if (count1 != count2) {//only one space rule
   //alert(test + " is not a valid postcode - only one space allowed");
   alert('Please enter a valid postcode');
   return false;
  }
  return true;
}
