//	Regular Expressions and Form testing functions
var charExp = /./
var letterExp = /[a-z]/i
var phoneExp =  /^\+?\d{10}\d*$/
var numberExp = /^\d+$/
//var emailExp = /^[a-z][a-z_0-9\.]*@[a-z_0-9\.]+\.[a-z\.]*$/i
var emailExp = /^[\w-]+(?:\.[\w-]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,7}$/
var creditCardExp = /^\d{19}$/
var longddmmmyyyyExp = /^(\d{1,2})-((Jan)|(Feb)|(Mar)|(Apr)|(May)|(Jun)|(Jul)|(Aug)|(Sep)|(Oct)|(Nov)|(Dec))\w*-(\d{4})$/i

function isValid(pattern, str) {
	return pattern.test(str)
}

function stripChars(pattern, str) {
	return str.replace(pattern,"")
}

function stripNonDigits(str) {
	return str.replace(/[^0-9]/g,"")
}

function beforeToday(testDate) {
	var today = new Date
	return testDate < today
}

// Call CheckForm like this: <form method="post" id="blahForm" name="blahForm" onsubmit="javascript:return checkForm(document.blahForm)" action="blah.asp">
function checkForm(form) {
	switch (form.name){
	case "alberta, Alberta.  Where you been so long?" :
		//Check the first name text box for an entry
		return false;
		if  (!letterExp.test(form.name.value)) {
			form.name.focus();
			alert("Please provide a name");
			return false;
		}
		else
			return true;
		break;
	case "ModisTestDrive" :
		//Check the first name text box for an entry
		if  (!letterExp.test(form.Forename.value)) {
			form.Forename.focus();
			alert("Please provide a first name");
			return false;
		}
		else if  (!letterExp.test(form.Surname.value)) {
			form.Surname.focus();
			alert("Please provide a surname");
			return false;
		}
		else if  (!letterExp.test(form.Company.value)) {
			form.Company.focus();
			alert("Please provide a company name");
			return false;
		}
		else if  (!letterExp.test(form.Address.value)) {
			form.Address.focus();
			alert("Please provide an address");
			return false;
		}
		else if  (!letterExp.test(form.City.value)) {
			form.City.focus();
			alert("Please provide a city or town name");
			return false;
		}
		else if  (!letterExp.test(form.PostCode.value)) {
			form.PostCode.focus();
			alert("Please provide a postcode name");
			return false;
		}
		else if  (!emailExp.test(form.Sender.value)) {
			form.Sender.focus();
			alert("Please provide a valid email address");
			return false;
		}
		else if  (!phoneExp.test(form.Telephone.value)) {
			form.Telephone.focus();
			alert("Please provide a telephone number - only numbers allowed");
			return false;
		}
		else if  (!form.TAndCAgree.checked) {
			form.TAndCAgree.focus();
			alert("Please agree that Sun Diagnostics may process your data on Sun's behalf in connection with this transaction");
			return false;
		}
		else
			return true;
		break;
	case "UKDownloadsForm" :
		//Check the first name text box for an entry
		if  (!letterExp.test(form.Forename.value)) {
			form.Forename.focus();
			alert("Please provide a first name");
			return false;
		}
		else if  (!letterExp.test(form.Surname.value)) {
			form.Surname.focus();
			alert("Please provide a surname");
			return false;
		}
		else if  (!letterExp.test(form.Company.value)) {
			form.Company.focus();
			alert("Please provide a company name");
			return false;
		}
		else if  (!letterExp.test(form.Address.value)) {
			form.Address.focus();
			alert("Please provide an address");
			return false;
		}
		else if  (!letterExp.test(form.City.value)) {
			form.City.focus();
			alert("Please provide a city or town name");
			return false;
		}
		else if  (!letterExp.test(form.PostCode.value)) {
			form.PostCode.focus();
			alert("Please provide a postcode name");
			return false;
		}
		else if  (!emailExp.test(form.Sender.value)) {
			form.Sender.focus();
			alert("Please provide a valid email address");
			return false;
		}
		else if  (!phoneExp.test(form.Telephone.value)) {
			form.Telephone.focus();
			alert("Please provide a telephone number - only numbers allowed");
			return false;
		}
		else if  (!form.TAndCAgree.checked) {
			form.TAndCAgree.focus();
			alert("Please agree that Sun Diagnostics may process your data on Sun's behalf in connection with this transaction");
			return false;
		}
		else
			return true;
		break;

	default :
	}
	return true
}
//	End Regular Expressions and Form testing functions