//<SCRIPT LANGUAGE=javascript>

var winModalWindow, winNewWindow;

function gIsValidDate(strDateValueIn) {

// The regular expression tests on the format dd/mm/yyyy.
// It does not test if the days and months or valid, only the format !
//var regExpr = /\b[0-3]{0,1}\d{1}\/[0-1]{0,1}\d{1}\/\d\d\d\d$/
var arrDateParts
var arrDayInMonths = new Array(31,28,31,30,31,30,31,31,30,31,30,31)
var intDay
var intLeapYearDays
var intMonth
var intYear
var blnInvalidDate = false
var tst
tst = strDateValueIn.split(/\s*\/s*/)
	if (isNaN(tst[3] && tst[3] != '')  && !(isNaN(tst[0]))&& (!isNaN(tst[1])) && (!isNaN(tst[2]))){
//	if (regExpr.test(strDateValueIn)) {
		arrDateParts = strDateValueIn.split('/');
		
		intDay = parseInt(arrDateParts[0],10);
		intMonth = parseInt(arrDateParts[1],10);
		intYear = parseInt(arrDateParts[2],10);
		
		
		if ((intMonth >= 1 && intMonth <= 12) && (intDay != 0)) {
			// If the month is february then a check must be done for a leap year.
			if (intMonth == 2) {				
				if (intYear % 4 != 0) {
					//use 28 for days in February
					intLeapYearDays = 28;
				} 
				else if  (intYear % 400 == 0) {
					//use 29 for days in February
					intLeapYearDays = 29;
				} 
				else if (intYear % 100 == 0) {
					//use 28 for days in February
					intLeapYearDays = 28;
				} else {
					//use 29 for days in February
					intLeapYearDays = 29;
				}			
				
				if (intDay > intLeapYearDays) {
					blnInvalidDate = true;
				}	
			} else {
				// Check that the day is valid for the given month.
				if (intDay > arrDayInMonths[intMonth - 1]) {
					blnInvalidDate = true;
				}
			}
		}
		else {
			blnInvalidDate = true;
		}
	} else {
		blnInvalidDate = true;
	}
	return !blnInvalidDate;
/*	if (blnInvalidDate) {
		window.alert('invalid date');
	} else {
		window.alert('valid date');
	} */
}

function gIsValidBankAccount(strAccount)
{
	var regExpr = /(^\d{3}-\d{7}-\d{2}$)|(^\d{12}$)/
	var str = strAccount;
	re = /\s/gi;
	str=str.replace(re, "");
	if (regExpr.test(str) ) 
	{
		re = /-/gi;
		str=str.replace(re, "");
		return Modulo97(str);
	}
	else { return false; }
}

function Modulo97(str)
{
	var control, base, result;
	control = parseInt(str.substr(str.length-2,str.length-1),10);
	base = parseFloat(str.substr(0,str.length-2));
	result = parseInt(base % 97,10);
	if (result == 0) { result = 97; }
	
	if (result == control){	return true; }
	else { return false; }
}

function gIsValidSocialSecurity(Rijksregister, jaar, maand, dag, geslacht, land)
{
	return IsValidSocialSecurity97(Rijksregister, jaar, maand, dag) & 
			IsValidSocialSecurity(Rijksregister, jaar, maand, dag, geslacht, land)
}
function IsValidSocialSecurity97(val, y, m, d)
{
	var re=/\d{11}/,control=1, base, result=0;
	if (re.test(val))
	{
		control = parseInt(val.substr(val.length-2,val.length-1),10);
		base = parseFloat(val.substr(0,val.length-2));
		result = 97 - parseInt(base % 97,10);
		if (result == 0) { result = 97; }
	}
	return (result == control);
}

function IsValidSocialSecurity(val, y, m, d, s, l)
{
	var result=true, bGenderCheck=false, bDateCheck=false;
	var iY = parseInt(val.substr(0, 2), 10); var iBY = parseInt(y.substr(2, 2), 10);
	var iM = parseInt(val.substr(2, 2), 10); var iBM = parseInt(m, 10)
	var iD = parseInt(val.substr(4, 2), 10); var iBD = parseInt(d, 10)
	bGenderCheck = ((trim(l) == '150') && (iM>0 && iM < 13 || (iM>40 && iM<53)));
	bDateCheck = (iM>0 && iM<13) || (iM>20 && iM<33) || (iM>40 && iM<53);
	if (bGenderCheck)
	{
		// gender check
		var iS = parseInt(val.substr(val.length-3, 1));
		if ( iS % 2 == 0 && s == 1)	result = false;
		if ( iS % 2 == 1 && s == 2)	result = false;
	}
	if (bDateCheck)
	{
		// date check
		if (result)	
		{
			while(iM >20)	iM -= 20;
			if(iY != iBY)	result = false;
			if(iM != iBM)	result = false;
			if(iD != iBD)	result = false;
		}
	}
	return result;
}

function trim(str)
{
	var re, s, ret;
	s = str;
	re = /^\s*/;
	s = s.replace(re, '');
	re = /\s+$/;
	s = s.replace(re, '');
	return s;
}

function zz(val)
{
	var ret;
	ret = val + '';
	while (ret.length < 2){ ret = '0' + ret; }	
	return ret;
}
function zzzz(val)
{
	var ret;	
	ret = val + '';
	while (ret.length < 4){ ret = '0' + ret; }
	return ret;
}

function CheckFuturePastDate(y, m, d)
{
	if (gIsValidDate( d + '/' + m + '/' + y) && (parseInt(y,10) > 1900))
	{
		if (!(y==1970 && m==1 && d==1)) // netscape 4.03 can't handle 1 jan 1970
		{
			var currDate = new Date();    //today's date
			var minDate=new Date(1920, 00, 01);
			var checkDate = new Date(y, m - 1, d);
		
//		alert("Curr: " + currDate + "\nCheck: " + checkDate + "\nMin: " + minDate +
//		"\n(checkDate < minDate): " + (checkDate.valueOf() < minDate.valueOf()) + "\n(checkDate > currDate): " + (checkDate.valueOf() > currDate.valueOf()));
			if (checkDate.valueOf() < minDate.valueOf() || checkDate.valueOf() > currDate.valueOf()){ return true; }
		}
	}
	else { return true; }
	return false;
}
function CheckPastDate(y, m, d)
{
	if (gIsValidDate( d + '/' + m + '/' + y) && (parseInt(y,10) > 1900))
	{
//		minDate=new Date(1920, 00, 01);
//		checkDate = new Date(y, m - 1, d);
//		if (checkDate < minDate){ return true; }
		if (y<1920){ return true; }
	}
	else { return true; }
	return false;
}

function CheckChilderen(val)
{
	var re, blnRetVal = false;
	if (val != '')
	{
		re = /\d*/g
		if (re.test(val))
		{
			if (parseInt(val,10) < 20 && parseInt(val,10) >= 0) { blnRetVal = true; }
		}
	}
	else { blnRetVal = true; }
	return blnRetVal;
}
function SelectOption(objList, iSelVal)
{
	for(var i =0; i < objList.length; i++) 
	{
		if (objList.options[i].value == iSelVal) 
		{
			objList.options[i].selected = true; 
			break;
		}
	}
}

function GetSelectedValue(obj) 
{
	for(var i =0;i <obj.length; i++) 
	{
		if (obj.options[i].selected == true) 
		{
			return obj.options[i].value;
			break;
		}
	}
	return null;
}

function GetSelected(obj) 
{
	for(var i =0;i <obj.length; i++) 
	{
		if (obj.options[i].selected == true) 
		{
			return obj.options[i].text
			break;
		}
	}
	return null
}

function SetSelectedValue(obj, val) 
{
	for(var i =0;i <obj.length; i++) 
	{
		if (obj.options[i].value == val)
		{
			obj.options[i].selected = true;
			break;
		}
	}
}

function SetSpouseProff(objListProff, iIncomeVal)
{
	switch( parseInt(iIncomeVal,10))
	{
		case 9:
			SelectOption(objListProff, 9);
			break;
		default:
			if (objListProff.value == 9){ SelectOption(objListProff, 8); }
			break;
	}
	return objListIncome.value;
}

function SetSpouseIncome(objListIncome, iJobVal)
{
	switch( parseInt(iJobVal,10))
	{
		case 9:
			SelectOption(objListIncome, 9);
			break;
		default:
			if (objListIncome.value == 9){ SelectOption(objListIncome, 8); }
			break;
	}
	return objListIncome.value;
}

function DateFormat(vDateName, vDateValue, e, Readonly, blnBlur) {

var blnFinal = blnBlur, blnLastCharIsSlash=false;
var lenVal=0;
var whichCode = (window.Event) ? e.which : e.keyCode;
var values = vDateValue.replace((/\./g), ",").split(/\s*\/\s*/);
	
	if (navigator.userAgent.indexOf('MSIE 4')>0 || navigator.userAgent.indexOf('Mozilla')>0) {
		// Browser is an internet explorer 4.x
		return true
	} else {
		if (Readonly == "READONLY" || Readonly == "DISABLED") return false;
		if (whichCode == 8){ return false; }  // backspace	
		if (vDateValue.substr((vDateValue.length-1),1) == '/') { blnLastCharIsSlash = true;}
		lenVal = values.length;
		if (lenVal > 0 && isNaN(values[0])){ values[0] = values[0].replace( (/[^\d]/g), ''); }
		if (lenVal > 1 && isNaN(values[1])){ values[1] = values[1].replace( (/[^\d]/g), ''); }
		if (lenVal > 2 && isNaN(values[2])){ values[2] = values[2].replace( (/[^\d]/g), ''); }
		vDateName.value = "";
		if (lenVal > 0 && values[0] != '')
		{
			if (lenVal > 1 && values[1] != '' && values[1] != 'undefined' || blnLastCharIsSlash)
			{	
				vDateName.value =  zz(values[0]) + '/';
				if ( values[1] == '' || typeof(values[1]) == 'undefined') { blnLastCharIsSlash = false; }
				if (lenVal > 2 && values[2] != '' || blnLastCharIsSlash)
				{
					vDateName.value = vDateName.value + zz(values[1]) + '/';
					if (!blnFinal){ if (lenVal > 2 && values[2] != '') { vDateName.value = vDateName.value + values[2].substr(0,4); }}
					else{ if (lenVal > 2 && values[2] != '') { vDateName.value = vDateName.value + zzzz(values[2].substr(0,4)); }}
				}
				else
				{
					if (lenVal > 1 && values[1] != '' && values[1].length >= 2)
					{
						vDateName.value =  vDateName.value + values[1].substr(0,2) + '/' + values[1].substr(2,10);
					}
					else{ if(typeof(values[1]) != 'undefined') vDateName.value = vDateName.value + values[1]; }
				}
			}
			else
			{
				if (values[0].length >= 2)
				{
					if (values[0].length >= 4)
					{
						vDateName.value =  values[0].substr(0,2) + '/' + values[0].substr(2,2) + '/' + values[0].substr(4,10);
					} else {
						vDateName.value =  values[0].substr(0,2) + '/' + values[0].substr(2,10);
					}
				}
				else{ vDateName.value =  values[0];	}
			}
		}
		return true;
	}
}

function openwindow(loc,winsizew,winsizeh,toolbar,scrollbars)
{
		 //het midden bepalen
	 var top = (screen.height / 2) - (winsizeh /2);
	 var left = ((screen.width / 2) - (winsizew / 2))/2;
	if (window.showModalDialog)
	{
		return window.showModalDialog(loc,self,"status:no;dialogWidth:"+winsizew+"px;dialogHeight:"+winsizeh+"px")
	}
	else
	{
		window.top.captureEvents (Event.CLICK|Event.FOCUS)
		window.top.onclick=IgnoreEvents
		window.top.onfocus=HandleFocus 
		winModalWindow = window.open(loc,"news","dependent=yes,toolbar="+toolbar+",location=no,status=no,directories=no,menubar=no,scrollbars="+scrollbars+",resizable=no,width="+winsizew+",height="+winsizeh+",top="+top+",left="+left);		 
		setTimeout ('winModalWindow.focus()','1000');
		return false;
	}
}


function IgnoreEvents(e){ return false }

function HandleFocus()
{
	if (typeof(winModalWindow) != 'undefined')
	{
		if (winModalWindow)
		{
			if (!winModalWindow.closed){ winModalWindow.focus() }
			else { window.top.releaseEvents (Event.CLICK|Event.FOCUS) }
		}
	}
	return false
}
function NewWindow(loc,winsizew,winsizeh,toolbar,scrollbars,resizeb)
{
		 //het midden bepalen
	 var top = (screen.height / 2) - (winsizeh /2), win;
	 var left = ((screen.width / 2) - (winsizew / 2))/2;
	winModalWindow = window.open(loc,"news","dependent=yes,toolbar="+toolbar+",location=no,status=no,directories=no,menubar=no,scrollbars="+scrollbars+",resizable="+resizeb+",width="+winsizew+",height="+winsizeh+",top="+top+",left="+left);		 
	setTimeout ('winModalWindow.focus()','1000');
return win;
}

function testme()
{
alert('test1');
alert((winModalWindow));
}

function HelpMe(page)
{
	NewWindow(page, 600, 400, 'yes', 'yes','yes')
}

function fixDelig(val, d) // fixes
{	
	var nMin=0.0, nHours=0;
	var del=60;
	if (d==100) { del=100; }
	if (val != '' && (!isNaN(parseFloat(val))))
	{
		nMin = Math.round(val*100);
		nHours = parseInt(nMin/100,10);
		nMin = mod(nMin, 100);
		if (nMin>0)
		{
			nHours = nHours + parseInt('0'+(nMin/del),10);
			nMin = mod(nMin,del);
		}		
		return parseFloat(nHours.toString() + '.' + zz(nMin));
	}
	return 0.0;
}
function mod(val, m)
{
	if (!(isNaN(val) || isNaN(m)))
	{
		return val-(parseInt('0'+(val/m),10)*m);
	}
	return '';
}

function addDelig(val, val2, d) // fixes
{	
	var nMin=0.0, nHours=0;
	var nMin2=0.0, nHours2=0;
	var del=60;
	if (d==100) { del=100; }
	if ((!isNaN(parseFloat(val))) && (!isNaN(parseFloat(val2))) )
	{
		nMin = Math.round(val*100);
		nHours = parseInt(nMin/100,10);
		nMin = mod(nMin, 100);
		nMin2 = Math.round(val2*100);
		nHours2 = parseInt(nMin2/100,10);
		nMin2 = mod(nMin2, 100);
		nHours += nHours2;
		if (nMin>0 || nMin2>0)
		{
			nHours = nHours + parseInt('0'+((nMin+nMin2)/del),10);
			nMin = mod((nMin+nMin2),del);
		}		
		return parseFloat(nHours.toString() + '.' + zz(nMin));
	}
	return 0.0;
}
function MandatoryField( objField, txt)
{
	if (objField.type == 'text')
	{
		objField.value = trim(objField.value);
		if (objField.value == '')
		{
			objField.select();
			objField.focus();
			return txt;
		}
	}
	if (objField.type == 'select-one')
	{
		var val = GetSelectedValue(objField);
		val = trim(val);
		if (val == '')
		{
			SelectOption(objField, '');
			objField.focus();
			return txt;
		}
	}
	return '';
}
function FocusEmptyField(objField)
{
	if (objField.type == 'text')
	{
		objField.value = trim(objField.value);
		if (objField.value == ''){ objField.focus(); }
	}
	if (objField.type == 'select-one')
	{
		var val = GetSelectedValue(objField);
		val = trim(val);
		if (val == '')
		{
			SelectOption(objField, '');
			objField.focus();
		}
	}
}


function gGetSessionStateValue(strSessionState_IN, strValueName_IN) {
// strSessionState_IN must be a string which keeps the sessionstate in a name/value pair and the semicolumn as a seperator.
// example : "NbrOfPages;2;CurrentPageNbr;20;"

// strValueName_IN : the name of the item from which the value must be retrieved.
// example : "NbrOfPages"

var arrSessionState
var blnContinue = true
var int1 = 0
var intNbrOfItems
var	strSessionStateValue = strValueName_IN + " not found."
	
	arrSessionState = strSessionState_IN.split(";")
	intNbrOfItems = arrSessionState.length - 1
	
	do {	
		if (arrSessionState[int1] == strValueName_IN) {
			strSessionStateValue = arrSessionState[int1 + 1]
			blnContinue = false
		} else {			
			if (int1 < intNbrOfItems) {
				int1++
			} else {
				blnContinue = false
			}
		}				
	} while (blnContinue)

	return strSessionStateValue
}


function GoToPage(page) {
	top.main.window.location = page + '?state=' + window.document.forms[0].hiddenSessionState.value
}


function OpenSelectionWindow(){

var winHandle;

	winHandle = openwindow('zoeken.asp',310,230,'no','no');

	switch (typeof(winHandle)) {
	case 'undefined':
		break;
	case 'object':
		alert('already here'); //SetPageRequest('SEARCH');
		break;
	case 'string':
		document.forms[0].hiddenSearchCriteria.value = winHandle;
		SetPageRequest('SEARCH');
		break;
	}
}

function bericht(nr, name, employer, SGR){

var winHandle;

	winHandle = openwindow('berichten.asp?Nr='+nr+'&Name='+escape(name)+'&Employer='+employer+'&SGR='+SGR,400,390,'no','no'); 
	
	switch (typeof(winHandle)) {
		case 'undefined':
			break;
		case 'object':

		SaveMessage();
			break;
		case 'string':
			document.forms[0].txtMsg.value = winHandle;
			SaveMessage();
			break;
	}
}

function SaveMessage() {
	document.forms[0].action = 'SaveBericht.asp';
	document.forms[0].submit();
}


function SetChanged(){ 
	if (document.forms[0].hiddenChanged){ 
		document.forms[0].hiddenChanged.value='true'; 
		document.forms[0].hiddenChanged.value='true'; 
	}
}
function ResetForm(){  document.forms[0].reset(); InitForm(); }


function Request()
	{
		this.xmlhttp=false;
		/*@cc_on @*/
		/*@if (@_jscript_version >= 5)
		try {
			this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (E) {
				this.xmlhttp = false;
			}
		}
		@end @*/
		if (!this.xmlhttp && typeof XMLHttpRequest!='undefined') {
			try {
				this.xmlhttp = new XMLHttpRequest();
			} catch (e) {
				this.xmlhttp=false;
			}
		}
		if (!this.xmlhttp && window.createRequest) {
			try {
				this.xmlhttp = window.createRequest();
			} catch (e) {
				this.xmlhttp=false;
			}
		}
		this.GET = function(url, callback){
			var httpObj = this.xmlhttp;
			var responseHandler = this.HandleResponse;
			if (this.xmlhttp)
			{
				this.xmlhttp.open("GET", url, true);
				this.xmlhttp.onreadystatechange = function() {
					if(responseHandler) responseHandler(httpObj, callback);
				}
				this.xmlhttp.send();
			}
			else if (callback)
			{
				callback(null);
			}
		}
		this.HandleResponse = function(xmlhttp, callback)
		{
			if (xmlhttp && xmlhttp.readyState==4) {
				if (callback) callback(new Response(xmlhttp.responseText, xmlhttp.status)
							);
			}
		}
		this.POST = function(url, data, callback){
			var httpObj = this.xmlhttp;
			var responseHandler = this.HandleResponse;
			
			if (this.xmlhttp)
			{
				this.xmlhttp.open("POST", url, true);
				this.xmlhttp.onreadystatechange=function() {
					if(responseHandler) responseHandler(httpObj, callback);
				}
				this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); 
				this.xmlhttp.setRequestHeader("Content-length", data.length); 
				this.xmlhttp.setRequestHeader("Connection", "close"); 
				this.xmlhttp.send(data);
			}
			else if (callback)
			{
				callback(null);
			}
		}
	}

function isNumeric(valueIn)
{
		var ret,re,re2,re3, val;
		ret = true;
		re  = /^[-]{0,1}[\d]+[.]{0,1}[\d]*$/
		re2 = /,/gi;
		re3 = /(^\s)|(\s$)/g;
		val = valueIn.replace(re2, '.');
		val = val.replace(re3, '');
		if (val != '')
		{
			if (!re.test(val)){ ret = false; }
		}
		return ret;
}

var numb = '0123456789';
var lwr = 'abcdefghijklmnopqrstuvwxyz';
var upr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
 
function isValid(parm,val) {
  if (parm == "") return true;
  for (i=0; i<parm.length; i++) {
    if (val.indexOf(parm.charAt(i),0) == -1) return false;
  }
  return true;
}
 
function isNum(parm) {return isValid(parm,numb);}
function isLower(parm) {return isValid(parm,lwr);}
function isUpper(parm) {return isValid(parm,upr);}
function isAlpha(parm) {return isValid(parm,lwr+upr);}
function isAlphanum(parm) {return isValid(parm,lwr+upr+numb);}  
 
