function trim(str)
{
  return str.replace(/^\s+|\s+$/g,"");
}

function validate_field(field,message)
{
	if (field.value == null || trim(field.value) == "")
	{
		alert(message);
		return false;
	}
	else
	{
		return true;
	}	
}

function validate_postcode(postcode)
{
	with(postcode)
	{
		if(!validate_field(postcode,"Please enter a postcode")) return false;
		regexp = /^[A-Z]{1,2}[0-9R][0-9A-Z]? [0-9][A-Z]{2}$/g;
		if (!regexp.test(trim(value).toUpperCase()))
		{
			alert("Please enter a valid postcode");
			return false;
		}
		return true;
	}
}

function validate_phone(phone)
{
	with(phone)
	{
		if(!validate_field(phone,"Please enter a contact phone number")) return false;
		regexp = /^([0-9]{11})$/g;
		if (!regexp.test(trim(value)))
		{
			alert("Please enter a valid phone number without spaces");
			return false;
		}
		return true;
	}
}

function validate_email(email)
{
	with(email)
	{
		if (!validate_field(email,"Please enter a contact email address")) return false;
		regexp = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/g;
		if (!regexp.test(trim(value)))
		{
			alert("Please input a valid email address");
			return false;
		}
		return true;
	}
}

function validate_course(course)
{
	with(course)
	{
		if (options[selectedIndex].value == 0)
		{
			alert("Please select a course");
			return false;
		}
		else return true;
	}
}

function checkform(form)
{
	with(form)
	{
		if(!validate_field(name,"Please enter your name"))
		{
			name.focus();
			return false;
		}
	
		if(!validate_field(address1,"Please enter a contact address"))
		{
			address1.focus();
			return false;
		}

		if(!validate_field(town,"Please enter your town or city"))
		{
			town.focus();
			return false;
		}

		if(!validate_postcode(postcode))
		{
			postcode.focus();
			return false;
		}

		if(!validate_phone(phone))
		{
			phone.focus();
			return false;
		}

		if(!validate_email(email))
		{
			email.focus();
			return false;
		}
		
		if(!validate_course(course))
		{
			return false;
		}
	}
	return true;
}
