/**
 * Controleer een formulier. 
 * Voeg aan een <INPUT> element het attribuut 'validation' toe.
 * Deze kan één van de volgende waarden bevatten:
 *  - required
 *  - email
 *  - telefoon
 *  - postcode
 *  - integer
 *
 * @package nl.iwink.webapp
 * @author Willem Stuursma <w.stuursma@iwink.nl>
 */

hasFocus = false;

function checkForm(formEl) {
	inputs = formEl.getElementsByTagName('input');
	textareas = formEl.getElementsByTagName('textarea');
	hasFocus = false;
	e = true;

	for (i = 0; i < textareas.length; i++) {
		if (type = textareas[i].getAttribute('validation')) {
			switch(type) {
				case 'required':
					if (textareas[i].value.length == 0) {
						e = false;
						makeError(textareas[i]);
					}					
					else {
						makeNoError(textareas[i]);
					}
					break;
			}
		}
	}
			
	for (i = 0; i < inputs.length; i++) {
	
		if (type = inputs[i].getAttribute('validation')) {
			switch(type) {
				case 'telefoon': 
					re = /^[0-9+ -]{10,}$/
					if (!re.test(inputs[i].value.toString())) {
						e = false;					
						makeError(inputs[i]);
					}					
					else {
						makeNoError(inputs[i]);
					}
					break;
				case 'integer': 
					re = /^[0-9]+$/
					if (!re.test(inputs[i].value.toString())) {
						e = false;					
						makeError(inputs[i]);
					}					
					else {
						makeNoError(inputs[i]);
					}
					break;
				case 'postcode': 
					re = /^[0-9]{4}[a-z]{2}$/i
					if (!re.test(inputs[i].value.toString())) {
						e = false;					
						makeError(inputs[i]);
					}					
					else {
						makeNoError(inputs[i]);
					}
					break;
				case '1ewachtwoord':
					if (inputs[i+1]) {
						if ((inputs[i].value.length == 0) || (inputs[i].value.toString() != inputs[i+1].value.toString())) {
							e = false;
							makeError(inputs[i]);
							makeError(inputs[i+1]);
						}
						else {
							makeNoError(inputs[i]);
							makeNoError(inputs[i+1]);						
						}
					}
					i++;
					break;
				case 'required': 
					if (inputs[i].value.length == 0) {
						e = false;
						makeError(inputs[i]);
					}					
					else {
						makeNoError(inputs[i]);
					}
					break;
				case 'email': 
					re = /^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/
					if (!re.test(inputs[i].value.toString())) {
						e = false;					
						makeError(inputs[i]);
					}					
					else {
						makeNoError(inputs[i]);
					}
					break;	
				
			}
		}
	}	
	return e;
}

function makeError(el) {
	if (!hasFocus) {
		el.focus();
		hasFocus = true;
	}
	el.className = 'error';
}

function makeNoError(el) {
	el.className = '';
}