function validateForm(formName){
	var forms = document.getElementsByTagName('form');
	for(var i = 0; i < forms.length; i++){
		if(forms[i].name == 'submit'){
			var form = forms[i];
		}//end if
	}//end for
//	if(form.tagName != 'form'){
//		while(form.tagName != 'form'){
//			form = form.parentNode;
//		}//end while
//	}//end if
	
	var reason = "";
	
	reason += validateEmptyValue(form.voornaam);
	reason += validateEmptyValue(form.achternaam);
	reason += validateEmptyValue(form.straat);
	reason += validateNumeric(form.huisnummer);
	reason += validateEmptyValue(form.woonplaats);
	reason += validateZipCode(form.postcode);
	reason += validatePhone(form.telefoon);
	reason += validateEmail(form.email);
	
	if(reason == ""){
		//All fields filled out satisfactory.
		form.submit();
		return true;
	} else {
		//Not all fields were filled out satisfactory.
		alert("Nog niet alle velden zijn (correct) ingevuld!\n" + reason);
		return false;
	}//end if
	return true;
}//end function

function validateEmptyValue(field, text){
	var error = "";
	
	if(field.value.length == 0){
		field.style.border = '1px solid red';
		error = "Een verplicht veld is niet ingevuld!\n";
	} else {
		field.style.border = '1px solid #BBBBBB';
		error = "";
	}//end if
	return error;
}//end function

function trim(string){
	return string.replace(/^\s+|\s+$/, '');
}//end function

function validateEmail(field){
	var error = "";
	var trimmed = trim(field.value);//value of field with 1px solid #BBBBBBspace trimmed off
	var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
	var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
	
	if (field.value == ""){
		field.style.border = '1px solid red';
		error = "Je hebt geen emailadres opgegeven.\n";
	} else if(!emailFilter.test(trimmed)){//test email for illegal characters
		field.style.border = '1px solid red';
		error = "Het opgegeven emailadres is niet geldig.\n";
	} else if(field.value.match(illegalChars)){
		field.style.border = '1px solid red';
		error = "Het opgegeven emailadres is niet geldig.\n";
	} else {
		field.style.border = '1px solid #BBBBBB';
		field.value = trimmed;
	}//end if
	return error;
}//end function

function validatePhone(field){
	var error = "";
	var stripped = field.value.replace(/[\(\)\.\-\ ]/g, '');    
	
	if(field.value == ""){
		error = "Je hebt geen telefoonnummer opgegeven.\n";
		field.style.border = '1px solid red';
	} else if(isNaN(parseInt(stripped))){
		error = "Het telefoonnummer bevat ongeldige karakters.\n";
		field.style.border = '1px solid red';
	} else if(!(stripped.length == 10)) {
		error = "Het telefoonnummer is onjuist.\n";
		field.style.border = '1px solid red';
	} else {
		field.style.border = '1px solid #BBBBBB';
		field.value = stripped;
	}//end if
	return error;
}//end function

function validateNumeric(field){
	var error = "";
	
	if(field.value == ""){
		error = "Een verplicht veld is niet ingevuld!\n";
		field.style.border = '1px solid red';
	} else if(isNaN(parseInt(field.value))){
		error = "Je hebt een illegaal karakter gebruikt in een veld waar alleen getallen toegestaan zijn.\n";
		field.style.border = '1px solid red';
	} else {
		field.style.border = '1px solid #BBBBBB';
	}//end if
	return error;
}//end function

function validateZipCode(field){
	var error = "";
	var stripped = field.value.replace(/ /g, '');
	var zipCodeMatch = /^\d\d\d\d[A-Za-z][A-Za-z]$/;
	
	if(field.value == ""){
		error = "Je hebt geen postcode ingevuld.\n";
		field.style.border = '1px solid red';
	} else if(!stripped.match(zipCodeMatch)){
		error = "Je hebt geen geldige postcode ingevuld.\n";
		field.style.border = '1px solid red';
	} else {
		field.style.border = '1px solid #BBBBBB';
		field.value = stripped;
	}//end if
	return error;
}//end function
