// Javacript document (UTF-8)
// www.experian.co.uk/consumer/..../form.js
// Author: watusi.co.uk
// Version: 4/10/08

// Form validation messages corresponding to field names of invalid values
	var msgEmail = 		"Please provide a valid email address e.g. name@example.org";
	var msgPhone = 		"Please provide a valid phone number e.g. 01159410888";
	var msgQuestion = 	"Please enter your question!";
	var msgMessage = 	"Please enter your message!";
	var msgName = 		"Please enter your full name";
	var msgFirstName = 	"Please enter your first name";
	var msgLastName = 	"Please enter your last name";
	var msgOrg = 		"Please enter your organisation/company name";
	var msgRegion = 	"Please enter your town or region";
	var msgAddress = 	"Please enter your full address";	
	var msgPostcode = 	"Please provide a valid UK postcode e.g. TW9 1AJ ";

// function to test form field value against regular expression, and alert user if test fails
function checkValid(ob,msg,regex){ 
  if (!ob) { return true; } // no objections if field doesn't exist anyway
  if (regex.test(ob.value)) return true; else { alert(msg); ob.focus(); return false; }
}

// function to test any two values are not same (or not empty for example) and alert message if so 
function checkNotValue(ob,val,msg){ 
  if (!ob) { return true; } // no objections if field doesn't exist anyway
  if ((ob)&&(ob.value!=val)) return true; else { alert(msg); ob.focus(); return false; }
}

// Form values must satisfy these tests (else return false)
function checkForm(form){
	return ( 
		checkValid(form.name,msgName,/([A-Za-zЁ-өÀ-əẀ-ỹ]{2,})/) // full name contains letters
		&&checkValid(form.firstname,msgFirstName,/([A-Za-zЁ-өÀ-əẀ-ỹ]{1,})/) // first name contains a letter
		&&checkValid(form.lastname,msgLastName,/([A-Za-zЁ-өÀ-əẀ-ỹ]{2,})/) // last name contains letters
		&&checkValid(form.organisation,msgOrg,/([A-Za-zЁ-өÀ-əẀ-ỹ]{2,})/) // organisation contains letters 
		&&checkValid(form.region,msgRegion,/([A-Za-zЁ-өÀ-əẀ-ỹ]{2,})/) // region contains letters 
		&&checkValid(form.address,msgAddress,/([A-Za-zЁ-өÀ-əẀ-ỹ\s]{10,})/) // address contains 10+ letters/spaces
		&&checkValid(form.postcode,msgPostcode,/(GIR 0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW])\s?[0-9][ABD-HJLNP-UW-Z]{2})/i) // postcode is valid
		&&checkValid(form.phone,msgPhone,/([\s0-9 -]{10,})/) // phone number contains 10+ digits and/or dashes
		&&checkValid(form.email,msgEmail,/([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)/) // email is valid
		&&checkValid(form.question,msgQuestion,/([A-Za-zЁ-өÀ-əẀ-ỹ\s]{5,})/) // question contains 5+ letters/spaces
		&&checkValid(form.message,msgMessage,/([A-Za-zЁ-өÀ-əẀ-ỹ\s]{5,})/) // message contains 5+ letters/spaces
		//&&(false) // dont submit
	);
}