//globale vars
var _id=0
var _check  = new Object();
var myFirstTime = false

function getValidationrules(){
	var strValidationrules = "";
//	strValidationrules = "Function1" + "___" + "Rule1" + "\t";
	strValidationrules = "checkEmail(oElement)" + "___" + "e-mail adres" + "\t";
	strValidationrules += "checkTelephone(oElement)" + "___" + "telefoonnummer" + "\t";
	strValidationrules += "checkPostcode(oElement)" + "___" + "postcode veld" + "\t";
	strValidationrules += "checkIsNummeric(oElement)" + "___" + "nummeriek veld" + "\t";
	strValidationrules += "checkNotEmpty(oElement)" + "___" + "verplicht veld" + "\t";
	strValidationrules += "checkDD(oElement)" + "___" + "0-31 (dag)" + "\t";
	strValidationrules += "checkMM(oElement)" + "___" + "0-12 (maand)" + "\t";
	strValidationrules += "checkYYYY(oElement)" + "___" + "jaartal" + "\t";
	strValidationrules += "checkJJJJ(oElement)" + "___" + "jaartal" + "\t";
	strValidationrules += "checkCaps(oElement)" + "___" + "Formateer Aaaa" + "\t";
	strValidationrules += "checkAllCaps(oElement)" + "___" + "Formateer AAAA" + "\t";
	strValidationrules += "checkCheckboxNotEmpty(oElement, prefix)" + "___" + "checkbox" + "\t";
	strValidationrules += "checkRadio(oElement)" + "___" + "radio" + "\t";
	strValidationrules += "checkDate(oElement)" + "___" + "datum" + "\t";
	strValidationrules += "checkTime(oElement)" + "___" + "tijd" + "\t";
	strValidationrules += "checkSofinr(oElement)" + "___" + "sofinummer" + "\t";
	strValidationrules += "checkKenteken(oElement)" + "___" + "kenteken" + "\t";
	strValidationrules += "checkKentekentwee(oElement)" + "___" + "kenteken twee" + "\t";
	return strValidationrules;
	
}

function PPFormValidator(oForm){
	if (oForm.tagName.toLowerCase()!='form') return;
	var arrFormElements = oForm.elements;
	for (var iFormElement=0;iFormElement< arrFormElements.length; iFormElement++){
		if (arrFormElements[iFormElement].getAttribute('validationrules')) {
			if (arrFormElements[iFormElement].getAttribute('mandatory') == "false" && arrFormElements[iFormElement].value=="") {
				continue;
			}
			if (!PPElementValidation(arrFormElements[iFormElement])) return false;
		}
	}
	return true;
}

function PPElementValidation(oElement){
	var validationRequired = true;
	var failed = false;

	var strValidationRequired = oElement.getAttribute('validationrequired');
	if (strValidationRequired == "no" &&
		typeof oElement.type != 'undefined' &&
		oElement.type.toLowerCase () == 'text' && // only 'input type=text' at the moment
		oElement.value == '') // if empty, don't even check
			validationRequired = false;

	var strValidationRules = oElement.getAttribute('validationrules');
	if (strValidationRules !="") {
		var result = strValidationRules.split ("\t");
		if (result != null) {
			for (i=0;i<result.length;i++) {
				result[i].replace(/\&\#9\;/ig,"");
				arrOption = result[i].split ("___");

				if (arrOption.length>1)
					strCurRule = arrOption[0];
				else
					strCurRule = result[i];

				if (strCurRule) {
					if (validationRequired && !eval (strCurRule)) {	// hier wordt de validatiefunctie uitgevoerd
						var strMeldingType = oElement.getAttribute('errormsgtype');
						if (strMeldingType == null)
							strMeldingType = 'alert';

						var strMeldingClass = oElement.getAttribute('errormsgstylename');
						var strMeldingTxt = oElement.getAttribute('errormsg');
						var strMeldingErrorLocation= oElement.getAttribute('errorlocation');
//						if (strMeldingTxt == "" || strMeldingTxt == null || strMeldingTxt == undefined) strMeldingTxt = get_i18n_text(2,"U heeft het veld niet juist ingevuld!");
						if (strMeldingTxt == "")
							strMeldingTxt = "U heeft het veld niet juist ingevuld!"

						if (strMeldingType.toLowerCase()=='txtstring') {
							strErrorMsg = "<br><span class='"+strMeldingClass+"'>&nbsp;"+strMeldingTxt+"</span><br>";
							if(typeof strMeldingErrorLocation == "undefined" || strMeldingErrorLocation == null || strMeldingErrorLocation == ""){
								oElement.insertAdjacentHTML ('beforeBegin', strErrorMsg);
								try{
									oElement.focus();
								}
								catch(err){
									//element not visible and cant have focus
								}
							}
							else{
								var locationArr = strMeldingErrorLocation.split(":::");
								var errorElement = document.getElementById(locationArr[0]);
								if(errorElement != null){
									strErrorMsg = "<div id=\""+locationArr[1]+"\"><img src=\"/html/css/images/wizard/alert.gif\" width=\"21\" height=\"22\" alt=\"Fout!\" border=\"0\"><p class=helpbody id=\""+locationArr[1]+"\">&nbsp;"+strMeldingTxt+"</p></div>";
		
									//strErrorMsg = "<div id=\""+locationArr[1]+"\" class='"+strMeldingClass+"'><img src=\"html/css/images/wizard/alert.gif\" width=\"21\" height=\"22\" alt=\"Fout!\" border=\"0\">&nbsp;"+strMeldingTxt+"</div>";
									var found = false;
									for(var i = 0; i < errorElement.childNodes.length; i++){
										if(errorElement.childNodes[i].id == locationArr[1]){
											found = true;
											break;
										}
									}
									if(!found){
										errorElement.innerHTML = errorElement.innerHTML + strErrorMsg;
									}
								}
								
							}
							
							return false;
						} else {
							alert (strMeldingTxt);
							try{
								oElement.focus();
							}
							catch(err){
								//element not visible and cant have focus
							}
							return false;
						}
					}
					//Else it is valid
					else{
						var strMeldingErrorLocation= oElement.getAttribute('errorlocation');
						if(typeof strMeldingErrorLocation != "undefined" && strMeldingErrorLocation != null && strMeldingErrorLocation != ""){
							var locationArr = strMeldingErrorLocation.split(":::");
							var errorElement = document.getElementById(locationArr[0]);
							if(errorElement != null){
								for(var i = 0; i < errorElement.childNodes.length; i++){
									if(errorElement.childNodes[i].id == locationArr[1]){
										errorElement.removeChild(errorElement.childNodes[i]);
										break;
									}
								}
							}
						}	
					}
				}
			}
		}
	}
	return true;
}



// de errorchecks per type

//////////////////////////////////////////////////////////////////////
// ValideerKenteken													//
//////////////////////////////////////////////////////////////////////
// Valideer of de ingevoerde tekst alleen uit letters van het		//
// alfabet bestaat.													//
//////////////////////////////////////////////////////////////////////
function checkKenteken(invoerVeld)
{	
	var invoer = invoerVeld.value;
	if(invoer.length != 8) {
		return false;
	}
	//parseer formaat XX-XX-XX
	
	//index positie 2 en 5 moeten een "-" bevatten
	if((invoer.charAt(2) != '-') || (invoer.charAt(5) != '-'))
	{
		if((invoer.charAt(2) != '-') || (invoer.charAt(6) != '-'))
		{
			return false;
		} else {
			//controleer karakters op letter of cijfer paren XX-XXX-XX
			if (!ValideerAlfabetisch(invoer.substr(0, 2)) && !checkCijfers(invoer.substr(0, 2)))
			{
				return false;
			}
			if (!ValideerAlfabetisch(invoer.substr(3, 3)) && !checkCijfers(invoer.substr(3, 3)))
			{
				return false;
			}
			if (!ValideerAlfabetisch(invoer.substr(7, 1)) && !checkCijfers(invoer.substr(7, 1)))
			{
				return false;
			}			
		}
	} else {
		//controleer karakters op letter of cijfer paren XX-XX-XX
		if (!ValideerAlfabetisch(invoer.substr(0, 2)) && !checkCijfers(invoer.substr(0, 2)))
		{
			return false;
		}
		if (!ValideerAlfabetisch(invoer.substr(3, 2)) && !checkCijfers(invoer.substr(3, 2)))
		{
			return false;
		}
		if (!ValideerAlfabetisch(invoer.substr(6, 2)) && !checkCijfers(invoer.substr(6, 2)))
		{
			return false;
		}
	}
	return true;
}


//kenteken mag ook zonder koppelstreepjes worden ingevoerd
function checkKentekentwee(invoerVeld)
{	
	var invoer = invoerVeld.value;
	if(invoer.length != 6) {
		if(invoer.length == 8)
			return checkKenteken(invoerVeld);
		else
			return false;
	}
	//parseer formaat XXXXXX
	
	//controleer karakters op letter of cijfer paren
	if (!ValideerAlfabetisch(invoer.substr(0, 2)) && !checkCijfers(invoer.substr(0, 2)))
	{
		return false;
	}
	if (!ValideerAlfabetisch(invoer.substr(2, 2)) && !checkCijfers(invoer.substr(2, 2)))
	{
		return false;
	}
	if (!ValideerAlfabetisch(invoer.substr(4, 2)) && !checkCijfers(invoer.substr(4, 2)))
	{
		if ((!ValideerAlfabetisch(invoer.substr(4, 1)) && !checkCijfers(invoer.substr(4, 1)))   ||   (!ValideerAlfabetisch(invoer.substr(5, 1)) && !checkCijfers(invoer.substr(5, 1))))
		{
			return false;
		}
	}
	return true;
}

function checkCijfers(cijfers)
{
	for (i = 0; i < cijfers.length ; i++)
	{
		if (!((cijfers.charCodeAt(i) > 47) && (cijfers.charCodeAt(i) < 58)))
			return false;
	}
	
	return true;
}
//////////////////////////////////////////////////////////////////////
// ValideerAlfabetisch												//
//////////////////////////////////////////////////////////////////////
// Valideer of de ingevoerde tekst alleen uit letters van het		//
// alfabet bestaat.													//
//////////////////////////////////////////////////////////////////////
function ValideerAlfabetisch(invoerVeld)
{	
	for (i = 0; i < invoerVeld.length ; i++)
	{
		if (!(((invoerVeld.charCodeAt(i) > 64) && (invoerVeld.charCodeAt(i) < 91)) ||
			((invoerVeld.charCodeAt(i) > 96) && (invoerVeld.charCodeAt(i) < 123))))
			return false;
	}
	
	return true;
}

function checkEmail(myField){
	// uit de code snippets: check e-mailadres#2
	// daar staat ook al het comment
	// The JavaScript Source!! http://javascript.internet.com 
	// V1.1.3: Sandeep V. Tamhankar (stamhankar@hotmail.com) 
	// Original:  Sandeep V. Tamhankar (stamhankar@hotmail.com) 
	
	emailStr = myField.value
	var checkTLD=1;
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=emailStr.match(emailPat);
	if (matchArray==null) {
		return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];
	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i)>127) {
			return false;
		}
	}
	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i)>127) {
			return false;
	   }
	}
	if (user.match(userPat)==null) {
		return false;
	}
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
	for (var i=1;i<=4;i++) {
		if (IPArray[i]>255) {
			return false;
	   }
	}
	return true;
	}
	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++) {
		if (domArr[i].search(atomPat)==-1) {
			return false;
	   }
	}
	if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) {
		return false;
	}
	if (len<2) {
		return false;
	}
	return true;
}

function checkTelephone(myField){
	// een hele eenvoudige telefoonnummercheck
	if (myField.value.match(/^[0-9\-\s\(\)]{10,13}$/)) return true;
	else return false;
}

function checkIsNummeric(myField){
	if (!myField.value.match(/^[0-9]+$/)){
		 return false;
	}
	if(typeof myField.maxNumber != "undefined"){
			if(parseInt(myField.value) > parseInt(myField.maxNumber)){
				return false;
			}
	}
	if(typeof myField.minNumber != "undefined"){
			if(parseInt(myField.value) < parseInt(myField.minNumber)){
				return false;
			}
	}
	
	return true;
}


function checkIsNummeric2(myField,num){
	//nummeriek , eventueel met een komma en twee decimalen (00 of 00,00)
	if (myField.value.match(/^[0-9]+(\,[0-9]{2})?$/)) return true;
	else return false;
}

function checkDD( myField){
	if (myField.value.match(/^[0-9]{1,2}$/)){
		if (myField.value >=1 && myField.value <= 31) return true;
	}
	else return false;
}


function checkMM( myField){
	if (myField.value.match(/^[0-9]{1,2}$/)){
		if (myField.value >=1 && myField.value <= 12) return true;
	}
	else return false;
}

function checkYYYY( myField){
	if (myField.value.match(/^[0-9]{4}$/)){
		jaar= new Date()
		if (myField.value <= jaar.getFullYear()) return true;
		
	}
	else return false;
}

function checkJJJJ( myField){
	if (myField.value.match(/^[0-9]{4}$/)){
		jaar= new Date()
		if (myField.value <= 3000) return true;
		
	}
	else return false;
}


function checkPostcode(myField){
 	matchArr =  CheckPostcode2(myField)
	if (matchArr){ 
		myField.value = matchArr[1] + " " + matchArr[3].toUpperCase()
		return true;
	}
	else return false;
}

function CheckPostcode2(myField){
	return myField.value.match(/^([0-9]{4})(\s*)([a-zA-Z]{2})/)
}

function checkNotEmpty(myField){
	//is niet helemaal goed. Ook checken op rare tekens, anders dan [a-zA-Z0-9] - bv: _-()*&
	myValue = myField.value
	if (!myValue.match('[a-zA-Z0-9]') || myValue.length<1){
		return false;
	}

	if(typeof myField.maxChars != "undefined"){
		if(myValue.length > parseInt(myField.maxChars)){
			return false;
		}
	}
	if(typeof myField.minChars != "undefined"){
		if(myValue.length < parseInt(myField.minChars)){
			return false;
		}
	}
	return true;
}

function checkCaps(myField){
	//veranderd de ingevulde woorden in onderkast, en de eerste letter in een hoofdetter
	myValue = myField.value
	if (!myValue.match('[a-zA-Z0-9]') || myValue.length<1){
		return false;
	}else{
		return makeCaps(myField);
	}
}

function checkAllCaps(myField){
	//veranderd de ingevulde woorden in kapitalen
	myValue = myField.value
	if (!myValue.match('[a-zA-Z0-9]') || myValue.length<1){
		return false
	}else{
		return makeAllCaps(myField)
	}
}

function makeCaps (myField){
	myValueArray = myField.value.split(" ")
	var waarden = "";
	for(items in myValueArray){
		startCap = myValueArray[items].slice(0,1).toUpperCase();
		rest = myValueArray[items].slice(1, myValueArray[items].length).toLowerCase();
		if (waarden=="") waarden = startCap + rest;
		else waarden += " " + startCap + rest;
	}
	myValueArray = waarden.split("-")
	if (myValueArray.length>1){
		waarden="";
		for(items in myValueArray){
			startCap = myValueArray[items].slice(0,1).toUpperCase();
			rest = myValueArray[items].slice(1, myValueArray[items].length).toLowerCase();
			if (waarden=="") waarden = startCap + rest;
			else waarden += "-" + startCap + rest;
		}
	}
	myValueArray = waarden.split("- ")
	if (myValueArray.length>1){
		waarden="";
		for(items in myValueArray){
			startCap = myValueArray[items].slice(0,1).toUpperCase();
			rest = myValueArray[items].slice(1, myValueArray[items].length).toLowerCase();
			if (waarden=="") waarden = startCap + rest;
			else waarden += "- " + startCap + rest;
		}
	}
	myField.value = waarden;
	return true;
}

function makeAllCaps (myField){
	myField.value = myField.value.toUpperCase()
	return true;
}

function checkRadio(myObject){
	myRadios = document.getElementsByName(myObject.name)
	for(i=0;i<myRadios.length;i++){
		if (myRadios[i].checked==true) return true;
	}
	return false;
}

function checkChecked(myObject){
	if (myObject.checked!=true){
		return false;
	} 
	return true;
}


/**
 * 	@function		checkSelected
 *	@description	Controleert of er inderdaad een keuze is gemaakt middels een select-pulldown
 *	@input			Object om te checken
 *	@return 		{ true | false }
 */
function checkSelected(myObject){
	//
	//	** Nog invulling aan geven **
	//
	return true;
}


/**
 * 	@function		checkSelectBox
 *	@description	Controleert of er inderdaad een ('niet lege') keuze is gemaakt middels een select-pulldown als deze niet disabled is
 *	@input			Object om te checken
 *	@return 		{ true | false }
 */
function checkSelectBox(myObject){
	if (myObject.disabled != true) {
		if (myObject.options[myObject.selectedIndex]) {
			if (myObject.options[myObject.selectedIndex].innerHTML == '') {
				return false;
			}
		}
	}
	return true;
}



/**
 * 	@function		checkAtLeastOneChecked
 *	@description	Controleert of er niet minimaal 1 vinkvakje in een aangegeven element (span of div-je!) aangevinkt is of niet.
 *	@input			Object om te checken (meestal een DIV om de checkboxes heen)
 *	@return 		{ true | false }
 */
 function checkAtLeastOneChecked(myObject){
	if (myObject) {
		children = myObject.all;
		theValues = new Object ();
		for (var i=0;i< children.length; i++){
//			alert( "ID found: " + children[i].getAttribute("id") );
			if (children[i].checked==true) {
				return true;
			}
		}//End for
	}//End if
	return false;
}//End function


/**
 * 	@function		checkDomainnameSyntax
 *	@description	Controleert of ingevulde domeinnaam wel een correcte syntax heeft.
 *					Voorlopig alleen letters en cijfers toestaan.
 *	@input			Object om te checken
 *	@return 		{ true | false }
 */
 function checkDomainnameSyntax(myObject){
	if (myObject) {
		myValue = myObject.value

		//Alleen a-z, A-Z en 0-9
		if ( !myValue.match('[a-zA-Z0-9]') && myValue.length<2 ){
			return false;	//Did not match criteria
		}

		//De volgende leestekens blocken:
		var iChars = ".!?/^~`\\*|,\":<>[]{}`\';()@&$#%_ ";
		for (var i = 0; i < myValue.length; i++) {
			if (iChars.indexOf(myValue.charAt(i)) != -1) {
				return false;	//Did not match criteria
			}
		}

		myObject.value = myValue.toLowerCase();				//Convert de tekst naar lowercase, mocht er 1 of meerdere capital(s) in voor komen.
	}
	return true;
}//End function


/**
 * 	@function		checkEmailnameSyntax
 *	@description	Controleert of ingevulde e-mailnaam (gedeelte voor de @) wel een correcte syntax heeft.
 *					Voorlopig alleen letters en cijfers toestaan, leeg mag ook
 *	@input			Object om te checken
 *	@return 		{ true | false }
 */
 function checkEmailnameSyntax(myObject){
	if (myObject) {
		myValue = myObject.value

		if(myValue==""){
			return true;	//Leeg mag.
		}
		//Alleen a-z, A-Z en 0-9
		if ( !myValue.match('[a-zA-Z0-9]') && myValue.length<2 ){
			return false;	//Did not match criteria
		}

		//De volgende leestekens blocken:
		var iChars = "!?/^~`\\*|,\":<>[]{}`\';()@&$#% ";
		for (var i = 0; i < myValue.length; i++) {
			if (iChars.indexOf(myValue.charAt(i)) != -1) {
				return false;	//Did not match criteria
			}
		}

		myObject.value = myValue.toLowerCase();				//Convert de tekst naar lowercase, mocht er 1 of meerdere capital(s) in voor komen.
	}
	return true;
}//End function


/**
 * 	@function		checkBanknummer
 *	@description	Gebruik de 11-proef om te controleren of het meegegeven nummer mogelijkerwijs een legitiem banknummer is
 *	@input			myObject : HTML-Object met daarin als value de string met het te controleren banknummer
 *	@return 		true indien legitiem banknummer, false indien geen banknummer
 */
function checkBanknummer(myObject) {

	if (myObject) {
		BankNumber = myObject.value;
		if( BankNumber ) {
			var BankNumber_Length = BankNumber.length;

			//Negen getallen inclusief de punten is maximaal 12 lang. "123456789" als banknummer mag trouwens ook niet...
			if( BankNumber_Length > 12 || BankNumber_Length < 6 || BankNumber=="123456789" || BankNumber=="12.34.56.789" ) {

				return false;

			} else {

				var ValidChars = "0123456789.";						//Deze mogen dus wel
				var Char;
				for (i = 0; i < BankNumber.length; i++) { 
					Char = BankNumber.charAt(i); 
					if (ValidChars.indexOf(Char) == -1){
						return false;
					}
				}//End for

				BankNumber	= BankNumber.replace(/\./g, '');		//Haal eerst de punten er uit (12.34.56.789 wordt 123456789)
				var total	= 0;
				for(var c=0;c<BankNumber.length;c++){				//Doe nu de 11-proef.
					total	= total + parseInt( ( BankNumber.substring(c,c+1) * (9-c) ) );
				}//End for
				if( ( (total/11)+'' ).indexOf('.') > 0 ) {
					return false;
				} else {
					return true;
				}//End if deelbaar door 11 zonder restant

			}//End if

		} else {
			return false;					//Geen Banknummer als value gevondenmeegegeven
		}//End if

	} else {
			return false;					//Geen HTML-Object meegegeven
	}//End if

}//End function


/**
 * 	@function		checkSamePasswordValues
 *	@description	Controleert van twee invulvelden binnen het opgegeven HTML-Object (span of div)
 *					of de password bevestiging gelijk is aan het password zelf. De beide invulvelden moeten
 *					een attribuut met de naam "component_data_name" hebben, en elk heeft daarvoor een VERPLICHTE value.
 *					Deze values staan vast, en moeten hetzelfde blijven. Hooguit kun je in de case-statement een paar
 *					nieuwe cases toevoegen, zodat de controle ook reageert op andere values, maar deze values moeten wel
 *					ongewijzigd blijven, helaas.
 *					Als deze 2 values er niet zijn, dan pikt deze controle de waarden niet op en wordt een false teruggegeven!!!
 *					Voorbeeld van een correct stuk HTML:
 *
 *	<span id="wachtwoordspan" validationrules="checkSamePasswordValues(oElement)___verplicht veld&#9;" errormsg="FOUT!!!" errormsgtype="alert">
 *		<input type="password" name="co__1" id="co__1" component_data_name="ppadmin_password">
 *		<input type="password" name="co__2" id="co__2" component_data_name="ppadmin_password_check">
 *	</span>
 *
 *	@input			myObject : HTML-Object met daarin de te controleren Password-values
 *	@return 		true/false
 */
function checkSamePasswordValues(myObject) {

	if (myObject) {
		children = myObject.all;
		var password				= '';
		var password_confirmation	= '';

		//Haal de ingevulde waarden voor de passwords eerst op :
		for (var i=0;i< children.length; i++){
			var component_data_name		= '';
			oCurcomponent = children[i];
			component_data_name = oCurcomponent.getAttribute("component_data_name");
			if( component_data_name && (component_data_name!="") ){
				switch (component_data_name) {
				case 'ppadmin_password':			//Eerste verplichte veldnaam (zodat dit gaat werken)
					password = oCurcomponent.value;
					break;
				case 'ppadmin_password_check':		//Tweede verplichte veldnaam (zodat dit gaat werken)
					password_confirmation = oCurcomponent.value;
					break;
				default:
					break;
				}//End switch
			}
		}//End for

		//Controleer nu de Passwords :
		if ( password && password!='' ) {									//Hadden we een password gevonden?
			if ( password_confirmation && password_confirmation!='' ) {		//Hadden we een password bevestiging gevonden?
				if( password == password_confirmation ) {					//Waren ze dan ook exact gelijk?
					return true;											//ja, dus true.
				}//End if
			}//End if
		}//End if

	}//End if myObject

	return false;															//In alle andere gevallen: false, helaas.

}//End function

function checkCheckboxNotEmpty(myObject, prefix, minCount, maxCount) {
	if (typeof prefix == 'undefined')
		return (true);
		
	if (typeof minCount == 'undefined') minCount = 1;
	if (typeof maxCount == 'undefined') maxCount = 99;

	var objForm=myObject.form;
	var countChecks=0;
	var found = false;
	var result;
		
	for (i=0; i<objForm.elements.length;i++) {
		if (objForm.elements[i].name.indexOf(prefix) >= 0) {
			found = true;
			if (objForm.elements[i].checked==true) {
				countChecks++;
			}
		}		
	}

	if (found) {
		result = (countChecks >= minCount) && (countChecks <= maxCount);
	} else {
		result = false;
	}
		
	return (result);
}

function checkSofinr(myObject){
	sofinr = myObject.value; 
	laatstegetal = sofinr.substr(8);
	
	if (sofinr.length == 8)
		sofinr = '0' + sofinr;
	
	checksum = 0;
	if (isNaN(sofinr) == true || sofinr.length!=9) { 
		return false;
	} 
	else { 
		for(i=0;i<8;i++) { 
	 		checksum += (sofinr.charAt(i)*(9-i)); 
		} 
		if(checksum%11 != laatstegetal)
			return false;
		else
			return true;
	}
}

function checkDate(myObject) {
	var testarr=myObject.value.split("-");
	if (testarr.length != 3) {
		if(myObject.value!='') {
			return false;
		}
		return false;
	} else {
		if (isNaN(testarr[0]) || isNaN(testarr[1]) || isNaN(testarr[2]) || testarr[0] < 1 || testarr[1] < 1 || testarr[2] < 1) {
			return false;
		} else {
			if ((testarr[0] > 31) || (testarr[1] >12) || (testarr[2]<1900) || (testarr[2] > 2099)) {
				return false;
			} else {
				if (( testarr[2] < 1900 ) || ( testarr[2] > 2099 )) {//kleiner dan 2000 
					return false;
				}
				if (( testarr[1] == 4 || testarr[1] == 6 || testarr[1] == 9 || testarr[1] == 11 ) && ( testarr[0] > 30 ))	{ 
					return false;
				}
				if (testarr[1] == 2) {
					if ((testarr[2] % 4 == 0) && (testarr[2] % 100 != 0) || (testarr[2] % 400 == 0)) {
						if (testarr[0] >29)	{
							return false;
						}
					} else {
						if (testarr[0] >28)	{
							return false;
						}
					}
				}

			}
		}
	}
	return true;
}


function checkTime(myObject) {
	var testArr=myObject.value.split(":");
	if (testArr.length == 2) {
	
		if (isNaN(testArr[0]) || isNaN(testArr[1])) {
			return false;
		}
		// hh:mm
		if (testArr[0] < 0 || testArr[0] > 23) {
			return false;
		} else
		if (testArr[1] < 0 || testArr[1] > 59) {
			return false;
		}
	} else if (testArr.length == 3) {
	
		if (isNaN(testArr[0]) || isNaN(testArr[1]) || isNaN(testArr[2])) {
			return false;
		}
	
		// hh:mm:ss
		if (testArr[0] < 0 || testArr[0] > 23) {
			return false;
		} else
		if (testArr[1] < 0 || testArr[1] > 59) {
			return false;
		} else
		if (testArr[2] < 0 || testArr[2] > 59) {
			return false;
		}
	} else {
		// error
		return false;
	}
	return true;
	
}

function checkIsNummeric3(myField){
	//nummeriek , eventueel met een komma en twee decimalen (00 of 00,00)
	if (myField.value.match(/^[0-9]+([\.\,][0-9]{2})?$/)) return true;
	else return false;
}

function checkTelephone2(myField){
	// een hele eenvoudige telefoonnummercheck
	if (myField.value.match(/^\+?[0-9\-\s\(\)]{10,15}$/)) return true;
	else return false;
}

function checkIsNummeric4(myField){
	//nummeriek , eventueel met een komma en twee decimalen (00 of 00,00)
	if (myField.value.match(/^P?[0-9]+$/)) return true;
	else return false;
}

//Einde van de checks per type
