// Validatie nieuwsbrief formulier
function valideerNieuwsbriefFormulier(form) {
	var validatieString = valideerAlfa(form.voornaam, 2);
	validatieString += valideerAlfa(form.achternaam, 2);
	validatieString += valideerEmail(form.email);
	
	if(validatieString.length == 0)
		return true;
	else {
		document.getElementById('formulier_bericht').style.display = '';
		return false;
	}
}

// Validatie gastenboek formulier
function valideerGastenboekFormulier(form) {
	var validatieString = valideerAlfa(form.naam, 2);
	validatieString += valideerLengte(form.bericht, 10);
	
	if(validatieString.length == 0)
		return true;
	else {
		document.getElementById('formulier_bericht').style.display = '';
		return false;
	}
}

// Validatie contactformulier
function valideerContactFormulier(form) {
	var validatieString = valideerAlfa(form.naam, 2);
	validatieString += valideerEmail(form.email);
	validatieString += valideerLengte(form.bericht, 10);
	
	if(validatieString.length == 0)
		return true;
	else {
		document.getElementById('formulier_bericht').style.display = '';
		return false;
	}
}

// Validatie reserverings formulier
function valideerReserveringsFormulier(form) {
	var validatieString = valideerAlfa(form.naam, 2);
	validatieString += valideerAlfaNumeriek(form.adres, 3);
	validatieString += valideerAlfa(form.woonplaats, 2);
	validatieString += valideerNumeriek(form.telefoon, 10);
	validatieString += valideerEmail(form.email);
	validatieString += valideerDatum(form.datum, (new Date()).getFullYear(), (new Date()).getFullYear() + 1);
	
	if(form.gezin_punter.checked)
		validatieString += valideerNumeriek(form.gezin_punter_aantal, 1);
	if(form.gezin_fluister.checked)
		validatieString += valideerNumeriek(form.gezin_fluister_aantal, 1);
	if(form.lunchpakket.checked)
		validatieString += valideerNumeriek(form.lunchpakket_aantal, 1);
	if(form.picknick.checked)
		validatieString += valideerNumeriek(form.picknick_aantal, 1);
	
	if(validatieString.length == 0)
		return true;
	else {
		document.getElementById('formulier_bericht').style.display = '';
		return false;
	}	
}

// Valideer string op lengte l
function valideerLengte(s, l) {
	if(s.value.length >= l)
		return normaliseer(s);
	else
		return markeer(s);
}

// Valideer string op alfabetische letters
function valideerAlfa(s, l) {
	if(l == 0 && s.value.length == 0)
		return normaliseer(s);
	
	var karakters = /^[a-z A-Z-\s]+$/;
	if(karakters.test(s.value) && s.value.length >= l)
		return normaliseer(s);
	else
		return markeer(s);
}

// Valideer string op numerieke tekens
function valideerNumeriek(s, l) {
	if(l == 0 && s.value.length == 0)
		return normaliseer(s);
		
	var karakters = /^\d{1,}$/;
	if(karakters.test(s.value) && s.value.length >= l)
		return normaliseer(s);
	else
		return markeer(s);
}

// Valideer string op alfabetische en/of numerieke tekens
function valideerAlfaNumeriek(s, l) {
	if(l == 0 && s.value.length == 0)
		return normaliseer(s);
		
	var karakters = /^[a-zA-Z 0-9-\s]+$/;
	if(karakters.test(s.value) && s.value.length >= l)
		return normaliseer(s);
	else
		return markeer(s);
}

function valideerDatum(s, min, max) {
	if(min == null)
		min = 1900;
	if(max == null)
		max = (new Date()).getFullYear();

	var karakters = /^(\d{1,2})[-](\d{1,2})[-](\d{4})$/;
	if(!karakters.test(s.value))
		return markeer(s);
	var result = s.value.match(karakters);
	var d = parseInt(result[1]);
	var m = parseInt(result[2]);
	var y = parseInt(result[3]);
	
	if(m < 1 || m > 12 || y < min || y > max)
		return markeer(s);
	if(m == 2)
		var days = ((y % 4) == 0) ? 29: 28;
	else if(m == 4 || m == 6 || m == 9 || m == 11)
		var days = 30;
	else 
		var days = 31;
	
	if(d >= 1 && d <= days)
		return normaliseer(s);
	else
		return markeer(s);
}

// Validatie tijd
function valideerTijd(s) {
	var karakters = /^(\d{1,2})[:](\d{1,2})$/;
	if(!karakters.test(s.value))
		return markeer(s);
	
	var result = s.value.match(karakters);
	var h = parseInt(result[0]);
	var m = parseInt(result[2]);
	
	if(h < 0 || h > 23 || m < 0 || m > 59)
		return markeer(s);
	else
		return normaliseer(s);
}

// Valideer string op email
function valideerEmail(s) {
	var karakters = /^[^@]+@[^@.]+\.[^@]*\w\w$/;
	if(karakters.test(s.value))
		return normaliseer(s);
	else
		return markeer(s);
}

// Markeer element op foute invoer
function markeer(s) {
	s.style.borderColor = '#ff0000';
	return false;
}

// Normaliseer element
function normaliseer(s) {
	s.style.borderColor = '#4480b2';
	return "";
}