function validatePostCode(postcode) {
	var field = postcode.value;
	var index = 0;
	var temp = "";
	while((index = field.indexOf(" ")) != -1) {
		temp = field.substring(0, index) + field.substring(index+1);
		field = temp;
	}
	var pattern = /^[A-Z][A-Z][0-9][A-Z0-9]?[0-9][A-Z]?[A-Z]$/i;
	if (field == "") {
		postcode.select();
		alert("You must enter a valid postcode.\nPlease enter your full UK postcode.\ne.g. XX1 1YY");
		return false;
	}
	if (field.length > 9) {
		postcode.select();
		alert("Your postcode is too long.\nPlease enter your full UK postcode.\ne.g. XX1 1YY");
		return false;
	}
	var reversedField = reverseString(field);
	var postcodeArray = reversedField.match(pattern);
	if (postcodeArray == null) {
		postcode.select();
		alert("You must enter a valid postcode.\nPlease enter your full UK postcode.\ne.g. XX1 1YY");
		return false;
	}
	temp = field.substring(0, (field.length - 3)) + " " + field.substring((field.length - 3));
	postcode.value = temp;
	return true;
}
function validatePartialPostCode(postcode) {

	var index = 0;
	var temp = "";
	postcode = uppercase(postcode);
	while((index = postcode.indexOf(" ")) != -1) {
		temp = postcode.substring(0, index) + postcode.substring(index+1);
		postcode = temp;
	}
	var pattern1 = /^[A-Z][A-Z][0-9][A-Z0-9]?[0-9][A-Z]?[A-Z]$/i;
	var pattern2 = /^[A-Z][0-9][A-Z0-9]?[0-9][A-Z]?[A-Z]$/i;
	var pattern3 = /^[0-9][A-Z0-9]?[0-9][A-Z]?[A-Z]$/i;
	var pattern4 = /^[A-Z0-9]?[0-9][A-Z]?[A-Z]$/i;
	if (postcode == "") return false;
	if (postcode.length > 9) {
		alert("Your postcode is too long.\nPlease enter your full UK postcode.\ne.g. XX1 1YY");
		return false;
	}
	var reversedField = reverseString(postcode);
	var postcodeArray = reversedField.match(pattern1);
	if (postcodeArray == null) {
		postcodeArray = reversedField.match(pattern2);
		if (postcodeArray == null) {
			postcodeArray = reversedField.match(pattern3);
			if (postcodeArray == null) {
				postcodeArray = reversedField.match(pattern4);
				if (postcodeArray == null) {
					alert("You must enter a valid postcode.\nPlease enter your full UK postcode.\ne.g. XX1 1YY");
					return false;
				}	
			}
		}	
	}	
	return true;
}
function reverseString(field) {
	var i;
	var tempfield = new String(field);
	var temp = new Array(tempfield.length - 1);
	for (i=0; i < tempfield.length; i++) {
		temp[i] = tempfield.substr(i, 1);
	}
	temp.reverse();
	return temp.join("");
}
function checkRequiredRegInterest() {
	var check = false;
	var msg = "";
	for (var i = 0; i < document.reginterest.elements.length; i++) {
		if (document.reginterest.elements[i].value == "") {
		   for (var j=0; j < requiredControls.length; j++) {
			   if (requiredControls[j] == document.reginterest.elements[i].name) {
			   	  msg = msg + "\n" + requiredControlNames[j] + " is a required field.";
				  if(check==false){
				    document.reginterest.elements[i].focus();
				    check=true;
				  }
			   }
		   }
		}
	}
	if (msg == "") {
	   // all fields present, now check email address is OK
	   if (!emailCheck(document.reginterest.email.value)) {
	   		document.reginterest.email.focus();
	   		return false;
	   	} else {
	   		return true;
	   	}
	} else {
	  alert(msg);
	  return false;
	}
}
function checkPostcode(postcode) {
	postcode.value = uppercase(postcode.value);
	return validatePostCode(postcode);
}
function uppercase(field) {
	var uc = field.toUpperCase();
	return uc;
}
function uppercaseFirst(field) {
	var uc = field.substr(0,1).toUpperCase() + field.substr(1);
	return uc;
}
