function updatePartner() {
    if (document.getElementById('formEl_partner_geslacht').value == '') {
        document.getElementById('formEl_partner').value = null;
        document.getElementById('formEl_partner_geboortedatum').style.display = 'none';
        document.getElementById('partner-name').style.display = 'none';
    } else {
        document.getElementById('formEl_partner').value = 'ja';
        document.getElementById('formEl_partner_geboortedatum').style.display = 'inline';
        try {
            document.getElementById('partner-name').style.display = 'table-row';
        } catch(err) {
            document.getElementById('partner-name').style.display = 'block';
        }
    }
}

function updateKids() {
    var hn_numkids = document.getElementById('formEl_aantal_kinderen').value;
    document.getElementById('formEl_kinderen').value = hn_numkids ? 'ja' : null;
    for (i = 0; i < 5; i++) {
        if (i < hn_numkids) {
            try {
                document.getElementById('kind-' + i + '-name').style.display = 'table-row';
                document.getElementById('kind-' + i + '-sex-dob').style.display = 'table-row';
            } catch(err) {
                document.getElementById('kind-' + i + '-name').style.display = 'block';
                document.getElementById('kind-' + i + '-sex-dob').style.display = 'block';
            }
        } else {
            document.getElementById('kind-' + i + '-name').style.display = 'none';
            document.getElementById('kind-' + i + '-sex-dob').style.display = 'none';
        }
    }
}

function updateBasis() {
    document.getElementById('formEl_basis').value =
        document.getElementById('formEl_basisinsurance').value +
        '_' +
        document.getElementById('formEl_eigenrisico').value;
}

function combinatieOfLos() {
	var aanvullend = document.getElementById('formEl_aanvullend');
	var tandarts = document.getElementById('formEl_tandarts');
	var combinatie = document.getElementById('formEl_combinatie');
	
	if (aanvullend && tandarts && combinatie) {
		if (aanvullend.value != '0' || tandarts.value != '0') {
			combinatie.disabled = true;
		} else if (combinatie.value != '0') {
			aanvullend.disabled = true;
			tandarts.disabled = true;
		} else {
			aanvullend.disabled = false;
			tandarts.disabled = false;
			combinatie.disabled = false;
		}
	} else if (aanvullend && combinatie) {
		if (aanvullend.value != '0') {
			combinatie.disabled = true;
		} else if (combinatie.value != '0') {
			aanvullend.disabled = true;
		} else {
			aanvullend.disabled = false;
			combinatie.disabled = false;
		}
	} else if (tandarts && combinatie) {
		if (tandarts.value != '0') {
			combinatie.disabled = true;
		} else if (combinatie.value != '0') {
			tandarts.disabled = true;
		} else {
			combinatie.disabled = false;
			tandarts.disabled = false;
		}
	}
}

function getCaretPosition(textElement) {
	var caretPos = 0;

	if (document.selection) {
		textElement.focus ();
		
		var selection = document.selection.createRange ();
		
		selection.moveStart ('character', -textElement.value.length);
		
		caretPos = selection.text.length;
	} else if (textElement.selectionStart || textElement.selectionStart == '0') {
		caretPos = textElement.selectionStart;
	}

	return (caretPos);
}

function setCaretPosition (textElement, caretPos) {
	if (document.selection) {
		textElement.focus ();
		
		var selection = document.selection.createRange ();
		
		selection.moveStart ('character', -textElement.value.length);
		
		selection.moveStart ('character', caretPos);
		selection.moveEnd ('character', 0);
		selection.select ();
	}

	else if (textElement.selectionStart || textElement.selectionStart == '0') {
		textElement.selectionStart = caretPos;
		textElement.selectionEnd = caretPos;
		textElement.focus ();
	}
}

function countChar (needle, haystack, maxLen) {
	var maxLen = (maxLen == null) 
		? haystack.length
		: maxLen;
	
	var count = 0;
	
	for (var i = 0; i < maxLen; i++) {
		if (haystack.substr(i, 1) == needle)
			count++
	}
	
	return count;
}

function dateFocus(textElement) {
	if (textElement.value == '    -    -') {
		textElement.value = '';
	}
}

function dateBlur(textElement) {
	if (textElement.value == '' || textElement.value == null) {
		textElement.value = '    -    -'
	}
}

function dateKeyPress(textElement, event) {
	var keyCode = (event.which) ? event.which : event.keyCode;
	
	var caretPos = getCaretPosition(textElement);
	
	//alert('space: ' + countChar(' ', textElement.value, caretPos) + ' caret: ' + caretPos)
	
	var dateValue = textElement.value;
	
	if (keyCode > 95 && keyCode < 106) {
		dateValue = dateValue.substr(0, caretPos) 
			+ (keyCode - 96) 
			+ dateValue.substr(caretPos + 1);
	} else if (keyCode > 47 && keyCode < 58) {
		dateValue = dateValue.substr(0, caretPos) 
			+ (keyCode - 48) 
			+ dateValue.substr(caretPos + 1);
	} else if (keyCode == 8) {
		dateValue = dateValue.substr(0, caretPos)
			+ dateValue.substr(caretPos + 1);
	} else if (keyCode == 46) {
		
	}
	
	if (caretPos == 1 || caretPos == 4)
		caretPos += 1;
	
	textElement.value = dateValue;
	
	setCaretPosition(textElement, caretPos + 1);
	
	return false;
}
