function checkTweeRadioButtons(box1, box2, theMessage)
{
	if(!allValid)
	{
		// Als Allvalid al false is, wordt er uit deze functie gesprongen. We geven immers maar 1 foutmelding
		// per keer weer, en er is nu al een foutmelding.
		return false;
	}
	if(!box1.checked && !box2.checked)
	{
		allValid = false;
		alert(theMessage);
		box1.focus();
	}
}

function checkBoxCheck(box1, theMessage)
{
	if(!allValid)
	{
		// Als Allvalid al false is, wordt er uit deze functie gesprongen. We geven immers maar 1 foutmelding
		// per keer weer, en er is nu al een foutmelding.
		return false;
	}
	if(!box1.checked)
	{
		allValid = false;
		alert(theMessage);
		box1.focus();
	}
}

function minTekstlengte(tekstveld, minlengte, theMessage)
{
	// Controleren of een tekst wel minimaal [minlengte] tekens bevat.
 	if(!allValid)
	{
		return false;
	}
	if (tekstveld.value.length < minlengte) 
	{
		allValid = false;
		alert(theMessage);
		tekstveld.focus();
	}
}


function maxTekstlengte(tekstveld, maxlengte, theMessage)
{
	// Controleren of een tekst niet meer dan [maxlengte] tekens bevat.
 	if(!allValid)
	{
		return false;
	}
	if (tekstveld.value.length > maxlengte) 
	{
		allValid = false;
		alert(theMessage);
		tekstveld.focus();
	}
}


function checkText(theField, theMessage)
{
// Met deze functie controleren we of een veld wel is ingevuld.

	if(!allValid)
	{
		return false;
	}
	
  	if (theField.value == "")
	{
	// Als het betreffende veld leeg is, wordt de met de functie meegegeven boodschap weergegeven, komt het 
	// typ teken ("|") in het betreffende veld te staan en wordt allValid op false gezet.
		alert(theMessage);
		theField.focus();
		allValid = false;
		return false;
    }
}

function checkText2(theField, theMessage)
{
// Met deze functie controleren we of een veld wel is ingevuld. Het enige verschil met checkText is dat we 
// hier niet focussen op het betreffende veld (handig voor een hidden field.).

	if(!allValid)
	{
		return false;
	}
	
  	if (theField.value == "")
	{
	// Als het betreffende veld leeg is, wordt de met de functie meegegeven boodschap weergegeven, komt het 
	// typ teken ("|") in het betreffende veld te staan en wordt allValid op false gezet.
		alert(theMessage);
		allValid = false;
		return false;
    }
}


function checkNumAanwezig(Veld, theMessage)
{
// Deze functie controleert of er wel een getal voorkomt in de string van de straatnaam + huisnr. Zo niet,
// dan is er dus zeker weten geen huisnummer ingevuld en wordt hier melding van gemaakt.

	var checkOK = "0123456789";
	// Dit is een string van alle getallen waarmee telkens gechecked wordt.
	var gevonden = "";
	// De var gevonden is standaard niets en wordt pas op 1 gezet wanneer er een getal uit bovenstaande 
	// checkOK string ergens in de straatnaam+huisnummer string is gevonden.
	
	if(!allValid)
	{
		return false;
	}
	
	for (i = 0;  i < Veld.value.length; i++)
	{
	// We maken een loop waarbij we voor iedere karakter van de straatnaam+huisnummer string het volgende gaan doen:
	
		ch = Veld.value.charAt(i);
		// We kijken met welk karakter we op dit moment in de loop de maken hebben.
		for (j = 0;  j < checkOK.length; j++)
		{
		// Vervolgens komt er nu ook een loop voor de checkOK string. Daarvoor wordt ook bij ieder karakter
		// het volgende gedaan.
			if (ch == checkOK.charAt(j))
			{
			// De twee karakters van waar de loops nu zijn worden met elkaar gecontroleerd. Als er een match
			// uit komt wordt gevonden op "1" gezet.
				gevonden = "1";
			}
		}
    }
	
	if(gevonden != "1")
	{
	// Is gevonden op dit moment nog niet op "1" gezet, dan is er dus geen getal in de string gevonden en wordt
	// het volgende gedaan:
	
		alert(theMessage);
		// We geven de boodschap weer dat er geen huisnummer in de string is gevonden.
		Veld.focus();
		// We focussen ons op het betreffende veld, zodat de gebruiker direct kan typen.
		allValid = false;
		// We zetten allValid op false, wat inhoudt dat het formulier niet verzonden gaat worden.
		return false;
		// We keren terug uit deze functie.
	}
}


function checkMinMaxNum(theField, theMessage, minlengte, maxlengte)
{
// Deze functie controleert of alle karakters van een bepaalde string wel nummers zijn. Zo niet, dan wordt
// er een foutmelding gegeven.

	var checkOK 	= "0123456789";
	var theString 	= theField.value;

	if(!allValid)
	{
		return false;
	}

	if (theString.length == 0)
	{
	// Als de lengte 0 is, is er niets ingevuld en moet er dus een foutmelding worden gegeven.
      	allValid = false;
	}

	if (theString.length > maxlengte || theString.length < minlengte)
	{
	// Als de lengte niet de ingevulde lengte is, moet er ook een foutmelding worden gegeven.
      	allValid = false;
	}
	
    for (i = 0;  i < theString.length;  i++)
	{
	// We maken een loop waarbij we voor iedere karakter van de straatnaam+huisnummer string het volgende gaan doen:
	
		ch = theString.charAt(i);
		// We halen de karakter op van de plek waar de loop nu is.
		for (j = 0;  j < checkOK.length;  j++)
		{
		// We doen nog een loop binnen de huidige loop. Deze loop wordt uitgevoerd voor ieder karakter van de
		// string checkOK.
			if (ch == checkOK.charAt(j))
			{
			// Als de karakter van checkOK van waar deze binnenste loop nu is, gelijk is aan het karakter van waar 
			// de buitenste loop nu is, wordt er uit de binnenste loop gesprongen en verder gegaan.
				break;
			}
		}
		if (j == checkOK.length)
		{
		// Op het moment dat de code hier komt is het volgende gebeurd: hij heeft bovenstaande loop af
		// kunnen maken zonder dat hij eruit is ge-breaked (getal j heeft immers het getal vd lengte van 
		// checkOK kunnen worden). Dit had niet mogen gebeuren, omdat het betekent dat het getaal waar de
		// buitenste loop nu is, geen cijfer is en dus ongeldig is. Er volgt dus een foutmelding.
			allValid = false;
		}
	}

	if(!allValid)
	{ // Zie eerder deze pagina.
    	alert(theMessage);
        theField.focus();
		return false;
	}
}


function checkNumString(theField, TheVar, theMessage)
{   // Deze functie controleert of een ingevulde string een minimaal aantal karakters bevat en of hij wel is
// ingevuld. Voor uitleg code, zie eerder deze pagina.
	
	var theString = theField.value;
	
	if(!allValid)
	{
		return false;
	}
	
	if (theString.length == 0)
	{
		allValid = false;
	}
	else if (theString.length < TheVar)
	{
		allValid = false;
	}
	
	if(!allValid)
	{
		alert(theMessage);
		theField.focus();
		return false;
	}			
}


function checkEmail(theField, theMessage) 
{
// We controleren het e-mailadres of het uberhaupt wel echt kan zijn:
  	var str = theField.value;

	if(!allValid)
	{
		return false;
	}

    if (window.RegExp) 
	{
		var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
		var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";
		var reg1 = new RegExp(reg1str);
		var reg2 = new RegExp(reg2str);
		if (!reg1.test(str) && reg2.test(str)) 
		{
			return true;
      	}
      	allValid = false;
    }
	else 
	{
		if(str.indexOf("@") >= 0)
		return true;
		allValid = false;
    }

	if(!allValid)
	{
    	alert(theMessage);
        theField.focus();
		return false;
	}

}

function postcodeOK(Veld, theMessage) 
{
	// We maken twee verschillende strings aan waarmee we zo gaan checken. Het verschil zit hem in de spatie aan het eind.
	var checkOK1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ";
	var checkOK2 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	
	// Als allValid al false is, gaan we gelijk terug uit deze functie.
	if(!allValid)
	{
		return false;
	}
	
	// Eerst even checken of er uberhaupt wel de minimale lengte (6 karakters) is ingevuld. 0 is karakter 1 hieronder.
	if (Veld.value.length < 6)
	{
		alert(theMessage);
		Veld.focus();
		allValid = false;
		return false;
		// Hierboven staat: geef een boodschap, zet de cursor op het veld waar we de check op doen (meegegeven in bij het aan-
		// roepen van de functie.), zet Allvalid op false (dit veld is fout, dus ze allemaal valid/geldig/goed gaat niet meer op)
		// Ga vervolgens met return false uit deze functie.
	}
	
	// blijkbaar zijn er genoeg tekens ingevuld. We gaan verder kijken naar de waarden die zijn ingevuld.
	// We doen de volgende loop voor iedere karakter van de ingevoerde string.
	for (var i=0;i < (Veld.value.length);i++) 
	{
		// De if hieronder wordt gedaan voor de eerste vier karakters. Dit moeten allemaal cijfers zijn.
		if(i < 4)
		{
			// Als deze karakter geen cijfer is, wordt de foutmelding gegeven en wordt de fout afgehandeld.
			if ((Veld.value.substring(i,i+1) < '0') || (Veld.value.substring(i,i+1) > '9'))
			{
				alert(theMessage);
				Veld.focus();
				allValid = false;
				return false;
			}
		}
		// Het 6e karakter (dit is i == 5, want de 0 telt ook als karakter mee) moet ten alle tijden een
		// letter zijn. Of de gebruiker nu een spatie in zijn postcode heeft tussen de cijfers en letter of niet.
		// Daarom wordt de check gedaan met de variabele checkOK2 (die geen spatie heeft in de reeks met geldige karakters
	   //, alleen letters)
		else if(i == 5)
		{
			// Haal het 6e karakter uit de string op.
			ch = Veld.value.charAt(i);
			
			// aan het begin is de var niet gevonden en wordt dus een lege var gevonden aangemaakt.
			var gevonden = "";
			
			// We gaan nu over de inhoud van var checkOK2 een loop doen. Voor iedere kar een ronde. Alleen karakters
			// mogen allemaal in de ingevoerde string zitten. Voor iedere kar van checkOK2 kijken we of die matcht met 
			// de kar van de ingevoerde string (waar de loop nu is..plek 6 dus).
			for (j = 0;  j < checkOK2.length;  j++)
			{
				// Zijn de karakters hetzelfde? Zo ja, zet gevonden op 1.
				if (ch == checkOK2.charAt(j))
				{
					gevonden = "1";
				}
			}
			
			// Als gevonden nu niet op 1 is gezet, betekent dit dat de kar uit de ingevoerde string niet matcht
			// met een van de geldige karakters. Dus moet de fout afgehandeld worden met melding etc.
			if(gevonden != "1")
			{
				alert(theMessage);
				Veld.focus();
				allValid = false;
				return false;
			}
		}
		
		// Hetzelfde verhaal als hierboven met als verschil dat hier checkOK1 wordt gebruikt ipv checkOK2
		// Voor het 5e en het eventuele 7e karakter zou namelijk ook een spatie mogen volstaan. Dus is de spatie
		// er in var checkOK1 ook bij gezet.
		else if(i > 3 && i != 5)
		{
			ch = Veld.value.charAt(i);
			
			var gevonden = "";
			
			for (j = 0;  j < checkOK1.length;  j++)
			{
				if (ch == checkOK1.charAt(j))
				{
					gevonden = "1";
				}
			}
			
			if(gevonden != "1")
			{
				alert(theMessage);
				Veld.focus();
				allValid = false;
				return false;
			}
		}
	}
}

function checkPass(theField, equalField)
{ // Deze functie controleert of de ingevulde wachtwoorden bij wachtwoord en wachtwoord nogmaals wel met 
// elkaar overeenkomen. Wanneer het tweede veld niet is ingevuld, wordt hier ook melding van gemaakt.
// Of het eerste veld is ingevuld moet worden gechecked met checkText(). Voor uitleg van code, zie eerder
// deze pagina.
	if(!allValid)
	{
		return false;
	}

  	if (equalField.value.length == 0)
	{
      	allValid = false;
		alert('U heeft het tweede wachtwoord niet ingevuld. \nDeze moet gelijk zijn aan het eerste.');
        equalField.focus();
		return false;
    }

	if (theField.value != equalField.value) 
	{
		theMessage = "Het tweede wachtwoord dat u hebt ingevoerd is niet gelijk aan het eerste.";
      	allValid = false;
	}

	if(!allValid)
	{
    	alert(theMessage);
        theField.focus();
		return false;
	}
}

function checkTel(Veld, theMessage)
{	
// Met deze functie controleren we het ingevulde telefoonnummer.
	if(!allValid)
	{
		return false;
	}

	// Of het telefoonnummer wel iets is, moet worden gechecked met de functie checkText(). 
	// Dat gebeurt dus niet hier. Als de ingevulde waarde een lengte heeft tussen 0 en 10, is het telefoon-
	// nummer zeker weten fout:
	if (Veld.value.length > 0 && Veld.value.length < 10)
	{
		alert(theMessage);
        Veld.focus();
		allValid = false;
		return false;
	}
		
	if (Veld.value.length > 9)
	{
	// Als het telefoonnummer 10 of meer is, wordt het volgende gedaan.
		for (var i = 0; i < Veld.value.length; i++)
		{
			// We doen een loop voor iedere karakter van de ingevulde string.
			
			// We halen het karakter op van de plek uit de string waar de loop nu is:
			var ch = Veld.value.substring(i, i+1);
			
			if ((ch < "0" || "9" < ch) && ch != "-" && ch != " "&& ch != ".")
			{
			// Het karakter mag een cijfer zijn, "-", " " of een "."...Als dit niet het geval is, gebeurt 
			// het volgende:
				alert(theMessage);
				Veld.focus();
				allValid = false;
				return false;
			}
		}
	}
}


function checkBanknr(theField, theMessage)
{
// Deze functie is gebaseerd op de functie checkNum, en uitgebouwd met een check om de controleren of het
// wel een bankrekeningnummer is. Deze check vond ik op http://cgi.dit.nl/bank.cgi Veel commentaar staat al
// bij de functie checkNum.

	var checkOK 	= "0123456789";
	var theString 	= theField.value;

	if(!allValid)
	{
		return false;
	}

	if (theString.length == 0)
	{
      	allValid = false;
	}

	if (theString.length != 9)
	{
      	allValid = false;
	}
	
    for (i = 0;  i < theString.length;  i++)
	{
		ch = theString.charAt(i);
		for (j = 0;  j < checkOK.length;  j++)
		{
			if (ch == checkOK.charAt(j))
			{
				break;
			}
		}
			
		if (j == checkOK.length)
		{
			allValid = false;
		}
		
    }

	if(!allValid)
	{
    	alert(theMessage);
        theField.focus();
		return false;
	}
	
	// Door bovenstaande weten we zeker dat t banknr 9 cijfers heeft (anders was er al uit deze functie gesprongen.) Daarom:
	/* 
	Hieronder gaan we checken middels de "11-proef" of het wel een bestaand banknr is. 
	Dit doe ik dmv een vb. We kunnen met deze proef niet vaststellen of een banknr echt bestaat. Wel weten
	we zeker, dat als het nummer de proef niet doorstaat, het nummer 100% zeker fals is.
	
	We gaan hier de 11-proef uitvoeren op bankrekeningnummer 123456789.
	1e cijfer bankrekeningnummer = 1      9 * 1 =   9
 	2e cijfer bankrekeningnummer = 2      8 * 2 =  16
 	3e cijfer bankrekeningnummer = 3      7 * 3 =  21
 	4e cijfer bankrekeningnummer = 4      6 * 4 =  24
 	5e cijfer bankrekeningnummer = 5      5 * 5 =  25
 	6e cijfer bankrekeningnummer = 6      4 * 6 =  24
 	7e cijfer bankrekeningnummer = 7      3 * 7 =  21
 	8e cijfer bankrekeningnummer = 8      2 * 8 =  16
 	9e cijfer bankrekeningnummer = 9      1 * 9 =   9
                                   		opgeteld:   165

	Omdat 165 deelbaar is door 11 is de kans groot
	dat bankrekeningnummer 123456789 klopt (165/11=15 rest 0)
	*/
	// We gaan de check doen voor het ingevoerde nummer:
	
	var vermenigvuldigingEen	=	9 * theField.value.charAt(0);	// 9 wordt vermenigvuldigd met het eerste cijfer en in var vermenigvuldigingEen geplaatst.
	var vermenigvuldigingTwee	=	8 * theField.value.charAt(1);	// 8 wordt vermenigvuldigd met het tweede cijfer en in var vermenigvuldigingTwee geplaatst.
	var vermenigvuldigingDrie	=	7 * theField.value.charAt(2);	// 7 wordt vermenigvuldigd met het derde cijfer en in var vermenigvuldigingDrie geplaatst.
	var vermenigvuldigingVier	=	6 * theField.value.charAt(3);	// 6 wordt vermenigvuldigd met het vierde cijfer en in var vermenigvuldigingVier geplaatst.
	var vermenigvuldigingVijf	=	5 * theField.value.charAt(4);	// 5 wordt vermenigvuldigd met het vijfde cijfer en in var vermenigvuldigingVijf geplaatst.
	var vermenigvuldigingZes	=	4 * theField.value.charAt(5);	// 4 wordt vermenigvuldigd met het zesde cijfer en in var vermenigvuldigingZes geplaatst.
	var vermenigvuldigingZeven	=	3 * theField.value.charAt(6);	// 3 wordt vermenigvuldigd met het zevende cijfer en in var vermenigvuldigingZeven geplaatst.
	var vermenigvuldigingAcht	=	2 * theField.value.charAt(7);	// 2 wordt vermenigvuldigd met het achtste cijfer en in var vermenigvuldigingAcht geplaatst.
	var vermenigvuldigingNegen	=	1 * theField.value.charAt(8);	// 1 wordt vermenigvuldigd met het negende cijfer en in var vermenigvuldigingNegen geplaatst.
	
	// Het totaal getal van alle uitkomsten vd vermenigvuldigingen bij elkaar opgeteld:
	var totaal	=	vermenigvuldigingEen + vermenigvuldigingTwee + vermenigvuldigingDrie + vermenigvuldigingVier
	+ vermenigvuldigingVijf + vermenigvuldigingZes + vermenigvuldigingZeven + vermenigvuldigingAcht + vermenigvuldigingNegen;

	if(totaal % 11 != 0)
	{
		// Als blijkt dat dit totaal getal niet deelbaar is door 11 (wanneer er dus iets anders dan 0 overblijft na de deling),
		// Wordt het volgende gedaan:
		
		allValid = false;
    	alert(theMessage);
		theField.focus();
		return false;
	}
}