	function SubmitSearch() {
		if (!testtextlength(document.frm_search.search, 4, 50, 'Zoek opdracht')) return;
		if (!testnotemptyorspace(document.frm_search.search, 'Zoek opdracht')) return;
		document.frm_search.submit();
		return;
	}

	function validatePrompt (veld, PromptStr, description) {
		//document.getElementById(description).style.color='red';
	    alert(PromptStr);
	    veld.focus();
	}
	    
	function testnospecialchar(field, description, custChrs) {
	    if (custChrs == undefined || custChrs == "undefined") { custChrs = ""; }
	    var fldVal = field.value;
	    var spChars = "\\:*/?\"<>|" + custChrs;
	    var text = "Het veld '" + description + "' mag niet de volgende tekens bevatten: " + spChars;
	    for (var i = 0; i < spChars.length; i++) {
	        if (fldVal.indexOf(spChars.charAt(i)) != -1) {
	            validatePrompt (field, text, description);
	            field.focus();
	            return(false);
	        }
	    }
	    return(true);
	}

	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, description);
				return (false);
			}
			else {
				return (true);
			}
		}
		ynumber = field.value
		if (isNaN(ynumber) || (ynumber.length != 4)) {
			validatePrompt (field, text, description);
			return (false);
		}
		if ((ynumber < 1930) || (ynumber > 2001)) {
			validatePrompt (field, text, description);
			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, description);
			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, description);
				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, description);
			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, description);
			return (false);
		}
		if (part2.length != 2) {
			validatePrompt (field, text, description);
			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, description);
				return (false);
			}
			else {
				return (true);
			}
		}
		if (field.value.length != 5) {
			validatePrompt (field, text, description);
			return (false);
		}
		if (field.value.substring(2,3) != ":") {
			validatePrompt (field, text, description);
			return (false);			
		}
		hours = field.value.substring(0,2);
		if (isNaN(hours)) {
			validatePrompt (field, text, description);
			return (false);			
		}
		if ((hours < 0) || (hours > 23)) {
			validatePrompt (field, text, description);
			return (false);			
		}
		minutes = field.value.substring(3,5);
		if (isNaN(minutes)) {
			validatePrompt (field, text, description);
			return (false);			
		}
		if ((minutes < 0) || (minutes > 59)) {
			validatePrompt (field, text, description);
			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 == "" || temp == " " || temp == "-") {
			        validatePrompt (field, text, description);
			        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 1 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, text, description);
	        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, description);
	        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, description);
				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, description);
					return (false);
			    }
			    if (i == 0 && temp_ascii == 0) {
			        validatePrompt (field, text, description);
			        return (false);
			    }
			}
		}
		else {
			if (emptyok == false) {
			    validatePrompt (field, text, description);
			    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, description);
				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, description);
			        return (false);
			    }
			}
			var i = 1;
			while ((i < sLength) && (field.value.charAt(i) != "-")) {
			    i++
			}
			if ((i >= sLength) || (field.value.charAt(i) != "-")) {
				validatePrompt (field, text, description);
			    return (false);
			}
				
			var temp = '';
			for (var i = 0; i < sLength; i++) {		    
			    if (field.value.charAt(i) != "-") {
					temp = temp + field.value.charAt(i);
			    }
			}
			if (temp == '0000000000' || temp == '1111111111' || temp == '2222222222' || temp == '3333333333' || temp == '4444444444' || temp == '5555555555' || temp == '6666666666' || temp == '7777777777' || temp == '8888888888' || temp == '999999999') {
				validatePrompt (field, text, description);
			    return (false);
			}


		}
		else {
			if (emptyok == false) {
				validatePrompt (field, text, description);
			    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) != "@")) {
				msg (field, text);
			   	validatePrompt (field, text, description);
			    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) != ".")) {
				msg (field, text);
				validatePrompt (field, text, description);
			    return (false);
			}
		}
		else {
			if (emptyok == false) {
				msg (field, text);
				validatePrompt (field, text, description);
			    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, description);
			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, description);
			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, description);
			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, description);
			return (false);
		}
		return (true);
	}
