function calcAge(year1, month1, day1, year2, month2, day2)
{
	var day=1000*60*60*24; // Set 1 day in milliseconds
	month1 -=1; //Month is 0-11 in JavaScript
	month2 -=1; //Month is 0-11 in JavaScript
	var date1 = new Date(year2,month1,day1);
	var date2 = new Date(year2,month2,day2);
	var days = (date2.getTime()-date1.getTime())/(day);
	var years = year2-year1;
	if (days<0) {years-=1;}
	return years;
}

function calcDays(year1, month1, day1, year2, month2, day2)
{
	var day=1000*60*60*24; // Set 1 day in milliseconds
	month1 -=1; //Month is 0-11 in JavaScript
	month2 -=1; //Month is 0-11 in JavaScript
	var date1 = new Date(year1,month1,day1);
	var date2 = new Date(year2,month2,day2);
	var days = (date2.getTime()-date1.getTime())/(day);
	days += 1;
	return days;
}
	
function calcNewDate( y, m, d, days )
{
	var thisdate = new Date( y, m, d );
	thisdate.setDate(thisdate.getDate() + days);
	var thisyear = thisdate.getFullYear();
	var thismonth = thisdate.getMonth();
	var thisday = thisdate.getDate();
	return new Array(thisyear, thismonth, thisday);
}

function calcAnnulering()
{
	var annulering = (getChecked('annulering')==true) ? getValue('reissom')*.04 : 0; // premie = 4% van de reissom
	return annulering.toFixed(2);
}

function calcAssurantiebelasting()
{
	if (getChecked('annulering')==true)
	{
		var annuleringskosten = calcAnnulering();
		var assurantiebelasting = annuleringskosten*.075; // 7,5% van deze premie aan assurantiebelasting
		return assurantiebelasting.toFixed(2);
	} else {
		return 0;
	}
}

function showAnnulering(id)
{
	document.getElementById(id).value = calcAnnulering();
}

function showAssurantiebelasting(id)
{
	document.getElementById(id).value = calcAssurantiebelasting();
}

function checkAnnulering()
{
	ret = true;
	if (getChecked('annulering')==true)
	{
		setChecked('annulering_disabled', true);
	} else {
		setChecked('annulering_disabled', false);
	}
	if (getChecked('annulering'))
	{
		var reissom = getValue('reissom');
		var now = new Date();
		var bj = getValue('boekingsjaar');
		var bm = getValue('boekingsmaand');
		var bd = getValue('boekingsdag');
		var j = now.getFullYear();
		var m = now.getMonth()+1;
		var d = now.getDate();
		var days = calcDays(bj, bm, bd, j, m, d);
		if (reissom=='')
		{
			alert('Vul a.u.b. eerst een reissom in.');
			setChecked('annulering', false);
			setChecked('annulering_disabled', false);
			ret = false;
		}
		else if (days>1000)
		{
			alert('Vul a.u.b. eerst een boekingsdatum in.');
			setChecked('annulering', false);
			setChecked('annulering_disabled', false);
			ret = false;
		}
		else if (days>7)
		{
			alert('Het is niet mogelijk een annuleringskostenverzekering af te sluiten buiten een termijn van 7 dagen na boeking van uw reis en/of verblijf.');
			setChecked('annulering', false);
			setChecked('annulering_disabled', false);
			ret = false;
		} else {
			showAnnulering('annuleringskosten');
			showAnnulering('annuleringskosten_disabled');
			showAssurantiebelasting('assurantiebelasting');
			showAssurantiebelasting('assurantiebelasting_disabled');
		}
	} else {
		document.getElementById('annuleringskosten').value = '0.00';
		document.getElementById('annuleringskosten_disabled').value = '0.00';
		document.getElementById('assurantiebelasting').value = '0.00';
		document.getElementById('assurantiebelasting_disabled').value = '0.00';
	}
	return ret;
}

function getValue(id)
{
	if (document.getElementById(id) == null)
	{
		//alert("ID: '" + id + "' bestaat niet.");
		return false;
	} else {
		return document.getElementById(id).value;
	}
}

function setValue(id, val)
{
	if (document.getElementById(id) == null)
	{
		//alert("ID: '" + id + "' bestaat niet.");
		return false;
	} else {
		document.getElementById(id).value = val;
		return true;
	}
}

function getChecked(id)
{
	return document.getElementById(id).checked;
}

function setChecked(id, status)
{
	document.getElementById(id).checked=status;
}

function toon(id) {
	document.getElementById(id).style.display="block";
}

function verberg(id) {
	document.getElementById(id).style.display="none";
}

function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}


function berekenPremie()
{
	checkReisdata();
	checkAnnulering();
	checkPersonen();
	
	var premie = 0;
	var adminkosten = 4;
	adminkosten = adminkosten.toFixed(2);
	var annuleringskosten = document.getElementById('annuleringskosten').value;
	annuleringskosten = parseFloat(annuleringskosten).toFixed(2);
	var assurantiebelasting = document.getElementById('assurantiebelasting').value;
	assurantiebelasting = parseFloat(assurantiebelasting).toFixed(2);
	
	var wintersport = getChecked('wintersport');
	var volwassenen = document.getElementById('volwassenen').value;
	var kinderen = document.getElementById('kinderen').value;
	
	var vj = getValue('vertrekjaar');
	var vm = getValue('vertrekmaand');
	var vd = getValue('vertrekdag');

	var tj = getValue('terugkomstjaar');
	var tm = getValue('terugkomstmaand');	
	var td = getValue('terugkomstdag');
	
	var combinatie = document['forms']['formulier']['combinatie'];
	for(i=0; i < combinatie.length; i++){
		if (combinatie[i].checked == true) {
			var radioValue = combinatie[i].value;
		}
	}
	combinatie = radioValue;
	if (combinatie!=undefined)
	{
		var aantal_dagen = calcDays( vj, vm, vd, tj, tm, td );
		switch (combinatie)
		{
			case 'nederland':
				premie_kinderen = .5;
				premie_volwassenen = .55;
				break;
			case 'europa':
				premie_kinderen = (wintersport==true) ? (.9+.8) : .9;
				premie_volwassenen = (wintersport==true) ? (1+.9) : 1;
				break;
			case 'wereld':
				premie_kinderen = (wintersport==true) ? (1.6+.8) : 1.6;
				premie_volwassenen = (wintersport==true) ? (1.8+.9) : 1.8;
				break;
		}
		premie = (premie_volwassenen * volwassenen + premie_kinderen * kinderen) * aantal_dagen;
		if (premie<5) premie = 5;
		premie = premie.toFixed(2);
		document.getElementById('premie').value=premie;
		document.getElementById('premie_disabled').value=premie;
		var totaalpremie = parseFloat(premie) + parseFloat(adminkosten) + parseFloat(annuleringskosten) + parseFloat(assurantiebelasting);
		//if (totaalpremie<5) totaalpremie = 5;
		totaalpremie = totaalpremie.toFixed(2);
		document.getElementById('totaalpremie').value=totaalpremie;
		document.getElementById('totaalpremie_disabled').value=totaalpremie;
		
	} else {
		alert('Kies a.u.b. de combinatie van uw reisverzekering (Nederland, Europa of Wereld)');
	}
}

function checkReisdata()
{
	// vertrekdatum
	var vj = getValue('vertrekjaar');
	var vm = getValue('vertrekmaand');
	var vd = getValue('vertrekdag');
	
	// terugkomstdatum
	var tj = getValue('terugkomstjaar');
	var tm = getValue('terugkomstmaand');	
	var td = getValue('terugkomstdag');
	
	// huidige datum
	var now = new Date();
	var j = now.getFullYear();
	var m = now.getMonth()+1;
	var d = now.getDate();
	
	if (calcDays(vj, vm, vd, tj, tm, td)<0)		{alert('Onze kortlopende reisverzekering kan niet worden afgesloten als de terugkomstdatum eerder is dan de vertrekdatum.'); document.getElementById('vertrekdag').focus(); return false;}
	if (calcDays(j, m, d, vj, vm, vd)<0)		{alert('Onze kortlopende reisverzekering kan niet worden afgesloten als de vertrekdatum verstreken is.'); document.getElementById('vertrekdag').focus(); return false;}
	if (calcDays(vj, vm, vd, tj, tm, td)>90)	{alert('Onze kortlopende reisverzekering kan alleen worden afgeloten voor reizen van maximaal 90 dagen.'); document.getElementById('vertrekdag').focus(); return false;}
	
	return true;

}

function checkGeslacht()
{
	var volwassenen = parseInt(getValue('volwassenen'));
	var kinderen = parseInt(getValue('kinderen'));
	var aantal = volwassenen + kinderen;
	for(i=1; i<=aantal; i++)
	{
		if (checkRadio(document.forms['formulier']['geslacht'+i])==false)
		{
			alert('Vul a.u.b. het geslacht van de ' + i + 'e verzekerde in.');
			return false;
		}
	}
	return true;
}

function checkNamen()
{
	var volwassenen = parseInt(getValue('volwassenen'));
	var kinderen = parseInt(getValue('kinderen'));
	var aantal = volwassenen + kinderen;
	for(i=1; i<=aantal; i++)
	{
		if (getValue('naam'+i)=='')
		{
			alert('Vul a.u.b. de naam van de ' + i + 'e verzekerde in.');
			return false;
		}
	}
	return true;
}

function checkGeboortedata()
{
	var volwassenen = parseInt(getValue('volwassenen'));
	var kinderen = parseInt(getValue('kinderen'));
	var aantal = volwassenen + kinderen;
	for(i=1; i<=aantal; i++)
	{
		if (getValue('geboortedag'+i)==1 && getValue('geboortemaand'+i)==1 && getValue('geboortejaar'+i)==1900)
		{
			alert('Vul a.u.b. een geboortedatum later dan 1 januari 1900 bij de ' + i + 'e verzekerde in.');
			return false;
		}
	}
	return true;
}

function checkVoorletters()
{
	var volwassenen = parseInt(getValue('volwassenen'));
	var kinderen = parseInt(getValue('kinderen'));
	var aantal = volwassenen + kinderen;
	for(i=1; i<=aantal; i++)
	{
		if (getValue('voorletters'+i)=='')
		{
			alert('Vul a.u.b. de voorletters van de ' + i + 'e verzekerde in.');
			return false;
		}
	}
	return true;
}

function checkPremie()
{
	if (getValue('totaalpremie')=='0.00')
	{
		alert('Bereken a.u.b. eerst uw premie.');
		return false;
	}
	return true;
}

function checkPersonen()
{
	var volwassenen = getValue('volwassenen');
	var kinderen = getValue('kinderen');
	if (isNaN(volwassenen)) volwassenen = 0;
	if (isNaN(kinderen)) kinderen = 0;
	if (volwassenen=='') volwassenen = 0;
	if (kinderen=='') kinderen = 0;
	setValue('volwassenen', volwassenen);
	setValue('kinderen', kinderen);
	volwassenen = parseInt(volwassenen);
	kinderen = parseInt(kinderen);
	if (volwassenen>0 || kinderen>0)
	{
		return true;
	} else {
		alert('Vul a.u.b. het aantal personen in bij volwassenen en/of kinderen');
		return false;
	}
}

function validate_form2(thisform)
{
	
	if (getValue('totaalpremie')=='0.00')					{alert('Bereken a.u.b. eerst uw premie.'); return false;}
	if (checkRadio(document.formulier.geslacht)==false)		{alert('Vul a.u.b. uw geslacht in.'); document.getElementById('geslacht_m').focus(); return false;}
	if (getValue('naam')=='')								{alert('Vul a.u.b. uw naam in.'); document.getElementById('naam').focus(); return false;}
	if (getValue('voorletters')=='')						{alert('Vul a.u.b. uw voorletters in.'); document.getElementById('voorletters').focus(); return false;}
	if (getValue('adres')=='')								{alert('Vul a.u.b. uw adres in.'); document.getElementById('adres').focus(); return false;}
	if (checkPostcode(getValue('postcode'))==false)			{alert('Vul a.u.b. een (geldige) postcode in.'); document.getElementById('postcode').focus(); return false;}
	if (getValue('woonplaats')=='') 						{alert('Vul a.u.b. uw woonplaats in.'); document.getElementById('woonplaats').focus(); return false;}
	if (checkPhone(getValue('telefoon'),10)==false) 		{alert('Vul a.u.b. uw telefoonnummer in.'); document.getElementById('telefoon').focus(); return false;}
	if (checkEmail(getValue('email'))==false) 				{alert('Vul a.u.b. een geldig e-mailadres in.'); document.getElementById('email').focus(); return false;}
	if (getValue('nationaliteit')=='') 						{alert('Vul a.u.b. uw nationaliteit in.'); document.getElementById('nationaliteit').focus(); return false;}
	
	return checkAnnulering();
	return checkGeslacht();
	return checkVoorletters();
	
	return true;

}

function submitForm()
{
	if (checkPremie() && checkReisdata() && validate_form2() && checkNamen() && checkVoorletters() && checkGeboortedata() && checkGeslacht())
	{
		document.formulier.submit();
	}
}

function showForm1()
{
	verberg('form2');
	toon('form1');
}

function showForm2()
{
	var volwassenen = parseInt(getValue('volwassenen'));
	var kinderen = parseInt(getValue('kinderen'));
	if (document.getElementById('annulering').checked)
	{
		toon('fieldset_boekingsdatum');
	} else {
		verberg('fieldset_boekingsdatum');
	}
	if (checkPremie() && checkReisdata())
	{
		verberg('form1');
		verberg('form3');
		renderTeVerzekerenPersonen();
		toon('form2');
	}
}

function showForm3()
{
	if (checkPremie() && checkReisdata() && validate_form2() && checkNamen() && checkVoorletters() && checkGeboortedata() && checkGeslacht())
	{
		verberg('form2');
		fillOverzicht();
		toon('form3');
	}
}

function getInputdate(title, from, to, show_now, nr)
{
	var curdate = new Date();
	var d = curdate.getDate();
	var m = curdate.getMonth();
	var j = curdate.getYear();
	var str = '<select class="dag" name="'+title+'dag'+nr+'" id="'+title+'dag'+nr+'">';
	var selected = '';
	var i = 0;
	for (i=1; i<=31; i++)
	{
		selected = (show_now && i==d) ? 'selected' : '';
		str += '<option value="'+i+'" '+selected+'>'+i+'</option>';

	}
	var maand = new Array("januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december");
	str += '</select><select class="maand" name="'+title+'maand'+nr+'" id="'+title+'maand'+nr+'">';
	for (i=1; i<=12; i++)
	{
		selected = (show_now && i-1==m) ? 'selected' : '';
		str += '<option value="'+i+'" '+selected+'>'+maand[i-1]+'</option>';

	}
	str += '</select><select class="jaar mr" name="'+title+'jaar'+nr+'" id="'+title+'jaar'+nr+'">';
	for (i=from; i<=to; i++)
	{
		selected = (show_now && i==j) ? 'selected' : '';
		str += '<option value="'+i+'" '+selected+'>'+i+'</option>';

	}
	str += '</select>';
	return str;
}


function renderTeVerzekerenPersonen()
{
	var volwassenen = parseInt(getValue('volwassenen'));
	var kinderen = parseInt(getValue('kinderen'));
	if (isNaN(volwassenen)) volwassenen = 0;
	if (isNaN(kinderen)) kinderen = 0;
	if (document.getElementById('renderteverzekerenpersonen_ok').value=="j")
	{
		document.getElementById('teverzekerenpersonen').innerHTML='';
		var curdate = new Date();
		var jv = curdate.getFullYear()-17;
		var jk = curdate.getFullYear()-4;
		if (volwassenen>0)
		{
			var sv = '<fieldset style="margin-bottom: 20px;"><legend>Te verzekeren volwassenen</legend><table style="margin-bottom: 10px;"><tr><td></td><td>Naam</td><td>Voorletters</td><td style="padding-right: 10px;">Geb.datum</td><td style="padding-right: 20px;">Geslacht</td></tr>';
			for (i=1; i<=volwassenen; i++)
			{
				sv += '<tr class="topline"><td>' + i + '.&nbsp;</td><td><input type="text" class="text mr" name="naam' + i + '" id="naam' + i + '" value="" /></td><td><input type="text" class="voorletters mr" name="voorletters' + i + '" id="voorletters' + i + '" value="" /></td><td>' + getInputdate("geboorte", 1900, jv, false, i) + '</td><td><input type="radio" name="geslacht' + i + '" value="m" /> M <input type="radio" name="geslacht' + i + '" value="v" /> V</td></tr>';
			}
			sv += '</table></fieldset>';
			document.getElementById('teverzekerenpersonen').innerHTML+=sv;
		}
		if (kinderen>0)
		{
			var sk = '<fieldset style="margin-bottom: 20px;"><legend>Te verzekeren kinderen</legend><table style="margin-bottom: 10px;"><tr><td></td><td>Naam</td><td>Voorletters</td><td style="padding-right: 10px;">Geb.datum</td><td style="padding-right: 20px;">Geslacht</td></tr>';
			var start = volwassenen+1;
			var end = volwassenen+kinderen;
			var nr = 1;
			for (i=start; i<=end; i++)
			{
				sk += '<tr class="topline"><td>' + nr + '.&nbsp;</td><td><input type="text" class="text mr" name="naam' + i + '" id="naam' + i + '" value="" /></td><td><input type="text" class="voorletters mr" name="voorletters' + i + '" id="voorletters' + i + '" value="" /></td><td>' + getInputdate("geboorte", jv, jk, false, i) + '</td><td><input type="radio" name="geslacht' + i + '" value="m" /> M <input type="radio" name="geslacht' + i + '" value="v" /> V</td></tr>';
				nr ++;
			}
			sk += '</table></fieldset>';
			document.getElementById('teverzekerenpersonen').innerHTML+=sk;
		}
		document.getElementById('renderteverzekerenpersonen_ok').value="";
	}
}

function renderTeVerzekerenPersonen_ok()
{
	document.getElementById('renderteverzekerenpersonen_ok').value="j";
}

function setInnerHTML(id, value)
{
	document.getElementById(id).innerHTML = value;
}

function fillOverzicht()
{
	// Reisgegevens
	setInnerHTML('volwassenen_kopie', getValue('volwassenen'));
	setInnerHTML('kinderen_kopie', getValue('kinderen'));
	setInnerHTML('vertrekdatum_kopie', getValue('vertrekdag') + "-" + getValue('vertrekmaand') + "-" + getValue('vertrekjaar'));
	setInnerHTML('terugkomstdatum_kopie', getValue('terugkomstdag') + "-" + getValue('terugkomstmaand') + "-" + getValue('terugkomstjaar'));
	setInnerHTML('dekking_kopie', getCheckedRadio('combinatie'));
	if (getChecked('wintersport')!=false)
	{
		setInnerHTML('wintersport_kopie', getValue('wintersport'));
	} else {
		setInnerHTML('wintersport_kopie', '-');
	}
	if (getChecked('annulering')!=false)
	{
		setInnerHTML('annuleringsverzekering_kopie', getValue('annulering'));
	} else {
		setInnerHTML('annuleringsverzekering_kopie', '-');
	}
	setInnerHTML('reissom_kopie', getValue('reissom'));
	setInnerHTML('boekingsdatum_kopie', getValue('boekingsdag') + "-" + getValue('boekingsmaand') + "-" + getValue('boekingsjaar'));
	
	// Kostenoverzicht
	setInnerHTML('premie_kopie', getValue('premie'));
	setInnerHTML('annuleringskosten_kopie', getValue('annuleringskosten'));
	setInnerHTML('adminkosten_kopie', getValue('adminkosten'));
	setInnerHTML('assurantiebelasting_kopie', getValue('assurantiebelasting'));
	setInnerHTML('totaalpremie_kopie', getValue('totaalpremie'));
	
	// Gegevens verzekeringsnemer
	setInnerHTML('geslacht_kopie', getCheckedRadio('geslacht'));
	setInnerHTML('voorletters_kopie', getValue('voorletters'));
	setInnerHTML('naam_kopie', getValue('naam'));
	setInnerHTML('adres_kopie', getValue('adres'));
	setInnerHTML('postcode_kopie', getValue('postcode'));
	setInnerHTML('plaats_kopie', getValue('woonplaats'));
	setInnerHTML('telefoon_kopie', getValue('telefoon'));
	setInnerHTML('email_kopie', getValue('email'));
	setInnerHTML('nationaliteit_kopie', getValue('nationaliteit'));
	setInnerHTML('geboortedatum_kopie', getValue('geboortedag') + "-" + getValue('geboortemaand') + "-" + getValue('geboortejaar'));
	setInnerHTML('bank_kopie', getValue('bank'));
	setInnerHTML('huishouden_kopie', getCheckedRadio('huishouden'));
	
	// Te verzekeren personen
	var i = 0;
	volwassenen = parseInt(getValue('volwassenen'));
	kinderen = parseInt(getValue('kinderen'));
	aantal = volwassenen + kinderen;
	var teverzekerenpersonen_kopie = "<fieldset><legend>Te verzekeren personen</legend><table width=\"100%\" style=\"margin-bottom: 5px\"><table><tr><td>&nbsp;</td><td>Naam </td><td>Geb.datum </td><td>Geslacht</td></tr>";
	for (i=1; i<=aantal; i++)
	{
		teverzekerenpersonen_kopie += (i==1) ? "<tr>" : "<tr class=\"topline\">";
		teverzekerenpersonen_kopie += "<td>" + i + ". &nbsp;</td><td>" + getValue('voorletters'+i) + " " + getValue('naam'+i) + " &nbsp;</td><td>" + getValue('geboortedag'+i) + "-" + getValue('geboortemaand'+i) + "-" + getValue('geboortejaar'+i) + " &nbsp;</td><td>" + getCheckedRadio('geslacht'+i) + "</td></tr>";
	}
	teverzekerenpersonen_kopie += "</table></fieldset>";
	setInnerHTML('teverzekerenpersonen_kopie', teverzekerenpersonen_kopie);
}

function getCheckedRadio(groupname) {
	var radioButtons = document.getElementsByName(groupname);
	for (var x = 0; x < radioButtons.length; x ++) {
		if (radioButtons[x].checked) {
			return radioButtons[x].value;
		}
	}
}