function validateFields() {
	// grab the fields in the form and the form itself
	var name = document.getElementById('name');
	var email = document.getElementById('email');
	var phone = document.getElementById('phone');
	var refer = document.getElementById('refer');
	var project = document.getElementById('project');

	var whiteSpace = /^[\s]+$/;
	var okToSend = true;
	
	// Check to see if a required field is blank or null. If so, set an error message.
	if ( name.value == '' || whiteSpace.test(name.value) ) {
		setError("Please enter your name / company");
		okToSend = false;
	} else if ( phone.value == '' || whiteSpace.test(phone.value) ) {
		setError("Please enter your telephone number");
		okToSend = false;
	} else if(!emailCheck(email.value)){
		okToSend = false;
	} else if ( refer.value == '' || whiteSpace.test(refer.value) ) {
		setError("Please tell us how you heard of us");
		okToSend = false;
	}

	// If any of the checks for required information failed, 	
	if(okToSend == true){
		sendEmail();
	}
}

function setError(message){
	// document.getElementById("feedback").innerHTML=message;
	alert(message);
}

/**
 * Sends the actual data in the form to the server via an AJAX request.
 * Change this method to extract whatever data you need to be taken from
 * the form and uploaded to the server.
**/
function sendEmail () {
	// grab the fields in the form and the form itself
	var pname = document.getElementById('name');
	var pemail = document.getElementById('email');
	var pphone = document.getElementById('phone');
	var prefer = document.getElementById('refer');
	var pproject = document.getElementById('project');

	// the page on the server that sends the email
	var page = "includes/contact.php?contact=true&xml=true";
	showContactTimer(); // quickly begin the load bar
	
	// convert (&, +, =) to string equivs. Needed so URL encoded POST won't choke.
	var name = cleanString(pname.value);
	var email = cleanString(pemail.value);
	var phone = cleanString(pphone.value);
	var refer = cleanString(prefer.value);
	var project = cleanString(pproject.value);

	// create the data that is to be sent
	var data = "name="+name+"&email="+email+"&phone="+phone+"&refer="+refer+"&project="+project;
	// put the data into the request to be sent to the server

	loadXMLPosDoc(page,data);
}

/**
 * Cleans a string so that it can go in a string
**/
function cleanString(str){
	str = str.replace(/&/g,"**am**");
	str = str.replace(/=/g,"**eq**");
	str = str.replace(/\+/g,"**pl**");
	return str;
}

function showContactTimer () {
	var loader = document.getElementById('feedback');
	loader.innerHTML = "<img src=\"sitefiles/sending.gif\">";
	sentTimer = setTimeout("hideContactTimer()",5000);
}

function hideContactTimer () {
	var loader = document.getElementById('feedback');
	loader.innerHTML = grabPosXML("confirmation");
}

function ajaxContact() {
	var frmEl = document.getElementById('contact');
	addEventForForms(frmEl, 'submit', validateFields, false);
	frmEl.onsubmit = function() { return false; }
}
addEventForForms(window, 'load',ajaxContact, false);