	// sets everything to safe to begin with
	var global_flag = 'safe';

	// create the warning element
	function warn(elem) {

		elem.style.background = '#FFB90F';

		if(elem.style.color == 'rgb(255, 185, 15)') {
			elem.style.color = 'white';
		}
			
		global_flag = 'warn';
		
	}

	// sets the global safe colour
	function safe(elem) {
		elem.style.background = 'white'; 
	}

	// validates that the entry is formatted as an e-mail address //
	function isEMailAddr(elem) {
	  
	  var str = elem.value;
		var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
		if (!str.match(re)) {
			warn(elem);
			return false;
		} else {
			safe(elem);
			return true;
		}
		
	}

	// validates that the entry is a Letter
	function isLetter(elem, empty) {

	  if(empty) {
		  if(!isNotEmpty(elem)) {
			return false;
		  }
	  }
	  
	  var str = elem.value;
		var re = /^[a-zA-z ]*$/
		str = str.toString();
		if (!str.match(re)) {
			warn(elem);
			return false;
		}
		safe(elem);
		return true;
	}

	// validates that the field value string has one or more characters in it
	function isNotEmpty(elem) {

	  var str = elem.value;
		var re = /.+/;
		if((!str.match(re)) || (elem.style.color == 'rgb(219, 219, 219)')) {
			warn(elem);
			return false;
		} else {
			safe(elem);
			return true;
		}

	}

	// validates that the entry is a positive or negative number
	function isNumber(elem, empty) {

	  if(empty) {
		  if(!isNotEmpty(elem)) {
			return false;
		  }
	  }

	  var str = elem.value;
		var re = /^[-]?\d*\.?\d*$/;
		str = str.toString();
		if (!str.match(re)) {
			warn(elem);
			return false;
		}
		safe(elem);
		return true;
	}

	// validate that the user made a selection other than default
	function isChosen(select) {
		if (select.selectedIndex == 0) {
			warn(elem);
			return false;
		} else {
			safe(elem);
			return true;
			}
	}

	// validates that the entry is ?? words long
	function isWordLen(elem, min, max, empty) {

		if(empty) {
			if(!isNotEmpty(elem)) {
				return false;
			}
		}
		
		var words = elem.value.split(/\S+/g).length;

		if (words<min || words>max){
			warn(elem);
			return false;
		
		} else {
			
			safe(elem);
			return true;
			
		}

	}

	// validates is a number
	function isNumberNew(elem, empty) {

	  if(empty) {
		  if(!isNotEmpty(elem)) {
			return false;
		  }
	  }

	  var str = elem.value;
		var re = /^(?!([^-]*-){5})(\+\d+)?\s*(\(\d+\))?[- \d]+$/;
		str = str.toString();
		if (!str.match(re)) {
			warn(elem);
			return false;
		}
		safe(elem);
		return true;
	}

	// validates checkbox is ticked
	function isCheckBox(elem) {

		var text = document.getElementById("alert");
		
		if(elem.checked == false){
		
			text.innerHTML = "You must accept the Terms and Conditions.";
			warn(elem);
			return false;
		
		} else {
			
			text.innerHTML = "";
			safe(elem);
			return true;
		
		}

	}

	// ################ //
	// BATCH VALIDATORS //
	// ################ //
	
	// single course //
	function validateSingleCourse(form) {
		
		global_flag = 'safe';
		
		name = isNotEmpty(form.name);
		email = isEMailAddr(form.email);
		company = isNotEmpty(form.company);
		num_staff = isNotEmpty(form.num_staff);
			
		if(global_flag == 'safe') {
			return true;
		} else {
			alert('To make an enquiry, \n' + '* please correct the highlighted fields');
			return false;
		}
		
	}	
	
	// multi course //
	function validateMultiCourse(form) {
		
		global_flag = 'safe';
		
		name = isNotEmpty(form.name);
		email = isEMailAddr(form.email);
		company = isNotEmpty(form.company);
		num_staff = isNotEmpty(form.num_staff);
			
		if(global_flag == 'safe') {
			return true;
		} else {
			alert('To make an enquiry, \n' + '* please correct the highlighted fields');
			return false;
		}
		
	}	
	
	// custom course //
	function validateCustomCourse(form) {
		
		global_flag = 'safe';
		
		name = isNotEmpty(form.name);
		email = isEMailAddr(form.email);
		company = isNotEmpty(form.company);
		num_staff = isNotEmpty(form.num_staff);
		course_developed = isNotEmpty(form.course_developed);
			
		if(global_flag == 'safe') {
			return true;
		} else {
			alert('To make an enquiry, \n' + '* please correct the highlighted fields');
			return false;
		}
		
	}		
	
	// sidebar //
	function validateSidebar(form) {
		
		global_flag = 'safe';
		
		name = isNotEmpty(form.name);
		email = isEMailAddr(form.email);
			
		if(global_flag == 'safe') {
			return true;
		} else {
			alert('To make an enquiry, \n' + '* please correct the highlighted fields');
			return false;
		}
		
	}		
	
	// custom //
	function validateCustom(form) {
		
		global_flag = 'safe';
		
		name = isNotEmpty(form.name);
		email = isEMailAddr(form.email);
		company = isNotEmpty(form.company);
		address = isNotEmpty(form.address);
		subject = isNotEmpty(form.subject);
		num_staff = isNotEmpty(form.num_staff);
		mesaage = isNotEmpty(form.message);
			
		if(global_flag == 'safe') {
			return true;
		} else {
			alert('To make an enquiry, \n' + '* please correct the highlighted fields');
			return false;
		}
		
	}	
	
	
	// contact us //
	function validateContactUs(form) {
		
		global_flag = 'safe';
		
		name = isNotEmpty(form.name);
		email = isEMailAddr(form.email);
		message = isNotEmpty(form.message);
			
		if(global_flag == 'safe') {
			return true;
		} else {
			alert('To make an enquiry, \n' + '* please correct the highlighted fields');
			return false;
		}		
		
	}	
	
	
	// Vacancy //
	function validateVacancy(form) {
		
		global_flag = 'safe';
		
		name = isNotEmpty(form.name);
		email = isEMailAddr(form.email);
		vacancy = isNotEmpty(form.vacancy);
			
		if(global_flag == 'safe') {
			return true;
		} else {
			alert('To submit your application for this vacancy, \n' + '* please correct the highlighted fields');
			return false;
		}		
		
	}
	
	
	// survey //
	function validateSurvey(form) {
		
		global_flag = 'safe';
		
		name = isNotEmpty(form.name);
		email = isEMailAddr(form.email);
		company = isNotEmpty(form.company);

			
		if(global_flag == 'safe') {
			return true;
		} else {
			alert('To make an enquiry, \n' + '* please correct the highlighted fields');
			return false;
		}
		
	}
