function testContactForm() {
	// protect against html injection
	var reHtml = new RegExp(".*<|>.*");

	// disable send button after click
	var send = document.getElementById('send');
	send.disabled = true;

	// check name does not contain < or >
	var test = document.getElementById("name");
	if (test.value.length < 3) {
		alert('Please ensure your name is at least 3 characters long');
		test.style.border = 'solid 1px #ff0000';
		test.focus();
		send.disabled = false;
		return false;
	} else {
		test.style.border = 'solid 1px #464646';
	}
	
	if (reHtml.test(test.value)) {
		alert('Please ensure your name does not contain < or >');
		test.style.border = 'solid 1px #ff0000';
		test.focus();
		send.disabled = false;
		return false;
	} else {
		test.style.border = 'solid 1px #464646';
	}

	test = document.getElementById("email");
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (!filter.test(test.value)) {
		alert('Please ensure your email address is valid');
		test.style.border = 'solid 1px #ff0000';
		test.focus();
		send.disabled = false;
		return false;
	} else {
		test.style.border = 'solid 1px #464646';
	}

	test = document.getElementById("comments");
	if (test.value.length < 20) {
		alert('Please ensure your comments are at least 20 characters long');
		test.style.border = 'solid 1px #ff0000';
		test.focus();
		send.disabled = false;
		return false;
	} else {
		test.style.border = 'solid 1px #464646';
	}
	
	if (reHtml.test(test.value)) {
		alert('Please ensure your commets do not contain < or >');
		test.style.border = 'solid 1px #ff0000';
		test.focus();
		send.disabled = false;
		return false;
	} else {
		test.style.border = 'solid 1px #464646';
	}

	document.getElementById('sending').style.display = 'block';
	return true;
}
