// JavaScript Document


function checkEmail(sEmail) {
	var filter=/^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/i;
	if (filter.test(sEmail)) {
		return true;
	} else {
		return false;
	}
}

function checkPostCode(toCheck) {
	// Permitted letters depend upon their position in the postcode.
	var alpha1 = "[abcdefghijklmnoprstuwyz]";                       // Character 1
	var alpha2 = "[abcdefghklmnopqrstuvwxy]";                       // Character 2
	var alpha3 = "[abcdefghjkstuw]";                                // Character 3
	var alpha4 = "[abehmnprvwxy]";                                  // Character 4
	var alpha5 = "[abdefghjlnpqrstuwxyz]";                          // Character 5
	
	// 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 (new RegExp ("^(" + alpha1 + "{1}" + alpha2 + "?[0-9]{1,2})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
	// Expression for postcodes: ANA NAA
	pcexp.push (new RegExp ("^(" + alpha1 + "{1}[0-9]{1}" + alpha3 + "{1})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
	// Expression for postcodes: AANA  NAA
	pcexp.push (new RegExp ("^(" + alpha1 + "{1}" + alpha2 + "?[0-9]{1}" + alpha4 +"{1})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
	// Exception for the special postcode GIR 0AA
	pcexp.push (/^(GIR)(\s*)(0AA)$/i);
	// Standard BFPO numbers
	pcexp.push (/^(bfpo)(\s*)([0-9]{1,4})$/i);
	// c/o BFPO numbers
	pcexp.push (/^(bfpo)(\s*)(c\/o\s*[0-9]{1,3})$/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 the types of post codes
	for ( var 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();
			// If it is a BFPO c/o type postcode, tidy up the "c/o" part
			postCode = postCode.replace (/C\/O\s*/,"c/o ");
			// 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 validate(sFields,oForm) {
//	if (document.forms[0].ajx_validated.value == "true") {
		var oElement, aFields = sFields.split(",")
		for (var n = 0 ; n < aFields.length ; n++) {
			oElement = eval("oForm."+aFields[n])
			switch (oElement.type) {
				case "text":
					if (oElement.value == "" && oElement.name.indexOf("Post_Code") < 0) {
						alert("Please check that you have filled in all mandatory fields correctly.");
						return false;
					} else if (!checkEmail(oElement.value) && oElement.name.indexOf("Email_Address") > -1) {
						alert("You have not entered a valid email address.");
						return false;
					}/* else if (!checkPostCode(oElement.value) && oElement.name.indexOf("Post_Code") > -1 && oElement.value.length > 0) {
						alert("You have not entered a valid post code.");
						return false;
					}*/
					break;
/*				case "password":
					var oPattern = /^[a-z\d]{6,10}$/i;
					if (oElement.value == "" && aFields[n] == "user_password") {
						alert("Please check that you have filled in all mandatory fields correctly");
						return false;
					} else if (oElement.form.user_password.value.length > 0 && !oPattern.test(oElement.form.user_password.value)) {
						alert("Your password must contain 6-10 characters using only letters and numbers.");
						return false;
					} else if (oElement.form.user_password.value != oElement.form.password_confirm.value) {
						alert("The password fields don't match. Please re-enter your password.");
						return false;
					}
					break;*/
				case "textarea":
					if (oElement.value == "") {
						alert("Please check that you have filled in all mandatory fields correctly");
						return false;
					}
					break;
				case "select-one":
					if (oElement.value == "") {
						alert("Please check that you have filled in all mandatory fields correctly");
						return false;
					}
					break;
/*				case "checkbox":
					if (!oElement.checked) {
						alert("You must have read the Data Protection Information and agreed to the Terms & Conditions to register.");
						return false;
					}
					break;*/
			}
		}
		return true;
/*	} else {
		alert("Some fields have errors. Please check the red error messages and re-submit.");
		return false;
	}*/
}
