


    function testnospecialchar(field, description, custChrs) {
		// Test of veld geen speciale tekens bevat
        // Declareer variabelen en geef ze een waarde
        if (custChrs == undefined || custChrs == "undefined") { custChrs = ""; }
        var fldVal = field.value;
        var spChars = "\\:*/?\"<>|" + custChrs;

        // Alert message
        var text = "Het veld '" + description + "' mag niet de volgende tekens bevatten: " + spChars;

        // Loop door spChars string en toon message als deze in fldVal wordt gevonden
        for (var i = 0; i < spChars.length; i++) {
            if (fldVal.indexOf(spChars.charAt(i)) != -1) {
                validatePrompt (field, text);
                field.focus();
                return(false);
            }
        }
        return(true);
    }

    function validatePrompt (veld, PromptStr) {
        alert(PromptStr);
        veld.focus();
    }
    
    function testcheckedcount(field, min, max, description) {
		text_min = "U dient minimaal " + min + " optie te selecteren bij vraag '" + description + "'.";
		text_max = "U mag maximaal " + max + " opties selecteren bij vraag '" + description + "'.";
		var checkedCount = 0
		for (var i = 0; i < field.length; i++) {
			if (field[i].checked) {
				checkedCount++
			}
		}
		if (checkedCount < min) {
			alert (text_min);
			field[0].focus();
			return (false);
		}
		if (checkedCount > max) {
			alert (text_max);
			field[0].focus();
			return (false);
		}
		return (true);	
    }
    
	function testyear(field, description, emptyok) {
		if (!emptyok) {
			text = "Het veld '" + description + "' moet ingevuld zijn en mag alleen een geldig jaar bevatten (1930-2001).";
		}
		else {
			text = "In veld '" + description + "' dient u een geldig jaar in te vullen (1930-2001).";
		}
		if (field.value == "" || field.value == " ") {
			if (!emptyok) {
				validatePrompt (field, text);
				return (false);
			}
			else {
				return (true);
			}
		}
		ynumber = field.value
		if (isNaN(ynumber) || (ynumber.length != 4)) {
			validatePrompt (field, text);
			return (false);
		}
		if ((ynumber < 1930) || (ynumber > 2001)) {
			validatePrompt (field, text);
			return (false);
		}
		return (true);
	}		
    
    function testbanknumber(field, description, emptyok) {
		if (!emptyok) {
			text = "Het veld '" + description + "' moet ingevuld zijn, maar mag alleen een geldig banknummer bevatten.";
		}
		else {
			text = "In veld '" + description + "' dient u een geldig banknummer in te vullen.";
		}
		bnumber = field.value
		if (isNaN(bnumber) || (bnumber.length != 9)) {
			validatePrompt (field, text);
			return (false);
		}
		var somprod = 0
		for (var i = 0; i < field.value.length; i++) {
		    temp = field.value.charAt(i);
		    somprod = somprod + (temp * (10 - (i + 1)));
		}
		if ((somprod % 11) != 0) {
			validatePrompt (field, "Het veld '" + field.description + "' bevat een ongeldig banknummer.");
			return (false);
		}
		return (true);			
    }

	function testcurrency(field, description, emptyok) {
		if (!emptyok) {
			text = "In veld '" + description + "' is een ongeldig bedrag ingevuld.";
		}
		else {
			text = "In veld '" + description + "' dient u een geldig bedrag in te vullen.";
		}
		if (field.value == "" || field.value == " ") {
			if (!emptyok) {
				validatePrompt (field, text);
				return (false);
			}
			else {
				return (true);
			}
		}
		i = field.value.indexOf(".");
		j = field.value.indexOf(",");
		if (((i == -1) && (j == -1)) || ((i != -1) && (j != -1)) || emptyok) {
			validatePrompt (field, text);
			return (false);
		}
		if ((i == -1) && (j != -1)) {
			i = j;
		}
		part1 = field.value.substring(0,i);
		part2 = field.value.substring(i+1, field.value.length);		
		if (isNaN(part1) || isNaN(part2)) {
			validatePrompt (field, text);
			return (false);
		}
		if (part2.length != 2) {
			validatePrompt (field, text);
			return (false);
		}	
		field.value = part1 + "," + part2
		return (true);
	}

    function testtime (field, description, emptyok) {
		if (!emptyok) {
			text = "Het veld '" + description + "' moet ingevuld worden en mag alleen een geldige tijd bevatten."
		}
		else {
			text = "Het veld '" + description + "' bevat een ongeldige tijd."
		}
		text = text + "\n\nDe tijd invoeren met de volgende opmaak:\n  twee cijfers voor de uren (00-23),\n  dubbele punt (:),\n  twee cijfers voor de minuten (00-59)."			
		if (field.value == "" || field.value == " ") {
			if (!emptyok) {
				validatePrompt (field, text);
				return (false);
			}
			else {
				return (true);
			}
		}
		if (field.value.length != 5) {
			validatePrompt (field, text);
			return (false);
		}
		if (field.value.substring(2,3) != ":") {
			validatePrompt (field, text);
			return (false);			
		}
		hours = field.value.substring(0,2);
		if (isNaN(hours)) {
			validatePrompt (field, text);
			return (false);			
		}
		if ((hours < 0) || (hours > 23)) {
			validatePrompt (field, text);
			return (false);			
		}
		minutes = field.value.substring(3,5);
		if (isNaN(minutes)) {
			validatePrompt (field, text);
			return (false);			
		}
		if ((minutes < 0) || (minutes > 59)) {
			validatePrompt (field, text);
			return (false);			
		}					
		return (true);
    }

    function testdatepulldown (field1, field2, field3, description, emptyok) {
		if (!emptyok) {
			text = "Het veld '" + description + "' moet een datum bevatten."
		}
		else {
			text = "In veld '" + description + "' dient u een correcte datum in te vullen.";
		}
		if ((field1.selectedIndex == 0) && (field2.selectedIndex == 0) && (field3.value == '0')) {
			if (!emptyok) {
				validatePrompt (field1, text);
				return (false);
			}
			else {
				return (true);
			}
		}
		if ((field1.value == '0') || (field2.selectedIndex == 0) || (field3.value == '0')) {
			    alert (text);
			    field1.focus();
			    return (false);
		}
		else {
			return (true);
		}
	}

    function testdate (field1, field2, field3, description, emptyok) {
		if (!emptyok) {
			text = "Het veld '" + description + "' moet ingevuld worden en mag alleen een geldige datum bevatten."
		}
		else {
			text = "Het veld '" + description + "' bevat een ongeldige datum."
		}
		text = text + "\n\nDe datum invoeren met de volgende opmaak:\n  twee cijfers voor de dag,\n  twee cijfers voor de maand,\n  vier cijfers voor het jaar."
		if ((field1.value != "" && field1.value != " ") || (field2.value != "" && field2.value != " ") || (field3.value != "" && field3.value != " ")) {
			field_total = field1.value + "-" + field2.value + "-" + field3.value
			if (field_total.length != 10) {
			    alert (text);
			    field1.focus();
			    return (false);
			}
			// characters 3 and 5 must be -
			if (field_total.substring(2,3) != "-" || field_total.substring(5,6) != "-") {
			    alert (text);
			    field1.focus();
			    return (false);
			}
			// get the respective day, month and year parts
			day = field_total.substring(0,2);
			month = field_total.substring(3,5);
			year = field_total.substring(6,10);
			// check whether the respective date parts are valid
			var today = new Date();
			year = ((!year) ? today.getYear():year);
			year = ((!year) ? y2k(today.getYear()):year);
			month = ((!month) ? today.getMonth():month-1);
			if (!day) {
			    alert (text);
			    field1.focus();
			    return (false);
			}
			var test = new Date(year,month,day);
			if ( (y2k(test.getYear()) == year) && (month == test.getMonth()) && (day == test.getDate()) ) {
			    return (true);
			}
		}
		else {
			if (emptyok == false) {
			    validatePrompt (field1, text);
			    return (false);
			}
		}
		return (true);
	}
    

	function testminutes (field1, field2, description, emptyok) {
		if (!emptyok) {
			text = "Het veld '" + description + "' moet ingevuld zijn."
		}
		else {
			text = "De inhoud van de vraag '" + description + "' is ongeldig."			
		}
		if ((field1.value == "" || field1.value == " ") && (field2.value == "" || field2.value == " ")){
			if (!emptyok) {
				validatePrompt (field1, text);
				return (false);
			}
			else {
				return (true);
			}
		}
		if (field2.value == "" || field2.value == " ") {
			field2.value = 0;
		}
		else {
			if (isNaN(field2.value)) {
			    validatePrompt (field1, text);
			    return (false);
			}
		}
		minutes = field2.value;
		if (field1.value == "" || field1.value == " ") {
			field1.value = 0;
		}
		else {
			if (isNaN(field1.value)) {
			    validatePrompt (field1, text);
			    return (false);
			}
		}
		hours = field1.value * 60;
		time = hours + minutes;
		if (time == 0) {
			if (!emptyok) {
			    validatePrompt (field1, text);
			    return (false);
			}
			else {
				return (true);
			}
		}
		else {
			return (true);
		}		
	}


	function testnumber (field, description, emptyok) {
		if (!emptyok) {
			text = "Het veld '" + description + "' moet ingevuld zijn en mag alleen cijfers bevatten."
		}
		else {
			text = "Het veld '" + description + "' mag alleen cijfers bevatten."
		}
    // value must be non-empty and only consists of numbers
        if (field.value != "" && field.value != " ") {
			for (var i = 0; i < field.value.length; i++) {
			    temp = field.value.charAt(i);
			    if (isNaN(temp) || temp == "") {
			        validatePrompt (field, text);
			        return (false);
			    }
			}
		}
		else {
			if (!emptyok) {			        
				validatePrompt (field, text );
				return (false);
			}
        }
        return (true);
    }
    
    
	function testcheck (field, description) {
		text = "U dient de optie '" + description + "' te selecteren.";
		anythingchecked = 0;
		for (var i = 0; i < field.length; i++) {
			if (field[i].checked) {
				anythingchecked = 1;
				break;
			}
		}
		if (anythingchecked == 0) {
			validatePrompt (field[0], text);
			field[0].focus();
			return (false);
		}
		return (true);
	}

    function testradio (field, description) {
        text = "U dient één van de opties '" + description + "' te selecteren.";
        anythingchecked = 0;
        for (var i = 0; i < field.length; i++) {
            if (field[i].checked) {
                anythingchecked = 1;
                break;
            }
        }
        if (anythingchecked == 0) {
            validatePrompt (field[0], text);
            field[0].focus();
            return (false);
        }
        return (true);
    }

    function testnotemptyorspace (field, description) {
		text = "Het veld '" + description + "' dient te worden ingevuld.";
        if (field.value == "" || field.value == " ") {
            validatePrompt (field, text);
            field.focus();
            return (false);
        }
        return (true);
    }

    function testpostcode (field_num, field_alpha, description, emptyok) {
		if (!emptyok) {
			text = "Het veld '" + description + "' moet ingevuld worden en mag alleen een geldige postcode met vier cijfers en twee letters te bevatten.";
		}
		else {
			text = "In het veld '" + description + "' staat een ongeldige postcode."
		}
		if (field_num.value != "" && field_num.value != " ") {
			for (var i = 0; i < 4; i++) {
			    temp = field_num.value.charAt(i);
			    if (isNaN(temp) || temp == "") {
			        validatePrompt (field_num, text);
			        return (false);
			    }
			    if (i == 0 && temp == 0) {
			        validatePrompt (field_num, text);
			        return (false);
			    }
			}
			if (!testpostcodealpha(field_alpha, description, emptyok)) {
				return (false);
			}
		}
		else {
			if (emptyok == false) {
			    validatePrompt (field_num, text);
			    return (false);
			}
		}
      	return (true);
    }
    
    function testpostcodealpha (field, description, emptyok) {
		if (!emptyok) {
			text = "Het veld '" + description + "' moet ingevuld worden en mag alleen een geldige postcode met vier cijfers en twee letters te bevatten.";
		}
		else {
			text = "In het veld '" + description + "' staat een ongeldige postcode."
		}
		if (field.value != "" && field.value != " ") {
			if (field.value.length != 2) {
				validatePrompt (field, text);
				return (false);
			}
			for (var i = 0; i < 2; i++) {
			    temp_ascii = field.value.charCodeAt(i);
			    if (temp_ascii < 65 || temp_ascii > 122 || field.value == "")  {
					validatePrompt (field, text);
					return (false);
			    }
			    if (i == 0 && temp_ascii == 0) {
			        validatePrompt (field, text);
			        return (false);
			    }
			}
		}
		else {
			if (emptyok == false) {
			    validatePrompt (field, text);
			    return (false);
			}
		}
		return (true);
	}

    function y2k(number) {
        return (number < 1000) ? number + 1900 : number;
    }

	function testphone (field, description, emptyok) {
		text = "In het veld '" + description + "' staat geen geldig telefoonnummer.\n\nVul s.v.p. uw telefoonnummer zonder spaties in (10 cijfers, inclusief het scheidingsstreepje)";
		if (field.value != "" && field.value != " ") {
			if ((field.value == "" || field.value == " ") || (field.value.length != 11)) {
				validatePrompt (field, text);
				return (false);
			}
			var i = 1;
			var sLength = field.value.length;
			for (var i = 0; i < sLength; i++) {
			    temp = field.value.charAt(i);
			    if (isNaN(temp) && (temp != "-")) {
			        validatePrompt (field, text);
			        return (false);
			    }
			}
			var i = 1;
			while ((i < sLength) && (field.value.charAt(i) != "-")) {
			    i++
			}
			if ((i >= sLength) || (field.value.charAt(i) != "-")) {
			    validatePrompt (field, text);
			    return (false);
			}
		}
		else {
			if (emptyok == false) {
			    validatePrompt (field, text);
			    return (false);
			}
		}
		return (true);
	}
	
	
    function testshortdate (field1, field2, field3, description, emptyok) {
        text = "Ongeldige datum!";
		// we only accept dates formatted like dd-mm-yyyy or dd/mm/yyyy
		// if the length is unequal to 8, the date is not valid
		// the only exception is when empty variable is equal to "emptyok"
		if ((field1.value != "" && field1.value != " ") || (field2.value != "" && field2.value != " ") || (field3.value != "" && field3.value != " ")) {
			field_total = field1.value + "-" + field2.value + "-" + field3.value
			if (field_total.length != 8) {
			    alert (text);
			    field1.focus();
			    return (false);
			}
			// characters 3 and 5 must be -
			if (field_total.substring(2,3) != "-" || field_total.substring(5,6) != "-") {
			    alert (text);
			    field1.focus();
			    return (false);
			}
			// get the respective day, month and year parts
			day = field_total.substring(0,2);
			month = field_total.substring(3,5);
			year = field_total.substring(6,8);
			if (day > 31) {
			    alert (text);
			    field1.focus();
			    return (false);
			}
			if (month > 12) {
			    alert (text);
			    field1.focus();
			    return (false);
			}				
			// check whether the respective date parts are valid
			var today = new Date();
			year = ((!year) ? today.getYear():year);
			year = ((!year) ? y2k(today.getYear()):year);
			month = ((!month) ? today.getMonth():month-1);
			if (!day) {
			    alert (text);
			    field1.focus();
			    return (false);
			}
			var test = new Date(year,month,day);
			if ( (y2k(test.getYear()) == year) && (month == test.getMonth()) && (day == test.getDate()) ) {
			    return (true);
			}
		}
		else {
			if (emptyok == false) {
			    validatePrompt (field1, text);
			    return (false);
			}
		}
		return (true);
	}
    
    function testtimediff (field1, field2, field3, field4) {
		text = "Er zit niet voldoende tijd tussen de begin- en eindtijd van de afspraak.";		
		st_tcount = Date.UTC(2000, 1, 1, field1.value, field2.value, 0);
		ed_tcount = Date.UTC(2000, 1, 1, field3.value, field4.value, 0);
		if ((ed_tcount - st_tcount) < 900000) {
			alert (text);
			field1.focus();
			return (false);
		}			
		return (true);
    }
    
    function testemail (field, description, emptyok) {
		if (!emptyok) {
			text = "Het veld '" + description + "' moet ingevuld worden en mag alleen een geldig e-mailadres bevatten.";
		}
		else {
			text = "In het veld '" + description + "' staat een ongeldig e-mail adres."
		}
		if (field.value != "" && field.value != " ") {
			var i = 1;
			var sLength = field.value.length;
			while ((i < sLength) && (field.value.charAt(i) != "@")) {
			    i++
			}

			if ((i >= sLength) || (field.value.charAt(i) != "@")) {
			    validatePrompt (field, text);
			    return (false);
			}
			else i += 2;

			// look for .
			while ((i < sLength) && (field.value.charAt(i) != ".")) {
			    i++
			}

			// there must be at least one character after the .
			if ((i >= sLength - 1) || (field.value.charAt(i) != ".")) {
			    validatePrompt (field, text);
			    return (false);
			}
		}
		else {
			if (emptyok == false) {
			    validatePrompt (field, text);
			    return (false);
			}
		}
		return (true);
    }

	function testtextlength(field, minlength, maxlength, description) {
		text1 = "In het veld '" + description + "' staat te weinig tekst.\nU moet minimaal " + minlength + " karakters invoeren. U heeft er nu " + field.value.length + " ingevoerd.";
		text2 = "In het veld '" + description + "' staat te veel tekst.\nU mag maximaal " + maxlength + " karakters invoeren. U heeft er nu " + field.value.length + " ingevoerd.";
		if (field.value.length < minlength) {
		    validatePrompt (field, text1);
        	return false;
    	}
		if (field.value.length > maxlength) {
		    validatePrompt (field, text2);
        	return false;
    	}
    	return (true);
	}

	function testvaluepulldown(field, description) {
		text = "Bij de vraag '" + description + "' dient een geldige optie te worden geselecteerd.";
		if (field.value == '0') {
			validatePrompt (field, text);
			return (false);
		}
		return (true);
	}		
		

	function testpulldown(field, description) {
		text = "Bij de vraag '" + description + "' dient een optie te worden geselecteerd.";
		if (field.selectedIndex == 0) {
			validatePrompt (field, text);
			return (false);
		}
		return (true);
	}

	function testlist(field, description) {
		text = "Bij de vraag '" + description + "' dient een optie te worden geselecteerd.";
		if (field.length == 0) {
			validatePrompt (field, text);
			return (false);
		}
		return (true);
	}
	
	function testpassword(field1, field2, description) {
		text = "In de twee velden voor '" + description + "' staan verschillende waarden. Deze dienen identiek te zijn.";
		if (field1.value != field2.value) {
			field1.value = ""
			field2.value = ""
			validatePrompt (field1, text);
			return (false);
		}
		return (true);
	}
	
	function testminmax(field, min, max, description, emptyok) {
		text = "De waarde in veld '" + description + "' mag niet lager zijn dan " + min + " en niet hoger dan " + max + ".";
		if (field.value < min || field.value > max) {
			validatePrompt (field, text);
			return (false);
		}
		return (true);
	}
