// function validates a form, will be run onSubmit of form
// checks on required and format
function validateForm(elForm) {
	invalidClassName = 'errorInschrijf';
	emailRegex = new RegExp(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,6})+$/);
	phoneRegex1 = new RegExp(/^\+([0-9]){10,14}$/);
	phoneRegex2 = new RegExp(/^0([0-9]){9}$/);
	zipcodeRegex = new RegExp(/^([0-9]{4})( )?([A-Z]){2}$/);
	numberRegex = new RegExp(/^([0-9])*$/);
	allValid = true;
	// check all inputs
	$A($(elForm).getElementsByTagName('input')).each(function(elInput) {
		elInput = $(elInput);
		curValid = true;
		format = elInput.getAttribute('format');
		isRequired = elInput.getAttribute('required');
		if (isRequired == '1') {
			isRequired = true;
		} else {
			isRequired = false;
		}
		// check required
		if (isRequired) {
			switch (elInput.getAttribute('type')) {
				case 'password':
				case 'text':
				case 'hidden':
					// check on required
					if (!elInput.present()) {
						curValid = false;
					}
					break;
				case 'checkbox':
				case 'radio':
					// check on required
					cntChecked = 0;
					$A(document.getElementsByName(elInput.name)).each(function(elInput) {
						if (elInput.checked) {
							cntChecked++;
						}
					});
					if (cntChecked == 0) {
						curValid = false;
						if(elInput.name = "voorwaarden") {
						    $('voorwaarden').addClassName(invalidClassName);
						}
					}
					break;
			}
		}
		// check format
		if ((elInput.getAttribute('type') == 'text') && (format !== false)) {
			// trim all values
			elInput.value = trim(elInput.getValue());
			if (elInput.getValue() !== '') {
				switch (elInput.getAttribute('format')) {
					case 'email':
						curValid = emailRegex.test(elInput.getValue());
						break;
					case 'phone':
					case 'telefoon':
					case 'mobiel':
						elInput.value = elInput.getValue().replace(/ |\-|/g, '');
						if (elInput.getValue().substr(0, 2) == '00') {
							elInput.value = '+' + elInput.getValue().substr(2)
						}
						curValid = phoneRegex1.test(elInput.getValue()) || phoneRegex2.test(elInput.getValue());
						break;
					case 'zipcode':
						elInput.value = elInput.getValue().toUpperCase();
						curValid = zipcodeRegex.test(elInput.getValue());
						elInput.value = elInput.getValue().replace(/ /g, '');
						break;
					case 'number':
						curValid = numberRegex.test(elInput.getValue());
						break;
				}
			}
		}
		// CHECKED
		// add the invalid class if so, else remove it if present
		elInput.removeClassName(invalidClassName);
		if (!curValid) {
			elInput.addClassName(invalidClassName);
		}
		// check if anything was invalid
		if (!curValid) allValid = false;
	});
	// check all selects
	$A($(elForm).getElementsByTagName('select')).each(function(elInput) {
		elInput = $(elInput);
		curValid = true;
		isRequired = elInput.getAttribute('required');
		if (isRequired == '1') {
			isRequired = true;
		} else {
			isRequired = false;
		}
		// check required
		if (isRequired) {
			if (elInput.getValue() == '') {
				curValid = false;
			}
		}
		// CHECKED
		// add the invalid class if so, else remove it if persent
		elInput.removeClassName(invalidClassName);
		if (!curValid) {
			elInput.addClassName(invalidClassName);
		}
		// check if anything was invalid
		if (!curValid) allValid = false;
	});
	// check all textarea's
	$A($(elForm).getElementsByTagName('textarea')).each(function(elInput) {
		elInput = $(elInput);
		curValid = true;
		isRequired = elInput.getAttribute('required');
		if (isRequired == '1') {
			isRequired = true;
		} else {
			isRequired = false;
		}
		// check required
		if (isRequired) {
			if (trim(elInput.getValue()) == '') {
				curValid = false;
			}
		}
		// CHECKED
		// add the invalid class if so, else remove it if persent
		elInput.removeClassName(invalidClassName);
		if (!curValid) {
			elInput.addClassName(invalidClassName);
		}
		// check if anything was invalid
		if (!curValid) allValid = false;
	});
	return allValid;
}

// string trimming
function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
