function validate_voorletters(field, mustenter, showalerts, backtofield)
{
	var allowedinitials = new String();
	var specialinitials = new Array("Chr", "Jac", "Th", "Ph", "IJ", "Ch");
	var specialinitialsUpper =  new Array("CHR", "JAC", "TH", "PH", "IJ", "CH");
	var tempvoorletters = new String();
	var tempnewvoorletters = new String();
	var temppos = new Number();
	var foundspecialinitial = false;
	var askuser = false;
				
	allowedinitials = "ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÌÍÎÏÝŸ";
	tempvoorletters = field.value.toString();
	tempvoorletters = tempvoorletters.toUpperCase();
	tempvoorletters = replacestring(tempvoorletters, " ", "");
	temppos = 0;

	if (tempvoorletters != "")
	{
		while (temppos < tempvoorletters.length)
		{
			if (allowedinitials.indexOf(tempvoorletters.substr(temppos, 1)) != -1)
			{
				foundspecialinitial = false;
				for (var i = 0; i < specialinitials.length; i++)
				{
					if (tempvoorletters.substr(temppos, specialinitials[i].length).toUpperCase() == specialinitialsUpper[i].toString())
					{
						askuser = confirm("De lettercombinatie " + specialinitialsUpper[i] + " is gevonden in de voorletters.\nStaat dit voor de voorletter " + specialinitials[i] + "?");
						if (askuser)
						{
							foundspecialinitial = true;
							tempnewvoorletters = tempnewvoorletters + specialinitials[i] + ".";
							temppos = temppos + specialinitials[i].length;
						}
						break;
					}
				}
				if (!foundspecialinitial)
				{
					tempnewvoorletters = tempnewvoorletters + tempvoorletters.charAt(temppos).toUpperCase() + ".";
					temppos = temppos + 1;
				}
			}
			else
			{
				temppos = temppos + 1;
			}
		}
		field.value = tempnewvoorletters;
		return (true);
	}
	else
	{
		if (mustenter)
		{ 
			if (showalerts) alert("Voorletters is verplicht.");
			if (backtofield) field.focus();
			return (false);
		}
		else
		{
			return (true);
		}
	}
}

function validate_telefoonnummer (field, mustenter, showalerts, backtofield)
{
	var netnummers2 = new Array("10", "13", "15", "20", "23", "24", "26", "30", "33", "35", "36", "38", "40", "43", "45", "46", "50", "53", "55", "58", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79")
	var netnummers3 = new Array("111", "113", "114", "115", "117", "118", "161", "162", "164", "165", "166", "167", "168", "172", "174", "180", "181", "182", "183", "184", "186", "187", "222", "223", "224", "226", "227", "228", "229", "251", "252", "255", "294", "297", "299", "313", "314", "315", "316", "317", "318", "320", "321", "341", "342", "343", "344", "345", "346", "347", "347", "348", "411", "412", "413", "416", "418", "475", "478", "481", "485", "486", "487", "488", "492", "493", "495", "497", "499", "511", "512", "513", "514", "515", "516", "517", "518", "519", "521", "522", "523", "524", "525", "527", "528", "529", "541", "543", "544", "545", "546", "547", "548", "561", "562", "566", "570", "571", "572", "573", "575", "577", "578", "591", "592", "593", "594", "595", "596", "597", "598", "599", "676")
				
	var temptelefoonnummer = new String();
	var tempnewtelefoonnummer = new String();
				
	temptelefoonnummer = field.value.toString();
	tempnewtelefoonnummer = "";
	
	if (!isfieldempty(field, true, false, "", false))
	{
		for (var i = 0; i < temptelefoonnummer.length; i++)
		{
			if (temptelefoonnummer.charCodeAt(i) > 47 && temptelefoonnummer.charCodeAt(i) < 58)
			{
				tempnewtelefoonnummer = tempnewtelefoonnummer + temptelefoonnummer.charAt(i) 
			}
		}
					
		if ((tempnewtelefoonnummer.substr(0, 2) == "00") || (tempnewtelefoonnummer.substr(0, 1) != "0"))
		{
			if (showalerts) alert("Het ingevoerde telefoonnummer is ongeldig.")
			if (backtofield) field.focus();
			return (false);
		}
					
		if (parseInt(ltrimzero(tempnewtelefoonnummer.substr(0, 2))) > 0 && parseInt(ltrimzero(tempnewtelefoonnummer.substr(0, 2))) < 8)
		{
			if (tempnewtelefoonnummer.length != 10)
			{
				if (showalerts) alert("Het ingevoerde telefoonnummer is ongeldig.")
				if (backtofield) field.focus();
				return (false);
			}
						
			for (var i = 0; i < netnummers2.length; i++)
			{
				if (tempnewtelefoonnummer.substr(1, 2) == netnummers2[i])
				{
					field.value = tempnewtelefoonnummer.substr(0, 3) + "-" + tempnewtelefoonnummer.substr(3, 7)
					return (true);
				}
			}
						
			for (var i = 0; i < netnummers3.length; i++)
			{
				if (tempnewtelefoonnummer.substr(1, 3) == netnummers3[i])
				{
					field.value = tempnewtelefoonnummer.substr(0, 4) + "-" + tempnewtelefoonnummer.substr(4, 6)
					return (true);
				} 
			}
						
			if (tempnewtelefoonnummer.substr(0, 2) == "06")
			{
				field.value = tempnewtelefoonnummer.substr(0, 2) + "-" + tempnewtelefoonnummer.substr(2, 8)
				return (true);
			}
		}

		if (parseInt(ltrimzero(tempnewtelefoonnummer.substr(0, 2))) == 8 && parseInt(ltrimzero(tempnewtelefoonnummer.substr(0, 2))) == 9)
		{
			if (tempnewtelefoonnummer.length > 7 && tempnewtelefoonnummer.length < 11)
			{
				field.value = tempnewtelefoonnummer.substr(0, 4) + "-" + tempnewtelefoonnummer.substr(4, 6)
				return (true);
			}
		}
					
		if (showalerts) alert("Het ingevoerde telefoonnummer kon niet herkend worden als nederlands telefoonnummer.");
		field.value = tempnewtelefoonnummer;
		if (backtofield) field.focus();
		return (false);
	}
	else
	{
		if (mustenter)
		{
			if (showalerts) alert("Telefoonnummer is verplicht.");
			if (backtofield) field.focus();
			return (false);			
		} else return (true);
	}
}

function validate_telefoonnummerBE (field, mustenter, showalerts, backtofield, mobile)
{
	var netnummers1 = new Array("2", "3", "4", "9")
	var netnummers2 = new Array("10", "11", "12", "13", "14", "15", "16", "19", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "63", "64", "65", "67", "68", "69", "70", "71", "78", "80", "81", "82", "83", "84", "85", "86", "87", "89")
	var netnummers3 = new Array("472", "484", "494")
				
	var temptelefoonnummer = new String();
	var tempnewtelefoonnummer = new String();
				
	temptelefoonnummer = field.value.toString();
	tempnewtelefoonnummer = "";
	
	if (!isfieldempty(field, true, false, "", false))
	{
		for (var i = 0; i < temptelefoonnummer.length; i++)
		{
			if (temptelefoonnummer.charCodeAt(i) > 47 && temptelefoonnummer.charCodeAt(i) < 58)
			{
				tempnewtelefoonnummer = tempnewtelefoonnummer + temptelefoonnummer.charAt(i) 
			}
		}
					
		if ((tempnewtelefoonnummer.substr(0, 2) == "00") || (tempnewtelefoonnummer.substr(0, 1) != "0"))
		{
			if (mobile)
			{
				if (showalerts) alert("Het ingevoerde mobiele nummer is ongeldig.")
			}
			else
			{
				if (showalerts) alert("Het ingevoerde telefoonnummer is ongeldig.")
			}
			if (backtofield) field.focus();
			return (false);
		}
					
		if (parseInt(ltrimzero(tempnewtelefoonnummer.substr(0, 2))) > 0 && parseInt(ltrimzero(tempnewtelefoonnummer.substr(0, 2))) <= 9)
		{
			if (tempnewtelefoonnummer.length != 9)
			{
				if (showalerts) alert("Het ingevoerde telefoonnummer is ongeldig.")
				if (backtofield) field.focus();
				return (false);
			}
			
			if (mobile)
			{
				for (var i = 0; i < netnummers3.length; i++)
				{
					if (tempnewtelefoonnummer.substr(1, 3) == netnummers3[i])
					{
						field.value = tempnewtelefoonnummer.substr(0, 4) + "-" + tempnewtelefoonnummer.substr(4, 5)
						return (true);
					} 
				}			
			}
			else
			{
				for (var i = 0; i < netnummers1.length; i++)
				{
					if (tempnewtelefoonnummer.substr(1, 1) == netnummers1[i] && tempnewtelefoonnummer.substr(1, 3) != "472" && tempnewtelefoonnummer.substr(1, 3) != "484" && tempnewtelefoonnummer.substr(1, 3) != "494")
					{
						field.value = tempnewtelefoonnummer.substr(0, 2) + "-" + tempnewtelefoonnummer.substr(2, 7)
						return (true);
					}
				}			
							
				for (var i = 0; i < netnummers2.length; i++)
				{
					if (tempnewtelefoonnummer.substr(1, 2) == netnummers2[i])
					{
						field.value = tempnewtelefoonnummer.substr(0, 3) + "-" + tempnewtelefoonnummer.substr(3, 6)
						return (true);
					}
				}
			}
						
		}

		if (parseInt(ltrimzero(tempnewtelefoonnummer.substr(0, 2))) == 8 && parseInt(ltrimzero(tempnewtelefoonnummer.substr(0, 2))) == 9)
		{
			if (tempnewtelefoonnummer.length > 7 && tempnewtelefoonnummer.length < 11)
			{
				field.value = tempnewtelefoonnummer.substr(0, 4) + "-" + tempnewtelefoonnummer.substr(4, 9)
				return (true);
			}
		}
					
		if (mobile)
		{
			if (showalerts) alert("Het ingevoerde telefoonnummer kon niet herkend worden als belgisch mobiel nummer.");
		}
		else
		{		
			if (showalerts) alert("Het ingevoerde telefoonnummer kon niet herkend worden als belgisch telefoonnummer.");
		}
		field.value = tempnewtelefoonnummer;
		if (backtofield) field.focus();
		return (false);
	}
	else
	{
		if (mustenter)
		{
			if (mobile)
			{
				if (showalerts) alert("Mobiel nummer is verplicht.");
			}
			else
			{
				if (showalerts) alert("Telefoonnummer is verplicht.");
			}
			if (backtofield) field.focus();
			return (false);			
		} else return (true);
	}
}

function validate_achternaam(field, mustenter, showalerts, backtofield, errmsg1)
{
	var tempachternaam = new String();
	var tempnewachternaam = new String();
	var tussenvoegsels = new Array("de van der", "onder de", "uijt den", "voor den", "voor het", "aan den", "aan der", "aan het", "auf dem", "auf den", "auf der", "aus dem", "los van", "over de", "uit den", "uit het", "uit ten", "uyt den", "van den", "van der", "van het", "van ter", "van van", "von dem", "von den", "von der", "voor de", "voor 't", "aan de", "aan 't", "bij de", "bij 't", "da van", "de los", "in den", "in der", "in het", "op den", "op der", "op het", "op ten", "te van", "uit de", "van de", "van 't", "de de", "de l'", "de la", "de le", "in de", "in 't", "la de", "onder", "op de", "op 't", "te de", "over", "thoe", "v.d.", "v.h.", "voor", "aan", "auf", "ben", "dal", "del", "den", "der", "des", "dos", "het", "los", "ten", "ter", "toe", "uit", "van", "ver", "vom", "von", "zur", "a'", "af", "al", "d'", "da", "de", "di", "do", "du", "el", "in", "l'", "la", "le", "lo", "o'", "op", "'s", "'t", "t'", "te", "a")
	var allowedinitials = "ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÌÍÎÏÝŸ";
	var allowedcharacters = allowedinitials + " -'"
	var temppos = new Number();
	var templastcharwaschar = false;
	var foundtussenvoegsel = false;
			
	tempachternaam = trim(field.value.toString());
			
	if (tempachternaam == "")
	{
		if (mustenter)
		{
			if (showalerts) alert(errmsg1);
			if (backtofield) field.focus();
			return(false);
		}
		else
		{
			field.value = "";
			return(true);
		}
	}
			
	//for (var i = 0; i < tussenvoegsels.length; i++)
	//{
	//	if(tempachternaam.substr(0, tussenvoegsels[i].length + 1).toLowerCase() == tussenvoegsels[i].toString() + " ")
	//	{
	//		if (showalerts) alert("Achternaam mag niet beginnen met een tussenvoegsel.");
	//		if (backtofield) field.focus();
	//		return(false);
	//	}  
	//}
			
	temppos = 0;

	while(temppos < tempachternaam.length)
	{
		if (allowedcharacters.indexOf(tempachternaam.substr(temppos, 1).toUpperCase()) == -1)
		{
			if (showalerts) alert("Het karakter " + tempachternaam.substr(temppos, 1) + " op positie " + (temppos + 1) + " in de achternaam is niet toegestaan.");
			if (backtofield) field.focus();
			return(false);
		}
				
		foundtussenvoegsel = false;
		for (var i = 0; i < tussenvoegsels.length; i++)
		{
			if(tempachternaam.substr(temppos, tussenvoegsels[i].length + 1).toLowerCase() == tussenvoegsels[i].toString() + " ")
			{
				foundtussenvoegsel = true;
				templastcharwaschar = false;
				tempnewachternaam = tempnewachternaam + tussenvoegsels[i].toString() + " ";
				temppos = temppos + tussenvoegsels[i].length + 1;
				break;
			}
		}
				
		if (!foundtussenvoegsel)
		{
			if (allowedinitials.indexOf(tempachternaam.substr(temppos, 1).toUpperCase()) != -1)
			{
				if (!templastcharwaschar)
				{
					tempnewachternaam = tempnewachternaam + tempachternaam.charAt(temppos).toUpperCase();
				}
				else
				{
					tempnewachternaam = tempnewachternaam + tempachternaam.charAt(temppos).toLowerCase();
				}
				templastcharwaschar = true;
			}
			else
			{
				tempnewachternaam = tempnewachternaam + tempachternaam.charAt(temppos);
				templastcharwaschar = false;
			}
			temppos = temppos + 1;
		}
	}
	field.value = tempnewachternaam; 
	return (true);
}

function validate_rekeningnummer(field, mustenter, showalerts, backtofield)
{
	var temprekeningnummer;
	var counter;
	var result = 0;
	
	if (!isfieldempty(field, true, false, "", false))
	{
		if (!isNaN(field.value))
		{
			field.value = trim(ltrimzero(field.value));
			temprekeningnummer = field.value;
			if (temprekeningnummer.length != 8 && temprekeningnummer.length < 10)
			{
				if (temprekeningnummer.length == 9)
				{
					for (counter = 1; counter < 10; counter++)
					{
						result = result + (counter * temprekeningnummer.charAt(9 - counter));
					}
					if ((result % 11) == 0)
					{
						return (true);
					}
					else
					{
						if (showalerts) alert("Het ingevoerde rekeningnummer is ongeldig.");
						if (backtofield) field.focus();
						return (false);
					}
				}
				else
				{
					return (true);
				}
			}
            else
			{
				if (showalerts) alert("Een rekeningnummer mag niet " + temprekeningnummer.length + " lang zijn.");
				if (backtofield) field.focus();
				return (false);
			}
		}
		else
		{
			if (showalerts) alert("Een rekeningnummer moet een numerieke waarde hebben.");
			if (backtofield) field.focus();
			return (false);
		}
	}
	else
    {
		if (mustenter)
		{
			if (showalerts) alert("Je bent verplicht een rekeningnummer op te geven.");
			if (backtofield) field.focus();
			return (false);
		}
	}
}

function validate_housenumber(field, mustenter, showalerts, backtofield, errmsg1, errmsg2)
{
	field.value = trim(field.value);
	if (isfieldempty(field, true, false, "", false))
	{
		if (mustenter)
		{
			if (showalerts) alert (errmsg1);
			if (backtofield) field.focus();
			return(false);
		}
		else return(true);
	}
				
	if (isNaN(field.value))
	{
		//if (showalerts) alert ("In het huisnummerveld mag alleen maar cijfers gebruikt worden.");
		if (showalerts) alert (errmsg2);
		field.value="";
		if (backtofield) field.focus();
		return(false);
	}
	return (true);
}


function validate_number(field, mustenter, fieldname, showalerts, backtofield)
{
	field.value = trim(field.value);
	if (isfieldempty(field, true, false, "", false))
	{
		if (mustenter)
		{
			if (showalerts) alert (fieldname + " is een verplicht veld.");
			if (backtofield) field.focus();
			return(false);
		}
		else return(true);
	}
				
	if (isNaN(field.value))
	{
		if (showalerts) alert ("In " + fieldname + " mag alleen maar cijfers gebruikt worden.");
		if (backtofield) field.focus();
		return(false);
	}
	return (true);
}

function validate_email(field, mustenter, showalerts, backtofield, errmsg1)
{
	var text = new String();
	var tempemail = new String();
	
	tempemail = field.value.toString();
	field.value = trim(tempemail.toLowerCase());
	
	//if (mustenter)
	//{
	//	text = "Het e-mailadres moet ingevuld worden en mag alleen een geldig e-mailadres bevatten.";
	//}
	//else
	//{
		text = errmsg1
	//}
	
	if (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) != "@"))
		{
			if (showalerts) alert(text);
		    if (backtofield) field.focus();
		    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) != "."))
		{
			if (showalerts) alert(text);
		    if (backtofield) field.focus();
		    return (false);
		}
		return (true);
	}
	else
	{
		if (mustenter)
		{
			if (showalerts) alert(text);
		    if (backtofield) field.focus();
		    return (false);
		}
		else
		{
			return (true);
		}
	}
}

function validate_kentekenpart(field, mustenter, showalerts, backtofield)
{
	var tempkentekenpart = new String();
				
	tempkentekenpart = field.value.toString();
	tempkentekenpart = tempkentekenpart.toUpperCase();
	field.value = tempkentekenpart;

	if (tempkentekenpart != "")
	{
		if (tempkentekenpart.length == 2)
		{
			if (tempkentekenpart.charCodeAt(0) >= 65 && tempkentekenpart.charCodeAt(0) <= 90)
			{
				if (tempkentekenpart.charCodeAt(1) >= 65 && tempkentekenpart.charCodeAt(1) <= 90)
				{
					return (true);
				}
				else
				{
					if (showalerts) alert ("Kenteken moet uit combinaties van twee letters of twee cijfers bestaan.");
					if (backtofield) field.focus();
					return (false);
				}
			}
			else
			{
				if (tempkentekenpart.charCodeAt(0) >= 48 && tempkentekenpart.charCodeAt(0) <= 57)
				{
					if (tempkentekenpart.charCodeAt(1) >= 48 && tempkentekenpart.charCodeAt(1) <= 57)
					{
						return (true);
					}
					else
					{
						if (showalerts) alert ("Kenteken moet uit combinaties van twee letters of twee cijfers bestaan.");
						if (backtofield) field.focus();
						return (false);
					}
				}
				else
				{
					if (showalerts) alert ("Kenteken moet uit combinaties van twee letters of twee cijfers bestaan.");
					if (backtofield) field.focus();
					return (false);
				}
			}
		}
		else
		{
			if (showalerts) alert ("Kenteken moet uit combinaties van twee letters of twee cijfers bestaan.");
			if (backtofield) field.focus();
			return (false);
		}
	}
	else
	{
		if (mustenter)
		{
			if (showalerts) alert ("Kenteken is verplicht.");
			if (backtofield) field.focus();
			return (false);
		}
		else
		{
			return (true);
		}
	}
}


