/*
#  formulieren.js
#
#  v1.0 - 15/jun/2009 - S van Oekel - Initial version
#
#  (C) Copyright 2009 Medusa, Media Usage Advice B.V.
#  All rights reserved.
*/

function checkForm(e) {
	var form = jQuery('#formulier_' + formulier_id)[0];
	
	var validImageExtensions = ['jpg', 'jpeg', 'gif', 'png'];
	
	var ignoreTypes = [
		'100',
		'200',
		'300',
		'1400'
	];
	
	for (var v=0; v<velden.length; v++) {
		var veld = velden[v];
		var el = form['invoerveld_' + veld.veld_id];
		
		switch(veld.veldtype) {
			case '420':
				if (!el.value.match(/^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/) && el.value != "") {
					el.focus();
					alert("In het veld \"" + veld['veldnaam'] + "\" dient u een geldig e-mailadres in te vullen.");
					//Event.stop(e);
					e.preventDefault();
					return false;
				}
			break;
			
			case '600':
				if (el && el.value != "" && el.value.match(/[^0-9,\.]/)) {
					el.focus();
					alert("U kunt alleen numerieke waardes invoeren in het veld \"" + veld['veldnaam'] + "\".");
					//Event.stop(e);
					e.preventDefault();
					return false;
				}
			break;
			
			case '1200':
				var re = new RegExp("\\." + validImageExtensions.join("$|\\.") + "$", "i");
				if (!el.value.match(re) && el.value != "") {
					alert("U kunt in het veld \"" + veld['veldnaam'] + "\" alleen afbeeldingen uploaden.");
					//Event.stop(e);
					e.preventDefault();
					return false;
				}
			break;
			
			case '1500':
				var inputs = jQuery("input");
				
				for (var it=0; it < inputs.length; it++) {
					var id = inputs[it].name.split("_");
					
					if (id.length == 3 && id[0] == "invoerveld" && id[1] == veld['veld_id']) {
						if (inputs[it].value != '' && inputs[it].value.match(/[^0-9]/)) {
							inputs[it].focus();
							alert("U kunt alleen numerieke waardes invoeren in het veld \"" + veld['veldnaam'] + "\".");
							//Event.stop(e);
							e.preventDefault();
							return false;
						}
					}
				}
			break;
		}
		
		if (
			veld['verplicht'] == "1" &&
			ignoreTypes.indexOf(veld['veldtype']) == -1
		) {	
			if (!checkEmpty(veld['veld_id'], veld['veldtype'])) {
				alert("Het veld \"" + veld['veldnaam'] + "\" is niet ingevuld.");
				//Event.stop(e);
				e.preventDefault();
				return false;
			}
		}
	}
}

function checkEmpty(veld_id, veldtype) {
	var form = jQuery('#formulier_' + formulier_id)[0];
	
	var allesGoed = false;
	
	switch(veldtype) {
		case '400':
		case '420':
		case '440':
		case '500':
		case '600':
		case '1100':
		case '1600':
			allesGoed = waardeLeeg(form['invoerveld_' + veld_id], (veldtype == '600' ? true : false));
		break;
		
		case '700':
		case '800':
			var inputs = form.getElementsByTagName("input");
			
			var iterator = 0;
			var input = false;
			while (input = inputs[iterator]) {
				var re = new RegExp("^invoerveld_" + veld_id + "_\\d{1,}$");
				if (
					input.type == "checkbox" && 
					input.name.match(re) &&
					input.checked
				) allesGoed = true;
				iterator++;
			}
		break;
		
		case '900':
		case '1000':
			var inputs = jQuery(form['invoerveld_' + veld_id]);
			
			var iterator = 0;
			var input = false;
			while (input = inputs[iterator]) {
				if (
					input.checked
				) allesGoed = true;
				iterator++;
			}
		break;
		
		case '1200':
		case '1300':
			allesGoed = waardeLeeg(form['invoerveld_' + veld_id], false);
		break;
		
		// Aantallenveld
		case '1500':
			var inputs = jQuery("input");
			
			for (var it=0; it < inputs.length; it++) {
				var id = inputs[it].name.split("_");
				
				if (id.length == 3 && id[0] == "invoerveld" && id[1] == veld_id) {
					if (waardeLeeg(inputs[it], false)) allesGoed = true;
				}
			}
		break;
	}
	
	return allesGoed;
}

function waardeLeeg(el, is_numeric) {
	if (el) {
		if ((
			!is_numeric && 
			el.value.match(/[a-zA-Z0-9]/)
		) || (
			is_numeric && 
			el.value.match(/[0-9]/)
		)) {
			return true;
		} else {
			el.focus();
		}
	}
	return false;
}
