var Tsys = "nieuw-huidig";  // Default. t.b.v. bouw en test. Zie switch statusmodule index.html
// oud-huidig: Oude belastingdienst website met daarop de huidige (= oude) toeslagen site." selected="selected" 
// oud-nts: Oude belastingdienst website met daarop de Nieuwe Toeslagen Site.
// nieuw-huidig: Nieuwe (LWCM) belastingdienst website met daarop de huidige toeslagen site die gemigreerd is met de huidige content naar LWCM toe.
// nieuw-nts: Nieuwe (LWCM) belastingdienst website met daarop de Nieuwe Toeslagen Site die gemigreerd is naar LWCM.

var strPeriode;
var SaveJaar;
var aantalMeerderjarig = null;
var oudersAntwoord;			
var huisgenotenDone = [];
huisgenotenDone[1] = false;	
huisgenotenDone[2] = false;
huisgenotenDone[3] = false;
huisgenotenDone[4] = false;
huisgenotenDone[5] = false;

// get vars uitlezen (nodig om jaar uit te lezen vanaf url)
var Uri={
read:function(id) {
	var s = location.search.match('(?:\\?|\&)'+id+'=([^\&]*)');
	return s ? unescape(s[1].replace(/\+/g," ")):false
	}
}

function InitJaar() {
	var externalJaar = Uri.read("jaar");
	
	if ( externalJaar != false && checkJarenInModule(externalJaar, 'selectJaar') == true ) {	//todo jaren niet hier hardcoden maar bovenin config	 
		strPeriode = externalJaar;
		document.getElementById("fsKeuze").style.display = 'none';
		document.getElementById("keuzevraag").style.display = 'block';
		document.getElementById("divBurgStaat").style.display = 'block';
		doJaarWissel(externalJaar);
	}
}

function getElementsByClassName(oElm, strTagName, strClassName) {
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/\-/g, "\\-");
	var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	var oElement;
	for(var i=0; i<arrElements.length; i++) {
		oElement = arrElements[i];
		if(oRegExp.test(oElement.className)) {
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}

function doJaarWissel(tmpJaar) {
	strPeriode = tmpJaar;
	iJaar = parseInt(tmpJaar)
	if (iJaar != -1) {
		SaveJaar = iJaar;
		document.getElementById("frmBerekening").reset();
		document.getElementById("frmBerekening").selectJaar.value = strPeriode;		
		vulSpan();
		doInit('');
		if ( parseInt(SaveJaar) < 2009 ) {
			document.getElementById('textReedsToeslagpartner_voor2009').style.display='block';
			document.getElementById('textReedsToeslagpartner_na2009').style.display='none';
		} else	{
			document.getElementById('textReedsToeslagpartner_voor2009').style.display='none';
			document.getElementById('textReedsToeslagpartner_na2009').style.display='block';
		}
		toonDivs("divBurgStaat","","","keuzevraag");		
	} else if (SaveJaar != -1) {
		document.getElementById("selectJaar").value = SaveJaar;
		return ;
	}
}

function doChkSelPeriode(iJaar) {
	SaveJaar = iJaar;
}

function doInit(strWelkVeld) {
	oudersAntwoord = null;
	clearPrn();
	toonDivs("", "divResult", "fsUitvoer", "",'');
	doInterface('init', '');
	ZetInputUit("divBurgStaat" , false);
	document.getElementById("ouders").style.display = 'none';
	if (strWelkVeld != "")	{
		SetFocus(strWelkVeld);
	}
}

// uit common/gen_reken_interface_func.js gehaald en bijgewerkt voor select ondersteuning
function ZetInputUit(element, schakelaar) {
//Doel: Deze functie schakelt alle invoervelden binnen een fieldset in danwel uit.
//Werking: Alle input-tags worden geschakeld behalve de tags waarvan de naam van de tag begint met de tekst "butTi_"
//para1: Geef hier de naam van de fieldset op waarbinnen de velden worden geschakeld
//para2: Geef hier true of false op om de velden te déactiveren danwel te activeren
//			 true = uitgeschakeld, false is ingeschakeld
	var els = getElementsByTagNames("input,select", document.getElementById(element));
	for(var i = 0; i < els.length; i++) {
		if(els[i].name.substr(0, 6) != "butTi_") 
		{
			els[i].disabled = schakelaar;
		}	
	}
}

function doMeerderjarig() {
	var aantalMeerderjarigOud = aantalMeerderjarig;
	aantalMeerderjarig = parseInt(document.getElementById("selectMeerderjarig").value);
	
	if ( aantalMeerderjarig <= 0 || (aantalMeerderjarig > 0 && document.getElementById("ouders_nee").checked == false && document.getElementById("ouders_ja").checked == false)) {	
		hideAndClear(1);
		hideAndClear(2);
		hideAndClear(3);
		hideAndClear(4);
		hideAndClear(5);
		if ( aantalMeerderjarig > 0 ) {
			document.getElementById("ouders").style.display = 'block';
		} else {
			hideSub('ouders', true);
		}
		if ( aantalMeerderjarig == 0 ) {
			doUitvoerResult("divResultGeenToeslagPartner");
		}
	} else if ( aantalMeerderjarig > 0 ) {
		document.getElementById("ouders").style.display = 'block';
		if (document.getElementById("ouders_nee").checked == true) {			
			oudersAntwoord = "";
			doOuders('nee');
		} else if (document.getElementById("ouders_ja").checked == true) {
			oudersAntwoord = "";
			doOuders('ja');
		}
	}
	
	// als aantalmeerderjarig al een keer eerder gekozen is, werk dan de subblokken bij
	if ( aantalMeerderjarigOud != null && (document.getElementById("ouders_nee").checked != false || document.getElementById("ouders_ja").checked != false) ) {
		var diff = aantalMeerderjarigOud - aantalMeerderjarig;
		
		// positief? verwijder de laatste x
		if ( diff > 0 ) {
			// verwijder teveel
			for(var i = aantalMeerderjarigOud; i > aantalMeerderjarig; i--) {
				hideAndClear(i);
			}
		} else {
			// voeg nieuw subblok toe
			showNextHuisgenoot(aantalMeerderjarigOud);
		}
		validateHuisgenoten();
	}
	
}

function doOuders(antwoord) {
	if (antwoord != oudersAntwoord)	{	
		hideAndClear(1);
		hideAndClear(2);
		hideAndClear(3);
		hideAndClear(4);
		hideAndClear(5);	
	}
	
		oudersAntwoord = antwoord;
		if (antwoord == 'ja' && parseInt(document.getElementById("selectMeerderjarig").value) == 1){
			doInterface('ouders','divResultGeenToeslagPartner');					
		} else if (parseInt(document.getElementById("selectMeerderjarig").value) > 0){
			document.getElementById("divMeerderjarig1").style.display = 'block';
			validateHuisgenoten();
		} else {
			document.getElementById("divMeerderjarig1").style.display = 'none';
			validateHuisgenoten();
		}
		
	//}
}

function showNextHuisgenoot(currentId) {
	// volgende weergeven, of huisgenoten verwerken
	if ( currentId < aantalMeerderjarig ) {
		// alleen als voorgaande vragen zijn ingevuld
		var ingevuld = true;
		for(var i = 1; i <=currentId; i++) {
			if ( huisgenotenDone[i] == false ) {
				ingevuld = false;
			}	
		}
		
		if ( ingevuld == true) {
			showSub('divMeerderjarig' + (parseInt(currentId) + 1));
		}	
	}
}

function hideAndClear(id) {
	document.getElementById("divMeerderjarig" + id).style.display = 'none';
	clearSub('ingeschr' + id);
	hideSub('huish' + id, true);
	hideSub('naaste' + id, true);
	hideSub('broerzus' + id, true);
	hideSub('anderenaaste' + id, true);
	hideSub('iemandanders' + id, true);
	document.getElementById('huisgenootTussenResultaat'+ id).innerHTML = '';
	huisgenotenDone[id] = false;
}

function clearSub(divName) {
	document.getElementById(divName + "_ja").checked = '';
	document.getElementById(divName + "_nee").checked = '';	
	try {
		var temp = document.getElementById(divName + '_ja').name
		document.getElementById('prn'+ temp).innerHTML = '';
	} catch(err){
		return;
	}
	
}

function showSub(divName) {
	document.getElementById(divName).style.display = 'block';
}

function hideSub(divName, bClear) {
	document.getElementById(divName).style.display = 'none';
	if (bClear != false){
		clearSub(divName);	
	}	
}

function setTussenResult(id, resultElement, content) {
	huisgenotenDone[id] = true;
	resultElement.innerHTML = content;
	validateHuisgenoten();
}

function clearTussenResult(id, resultElement) {
	huisgenotenDone[id] = false;
	resultElement.innerHTML = '&nbsp;';
}

function validateHuisgenoten() {
	// check of alle huisgenoten zijn ingevuld
	var aantalDone = 0;
	for(var i = 1; i <= aantalMeerderjarig; i++) {
		if ( huisgenotenDone[i] == true ) {
			aantalDone++;
		}
	}
	
	if ( aantalDone == aantalMeerderjarig ) {
		var t = -1;
		var aantalGevonden = 0;
		var aMogelijkeTPs = new Array();
		for(var i = 1; i <= aantalMeerderjarig; i++) {
			if ( firstValidation(i) == true ) {
				aMogelijkeTPs[aantalGevonden] = i;
				t = i;
				aantalGevonden++;
			}
		}
	
		// exact 1
		if ( aantalGevonden == 1 ) {
			document.getElementById("huisgenootTussenResultaat" + t).innerHTML = document.getElementById("divTussenResult3").innerHTML;	
			document.getElementById("huisgenootNummer").innerHTML = t;
			doInterface('Meerderjarig','divResultEenHuisgenootToeslagPartner');
		}	else if ( aantalGevonden > 1 )	{	// minstens 2
			for(var i = 0; i < aMogelijkeTPs.length; i++) {
				if (document.getElementById("huisgenootTussenResultaat" + aMogelijkeTPs[i]).innerHTML != '' && document.getElementById("huisgenootTussenResultaat" + aMogelijkeTPs[i]).innerHTML == document.getElementById("divTussenResult3").innerHTML){
					document.getElementById("huisgenootTussenResultaat" + aMogelijkeTPs[i]).innerHTML = document.getElementById("divTussenResult2").innerHTML;	
				}
			}
		
			doInterface('Meerderjarig','divResultHuisgenootToeslagPartner');
			
		} else {
			doInterface('Meerderjarig','divResultGeenToeslagPartner');
		}
	}
}

function vulSpan(){
	//Toelichting Partner
	var sHTML = "";
	if (Tsys == "oud-huidig") sHTML = '<a href="javascript://" onclick="NieuwVenster(\'/particulier/toeslagpartner/\',\'ih_link\')">Toeslagpartner</a>.'
	else if (Tsys == "oud-nts") sHTML = '<a href="javascript://" onclick="NieuwVenster(\'http://la2006-o.belastingdienst.nl/tiny/08030_004\',\'ih_link\',\'TOE\')">Partner</a>.'
	else if (Tsys == "nieuw-huidig") sHTML = '<a href="javascript://" onclick="NieuwVenster(\'http://www-o.belastingdienst.nl/wps/wcm/connect/bldcontentnl/belastingdienst/prive/toeslagen/toeslagpartner/\',\'ih_link\')">Toeslagpartner</a>.'
	else if (Tsys == "nieuw-nts") sHTML = '<a href="javascript://" onclick="NieuwVenster(\'http://www-o.belastingdienst.nl/wps/wcm/connect/bldcontentnl/belastingdienst/prive/toeslagen/informatie_over_toeslagen/hoe_werken_toeslagen/hoogte_van_mijn_toeslag/partner/\',\'ih_link\')">Partner</a>.'
	document.getElementById("leesmeerHelpPartner").innerHTML = sHTML;
	
	//Eind conclusie 9: Meerdere huisgenoten
	var resTxt = "<h2>Er zijn meerdere huisgenoten die uw toeslagpartner kunnen zijn.</h2>";
	var resTxtExtra ="";
	if ( Tsys=="oud-huidig" || Tsys=="nieuw-huidig" || (strPeriode < 2012 && Tsys=="oud-nts") || (strPeriode < 2012 && Tsys=="nieuw-nts") )
	{
		resTxtExtra = "<p><strong>Hierboven staat bij iedere huisgenoot die u hebt opgegeven, of hij uw toeslagpartner kan zijn. U kunt zelf kiezen wie van deze huisgenoten u als toeslagpartner opgeeft.</strong></p>";
	}
	else if ( (strPeriode >= 2012 && Tsys=="oud-nts") || (strPeriode >= 2012 && Tsys=="nieuw-nts")  ) 
	{
		resTxtExtra = "<p><strong>Hierboven staat bij iedere huisgenoot die u hebt opgegeven, of hij uw toeslagpartner kan zijn. Als u toeslag aanvraagt of wijzigt en geen toeslagpartner invult, bellen wij u op om te vragen welke huisgenoot u als toeslagpartner kiest.</strong></p>";
	}
	document.getElementById("resultHuisgenootToeslagPartnerTxt").innerHTML = resTxt;
	document.getElementById("resultHuisgenootToeslagPartnerTxtExtra").innerHTML = resTxtExtra;
	
	document.getElementById("txtJaar_1").innerHTML = strPeriode + " ";		
	document.getElementById("txtJaar_2").innerHTML = strPeriode + " ";	
	document.getElementById("txtJaar_3").innerHTML = strPeriode + " ";	
	document.getElementById("txtJaar_4").innerHTML = strPeriode + " ";	
	document.getElementById("txtJaar_5").innerHTML = strPeriode + " ";	
}

function firstValidation(id) {
	if ( document.getElementById("ingeschr" + id + "_ja").checked == true && document.getElementById("huish" + id + "_ja").checked == true &&
	( 
		(document.getElementById("ouders_ja").checked == true  && document.getElementById("naaste" + id + "_nee").checked == true  ) 
	|| 
		( document.getElementById("ouders_nee").checked == true  && document.getElementById("broerzus" + id + "_ja").checked == true)
	||
		( document.getElementById("ouders_nee").checked == true  && document.getElementById("broerzus" + id + "_nee").checked == true && document.getElementById("anderenaaste" + id + "_nee").checked == true)	
	)
	 && document.getElementById("iemandanders" + id + "_nee").checked == true
	) {
		return true;
	} else {
		return false;
	}
}

function doHuisgenootNietIngeschreven(id, antwoord) {
	var res = document.getElementById("huisgenootTussenResultaat" + id);
		
		hideSub('huish' + id, true);
		hideSub('broerzus' + id, true);
		hideSub('naaste' + id, true);
		hideSub('anderenaaste' + id, true);
		hideSub('iemandanders' + id, true);

	
	if ( antwoord == 'ja' ) {
		clearTussenResult(id, res);
		
		// geef huishouding weer
		clearSub('huish' + id);
		showSub('huish' + id);
	} else {
		
		// gooi inhoud van divTussenResultIngeschreven in resElement
		// let op, divTussenResult1, de 1 heeft hier niks te maken met Huisgenoot 1. Het gaat hier om het eerste tussenresultaat.
		setTussenResult(id, res, document.getElementById("divTussenResult1").innerHTML);
		
		showNextHuisgenoot(id);
	}
}

function doHuisgenootHuishouden(id, antwoord) {
	var res = document.getElementById("huisgenootTussenResultaat" + id);
	hideSub('naaste' + id, true);		
	hideSub('broerzus' + id, true);
	hideSub('anderenaaste' + id, true);
	hideSub('iemandanders' + id, true);
	
	if ( antwoord == 'ja' ) {
		clearTussenResult(id, res);
		
		if (oudersAntwoord == 'ja') {
			hideSub('broerzus' + id, true);	
			clearSub('naaste' + id);
			showSub('naaste' + id, true);
		} else {
			hideSub('naaste' + id, true);		
			clearSub('broerzus' + id);
			showSub('broerzus' + id, true);	
		}
	} else {

		setTussenResult(id, res, document.getElementById("divTussenResult1").innerHTML);
		showNextHuisgenoot(id);
	}
}

function doNaaste(id, antwoord){
var res = document.getElementById("huisgenootTussenResultaat" + id);
	hideSub('broerzus' + id, true);
	hideSub('anderenaaste' + id, true);
	hideSub('iemandanders' + id, true);
	if ( antwoord == 'nee' ) {
		clearTussenResult(id, res);	
		clearSub('iemandanders' + id);
		showSub('iemandanders' + id);
	} else {
		setTussenResult(id, res, document.getElementById("divTussenResult1").innerHTML);
		showNextHuisgenoot(id);
	}
}
function doBroerZus(id, antwoord) {
	var res = document.getElementById("huisgenootTussenResultaat" + id);
	clearTussenResult(id, res);
	if ( antwoord == 'ja' ) {
		hideSub('anderenaaste' + id);
		clearSub('iemandanders' + id);
		showSub('iemandanders' + id);		
	} else {
		hideSub('iemandanders' + id, true);
		clearSub('anderenaaste' + id);
		showSub('anderenaaste' + id);
	}
}

function doAndereNaaste(id, antwoord) {
	var res = document.getElementById("huisgenootTussenResultaat" + id);

	if ( antwoord == 'ja' ) {
		hideSub('iemandanders' + id, true);
		
		setTussenResult(id, res, document.getElementById("divTussenResult1").innerHTML);	
		
		showNextHuisgenoot(id);
	} else {
		clearTussenResult(id, res);
		clearSub('iemandanders' + id);
		showSub('iemandanders' + id);	
	}
}

function doIemandAnders(id, antwoord) {
	var res = document.getElementById("huisgenootTussenResultaat" + id);

	if ( antwoord == 'ja' ) {
		setTussenResult(id, res, document.getElementById("divTussenResult1").innerHTML);
		showNextHuisgenoot(id);
	} else {
		setTussenResult(id, res, document.getElementById("divTussenResult2").innerHTML);	
		showNextHuisgenoot(id);
	}
}

function doInterface(strActVeld, strResult) {
	SluitHelp();
	// Met deze functie wordt de presentatie van de vragen geregeld.
	// Para1: De veldnaam van het actieve veld.
	// Para2: De divnaam van het te tonen result. Geef null in om geen resultaat te tonen én het volgende veld te onderdrukken.
	// Werking: Als para2 NIET leeg is worden alle velden verborgen en gereset welke komen na het actieve veld
	//			Als Para2 leeg is wordt het eerste veld na het actieve veld getoond en gereset. De velden erna worden allen verborgen en gereset.

	//var arrAllFields = document.getElementById("frmBerekening").keuzevraag.getElementsByTagName("input");
	
	//var arrAllFields = document.getElementById("keuzevraag").getElementsByTagName("input")
	
	//bijgewerkt voor ondersteuning van selectboxen
	//LET OP; geen spatie achter komma in de velden parameter
	var arrAllFields = getElementsByTagNames('input,select', document.getElementById("keuzevraag"));
	
	var bActVeld = false;
	for (var i=0; i <= arrAllFields.length-1; i++) {
		if (arrAllFields[i].name == strActVeld || strActVeld == 'init') {
			bActVeld = true;
//			if (strActVeld == 'EigenWoning') {
			i=i+2;

			if (strResult == "") {
				if (i <= arrAllFields.length-1) {
				 	toonDivs("div" + arrAllFields[i].name, "divResult", "fsUitvoer", "");
				 	disableElement(arrAllFields[i]);				 
				 	i=i+2;
				 	disableElement(arrAllFields[i-1]);
				}				
			} else {
				if (strResult != "null"){doUitvoerResult(strResult)};	 
			}
		} 
		if (bActVeld == true) {
 			if ( strActVeld == 'init') {
				i = 2; 
			}
			while (i <= arrAllFields.length-1) {	
				// verberg overbodige divs
				var el = document.getElementById("div" + arrAllFields[i].name);
				if ( el != null ) {
					el.style.display = 'none';
				}
				
				// NIET de inputs van de subblokken disablen
				
				if ( arrAllFields[i].className != "clRadioBtnSubvraag" ) {
					if ( strActVeld != 'Meerderjarig') {
						disableElement(arrAllFields[i]);
					}
				}
				i=i+1;			
			}
		}
	}
	if (document.getElementById("selectMeerderjarig").value == "-1") {
		hideAndClear(1);
		hideAndClear(2);
		hideAndClear(3);
		hideAndClear(4);
		hideAndClear(5);
		hideSub('ouders', true);
	}	
}

function WriteToDebug(txt) {
	document.getElementById("debugTxt").value = document.getElementById("debugTxt").value + "\n" + txt;	
}

function disableElement(element) {
	if ( element.tagName == 'input' || element.tagName == 'INPUT')
	{
		element.checked = false;
		doPrnRadio("prn" + element.name, "");
	}
	else if ( element.tagName == 'select' || element.tagName == 'SELECT' )
	{
		element.selectedIndex = 0;
	}
}

function getElementsByTagNames(list,obj) {
	if (!obj) var obj = document;
	var tagNames = list.split(',');
	var resultArray = new Array();
	for (var i=0;i<tagNames.length;i++) {
		var tags = obj.getElementsByTagName(tagNames[i]);
		for (var j=0;j<tags.length;j++) {
			resultArray.push(tags[j]);
		}
	}
	var testNode = resultArray[0];
	if (!testNode) return [];
	if (testNode.sourceIndex) {
		resultArray.sort(function (a,b) {
				return a.sourceIndex - b.sourceIndex;
		});
	}
	else if (testNode.compareDocumentPosition) {
		resultArray.sort(function (a,b) {
				return 3 - (a.compareDocumentPosition(b) & 6);
		});
	}
	return resultArray;
}

function doUitvoerResult(strWelkeDiv) {
	SluitHelp();
	ZetInputUit("keuzevraag" , true);
	toonDivs("", "divHelp", "", "");
	toonDivs(strWelkeDiv, "divResult", "", "fsUitvoer");
 	toonDivs("divResultaat", "", "", "fsUitvoer", "", "", "");
}

function doHelp_overbodig(strWelkeDiv, obj) {
	toonDivs(strWelkeDiv, "divHelp", "", "", obj);
}

function doOpnieuw(strWelkVeld, strActie) {
	toonDivs("", "divResult", "fsUitvoer", "");
	ZetInputUit("keuzevraag" , false);
	if (strWelkVeld != "") {
		SetFocus(strWelkVeld);
	}
}

function doSwitchPortal(oThis){
	Tsys = oThis.value;
	vulSpan();
}

function doShowResultsDevelop(bSwitch){

	if (bSwitch == true){
		var tmpSub = "divResult";
		var arrAllDIVs = document.getElementsByTagName("div");
		for (var i=0; i <= arrAllDIVs.length - 1; i++) {
			if ( arrAllDIVs[i].id.substr(0, tmpSub.length) == tmpSub ) {
				document.getElementById(arrAllDIVs[i].id).style.visibility = 'visible';
				document.getElementById(arrAllDIVs[i].id).style.display = 'block'		
			}
		}
		toonDivs("divResultaat", "", "", "fsUitvoer", "", "", "");
	} else if (bSwitch == false){
		toonDivs("", "divResult", "fsUitvoer", "", "", "", "");
	}	
}
