﻿/* 

Client side form field validation

Scripting to check if the "name", "email" and "message" fields are properly filled out.

August 2005 - Arjan Haringa - Metalusions
August 2005 - Martin Visser - Terria Development

*/

var patterns = new Array();

patterns['name'] = /^[-a-zA-Z \/.\\'\u00c0-\u00ff]+$/;
patterns['email'] = /^[^@\s]+@([-a-z0-9\u00c0-\u00ff]+\.)+[a-z]{2,}$/i;

function check(obj){
	var check = true;
	var checkboxes = new Array();
	if(document.getElementById){
		var focusfield = false;
		for(var i = 0; i < obj.length; i++){
			if(obj.elements[i].type.match(/^(text(area)?|password)$/i)){
				var field = obj.elements[i];
				var errors = field.parentNode.getElementsByTagName('div');
				var error = false;
				if(errors.length > 0){
					error = errors.item(0);
					}
				if(error && (typeof(patterns[field.name]) != 'undefined' || field.type == 'textarea')){
					if((typeof(patterns[field.name]) != 'undefined' && field.value.match(patterns[field.name])) || (field.type == 'textarea' && field.value.length > 10)){
						error.style.display = 'none';
						field.style.color = '#000';
						field.style.borderColor = '#000';
						}
					else {
						error.id = field.name;
						error.style.display = 'block';
						field.style.color = '#f00';
						field.style.borderColor = '#f00';
						check = false;
						if(!focusfield){
							focusfield = field;
							}
						}
					}
				}
			else if(obj.elements[i].type == 'checkbox'){
				if(typeof(checkboxes[obj.elements[i].name]) == 'undefined'){
					checkboxes[obj.elements[i].name] = new Array();
					if(obj.elements[i].checked){
						checkboxes[obj.elements[i].name]['checked'] = 1;
						}
					else {
						checkboxes[obj.elements[i].name]['checked'] = 0;
						}
					checkboxes[obj.elements[i].name]['error'] = obj.elements[i].parentNode.getElementsByTagName('div').item(0);
					}
				else {
					if(obj.elements[i].checked){
						checkboxes[obj.elements[i].name]['checked']++;
						}
					}
				}
			}
		for(var x in checkboxes){
			if(checkboxes[x]['checked'] <= 0){
				checkboxes[x]['error'].style.display = 'block';
				}
			else {
				checkboxes[x]['error'].style.display = 'none';
				}
			}
		if(!check && focusfield){
			focusfield.focus();
			}
		}
	return check;
	}

