function validateForm() {

	var errStr = "";
	
	// Name
	if (trim($('name').value) == "") {
		errStr += "Please enter your name\n";
	}
	
	// Email
	if (trim($('email').value) == "") {
		errStr += "Please enter your email address\n";
	} else if (checkEmail($('email').value) < 0) {
		errStr += "Please enter a valid email address\n";
				
	}
	
	// Message
	if (trim($('message').value) == "") {
		errStr += "Please enter a message\n";
	}
	
	
	
	if (errStr == "") {
		$('contact_form').submit();
	} else {
		alert(errStr);
	}
}

function trim(s) {
	var l=0; var r=s.length -1;
	while(l < s.length && s[l] == ' ') {
		l++;
	}
	while(r > l && s[r] == ' ') {
		r-=1;
	}
	return s.substring(l, r+1);
}


// implementation of the regular expression which defines a correct email address
// ^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([_a-zA-Z0-9-]+\.)+([a-zA-Z][a-zA-Z]+)$

function checkEmail(e) {
	
	var i, j, l = e.length;
	var foundPoint = false;

	function checkChars (s, i, l) {
		while (i < l && ("_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789").indexOf(s.charAt(i)) != -1){
			i++;
		}
		return i;
	}
	function checkFirstLevelDomainChars (s, i, l) {
		while (i < l && ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ").indexOf(s.charAt(i)) != -1) {
			i++;
		}
		return (i == l);
	}
	
	// every email starts with a string
	if ((i=checkChars(e, 0, l)) == 0) {
		return -1;
	}
	// init j
	j = i;

	// followed by an arbitrary number of ("." string) combinations
	while (i < l && e.charAt(i) == ".") {
		// skip the point
		i++;
		// if there are no chars, we have an error
		if ((j=checkChars(e, i, l)) == i) {
			return -2;
		}
		// else skip the chars
		i = j;
	}
	// then follows the magic @
	if (e.charAt(i) != "@"){
		return -3;
	}

	// followed by minimum one string point string
	// after the last point minimum 2 characters are allowed

	do {
		// skip the @ (j == i at the beginning, so it is like i++)
		i = j+1;
		// do we have more chars ?
		j = checkChars(e, i, l);
		if (j == i) {
			// no more chars found -> error
			return -4;
		} else if (j == e.length) {
			// emailaddress is finished, do we have a first level domain ?
			j -= i;
			// we have one if it is at least 2 long and consists of the correct characters
			if(foundPoint && j>=2 && checkFirstLevelDomainChars(e, i, l)){
				return 1
			} else {
				return -5
			}
		}
		// if we reach the end or don't have a point, we return an error
		foundPoint = (e.charAt(j) == ".");
	} while (i < l && foundPoint);
	return -6;
}