// Copyright 1998 Edwin Martin
// 1.0   ( 9 maart 98): first release
// 1.1   (13 maart 98): added e-mail check
// 1.2   ( 2 april 98): radiobuttons supported
// 1.3   ( 4 juni  98): geen komma's in e-mail adres (compuserve) en wat kleine verbeteringen
// 1.4   ( 5 juni  98): MSIE 3.02 hack
// 1.5   ( 8 juni  98): MSIE 4 reparatie
// 1.6   (15 juni  98): cijfer achter '@' weer mogelijk
// 1.7	 (14 dec   98): domain .cc toegevoegd
// 1.8   (28 feb   03): veldnamen met een code ("tmp_") ervoor mooi weergeven bij fouten
//						tijdsweergave controleren
var form;
var req;
var nonfilled;
var countryCodes="|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|fx|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zr|zw|com|edu|gov|int|mil|net|org|pro|arpa|nato|info|name|biz";

function checkEmail(email){
	var at;
	var c;
	var pos;
	if(email.indexOf(',')!=-1){
		if(email.toLowerCase().indexOf('compuserve.com')!=-1)
			return "in een compuserve-adres dient u de komma's door punten te vervangen";
		else
			return "een e-mail adres mag geen komma's bevatten";
	}
	at=email.indexOf('@');
	if(at==0)
		return "er staat niets voor het @-teken";
	else if(at==-1)
		return "een e-mail adres hoort een @-teken te bevatten";
	c=email.charAt(at+1).toLowerCase();
	if((c<'a'||c>'z')&&(c<'0'||c>'9'))
		return "achter het @-teken hoort een letter of cijfer te staan";
	if(email.indexOf('..',at)!=-1)
		return "achter het @-teken staan twee punten achter elkaar";
	for(pos=at+1;pos<email.length;pos++){
		c=email.charAt(pos).toLowerCase();
		if((c<'a'||c>'z')&&(c<'0'||c>'9')&&c!='.'&&c!='-')
			return "het e-mail adres bevat het ongeldige teken '"+c+"'";
	}
	pos=email.lastIndexOf('.');
	if(pos==-1)
		return "de domeinnaam bevat geen punt";
	c=email.substring(pos+1,email.length);
	if(countryCodes.indexOf('|'+c+'|')==-1)
		return "er bestaan geen domeinnamen die eindigen op ."+c;
	return null;
}

function formCheck(theForm,req) {
	var firstc=0;
	var lastc=0;
	var verder=true;
	var nietIngevuld='';
	var melding='';
	var aantal=0;
	var filled=true;
	var elementName;
	var email=null;
	var wrongEmail=null;
	var emailFirst=false;
	form = theForm;
	nonfilled=null;
	while(verder){
		lastc=req.indexOf(',',lastc+1);
		if(lastc==-1){
			 lastc=req.length;
			 verder=false;
		}
		if(req.charAt(firstc)==' ')
			firstc++;
		elementName=req.substring(firstc,lastc);
		if(!form[elementName]){
			alert("Foutje van de webmaster: '"+elementName+"' komt niet in het fomulier voor.");
			return false;
		}
		if(form[elementName].type){
			if(form[elementName].type.substring(0,6)=='select')
				filled=form[elementName].selectedIndex>0;
			else {
				filled=form[elementName].value != '' && form[elementName].value.substring(0,1) != '?';
				if (elementName.toLowerCase()=='e-mail' ||
					elementName.toLowerCase()=='email' ||
					elementName.indexOf('email') > -1 		) {
					email=elementName;
					emailFirst=!nonfilled;
				}
			}
		}else if(form[elementName].length){
			var radioCheck=false;
			for(var i=0;i<form[elementName].length;i++){
				if(form[elementName][i].checked)
					radioCheck=true;
			}
			filled=radioCheck;
		}else
			return true; // MSIE 3.02 hack
		if(!filled){
			if(!nonfilled)
				nonfilled=elementName;
			if(aantal>0)
				nietIngevuld+=', ';
			var pos = elementName.indexOf("_");
			pos = (pos > 0) ? pos + 1 : 0;
			nietIngevuld+=elementName.substring(pos, elementName.length);
			aantal++;
		}
		firstc=lastc+1;
	}
	if(email&&form[email].value!='')
		wrongEmail=checkEmail(form[email].value);
	if(aantal==1)
		melding="Het veld "+nietIngevuld+" is nog niet ingevuld";
	else if(aantal>0){
		var lastcomma=nietIngevuld.lastIndexOf(',');
		nietIngevuld=nietIngevuld.substring(0,lastcomma)+" en "+nietIngevuld.substring(lastcomma+2,nietIngevuld.length);
		melding="De velden "+nietIngevuld+" zijn nog niet ingevuld";
	}
	if(wrongEmail){
		if(aantal>0)
			melding+=" en het ";
		else
			melding+="Het ";
		melding+="e-mail adres is niet juist ingevuld: "+wrongEmail;
	}
	if(wrongEmail||aantal>0)
		alert(melding+".");
	if(aantal>0&&!(wrongEmail&&emailFirst)&&form[nonfilled].type)
		if(form[nonfilled].type.substring(0,6)=='select'){
			form[nonfilled].focus();
			setTimeout("form[nonfilled].blur();",100);
			setTimeout("form[nonfilled].focus();",200);
			setTimeout("form[nonfilled].blur();",300);
			setTimeout("form[nonfilled].focus();",400);
		}else{
			form[nonfilled].value='   <  <  <';
			setTimeout("form[nonfilled].value='  <  <  <';",200);
			setTimeout("form[nonfilled].value=' <  <  <';",400);
			setTimeout("form[nonfilled].value='<  <  <';",600);
			setTimeout("form[nonfilled].value='';form[nonfilled].focus();",800);
		}
	else if(wrongEmail){
		form[email].select();
		form[email].focus();
	}
	return aantal==0&&!wrongEmail;
}


function validateTime(myfield) {
	help = "\nTijd moet in het formaat: 'uu:mm:ss'.\nSeconden zijn optioneel."
	mytime = myfield.value
	tester1 = /[^:0-9]/
	tester2 = /[^0-9]/

	tTime = mytime.split(":")
	while (tTime.length < 3) {
		// seconds are left out. Add them now
		tTime[tTime.length] = '00';
		mytime = tTime.join(":");
	}
	if (tester1.test(mytime) | mytime.indexOf(":") < 1 | mytime.indexOf(":") > 2) {
		if (confirm("Ongeldige invoer" + help)) {
			myfield.focus();
		}
	} else if (tester2.test(tTime[0]) | tester2.test(tTime[1]) | tester2.test(tTime[2]) | tTime[1] > 59 | tTime[2] > 59) {
		if (confirm("Ongeldig invoer" + help)) {
			myfield.focus();
		}
	} else {
		// autocorrect
		myfield.value = mytime;
	}
}

function validateDate(myfield) {
	return true;
}

function exitPassword(passwd2) {
	// if second passwordbox isn't filled, jump to that one
	if(passwd2.value == "") {
		passwd2.focus();
		return false;
	}
	return true;
}

function matchPassword(passwd1, passwd2) {
	var pw1 = passwd1.value;
	var pw2 = passwd2.value;

	if (pw1 != pw2) {
		alert("De twee wachtwoorden komt niet met elkaar overeen.\nProbeer het nogmaals.");
		passwd2.value = "";
		passwd1.focus();
		return false;
	}
	return true;
}
