function req_field(fld,descr) {
	if(fld.value == '') {
		alert('The field \'' + (descr == null ? fld.name : descr) + '\' is required.');
		fld.focus();
		return false;
	} else {
		return true;
	}
}
function req_select(fld,descr){
	for(i = 0; i < fld.options.length; i++){
		if(fld.options[i].selected){
			return true;
		}
	}
	alert('The field \'' + (descr == null ? fld.name : descr) + '\' is required.');
	fld.focus();
	return false;
}
function req_radio(fld,descr) {
	for(rad = 0; rad < fld.length; rad++){
		if(fld[rad].checked){
			return true;
		}
	}
	alert('The field \'' + (descr == null ? fld[0].name : descr) + '\' is required.');
	fld[0].focus();
	return false;
}

function req_email(fld) {
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z])+$/;
	if(!filter.test(fld.value)) {
		alert('Please fill in a valid email address.');
		fld.focus();
		return false;
	} else {
		return true;
	}
}

function req_telefoon(fld) {
	var filter  = /^([0-9\+\-\s])+$/;
	if(!filter.test(fld.value) || fld.value.length < 10) {
		alert('Please fill in a valid telephone number.');
		fld.focus();
		return false;
	} else {
		return true;
	}
}

function test_password(pwd, pwd_chk) {
	if(!req_field(pwd,'wachtwoord')) {
		return false;
	} else if(pwd.value != pwd_chk.value) {
		alert('De ingevoerde wachtwoorden komen niet overeen.');
		pwd.focus();
		return false;
	} else if(pwd.value.length < 6) {
		alert('Het gekozen wachtwoord moet minimaal 6 tekens bevatten,\ngebruik bij voorkeur een combinatie van letters en cijfers.');
		pwd.focus();
		return false;
	} else {
		return true;
	}
}

function check_date_base(fld_dag,fld_maand,fld_jaar) {
	if(fld_dag.value.length == 1) {
		fld_dag.value = '0' + fld_dag.value;
	}
	if(fld_maand.value.length == 1) {
		fld_maand.value = '0' + fld_maand.value;
	}
	var objTempDate = new Date(fld_jaar.value, fld_maand.value-1, fld_dag.value);
    if(
    	objTempDate.getFullYear() != fld_jaar.value || 
    	objTempDate.getMonth() != fld_maand.value-1 || 
    	objTempDate.getDate() != fld_dag.value
 	) {
	 	return false;
    }
    return true;
}

function req_date(fld_dag,fld_maand,fld_jaar,descr) {
	if(!check_date_base(fld_dat,fld_maand,fld_jaar)) {
		alert('Het veld \'' + descr + '\' bevat geen geldige datum');
	 	return false;
    }
    return true;
}

function req_date_in_past(fld_dag,fld_maand,fld_jaar,descr) {
	if(check_date_base(fld_dag,fld_maand,fld_jaar,descr)) {
		// datum is geldig, nu op verleden controleren
		var objTempDate = new Date(fld_jaar.value, fld_maand.value-1, fld_dag.value);
		var objCurrDate = new Date();
		if(objTempDate.getTime() <= objCurrDate.getTime()) {
			return true;
		}
	}
	alert('Het veld \'' + descr + '\' bevat geen geldige datum in het verleden.');
	fld_jaar.focus();
	return false;
}

function req_date_in_future(fld_dag,fld_maand,fld_jaar,descr) {
	if(check_date_base(fld_dag,fld_maand,fld_jaar,descr)) {
		// datum is geldig, nu op verleden controleren
		var objTempDate = new Date(fld_jaar.value, fld_maand.value-1, fld_dag.value);
		var objCurrDate = new Date();
		if(objTempDate.getTime() > objCurrDate.getTime()) {
			return true;
		}
	}
	alert('Het veld \'' + descr + '\' bevat geen geldige datum in de toekomst.');
	fld_jaar.focus();
	return false;
}

function req_date_age(fld_dag,fld_maand,fld_jaar,descr,min_age,max_age) {
	if(check_date_base(fld_dag,fld_maand,fld_jaar,descr)) {
		// datum is geldig, nu op verleden controleren
		var objTempDate = new Date(fld_jaar.value, fld_maand.value-1, fld_dag.value);
		var objCurrDate = new Date();
		if (objCurrDate.getFullYear() - objTempDate.getFullYear() > max_age 	
        || (objCurrDate.getFullYear() - objTempDate.getFullYear() == max_age &&
            objCurrDate.getMonth() > objTempDate.getMonth() )
        || (objCurrDate.getFullYear() - objTempDate.getFullYear() == max_age &&
            objCurrDate.getMonth() == objTempDate.getMonth() &&
			objCurrDate.getDate() >= objTempDate.getDate() ) 
			) {
			alert('De persoon is ouder dan '+max_age+'.');
			fld_jaar.focus();
			return false;
		}
		if (objCurrDate.getFullYear() - objTempDate.getFullYear() < min_age 	
        || (objCurrDate.getFullYear() - objTempDate.getFullYear() == min_age &&
            objCurrDate.getMonth() < objTempDate.getMonth() )
        || (objCurrDate.getFullYear() - objTempDate.getFullYear() == min_age &&
            objCurrDate.getMonth() == objTempDate.getMonth() &&
			objCurrDate.getDate() <= objTempDate.getDate() ) 
			) {
			alert('De persoon is jonger dan '+min_age+'.');
			fld_jaar.focus();
			return false;
		}
		return true;
	}
	alert('Het veld \'' + descr + '\' bevat geen geldige datum in het verleden.');
	fld_jaar.focus();
	return false;
}

function req_num(fld,descr,length_from,length_to) {
	var reg = /^\d+$/;
	if(!reg.test(fld.value) || fld.value.length < length_from || fld.value.length > length_to) {
		alert('Het veld \'' + descr + '\' is ongeldig.');
		fld.focus();
		return false;
	}
	return true;
}

function check_verz_bedrag(fld,descr,min,max) {
	if(req_num(fld,descr,0,5)) {
		if(parseInt(fld.value) < min) {
			alert('Kies een bedrag van minimaal EUR '+min+',- bij \'' + descr + '\'.');
			fld.focus();
			return false;
		}
		if(parseInt(fld.value) > max) {
			alert('Kies een bedrag van maximaal EUR '+max+',- bij \'' + descr + '\'.');
			fld.focus();
			return false;
		}
		return true;
	}
	return false;
}

function check_bsn(fld) {
	if(req_num(fld,'BSN / SOFI-nummer',8,9)) {
		if(fld.value.length == 8) {
			fld.value = '0'+fld.value;
		}
		// elfproef
		var cursum = 0;
		for(i=0,m=9; i<8; i++,m--) {
			cursum += parseInt(fld.value.substr(i,1)) * m;
		}
		cursum -= parseInt(fld.value.substr(8,1))
		if(cursum%11 != 0) {
			alert('Het veld \'BSN / SOFI-nummer\' is ongeldig.');
			fld.focus();
			return false;
		}
		return true;
	}
	return false;
}

function check_rekeningnr(fld) {
	if(req_num(fld,'Bankrekening- of gironummer',1,9)) {
		if(fld.value.length == 9) {

			// elfproef
			var cursum = 0;
			for(i=0,m=9; i<9; i++,m--) {
				cursum += parseInt(fld.value.substr(i,1)) * m;
			}
			if(cursum%11 != 0) {
				alert('Dit is geen geldig bankrekeningnummer.');
				fld.focus();
				return false;
			}
			return true;
		}
		return true;
	}
	return false;
}

function autoFixYear(fld) {
	var objTempDate = new Date(fld.value,1,1);
	if(!isNaN(objTempDate.getFullYear())) {
		fld.value = objTempDate.getFullYear();
	}
}

/* begin autotab js */
var isNN = (navigator.appName.indexOf("Netscape")!=-1);

function autoTab(input,len, e) {
var keyCode = (isNN) ? e.which : e.keyCode; 
var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
if(input.value.length >= len && !containsElement(filter,keyCode)) {
input.value = input.value.slice(0, len);
input.form[(getIndex(input)+1) % input.form.length].focus();
}
function containsElement(arr, ele) {
var found = false, index = 0;
while(!found && index < arr.length)
if(arr[index] == ele)
found = true;
else
index++;
return found;
}
function getIndex(input) {
var index = -1, q = 0, found = false;
while (q < input.form.length && index == -1)
if (input.form[q] == input)index = q;
else q++;
return index;
}
return true;
}
/* end autotab js */