function getFormData(form) {
    var dataString = "";

    function addParam(name, value) {
        dataString += (dataString.length > 0 ? "&" : "")
            + escape(name).replace(/\+/g, "%2B") + "="
            + escape(value ? value : "").replace(/\+/g, "%2B");
    }

    var elemArray = form.elements;
    for (var i = 0; i < elemArray.length; i++) {
        var element = elemArray[i];
        var elemType = element.type.toUpperCase();
        var elemName = element.name;
        if (elemName) {
            if (elemType == "TEXT"
                    || elemType == "TEXTAREA"
                    || elemType == "PASSWORD"
                    || elemType == "HIDDEN")
                addParam(elemName, element.value);
            else if (elemType == "CHECKBOX" && element.checked)
                addParam(elemName, 
                    element.value ? element.value : "On");
            else if (elemType == "RADIO" && element.checked)
                addParam(elemName, element.value);
            else if (elemType.indexOf("SELECT") != -1)
                for (var j = 0; j < element.options.length; j++) {
                    var option = element.options[j];
                    if (option.selected)
                        addParam(elemName,
                            option.value ? option.value : option.text);
                }
        }
    }
    return dataString;
}

function addTableRows(form,url,tbodyid) {
	// Laat de 'wacht' row zien
	document.getElementById('waiting').style.display = '';
	// Wis de data rijen
	deleteTableRows(tbodyid);
	// Voor dat kut klote IE moet voorkomen worden dat de call gecached wordt door het toevoegen van een time stamp
	var d = new Date();
	var time = d.getTime();
	url = url + '&' + getFormData(form) + '&time=' + time;
	new Ajax.Request(url, {
	  method: 'get',
	  onSuccess: function(transport) {
		document.getElementById('waiting').style.display = 'none';
		addRowsFromString(transport.responseText,tbodyid);
		document.getElementById(tbodyid).style.display = '';
	  },
	  onFailure: function() {
		alert("Mislukt");
	  }
	});
}

function deleteTableRows(tbodyid) {
	var tbody = document.getElementById(tbodyid);
	var rows = tbody.getElementsByTagName("tr");
	while (rows.length > 0){
		var tr = rows[0];
		tbody.removeChild(tr);
	}
}

function addRowsFromString(str,tbodyid) {
    var tbody = document.getElementById(tbodyid);
	var postr = str.indexOf("<tr");
	while ( postr != -1 ) {
	    var tr = document.createElement("tr");
		pos1 = str.indexOf(">");
		pos2 = str.indexOf("</tr");
	   cTr = str.substring(postr,pos1+1);
	   // In de tr tag kunnen nog allerlei eigenschappen staan die nog aan de tr toegekend moeten worden
	   addProps(tr,cTr);
	   cRij = str.substring(pos1+1,pos2);
	   // Bepaal positie > van </tr>, kan ook </tr > zijn
	   pos3 = str.indexOf(">",pos2)
	   // Kort de string in door de rij te verwijderen
	   str = str.substr(pos3+1)
	   // Bepaal de positie van de volgende rij
	   postr = str.indexOf("<tr");

	   // Nu op dezelfde manier alle td's uit cRij halen
	   postd = cRij.indexOf("<td");
		while ( postd != -1 ) {
			var td = document.createElement("td");
			pos1 = cRij.indexOf(">");
			pos2 = cRij.indexOf("</td");
		   cTd = cRij.substring(postd,pos1+1);
		   //alert(cTd);
		   addProps(td,cTd);
		   cCell = cRij.substring(pos1+1,pos2);
		   td.innerHTML = cCell;
		   tr.appendChild(td);
		   // Bepaal positie > van </td>, kan ook </td > zijn
		   pos3 = cRij.indexOf(">",pos2)
		   // Kort de rij in door de cel te verwijderen
		   cRij = cRij.substr(pos3+1)
		   // Bepaal de positie van de volgende cel
		   postd = cRij.indexOf("<td");
		}
		tbody.appendChild(tr)	   
	}
}

function addProps(obj,cPropStr) {
	// id, class, style, bgcolor, align, valign, onclick, onmouseover, colspan, rowspan, width, height
	var aProps = new Array(13)
	aProps[0] = "id="	// = toegevoegd omdat anders ook width gevonden wordt
	aProps[1] = "class"
	aProps[2] = "style"
	aProps[3] = "bgcolor"
	aProps[4] = "align"
	aProps[5] = "valign"
	aProps[6] = "onclick"
	aProps[7] = "onmouseover"
	aProps[8] = "colspan"
	aProps[9] = "rowspan"
	aProps[10] = "width"
	aProps[11] = "height"
	aProps[12] = "nowrap"
	var arLen=aProps.length;
	for ( var i=0, len=arLen; i<len; ++i ){
		var pos = cPropStr.indexOf(aProps[i]);
		if (pos != -1) {
			aProps[0] = "id";
			poseqsign = cPropStr.indexOf("=",pos);
			posfirstqt = cPropStr.indexOf("\"",poseqsign);
			possecondqt = cPropStr.indexOf("\"",posfirstqt+1);
			cProp = cPropStr.substring(posfirstqt+1,possecondqt);
			//alert(aProps[i]+"="+cProp)
			obj.setAttribute(aProps[i],cProp)
		}
	}
}

function popUp(topic,width,height) {
aPopUp= 
window.open(topic,'','height='+height+',width='+width+',toolbar=no,location=no,directories=no,status=no,scrollbars=yes,resizable=yes,copyhistory=no')
}

function toggleRente() {
	if (document.getElementById("dekking").value==3) {
		document.getElementById("rente").disabled = ""
	} else {
		document.getElementById("rente").disabled = "disabled"		
	}
}

function toggleverz2(cstate) {
	var tbody = document.getElementById("verz2");
	if (cstate=="on") {
		tbody.style.display="";
	} else {
		tbody.style.display="none";
	}
}

function toggletbody(cId,cstate) {
	var tbody = document.getElementById(cId);
	if (cstate) {
		tbody.style.display="";
	} else {
		tbody.style.display="none";
	}
}

function check_date(field){
var checkstr = "0123456789";
var DateField = field;
var Datevalue = "";
var DateTemp = "";
var seperator = "-";
var day;
var month;
var year;
var leap = 0;
var err = 0;
var i;
err = 0;
var cID = DateField.id;



 
	DateValue = DateField.value;
   /* Delete all chars except 0..9 */
   for (i = 0; i < DateValue.length; i++) {
	  if (checkstr.indexOf(DateValue.substr(i,1)) >= 0) {
	     DateTemp = DateTemp + DateValue.substr(i,1);
	  }
   }
   DateValue = DateTemp;
   /* Always change date to 8 digits - string*/
   /* if year is entered as 2-digit / always assume 20xx */
   if (DateValue.length == 6) {
      if (DateValue.substr(4,2)<=20){
		  DateValue = DateValue.substr(0,4) + '20' + DateValue.substr(4,2);
   		}else{
	   	  DateValue = DateValue.substr(0,4) + '19' + DateValue.substr(4,2);
		}
   }
   if (DateValue.length != 8) {
      err = 19;}
   /* year is wrong if year = 0000 or year > 2020*/
   year = DateValue.substr(4,4);
   if ((year == 0) || (year > 2020)) {
      err = 20;
   }
   /* Validation of month*/
   month = DateValue.substr(2,2);
   if ((month < 1) || (month > 12)) {
      err = 21;
   }
   /* Validation of day*/
   day = DateValue.substr(0,2);
   if (day < 1) {
     err = 22;
   }
   /* Validation leap-year / february / day */
   if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
      leap = 1;
   }
   if ((month == 2) && (leap == 1) && (day > 29)) {
      err = 23;
   }
   if ((month == 2) && (leap != 1) && (day > 28)) {
      err = 24;
   }
   /* Validation of other months */
   if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
      err = 25;
   }
   if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
      err = 26;
   }
   /* if 00 ist entered, no error, deleting the entry */
   if ((day == 0) && (month == 0) && (year == 00)) {
      err = 0; day = ""; month = ""; year = ""; seperator = "";
   }
   /* if no error, write the completed date to Input-Field (e.g. 13.12.2001) */
   if (err == 0) {
      DateField.value = day + seperator + month + seperator + year;
	  return true;
   }
    
	   
   /* Error-message if err != 0 */
   else {
    alert("De datum is ongeldig!");
	// setTimeout() is nodig vanwege een bug in FF: https://bugzilla.mozilla.org/show_bug.cgi?id=297134
	setTimeout("document.getElementById('"+cID+"').select();", 1);
	setTimeout("document.getElementById('"+cID+"').focus();", 1);
	return false;
	}


}

function leeftijdsCheck(field, nLeeftijd) {
/*

PARAMETERS
	field; object dat de waarde bevat (input)
	nLeeftijd; leeftijd waarop gecheckt moet worden in jaren
	strGrens; "min" of "max"
	
	return value; true indien ouder dan opgegeven leeftijd, false indien jonger dan opgegeven leeftijd.
	
Pascal Butterhoff - 26-jan-2006

*/
var strGebDatum = field.value;
var cID = field.id;

var arrDate = strGebDatum.split("-");
var curDate = new Date ();
var gebDate = new Date (parseInt (arrDate[2]), (parseInt (arrDate[1]))-1, parseInt (arrDate[0]));

var intGebJaar = gebDate.getFullYear();
var intGebMaand = gebDate.getMonth();
var intGebDag = gebDate.getDate();

var intCurJaar = curDate.getFullYear();
var intCurMaand = curDate.getMonth();
var intCurDag = curDate.getDate();

var lreturn = false;
if (intCurJaar - intGebJaar > nLeeftijd) {
	//ouder
	lreturn = true;
	}
else if (intCurJaar - intGebJaar == nLeeftijd) {
	//gelijke jaren
	//maand checken
		if (intCurMaand > intGebMaand) {
			//ouder
			lreturn = true;
			}
		if (intCurMaand < intGebMaand) {
			lreturn = false;
			}
		if (intCurMaand == intGebMaand) {
			if (intCurDag > intGebDag) {
				//ouder
				lreturn = true;
				}
			else {
				lreturn = false;
				}	
			}
			
		}
else if (intCurJaar - intGebJaar < nLeeftijd) {
	//jonger
	lreturn = false;
	}
if (lreturn) {
	alert('De leeftijd van een kind kan nooit hoger zijn dan ' + nLeeftijd + ' jaar' );	
	setTimeout("document.getElementById('"+cID+"').select();", 1);
	setTimeout("document.getElementById('"+cID+"').focus();", 1);
	}
return lreturn
}

function validate_uva (lsilent) {
	lsilent = lsilent ? true : false
	var lreturn = true;
	var lpartner = document.getElementById("partner").checked;
	var lkinderen = document.getElementById("kinderen").checked;
	var d = new Date();
	var toDate = d.getDate()+"-"+(d.getMonth()+1)+"-"+d.getFullYear(); //new Date(); //
	
	// Minimaal de gegevens van één persooon
	if (document.getElementById("gebdatumzelf").value == "") {
		if (!lsilent) {
			alert("Vul uw geboortedatum in");
			setTimeout("document.getElementById('gebdatumzelf').focus();", 1);
		}
		lreturn = false;
	} else if ((!document.getElementById("geslachtzelfman").checked) && (!document.getElementById("geslachtzelfvrouw").checked)) {
		if (!lsilent) {
			alert("Vul uw geslacht in");
			setTimeout("document.getElementById('geslachtzelfman').focus();", 1);
		}
		lreturn = false;
	} else if (document.getElementById("verzbedragzelf").value == "") {
		if (!lsilent) {
			alert("Vul het verzekerd bedrag voor uzelf in");
			setTimeout("document.getElementById('verzbedragzelf').focus();", 1);
		}
		lreturn = false;
	} else if (document.getElementById("ingangsdatum").value == "") {
		if (!lsilent) {
			alert("Vul de ingangsdatum in");
			setTimeout("document.getElementById('ingangsdatum').focus();", 1);
		}
		lreturn = false;
	} else if (document.getElementById("ingangsdatum").value.isEarlier(toDate)) {
		if (!lsilent) {
			alert("De ingangsdatum kan niet in het verleden liggen");
			setTimeout("document.getElementById('ingangsdatum').focus();", 1);
		}
		lreturn = false;
	
	// Controleer of er een partner is
	} 	else if ((lpartner) && (document.getElementById("gebdatumpartner").value == "")) {
		if (!lsilent) {
			alert("Vul de geboortedatum van uw partner in");
			setTimeout("document.getElementById('gebdatumpartner').focus();", 1);
		}
		lreturn = false;
	} else if ((lpartner) && ((!document.getElementById("geslachtpartnerman").checked) && (!document.getElementById("geslachtpartnervrouw").checked))) {
		if (!lsilent) {
			alert("Vul het geslacht van uw partner in");
			setTimeout("document.getElementById('geslachtpartnerman').focus();", 1);
		}
		lreturn = false;
	} else if ((lpartner) && (document.getElementById("verzbedragpartner").value == "")) {
		if (!lsilent) {
			alert("Vul het verzekerd bedrag voor uw partner in");
			setTimeout("document.getElementById('verzbedragpartner').focus();", 1);
		}
		lreturn = false;

	// Controleer of er kinderen zijn
	} else if ((lkinderen) && (document.getElementById("gebdatumkind1").value == "")) {
		if (!lsilent) {
			alert("Vul de geboortedatum van uw eerste kind in");
			setTimeout("document.getElementById('gebdatumkind1').focus();", 1);
		}
		lreturn = false;
	} else if ((lkinderen) && ((!document.getElementById("geslachtkind1man").checked) && (!document.getElementById("geslachtkind1vrouw").checked))) {
		if (!lsilent) {
			alert("Vul het geslacht van uw eerste kind in");
			setTimeout("document.getElementById('geslachtkind1man').focus();", 1);
		}
		lreturn = false;
	} else if ((lkinderen) && (document.getElementById("gebdatumkind2").value != "") && ((!document.getElementById("geslachtkind2man").checked) && (!document.getElementById("geslachtkind2vrouw").checked))) {
		if (!lsilent) {
			alert("Vul het geslacht van uw tweede kind in");
			setTimeout("document.getElementById('geslachtkind2man').focus();", 1);
		}
		lreturn = false;
	} else if ((lkinderen) && (document.getElementById("gebdatumkind3").value != "") && ((!document.getElementById("geslachtkind3man").checked) && (!document.getElementById("geslachtkind3vrouw").checked))) {
		if (!lsilent) {
			alert("Vul het geslacht van uw derde kind in");
			setTimeout("document.getElementById('geslachtkind3man').focus();", 1);
		}
		lreturn = false;
	} else if ((lkinderen) && (document.getElementById("gebdatumkind4").value != "") && ((!document.getElementById("geslachtkind4man").checked) && (!document.getElementById("geslachtkind4vrouw").checked))) {
		if (!lsilent) {
			alert("Vul het geslacht van uw vierde kind in");
			setTimeout("document.getElementById('geslachtkind4man').focus();", 1);
		}
		lreturn = false;
	}
	return lreturn;
}
String.prototype.isEarlier = Date.prototype.isEarlier = function(thanDate)
{	// Expected format: dd-mm-yyyy
	var currentDate = (this.getTime ? this.getTime() : Date.parse(this.replace(/^([\d]+)\D([\d]+)\D([\d]+)$/, '$2/$1/$3 06:00:00')));
	var compareDate = (thanDate.getTime ? thanDate.getTime() : Date.parse(thanDate.replace(/^([\d]+)\D([\d]+)\D([\d]+)$/, '$2/$1/$3 06:00:00')));
	var dates = [new Date(currentDate), new Date(compareDate)];

	return (currentDate < compareDate);
}
String.prototype.isLater = Date.prototype.isLater = function(thanDate)
{	// Expected format: dd-mm-yyyy
	var currentDate = (this.getTime ? this.getTime() : Date.parse(this.replace(/^([\d]+)\D([\d]+)\D([\d]+)$/, '$2/$1/$3 06:00:00')));
	var compareDate = (thanDate.getTime ? thanDate.getTime() : Date.parse(thanDate.replace(/^([\d]+)\D([\d]+)\D([\d]+)$/, '$2/$1/$3 06:00:00')));
	var dates = [new Date(currentDate), new Date(compareDate)];

	return (currentDate > compareDate);
}
String.prototype.isSame = Date.prototype.isSame = function(thanDate)
{	// Expected format: dd-mm-yyyy
	var currentDate = (this.getTime ? this.getTime() : Date.parse(this.replace(/^([\d]+)\D([\d]+)\D([\d]+)$/, '$2/$1/$3 06:00:00')));
	var compareDate = (thanDate.getTime ? thanDate.getTime() : Date.parse(thanDate.replace(/^([\d]+)\D([\d]+)\D([\d]+)$/, '$2/$1/$3 06:00:00')));
	var dates = [new Date(currentDate), new Date(compareDate)];

	return (currentDate == compareDate);
	
}	

function validate_ovl (lsilent) {
	lsilent = lsilent ? true : false
	var lreturn = true;
	var d = new Date();
	var toDate = d.getDate()+"-"+(d.getMonth()+1)+"-"+d.getFullYear(); //new Date(); //

	// Eerst de minimale gegevens
	 if ((!document.getElementById("aantal1").checked) && (!document.getElementById("aantal2").checked)) {
		if (!lsilent) {
			alert("Kies het aantal te verzekeren personen");
			setTimeout("document.getElementById('aantal1').focus();", 1);
		}
		lreturn = false;
	} else if (document.getElementById("gebdatum1").value == "") {
		if (!lsilent) {
			alert("Vul uw geboortedatum in");
			setTimeout("document.getElementById('gebdatum1').focus();", 1);
		}
		lreturn = false;
	} else if ((!document.getElementById("geslacht1man").checked) && (!document.getElementById("geslacht1vrouw").checked)) {
		if (!lsilent) {
			alert("Vul uw geslacht in");
			setTimeout("document.getElementById('geslacht1man').focus();", 1);
		}
		lreturn = false;
	} else if ((!document.getElementById("roker1ja").checked) && (!document.getElementById("roker1nee").checked)) {
		if (!lsilent) {
			alert("Vul in of u rookt of niet");
			setTimeout("document.getElementById('roker1ja').focus();", 1);
		}
		lreturn = false;
		
	// Controleer of er een partner is
	} else if ((document.getElementById("aantal2").checked) && (document.getElementById("gebdatum2").value == "")) {
		if (!lsilent) {
			alert("Vul de geboortedatum van de tweede verzekerde in");
			setTimeout("document.getElementById('gebdatum2').focus();", 1);
		}
		lreturn = false;
	} else if ((document.getElementById("aantal2").checked) && (!document.getElementById("geslacht2man").checked) && (!document.getElementById("geslacht2vrouw").checked)) {
		if (!lsilent) {
			alert("Vul het geslacht van de tweede verzekerde in");
			setTimeout("document.getElementById('geslacht2man').focus();", 1);
		}
		lreturn = false;
	} else if ((document.getElementById("aantal2").checked) && (!document.getElementById("roker2ja").checked) && (!document.getElementById("roker2nee").checked)) {
		if (!lsilent) {
			alert("Vul in of de tweede verzekerde rookt of niet");
			setTimeout("document.getElementById('roker2ja').focus();", 1);
		}
		lreturn = false;
		
	} else if (document.getElementById("verzbedrag").value == "") {
		if (!lsilent) {
			alert("Vul het verzekerd bedrag in");
			setTimeout("document.getElementById('verzbedrag').focus();", 1);
		}
		lreturn = false;
	} else if (document.getElementById("ingangsdatum").value == "") {
		if (!lsilent) {
			alert("Vul de ingangsdatum in");
			setTimeout("document.getElementById('ingangsdatum').focus();", 1);
		}
		lreturn = false;
	} else if (document.getElementById("ingangsdatum").value.isEarlier(toDate)) {
		if (!lsilent) {
			alert("De ingangsdatum kan niet in het verleden liggen");
			setTimeout("document.getElementById('ingangsdatum').focus();", 1);
		}
		lreturn = false;
	} else if (document.getElementById("duur").value == 0) {
		if (!lsilent) {
			alert("Vul de gewenste looptijd in");
			setTimeout("document.getElementById('duur').focus();", 1);
		}
		lreturn = false;
	}
	return lreturn;
}

String.prototype.isEarlier = Date.prototype.isEarlier = function(thanDate)
{	// Expected format: dd-mm-yyyy
	var currentDate = (this.getTime ? this.getTime() : Date.parse(this.replace(/^([\d]+)\D([\d]+)\D([\d]+)$/, '$2/$1/$3 06:00:00')));
	var compareDate = (thanDate.getTime ? thanDate.getTime() : Date.parse(thanDate.replace(/^([\d]+)\D([\d]+)\D([\d]+)$/, '$2/$1/$3 06:00:00')));
	var dates = [new Date(currentDate), new Date(compareDate)];

	return (currentDate < compareDate);
}
String.prototype.isLater = Date.prototype.isLater = function(thanDate)
{	// Expected format: dd-mm-yyyy
	var currentDate = (this.getTime ? this.getTime() : Date.parse(this.replace(/^([\d]+)\D([\d]+)\D([\d]+)$/, '$2/$1/$3 06:00:00')));
	var compareDate = (thanDate.getTime ? thanDate.getTime() : Date.parse(thanDate.replace(/^([\d]+)\D([\d]+)\D([\d]+)$/, '$2/$1/$3 06:00:00')));
	var dates = [new Date(currentDate), new Date(compareDate)];

	return (currentDate > compareDate);
}
String.prototype.isSame = Date.prototype.isSame = function(thanDate)
{	// Expected format: dd-mm-yyyy
	var currentDate = (this.getTime ? this.getTime() : Date.parse(this.replace(/^([\d]+)\D([\d]+)\D([\d]+)$/, '$2/$1/$3 06:00:00')));
	var compareDate = (thanDate.getTime ? thanDate.getTime() : Date.parse(thanDate.replace(/^([\d]+)\D([\d]+)\D([\d]+)$/, '$2/$1/$3 06:00:00')));
	var dates = [new Date(currentDate), new Date(compareDate)];

	return (currentDate == compareDate);
}
