var controleArray = new Array();
var errorcodes = new Array(
	"Veld is niet ingevuld.",
	"Wachtwoorden zijn ongelijk.",
	"Lengte van de tekst is te lang.",
	"Lengte van de tekst is te kort.",
	"Te weinig velden aangekruisd.",
	"Geen veld aangekruisd.",
	"Geen optie geselecteerd.",
	"Te veel opties geselecteerd.",
	"Te weinig opties geselecteerd.",
	"Te veel velden aangekruisd.",
	"Geen geldige postcode."
);

	function check_terms(terms) {
		if (terms != "") {
			if (eval(terms)) return true;
			return false;
		}
		return null;
	}
	
	function check_leeg(obj) {
		return true;
	}
	
	function check_text(obj) {
		chk = check_terms(obj.terms);
		if (chk != null) obj.check = chk;
		if (obj.check && obj.obj.value == "") return false;
		if (obj.name.toLowerCase() == 'postcode') {
			obj.obj.value = obj.obj.value.substr(0,7).toUpperCase();
			switch (obj.obj.value.length) {
				case 6: letters_begin = 4; break;
				case 7: if (obj.obj.value.indexOf(' ') == 4) {
							letters_begin = 5;
						} else {
							obj.error = 10;
							return false;
						} break;
				default: 
					obj.error = 10;
					return false;
			}
			for (var i = 0; i < 4; i++) {
				if (obj.obj.value.charAt(i) < '0' || obj.obj.value.charAt(i) > '9') {
					obj.error = 10;
					return false;
				}
			}
			if (obj.obj.value.charAt(letters_begin) < 'A' || obj.obj.value.charAt(letters_begin) > 'Z' ||
				obj.obj.value.charAt(letters_begin+1) < 'A' || obj.obj.value.charAt(letters_begin+1) > 'Z' ||
				obj.obj.value.charAt(0) == '0') {
				obj.error = 10;
				return false;
			}
		}
		obj.error = 0;
		return true;
	}

	function check_password(obj) {
		chk = check_terms(obj.terms);
		if (chk != null) obj.check = chk;
		if (obj.check) {
			if (obj.other_passwd != null)
				if (obj.obj.value.length < obj.minlength) {
					obj.error = 3;
					return false;
				} else obj.error = 0;
				if (obj.obj.value != obj.other_passwd.value) {
					obj.error = 1;
					return false;
				} else obj.error = 0;
				
			if (obj.obj.value == "") return false;
		}
		return true;
	}

	function check_textarea(obj) {
		chk = check_terms(obj.terms);
		if (chk != null) obj.check = chk;
		if (obj.check) {
			if (obj.maxlength != 0)
				if (obj.obj.value.length > obj.maxlength) {
					obj.error = 2;
					return false;
				} else obj.error = 0;
			if (obj.obj.value == "") return false;
		}
		return true;
	}

	function check_checkbox(obj) {
		chk = check_terms(obj.terms);
		if (chk != null) obj.check = chk;
		if (obj.check) {
			var nr_checked = 0;
			if (obj.obj.checked) nr_checked++;
			if (obj.checkbox_array.length > 0)
				for (var i = 0; i < obj.checkbox_array.length; i++)
					if (obj.checkbox_array[i].checked) nr_checked++;
			if (nr_checked < obj.minlength) {
				obj.error = 4;
				return false;
			}
			if (nr_checked > obj.maxlength && obj.maxlength != 0) {
				obj.error = 9;
				return false;
			}
		}
		return true;
	}

	function check_radio(obj) {
		chk = check_terms(obj.terms);
		if (chk != null) obj.check = chk;
		if (obj.check) {
			var nr_checked = 0;
			for (var i = 0; i < obj.obj.length; i++) if (obj.obj[i].checked) nr_checked++;
			if (nr_checked == 0) {
				obj.error = 5;
				return false;
			}
		}
		return true;
	}

	function check_select_one(obj) {
		chk = check_terms(obj.terms);
		if (chk != null) obj.check = chk;
		if (obj.check && obj.selectedIndex == -1) {
			obj.error = 6;
			return false;
		}
		return true;
	}

	function check_select_multiple(obj) {
		chk = check_terms(obj.terms);
		if (chk != null) obj.check = chk;
		if (obj.check) {
			var nr_checked = 0;
			for (var i = 0; i < obj.obj.options.length; i++)
				if (obj.obj.options[i].selected) nr_checked++;
			if (nr_checked < obj.minlength) {
				obj.error = 8;
				return false;
			}
			if (nr_checked > obj.maxlength && obj.maxlength != 0) {
				obj.error = 7;
				return false;
			}
		}
		return true;
	}

	function check_file(obj) {
		chk = check_terms(obj.terms);
		if (chk != null) obj.check = chk;
		if (obj.check && obj.obj.value == "") return false;
		return true;
	}

function formelement(name,obj,check) {
	this.name = name;
	this.obj = obj;
	this.check = check;
	this.error = 0;
	this.terms = "";
	if (arguments.length > 3) this.terms = arguments[3];
	this.focus_str = null;

	this.type = obj.type;
	this.checkit = check_leeg;
	this.minlength = 0;
	this.maxlength = 0;
	this.other_passwd = null;
	this.checkbox_array = new Array();

	if (check) {
		if (obj.type == "text") {
			this.checkit = check_text;
			this.focus_str = "obj.focus()";
		} else {
			if (obj.type == "password") {
				this.checkit = check_password;
				if (arguments.length > 4) this.other_passwd = arguments[4];
				if (arguments.length > 5) this.minlength = arguments[5];
				this.focus_str = "obj.focus()";
			} else {
				if (obj.type == "textarea") {
					this.checkit = check_textarea;
					if (arguments.length > 4) this.maxlength = arguments[4];
					this.focus_str = "obj.focus()";
				} else {
					if (obj.type == "checkbox") {
						this.checkit = check_checkbox;
						if (arguments.length > 4) this.minlength = arguments[4];
						if (arguments.length > 5) this.maxlength = arguments[5];
						if (arguments.length > 6)
							for (var i = 0; i < arguments.length - 6; i++) 
								this.checkbox_array[i] = arguments[i + 6];
						this.focus_str = "obj.focus()";
					} else {
						if (obj.type == "select-one") {
							this.checkit = check_select_one;
							this.focus_str = "obj.focus()";
						} else {
							if (obj.type == "select-multiple") {
								this.checkit = check_select_multiple;
								if (arguments.length > 4) this.minlength = arguments[4];
								if (arguments.length > 5) this.maxlength = arguments[5];
								this.focus_str = "obj.focus()";
							} else {
								if (obj.type == "file") {
									this.checkit = check_file;
									this.focus_str = "obj.focus()";
								} else {
									if (!obj.type) {
										if (obj[0].type == "radio") {
											this.checkit = check_radio;
											this.focus_str = "obj[0].focus()";
										}
									} else {
										this.checkit == check_leeg;
									}
								}
							}
						}
					}
				}
			}
		}
	}
}

function myCheck() {
	var eersteKeer = true;
	var missingStr = "";
	var total = 0;
	
	for (var i = 0; i < controleArray.length; i++) {
		if (!controleArray[i].checkit(controleArray[i])) {
			total++;
			if (eersteKeer) {
				eersteKeer = false;
				focus_on = "controleArray[" + i + "]." + controleArray[i].focus_str;
			}
			missingStr += controleArray[i].name + " - " + errorcodes[controleArray[i].error] + "\n";
		}
	}
	
	if (total != 0) {
		eval(focus_on);
		alert(missingStr);
		return false;
	} else return true;
}

if (navigator.appName == "Netscape") { 
// Netscape text lengten moeten de helft zijn van de maximale lengte
	var thelengthlong = "18";
	var thelengthmiddle = "10";
	var thelengthshort = "7";
	var commentlength = "31";
} else { 
	var thelengthlong = "28";
	var thelengthmiddle = "15";
	var thelengthshort = "10";
	var commentlength = "42";
}