function controleer() {
  if (document.getElementById('type2').checked) {
  	// concessie: controle op aantal (sub)
		if (document.formulier.aantal.value == '') {
					alert('Het aantal personen in de concessie moet bepaald zijn');
					if (document.formulier.aantal.disabled != true) {
						document.formulier.aantal.focus();
					}
					return false;	  
		}
	// concessie: controle op numerieke waarde
 				if (isNumber(document.formulier.aantal.value) == 0) {
					alert('Het aantal personen in de concessie moet een numerieke waarde zijn.');
					if (document.formulier.aantal.disabled != true) {
						document.formulier.aantal.focus();
					}
					return false;
				}		
	// concessie: controle op numerieke waarde
 				if (isNumber(document.formulier.jaren.value) == 0) {
					alert('Het aantal jaren in de concessie moet een numerieke waarde zijn.');
					if (document.formulier.jaren.disabled != true) {
						document.formulier.jaren.focus();
					}
					return false;
				}						
  }
 if(Validate()) {
	document.formulier.submit();
 }
}

function setupValidation() {
  addNew('overlijdene','noNull', 'U dient de naam van de overledene op te geven.');
  addNew('plaats','noNull', 'U dient de gemeente van overlijden op te geven.'); 
  addNew('begraaf','noNull', 'U dient de begraafplaats op te geven.');      
  addNew('naam','noNull', 'U dient uw persoonlijke naam op te geven.');
  addNew('voornaam','noNull','U dient uw voornaam op te geven.');
  addNew('email','noNull','Uw emailadres is verplicht mee te delen.');
  addNew('email','isEmail','Dit is geen geldig e-mailadres. Gebruik bv. uwnaam@uwdomein.be');
}


function isNumber(string) {
	if (isNaN(string)) {
   		return false;
	} 
}

// trimVerboden -> USE: onblur=("trimForbidden(this.value);") 
// 	. geen verboden (*|,\":<>[]{}`\';()&$#%) tekens toegelaten.

function trimVerboden(string) {
   var iChars = "|\"<>[]{}`\';&$#%";
   var strReturn;
   var strRet = "";
   strReturn = string;
   for (var i = 0; i < string.length; i++) {
      if (iChars.indexOf(string.charAt(i)) != -1) {
		strReturn = strReturn.replace(string.charAt(i),"");
	  }
   }
   for (var i = 0; i < strReturn.length; i++) {
		if ((strReturn.charCodeAt(i) == 13) && (strReturn.charCodeAt(i + 1) == 10)) {
			strRet += " ";
			i++;
		} else {
			strRet += strReturn.charAt(i)
   		}
	}
return strRet;
} 

// isEmail -> USE: onblur=("isEmail(this.value);") 
// 	. geen verboden (*|,\":<>[]{}`\';()&$#%) tekens toegelaten.
// 	. verplichting van (@.)
function isEmail(string) {
   if (!string) return false;
   var iChars = "*|,\":<>[]{}`\';()&$#%";
   var xChars = "@."
   for (var i = 0; i < string.length; i++) {
      if (iChars.indexOf(string.charAt(i)) != -1) {
		return false;
   	  }
   }
   for (var i =0; i < xChars.length; i++) {
	  if (string.indexOf(xChars.charAt(i)) == -1) {
		return false;
   	  }
   }		
   return true;
}                      

// isString -> USE: onblur("isString(this.value);")
// 	. geen nummers toegelaten!
function isString(string) {
	var iChars = "0123456789"
	for (var i =0;i < string.length; i++) {
		if (iChars.indexOf(string.charAt(i)) != -1) {
			return false;
		}
	}
	return true;
}

// isDatum -> USE: onblur("isDatum(this.value);")
// 	. geen verkeerde datums toegelaten!

function isDate(string) {
	if (string.length != 8) {
		return false;
	}
		var mDay = parseFloat(string.substr(0,2));
		var mMonth = parseFloat(string.substr(2,2));
		var mYear = parseFloat(string.substr(4,4));
		
		var sMonth= new Array();
		sMonth[1] = 31; 
		sMonth[2] = isSchrikkeljaar(mYear);
		sMonth[3] = 31;
		sMonth[4] = 30;
		sMonth[5] = 31;
		sMonth[6] = 30;
		sMonth[7] = 31;
		sMonth[8] = 31;
		sMonth[9] = 30;
		sMonth[10]= 31;
		sMonth[11]= 30;
		sMonth[12]= 31;

	
	if (mDay > 31 || mDay == 0 || mMonth > 12 || mMonth == 0 || mYear > 2050 || mYear < 1950) {
		return false;
	} else if (mDay > sMonth[mMonth]){
		return false;
	} else {
		return true;
	}
}
function isSchrikkeljaar(tmpYear) {
// We kennen een schrikkeldag toe op 29 februari 
// in elk jaar waarvan het jaartal deelbaar is door 4.
// Omdat hierdoor teveel gecompenceerd wordt geldt deze
// regel echter niet voor het eerste jaar van elke nieuwe
// eeuw. De jaartallen die op 00 eindigen. Die kennen dus
// geen schrikkeldag. Omdat we daardoor in de loop van de
// jaren toch steeds weer wat tijd overhouden kent deze
// regel ook weer een uitzondering: de jaartallen die deelbaar
// zijn door 400 krijgen weer wèl een schrikkeldag toegevoegd. 

// Volgens berekeningen zou de eerstvolgende correctie moeten
// plaatsvinden in het jaar 4905. In dat jaar zal er een extra
// schrikkeldag zijn. Dus twee jaar achter elkaar 29 februari.
// Een volgende correctie zal moeten plaatsvinden in het jaar 8228.
// Op zich is dat jaar al een schrikkeljaar met 29 februari.
// Door deze extra correctie zal er dan ook een 30 februari zijn. 
	
	var x4 = tmpYear / 4;
	var z4 = parseInt(x4);
	
	var x100 = tmpYear /100;
	var z100 = parseInt(x100)
	
	var x400 = tmpYear /400;
	var z400 = parseInt(x400);
	
	if ((x100 == z100) && (x400 == z400)) {
		return 29;
	} else if (x100 == z100) { 
		return 28;
	} else if (x4 == z4) {
		return 29;
	} else {
		return 28;
	}
}



FieldNames = new Array();
FieldTask = new Array();
FieldMsg = new Array();

function addNew(fieldName,Task,Msg) {
	var a = FieldNames.length;
	FieldNames[a] = fieldName;
	FieldTask[a] = Task;
	FieldMsg[a] = Msg;
}

function Validate() {
var a = FieldNames.length;
for (i=0;i < a; i++) {
	var mTemp = document.getElementById(FieldNames[i]).value;
	var mSwitch = FieldTask[i];	
	var mMsg = FieldMsg[i];	
	
	if (mTemp == '') {
		if (mSwitch != 'noNull') {
			continue;
		}
	}
		switch (mSwitch){
   			case "noNull" :
      			if (mTemp == '' || mTemp == '- SELECTEER -') {
					alert(mMsg);
					if (document.getElementById(FieldNames[i]).disabled != true) {
						document.getElementById(FieldNames[i]).focus();
					}
					return false;
				}
				break;
			case "noNumber" :
				if (isString(mTemp) == 0) {
					alert(mMsg);
					if (document.getElementById(FieldNames[i]).disabled != true) {
						document.getElementById(FieldNames[i]).focus();
					}
					return false;
				}
				break;
			case "noString" :
 				if (isNumber(mTemp) == 0) {
					alert(mMsg);
					if (document.getElementById(FieldNames[i]).disabled != true) {
						document.getElementById(FieldNames[i]).focus();
					}
					return false;
				}
				break;
			case "isDate" :
 				if (isDate(mTemp) == 0) {
					alert(mMsg);
					if (document.getElementById(FieldNames[i]).disabled != true) {
						document.getElementById(FieldNames[i]).focus();
					}
					return false;
				}
				break;
			case "isEmail" :
 				if (isEmail(mTemp) == 0) {
					alert(mMsg);
					if (document.getElementById(FieldNames[i]).disabled != true) {
						document.getElementById(FieldNames[i]).focus();
					}
					return false;
				}
				break;
		} 
	}

for (var x=0;x < document.forms[0].elements.length;x++) {
		document.forms[0].elements[x].value = trimVerboden(document.forms[0].elements[x].value);
}

return true;
}


