// JavaScript Document
// Experian DA 
// Nick Lovibond 10/7/08

	
// function to test form field value against regular expression, and alert user if test fails
function checkValid(ob,msg,regex){ if (regex.test(ob.value)) return true; else { alert(msg); ob.focus(); return false; }}

// function to test any two values are not same and alert message if so 
function checkNotValue(ob,val,msg){ if (ob.value!=val) return true; else { alert(msg); ob.focus(); return false; }}
 
// function to test selected menu option is NOT specified value
function checkSelectNotValue(ob,val,msg){ if (ob.options[ob.selectedIndex].value!=val) return true; else { alert(msg); ob.focus(); return false; }}

// Form must satisfy these tests or cancel (return false)
function checkContactForm(form){
	return (
		checkSelectNotValue(form.subject, "", "Please select a subject") // subject selected
		&&checkSelectNotValue(form.title, "", "Please select your title") // title selected
		&&checkValid(form.firstName,"Please enter your first name",/([A-Za-z])/) // firstName contains letters
		&&checkValid(form.lastName,"Please enter your last name",/([A-Za-z]{2,})/) // lastName contains letters
		&&checkValid(form.jobTitle,"Please enter your job title",/([A-Za-z]{2,})/) // jobTitle contains letters
		&&checkValid(form.company,"Please enter your company name",/([A-Za-z])/) // company contains letters
		&&checkValid(form.address,"Please enter your address",/([A-Za-z]{5,})/) // address contains 5+ letters
		&&checkValid(form.postcode,"Please enter your postcode/zip",/([A-Za-z0-9]{4,})/) // zip valid
		&&checkValid(form.country,"Please enter your country name",/([A-Za-z]{2,})/) // country contains letters
		&&checkValid(form.email,"Please provide a valid email address",/([\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.phone,"Please provide a complete phone number",/(^\+?\d{8,14}$)/)// phone contains 8-14 digits and "+"?
		&&checkValid(form.enquiry,"Please make your enquiry",/([A-Za-z]{5,})/) // enquiry contains letters
	);
}

// Form must satisfy these tests or cancel (return false)
function checkContactFormComm(form){
	return (
		checkSelectNotValue(form.title, "", "Please select your title") // title selected
		&&checkValid(form.firstName,"Please enter your first name",/([A-Za-z])/) // firstName contains letters
		&&checkValid(form.lastName,"Please enter your last name",/([A-Za-z]{2,})/) // lastName contains letters
		&&checkValid(form.jobTitle,"Please enter your job title",/([A-Za-z]{2,})/) // jobTitle contains letters
		&&checkValid(form.company,"Please enter your company name",/([A-Za-z])/) // company contains letters
		&&checkValid(form.email,"Please provide a valid email address",/([\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.phone,"Please provide a complete phone number",/(^\+?\d{8,14}$)/)// phone contains 8-14 digits and "+"?
	);
}

// Form must satisfy these tests or cancel (return false)
function checkNewsletterForm(form){
	return (
		checkSelectNotValue(form.title, "", "Please select your title") // title selected
		&&checkValid(form.firstName,"Please enter your first name",/([A-Za-z])/) // firstName contains letters
		&&checkValid(form.lastName,"Please enter your last name",/([A-Za-z]{2,})/) // lastName contains letters
		&&checkValid(form.jobTitle,"Please enter your job title",/([A-Za-z]{2,})/) // jobTitle contains letters
		&&checkValid(form.company,"Please enter your company name",/([A-Za-z])/) // company contains letters
		&&checkValid(form.address,"Please enter your address",/([A-Za-z]{5,})/) // address contains 5+ letters
		&&checkValid(form.postcode,"Please enter your postcode/zip",/([A-Za-z0-9]{4,})/) // zip valid
		&&checkValid(form.country,"Please enter your country name",/([A-Za-z]{2,})/) // country contains letters
		&&checkValid(form.email,"Please provide a valid email address",/([\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.phone,"Please provide a complete phone number",/(^\+?\d{8,14}$)/)// phone contains 8-14 digits and "+"?
	);
}

// Form must satisfy these tests or cancel (return false)
function checkDocumentForm(form){
	return (
		checkValid(form.comments,"Please list the documents you require",/([A-Za-z0-9]{2,})/) // docs listed
		&&checkSelectNotValue(form.title, "", "Please select your title") // title selected
		&&checkValid(form.firstName,"Please enter your first name",/([A-Za-z])/) // firstName contains letters
		&&checkValid(form.lastName,"Please enter your last name",/([A-Za-z]{2,})/) // lastName contains letters
		&&checkValid(form.jobTitle,"Please enter your job title",/([A-Za-z]{2,})/) // jobTitle contains letters
		&&checkValid(form.company,"Please enter your company name",/([A-Za-z])/) // company contains letters
		&&checkValid(form.address,"Please enter your address",/([A-Za-z]{5,})/) // address contains 5+ letters
		&&checkValid(form.postcode,"Please enter your postcode/zip",/([A-Za-z0-9]{4,})/) // zip valid
		&&checkValid(form.country,"Please enter your country name",/([A-Za-z]{2,})/) // country contains letters
		&&checkValid(form.email,"Please provide a valid email address",/([\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.phone,"Please provide a complete phone number",/(^\+?\d{8,14}$)/)// phone contains 8-14 digits and "+"?
	);
}
