var formType;

function bankrekeningNaam(voorletters, tussenvoegsels, achternaam)
{
	var result = '';
	
	if(voorletters != '')
	{
		result += voorletters;
	}	
	
	if(tussenvoegsels != '')
	{
		if(result != '')
			result += ' ';
		
		result += tussenvoegsels.toLowerCase();
	}
	
	if(achternaam != '')
	{
		if(result != '')
			result += ' ';
		
		result += achternaam;
	}
	
	return result;
}

function verwijderKind(kindId)
{
	if($('#kind_' + kindId) && confirm('Weet u zeker dat u dit kind wilt verwijderen?'))
	{
		$('#kind_' + kindId).hide(400, function() {
			$(this).remove();
			telKinderenOpnieuw();
		});
	}
}

function telKinderenOpnieuw()
{
	var kindTeller = 1;
	$('#kinderen').children().each(function () {
		$('#' + $(this)[0].id + '_nummer').html(kindTeller);
		kindTeller++;
	});
}

function kinderenOuderDan18()
{
	var kinderen = [];
	$('#kinderen').children().each(function() {
		if(isOuderDan18($('#' + $(this)[0].id + '_geboorte_datum').val()))
			kinderen.push({
				'voorletters': 		$('#' + $(this)[0].id + '_naam_voorletters').val(),
				'tussenvoegsels': 	$('#' + $(this)[0].id + '_naam_tussenvoegsels').val(),
				'achternaam': 		$('#' + $(this)[0].id + '_naam_achternaam').val()
			});
	});
	
	return kinderen;
}

function isOuderDan18(datum)
{
	return datum != '' && leeftijd(datum) >= 18;
}

function leeftijd(datum) 
{
	var datumExplode = datum.split('-');
	var vandaag = new Date();
	var year = vandaag.getFullYear();
	
	var leeftijd = ( (vandaag.getMonth() >= datumExplode[1] && vandaag.getDate() >= datumExplode[0]) || (vandaag.getMonth() > datumExplode[1]) ) ? year - datumExplode[2] : year - datumExplode[2] - 1;
	
	return leeftijd;	
}

function formatDatum(field)
{
	if($(field).val() != 'dd-mm-jjjj')
	{
		$(field).removeClass('error');
	
		datum = field.val().replace(/-|\/|\s/g, '');
		if(datum.length == 6 || datum.length == 8)
		{
			if(datum.length == 6)
			{
				jaar = datum.charAt(2) + datum.charAt(3) + datum.charAt(4) + datum.charAt(5);
				datum = '0' + datum.charAt(0) + '-' + '0' + datum.charAt(1) + '-' + datum.charAt(2) + datum.charAt(3) + datum.charAt(4) + datum.charAt(5);		
			}
			else
			{
				jaar = datum.charAt(4) + datum.charAt(5) + datum.charAt(6) + datum.charAt(7);
				datum = datum.charAt(0) + datum.charAt(1) + '-' + datum.charAt(2) + datum.charAt(3) + '-' + datum.charAt(4) + datum.charAt(5) + datum.charAt(6) + datum.charAt(7);	
			}
		
			var vandaag = new Date();
		
			if(jaar >= 1900 && jaar <= vandaag.getFullYear())
				return datum;
			else
				$(field).addClass('error');
		}
		else if(datum != '')
			$(field).addClass('error');
	}
}

function datepicker()
{
	$('input.datepicker').each(function() {
		if($(this)[0].id != 'kind_ID_geboorte_datum')
		{
			$($(this)[0]).datepicker({ 
				showOn: 'button', 
				buttonImageOnly: true, 
				buttonImage: 'public/images/calendar.gif',
				buttonText: 'Datum selecteren'
			});
			
			if($(this).val() == '')
			{
				$($(this)[0]).addClass('hint').val('dd-mm-jjjj').focus(function() {
					if($(this).val() == 'dd-mm-jjjj')
						$(this).removeClass('hint').val('');
				});
			}
		}
	});
}

function toggleKindGeslacht()
{
	var rawId = $(this)[0].id.replace('_geslacht_meisje', '').replace('_geslacht_jongen', '');
	var kindId = rawId.replace('kind_', '');
	switch($('input[name=kinderen\\[' + kindId + '\\]\\[geslacht\\]]:checked').val())
	{
		case "Jongen":
			$('#' + rawId + '_zoon_dochter').html('zoon');
			break;
		
		case "Meisje":
			$('#' + rawId + '_zoon_dochter').html('dochter');
			break;
		
		default:
			$('#' + rawId + '_zoon_dochter').html('zoon/dochter');
			break;
	}
}

function toggleKindZelfOntvangen()
{
	var rawId = $(this)[0].id.replace('_zelf_ontvangen_ja', '').replace('_zelf_ontvangen_nee', '');
	var kindId = rawId.replace('kind_', '');
	switch($('input[name=kinderen\\[' + kindId + '\\]\\[zelf_ontvangen\\]]:checked').val())
	{
		case "Ja":
			$('#div_kind_' + kindId + '_bankgegevens').fadeIn();
			break;
		
		case "Nee":
			$('#div_kind_' + kindId + '_bankgegevens').hide();
			break;
	}
}

function toggleDatum()
{
	$(this).val(formatDatum($(this)));
	
	if(formType == "alimentatieformulier")
	{
		$('#kinderen').children().each(function() {
			if(isOuderDan18($('#' + $(this)[0].id + '_geboorte_datum').val()))
			{
				$('#div_' + $(this)[0].id + '_zelf_ontvangen').fadeIn();
				$('#div_' + $(this)[0].id + '_bsn').removeClass('form-row-last');
			}
			else
			{
				$('#div_' + $(this)[0].id + '_zelf_ontvangen').hide();
				$('#div_' + $(this)[0].id + '_bsn').addClass('form-row-last');
			}
		});
	}
}

function kindEvents(kindId)
{
	$('input[name=kinderen\\[' + kindId + '\\]\\[geslacht\\]]').change(toggleKindGeslacht).trigger('change');
	
	if(formType == "alimentatieformulier")
		$('input[name=kinderen\\[' + kindId + '\\]\\[zelf_ontvangen\\]]').change(toggleKindZelfOntvangen).trigger('change');
	
	if(formType == "alimentatieformulier")
	{
		$('#kind_' + kindId + '_naam_voorletters,#kind_' + kindId + '_naam_tussenvoegsels,#kind_' + kindId + '_naam_achternaam').change(function() {
			if($('#kind_' + kindId + '_bankrekening_naam').hasClass('modified') == false)
			{
				$('#kind_' + kindId + '_bankrekening_naam').val(bankrekeningNaam(
					$('#kind_' + kindId + '_naam_voorletters').val(), 
					$('#kind_' + kindId + '_naam_tussenvoegsels').val(), 
					$('#kind_' + kindId + '_naam_achternaam').val()
				));
			}
		}).trigger('change');
		
		$('#kind_' + kindId + '_bankrekening_naam').change(function() {
			if($(this).hasClass('modified') == false)
				$(this).addClass('modified');
		});
	}

	$('#kind_' + kindId + '_geboorte_datum').change(toggleDatum).trigger('change');
	
	$('#kind_' + kindId + '_adres_postcode_1,#kind_' + kindId + '_adres_postcode_2,#kind_' + kindId + '_adres_huisnummer').change(function() {
		checkPostcode(
			$('#kind_' + kindId + '_adres_postcode_1'), 
			$('#kind_' + kindId + '_adres_postcode_2'), 
			$('#kind_' + kindId + '_adres_huisnummer'), 
			$('#kind_' + kindId + '_adres_straat'), 
			$('#kind_' + kindId + '_adres_plaats')
		);
	});	
	$('#kind_' + kindId + '_adres_postcode_1').keyup(function() {
		autoJump($('#kind_' + kindId + '_adres_postcode_1'), $('#kind_' + kindId + '_adres_postcode_2'));
	});
	$('#kind_' + kindId + '_adres_postcode_2').keyup(autoUppercase).keyup(function() {
		autoJump($('#kind_' + kindId + '_adres_postcode_2'), $('#kind_' + kindId + '_adres_huisnummer'));
	});
}

var is_international = false;

function render()
{
	$('img.tooltip').each(function() {
		$(this).tooltip({ 
		    track: true, 
		    delay: 0, 
		    showBody: ': ', 
			showURL: false,
		    extraClass: "right" 
		});	
	});
	
	if(formType == "alimentatieberekening" || formType == "alimentatieformulier")
	{
		var vandaag = new Date();
		var year = vandaag.getFullYear();
		
		$.datepicker.setDefaults($.datepicker.regional['nl']);
		$.datepicker.setDefaults({ dateFormat: 'dd-mm-yy', changeMonth: true, changeYear: true, maxDate: '+1w', minDate: new Date(1900, 1, 1), yearRange: '1900:' + year });
	
		datepicker();	
	
		$('input.datepicker').change(toggleDatum).trigger('change');
	
		$('#kinderen').children().each(function() {
			kindEvents($(this)[0].id.replace('kind_', ''));
		});
	
		$('#kind-toevoegen').click(function() {
			var vandaag = new Date();
			var kindNummer = $('#kinderen').children().length + 1;
			var id = kindNummer + '_' + vandaag.getTime();
		
			$('#kinderen').append($('#kind-sjabloon').html().replace(/ID/g, id));
			$('#kind_' + id + '_nummer').html(kindNummer);
		
			kindEvents(id);
		
			$('#kind_' + id).addClass('highlight').effect('highlight', {}, 500, function() {
				$(this).removeClass('highlight')
			});
		
			datepicker();	
		});
	
		$('#adres_postcode_1,#adres_postcode_2,#adres_huisnummer').change(function() {
			checkPostcode($('#adres_postcode_1'), $('#adres_postcode_2'), $('#adres_huisnummer'), $('#adres_straat'), $('#adres_plaats'));
		});	
		$('#adres_postcode_1').keyup(function() {
			autoJump($('#adres_postcode_1'), $('#adres_postcode_2'));
		});
		$('#adres_postcode_2').keyup(autoUppercase).keyup(function() {
			autoJump($('#adres_postcode_2'), $('#adres_huisnummer'));
		});
	
		$(':input').one("change", function() {
			window.onbeforeunload = function() { 
				return 'U verliest de ingevoerde gegevens.'; 
			}
		});
	
		$('#alimentatieform').submit(function() {
			window.onbeforeunload = function() {};
		});
	
		if(formType == "alimentatieformulier")
		{
			/**
			 * Alimentatieformulier
			 */
		
			$('#naam_voorletters,#naam_tussenvoegsels,#naam_achternaam').change(function() {
				if($('#bankrekening_naam').hasClass('modified') == false)
					$('#bankrekening_naam').val(bankrekeningNaam($('#naam_voorletters').val(), $('#naam_tussenvoegsels').val(), $('#naam_achternaam').val()));
			});

			$('#bankrekening_naam').change(function() {
				if($(this).hasClass('modified') == false)
					$(this).addClass('modified');
			});
	
			$('input[name=inkomen_eigenbedrijf]').change(function() {
				switch($('input[name=inkomen_eigenbedrijf]:checked').val())
				{
					case "Eigen bedrijf":
						$('#div_inkomen_eigenbedrijf').fadeIn();
						$('#div_inkomen_loondienst').hide();
						break;
		
					case "Loondienst":
						$('#div_inkomen_eigenbedrijf').hide();
						$('#div_inkomen_loondienst').removeClass('odd').addClass('even').fadeIn();
						break;
			
					case "Beide":
						$('#div_inkomen_eigenbedrijf').fadeIn();
						$('#div_inkomen_loondienst').addClass('odd').removeClass('even').fadeIn();
						break;
			
					case "Onbekend":
						$('#div_inkomen_eigenbedrijf').hide();
						$('#div_inkomen_loondienst').hide();
						break;
				}
			}).trigger('change');

			$('input[name=echtscheiding_inbehandeling]').change(function() {
				switch($('input[name=echtscheiding_inbehandeling]:checked').val())
				{
					case "Ja":
						$('#div_echtscheiding_zaaknummer').fadeIn();
						break;
			
					case "Nee":
					default:
						$('#div_echtscheiding_zaaknummer').hide();
						break;
				}
			}).trigger('change');
			
			$('input[name=betalingsplichtige_woontinnl]').change(function() {
				switch($('input[name=betalingsplichtige_woontinnl]:checked').val())
				{
					case "Onbekend":
					case "Ja":
					default:
						$('.international').hide();
						$('.international-hide').fadeIn();
						is_international = false;
						$('#row-custom-zaaknummer').removeClass('odd');
						$('#row-custom-zaaknummer').addClass('even');
						break;
			
					case "Nee":
						$('.international').fadeIn();
						$('.international-hide').hide();
						is_international = true;
						$('#row-custom-zaaknummer').removeClass('even');
						$('#row-custom-zaaknummer').addClass('odd');
						break;
				}
			}).trigger('change');
	
			$('input[name=overige_afspraken]').change(function() {
				switch($('input[name=overige_afspraken]:checked').val())
				{
					case "Schriftelijk":
						$('#herinnering-schriftelijk').fadeIn();
						$('#herinnering-mondeling').hide();
						break;
			
					case "Mondeling":
						$('#herinnering-schriftelijk').hide();
						$('#herinnering-mondeling').fadeIn();
						break;
				
					case "Nee":
						$('#herinnering-schriftelijk').hide();
						$('#herinnering-mondeling').hide();
						break;
				
					case "Beide":
						$('#herinnering-schriftelijk').fadeIn();
						$('#herinnering-mondeling').fadeIn();
						break;
				}
			}).trigger('change');

			$('#kinderalimentatie-maand-toevoegen').click(function() {
				var id = $('#kinderalimentatie-table tbody').children().length + 1;
				$('#kinderalimentatie-table tbody').append(kinderalimentatieSjabloon.replace(/ID/g, id));
				$('#kinderalimentatie-maand-' + id).addClass('highlight').effect('highlight', {}, 500, function() {
					$(this).removeClass('highlight')
				});
				$('input.datepicker').datepicker();
			});

			$('#partneralimentatie-maand-toevoegen').click(function() {
				var id = $('#partneralimentatie-table tbody').children().length + 1;
				$('#partneralimentatie-table tbody').append(partneralimentatieSjabloon.replace(/ID/g, id));
				$('#partneralimentatie-maand-' + id).addClass('highlight').effect('highlight', {}, 500, function() {
					$(this).removeClass('highlight')
				});
				$('input.datepicker').datepicker();
			});

			$('input[name=achterstand]').change(function() {
				$('#fieldset-8').fadeIn();
				switch($('input[name=achterstand]:checked').val())
				{
					case "Beide":
						$('#fieldset-6').fadeIn();
						$('#fieldset-7').fadeIn();
						break;
			
					case "Kinderalimentatie":
						$('#fieldset-6').fadeIn();
						$('#fieldset-7').hide();
						break;
			
					case "Partneralimentatie":
						$('#fieldset-6').hide();
						$('#fieldset-7').fadeIn();
						break;
				}
				
				if(!is_international)
				{
					$('.international').hide();
					$('.international-hide').fadeIn();
				}
				else
				{
					$('.international').fadeIn();
					$('.international-hide').hide();
				}
				
			}).trigger('change');
		
			$('#betalingsplichtige_adres_postcode_1,#betalingsplichtige_adres_postcode_2,#betalingsplichtige_adres_huisnummer').change(function() {
				checkPostcode(
					$('#betalingsplichtige_adres_postcode_1'), 
					$('#betalingsplichtige_adres_postcode_2'), 
					$('#betalingsplichtige_adres_huisnummer'), 
					$('#betalingsplichtige_adres_straat'), 
					$('#betalingsplichtige_adres_plaats')
				);
			});	
			$('#betalingsplichtige_adres_postcode_1').keyup(function() {
				autoJump($('#betalingsplichtige_adres_postcode_1'), $('#betalingsplichtige_adres_postcode_2'));
			});
			$('#betalingsplichtige_adres_postcode_2').keyup(autoUppercase).keyup(function() {
				autoJump($('#betalingsplichtige_adres_postcode_2'), $('#betalingsplichtige_adres_huisnummer'));
			});
		}
		else if(formType == "alimentatieberekening")
		{
			/**
			 * Alimentatieberekening
			 */
		
			$('input[name=alimentatie]').change(function() {
				switch($('input[name=alimentatie]:checked').val())
				{
					case "Alimentatieplichtige":
						$('#persoon2-fieldset-legend').html('3. Gegevens van de alimentatiegerechtigde');
						break;

					case "Alimentatiegerechtigde":
						$('#persoon2-fieldset-legend').html('3. Gegevens van de alimentatieplichtige');
						break;
				}
			}).trigger('change');
			
			$('input[name=verzoek]').change(function() {
				switch($('input[name=verzoek]:checked').val())
				{
					case "beide":
						$('.verzoek-beide').fadeIn();
						$('.verzoek-enkel').hide();
						break;

					case "enkel":
						$('.verzoek-beide').hide();
						$('.verzoek-enkel').fadeIn();
						break;
				}
			}).trigger('change');
		
			$('input[name=berekening]').change(function() {
				switch($('input[name=berekening]:checked').val())
				{
					case "Kinderalimentatie":
					case "Beide":
						$('#fieldset-5').fadeIn();
						break;

					case "Partneralimentatie":
						$('#fieldset-5').hide();
						break;
				}
			}).trigger('change');
		
			$('#persoon2_adres_postcode_1,#persoon2_adres_postcode_2,#persoon2_adres_huisnummer').change(function() {
				checkPostcode(
					$('#persoon2_adres_postcode_1'), 
					$('#persoon2_adres_postcode_2'), 
					$('#persoon2_adres_huisnummer'), 
					$('#persoon2_adres_straat'), 
					$('#persoon2_adres_plaats')
				);
			});	
			$('#persoon2_adres_postcode_1').keyup(function() {
				autoJump($('#persoon2_adres_postcode_1'), $('#persoon2_adres_postcode_2'));
			});
			$('#persoon2_adres_postcode_2').keyup(autoUppercase).keyup(function() {
				autoJump($('#persoon2_adres_postcode_2'), $('#persoon2_adres_huisnummer'));
			});
		}
	}
	else if(formType == "alimentatieberekeningPersoon")
	{
		$('input[name=woonsituatie]').change(function() {
			switch($('input[name=woonsituatie]:checked').val())
			{
				case "Huurhuis":
					$('#div_toeslagen').fadeIn();
					$('#div_andere_woonsituatie').hide();
					break;
					
				case "Andere situatie":
					$('#div_andere_woonsituatie').fadeIn();
					$('#div_toeslagen').hide();
					break;
					
				default:
					$('#div_andere_woonsituatie').hide();
					$('#div_toeslagen').hide();
					break;
			}
		}).trigger('change');
		
		$('input[name=ziektekostenverzekering]').change(function() {
			switch($('input[name=ziektekostenverzekering]:checked').val())
			{
				case "Ja":
					$('#zorgtoeslag-display').fadeIn();
					break;
					
				default:
					$('#zorgtoeslag-display').hide();
					break;
			}
		}).trigger('change');
		
		if($('#fieldset-3'))
		{
			$('input[name=bijzondere_kosten]').change(function() {
				switch($('input[name=bijzondere_kosten]:checked').val())
				{
					case "Ja":
						$('#div_gemiddelde_kosten').fadeIn();
						break;

					case "Nee":
						$('#div_gemiddelde_kosten').hide();
						break;
				}
			}).trigger('change');
		}
	}
}

function renderAlimentatieformulier()
{
	formType = "alimentatieformulier";
	
	render();
}

function renderAlimentatieberekening()
{
	formType = "alimentatieberekening";
	
	render();
}

function renderAlimentatieberekeningPersoon()
{
	formType = "alimentatieberekeningPersoon";
	
	render();
}