function schakelButtons(element, schakelaar, button, fsswitch) {
//Doel: Met deze functie kunnen alle buttons of één specifike button binnen een fieldset worden verborgen danwel getoond.
//para1: Geef hier de naam van de fieldset op waarbinnen de buttons worden geschakeld
//para2: Geef hier true of false op om de buttons te tonen danwel te verbergen
//para3: Geef de naam op van de specifieke button welke geschakeld moet worden OF
//			 geef te tekst all op waarmee wordt bereikt dat alle buttons binnen de fieldset worden geschakeld.
//			 true = tonen, false is NIET tonen
//para4: Geef hier true of false op om de in para1 vermelde fieldset te verberegen of te tonen.

	var input = document.getElementById(element).getElementsByTagName("input");
	if (schakelaar == true) {
		schakelaar = "visible";
	} else {
		schakelaar = "hidden";
	}
	for(var i = 0; i < input.length; i++) {
		if(input[i].name.substr(0, 4) == "but_") {
			if (button == "all" || input[i].name == button) {
				//alert("Schakel " + input[i].name + " naar " + schakelaar);
				input[i].style.visibility = schakelaar;
			}
		}
	}
	if (fsswitch == false) {
		document.getElementById(element).style.display = 'none';
		document.getElementById("divButtons").style.display = 'none';
	} else {
		document.getElementById(element).style.display = 'block';
		document.getElementById("divButtons").style.display = 'block';
	}
}

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 "but_"
//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 input = document.getElementById(element).getElementsByTagName("input");
	for(var i = 0; i < input.length; i++) {
		if(input[i].name.substr(0, 4) != "but_") {
			input[i].disabled = schakelaar;
		}
	}
}

function ZetSelectUit(element, schakelaar) {
//Doel: Deze functie schakelt alle selectboxes binnen een fieldset in danwel uit.
//Werking: Alle select's	worden geschakeld behalve de tags waarvan de naam van de tag begint met de tekst "but_"
//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 input = document.getElementById(element).getElementsByTagName("select");
	for(var i = 0; i < input.length; i++) {
		input[i].disabled = schakelaar;
	}
}

function toonDivs(strWelkeDiv, tmpSub, tmpFieldsetOff, tmpFieldsetOn, obj, bInlineAan, bOnlyHide) {
// Doel: Met deze functie is het mogelijk om divs te tonen danwel te verbergen.
// Werking: M.b.v van parameters is het mogelijk een div (para1) te tonen én tegelijkertijd:
//						- divs (para2) met een specifieke naam of allen beginnend met een bepaalde tekst te verbergen;
//											- een fieldset (para3) te verbergen;
//											- een fieldset (para3) te tonen.
// 									Als een bepaalde actie niet uitgevoerd hoeft te worden is het voldoende om een lege parameter ("") mee te geven.
// para1: de div welke wordt getoond
// para2: het eerste deel van de div-naam welke worden uitgezet alvorens de bij para1 opgegeven div wordt getoond.
// para3: de naam van de fieldset welke verborgen moet worden
// para4: de naam van de fieldset welke getoond moet worden
// para5: A.d.h.v. dit object kunnen de x en y coordinaten worden bepaald om de help naast de vraag te plaatsen. 
// para6: Met deze instelling is het mogelijk om divs inLine te tonen, True = inline, False = NIET inline
// Para7: Met deze instelling is het mogelijk een veld ALLEEN te verbergen (visibility = 'hidden') 
//				Hiermee blijft de ruimte welke gereserveerd is voor het object gereserveerd. 
//				True = object alleen hidden maken. False = Hidden maken en ruimte vrijgeven.
// voorbeeld: toonDivs("divWoonEnWerk", "divResult", "uitvoer", "");
// hier worden alle div's welke beginnen met divResult inclusief de fieldset uitvoer verborgen waarna divWoonEnWerk wordt getoond
	var arrAllDIVs = document.getElementsByTagName("div");
	var i=0;
	var	tmpYoffset;
	//Eerste alles uitzetten (incl. de bijbehorende Fieldset i.g.v. tonen resultaat)
	for (i=0; i <= arrAllDIVs.length - 1; i++) {
		if ((arrAllDIVs[i].id.substr(0, tmpSub.length) == tmpSub) && tmpSub != "") {
			if (bOnlyHide != true){
				document.getElementById(arrAllDIVs[i].id).style.display = 'none';
			}
			document.getElementById(arrAllDIVs[i].id).style.visibility = 'hidden';
		}
	}
	if (tmpFieldsetOff != "") {
		if (bOnlyHide != true){
			document.getElementById(tmpFieldsetOff).style.display = 'none';
		}
		document.getElementById(tmpFieldsetOff).style.visibility = 'hidden';
	}
	// En nu het juiste weer aanzetten
	if (strWelkeDiv != "") {
		if (tmpFieldsetOn != "") {
			document.getElementById(tmpFieldsetOn).style.visibility = 'visible';
			document.getElementById(tmpFieldsetOn).style.display = 'block';
		}
		document.getElementById(strWelkeDiv).style.visibility = 'visible';
		document.getElementById(strWelkeDiv).style.display = 'block';
		if (bInlineAan==true) {
			document.getElementById(strWelkeDiv).style.visibility = 'visible';
			document.getElementById(strWelkeDiv).style.display = 'inline'
		}
		// Nu de helptekst naast het geklikte ? positioneren...
		if (obj!=undefined) {
			if(navigator.userAgent.indexOf("Firefox")!=-1){
				var topSpace=0;
			} else {
				var topSpace=0;
			}
			tmpYoffset="" + (findPos(obj,2) - topSpace) + "px";
			document.getElementById(strWelkeDiv).style.top = tmpYoffset;}
	}
}

function findPos(obj,iWelke) {
	// Functie geeft de x & y coordinaten terug van een object.
	// para1: het object waarop geklikt is; para 2: 1=alleen x 2=alleen y 3=beiden
	var curleft = 0;
	var curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		}
	}
	if (iWelke == 1) {return [curleft]}
	else if (iWelke==2) {return [curtop]}
	else {return [curleft,curtop];}
}

function AlleDagen() {
	var i=0;
	for (i=1; i <= 31; i++) {
		document.write("<option value='" + i + "'>" + i + "</option>");
	}
}

function AlleMaanden() {
	var i=0;
	for (i=1; i <= 12; i++) {
		document.write("<option value='" + i + "'>" + i + "</option>");
	}
}

function AlleJaren(start, plus ,eind) {
//para1 : Het beginjaar dat bovenaan in de selectiebox wordt getoond
//para2 : Het aantal jaren dat bij het beginjaar moet worden opgeteld 
//para3 : Het laatste jaat dat in de selectiebox moet worden getoond
	var i=0;
	if (start == "now") {
		var temp = new Date();
		start = temp.getFullYear();
		if (plus != "") { 
				start = start + plus;
		}	
	}
	if (eind == "now"){
		var temp = new Date();
		start = temp.getFullYear();
	}
	document.write("<option value='-1'>		</option>");
	for (i=start; i >= eind; i--) {
			document.write("<option value='" + i + "'>" + i + "</option>");
	}
}

function WisWaarden() {
	window.location.reload(false);
}

function SluitHelp() {
	toonDivs('','divHelp','','','','','');
}

function doHelp(strWelkeDiv, strX) {
//para1 : Welke helpDiv moet getoond worden
//para2 : object waarmee de x en y coordinaten worden bepaald om de help naast de vraag te plaatsen. 
	toonDivs(strWelkeDiv, "divHelp", "", "", strX);
}

function NieuwVenster(strURL, strTarget) {
	var strVensterEigenschappen = 'toolbar, location, statusbar, menubar, resizable, scrollbars, width=1024, height=786';
	var objNieuwVenster = window.open(strURL, strTarget, strVensterEigenschappen);
	objNieuwVenster.focus();
	return objNieuwVenster;
}

//function isVisible(sDiv) {
//	if(document.getElementById(sDiv).style.display == "block") {
//		return true;
//	} else {
//		return false;
//	}
//}

function raw_popup(url, target, features) {
	var theWindow = window.open(url, target, features);
	theWindow.focus();
	return theWindow;
}

// BEGIN Functies t.b.v. Module Beslisboom
if (arrAllResults == undefined) var arrAllResults = new Array();

if (arrAllQuestions == undefined){
	// de array waarin de beantwoording van de getoonde vragen wordt bijgehouden.
	var arrAllQuestions = new Array();
	arrAllQuestions[arrAllQuestions.length]= "Vraag1";
}

function doBeslis(strActVeld, strConclusie, strVolgendeVraag, strResult){
// Met deze functie wordt de presentatie van de vragen geregeld voor een beslisboom.
// Para1: De Actuele vraag
// Para2: Te onthouden TussenConclusie.
// Para3: De volgende vraag.
// Para4: Te tonen eindresultaat/conclusie. 

	var arrAllFields = document.getElementById("fsInvoer1").getElementsByTagName("input")

	toonDivs("", "divResult", "fsUitvoer", "");
	if (strActVeld != arrAllQuestions[arrAllQuestions.length-1]){
	// gebruiker klikt op iets anders dan de volgende vraag
		var bStop = false;						 
		for (var i = arrAllQuestions.length-1 ; i>0 && bStop == false; i--) {
			if (arrAllQuestions[i] != strActVeld) {
				if (isRadio(arrAllFields, arrAllQuestions[i]) == 'radio'){
					eval("document.frmBerekening." + arrAllQuestions[i] + "[0].checked = false");
					eval("document.frmBerekening." + arrAllQuestions[i] + "[1].checked = false");
//					document.getElementById("prn" + arrAllQuestions[i]).innerHTML = "" ;
					doPrnRadio("prn" + arrAllQuestions[i], "");
				}
				document.getElementById("div" + arrAllQuestions[i] ).style.display = 'none';
				arrAllQuestions.pop();
				arrAllResults.pop();
			} else {
				bStop = true;
				if (arrAllResults.length > (arrAllQuestions.length - 1)) {
			 	 	arrAllResults.pop();
				}
			}
		}
	}
	// tonen van de volgende volgende vraag
	if (strVolgendeVraag != "" || ( strVolgendeVraag == "" && strActVeld == arrAllQuestions[arrAllQuestions.length-1])) {
		if (arrAllResults.length == arrAllQuestions.length &&	strActVeld == arrAllQuestions[arrAllQuestions.length-1]) {
			arrAllResults[arrAllResults.length-1]= strConclusie;
		} else {
			arrAllResults[arrAllResults.length]= strConclusie;
		}	
 		if (strVolgendeVraag != "") {
			arrAllQuestions[arrAllQuestions.length]= strVolgendeVraag;
			toonDivs("div" + strVolgendeVraag, "divResult", "", "");
		}
	}
	if (strResult != "") {
		doUitvoerResult(strResult, arrAllResults);
	}
	// printwaarde vullen
	var sSpanText = "";
	if (eval("document.frmBerekening." + strActVeld + "[0].checked == true")) {
		sSpanText = eval("document.frmBerekening." + strActVeld + "[0].value");
	} else if (eval("document.frmBerekening." + strActVeld + "[1].checked == true")) {
		sSpanText = eval("document.frmBerekening." + strActVeld + "[1].value");
	}
	doPrnRadio("prn" + strActVeld, sSpanText);
	//document.getElementById("prn" + strActVeld).innerHTML = sSpanText;
}

function doBeslisBoom(oActVraag, strConclusie, strVolgendeVraag, strResult){
// Met deze functie wordt de presentatie van de vragen geregeld voor een beslisboom.
// Para1: De Actuele vraag
// Para2: Te onthouden TussenConclusie.
// Para3: De volgende vraag.
// Para4: Te tonen eindresultaat/conclusie. 

	var arrAllFields = document.getElementById("fsInvoer1").getElementsByTagName("input");

	toonDivs("", "divResult", "fsUitvoer", "");
	if (oActVraag.name != arrAllQuestions[arrAllQuestions.length-1]){
	// gebruiker klikt op iets anders dan de volgende vraag
		var bStop = false;						 
		for (var i = arrAllQuestions.length-1 ; i>0 && bStop == false; i--) {
			if (arrAllQuestions[i] != oActVraag.name) {
				if (isRadio(arrAllFields, arrAllQuestions[i]) == 'radio'){
					document.getElementById(arrAllQuestions[i] + "True").checked = false;
					document.getElementById(arrAllQuestions[i] + "False").checked = false;
					doPrnRadio("prn" + arrAllQuestions[i], "");
				}
				document.getElementById("div" + arrAllQuestions[i] ).style.display = 'none';
				arrAllQuestions.pop();
				arrAllResults.pop();
			} else {
				bStop = true;
				if (arrAllResults.length > (arrAllQuestions.length - 1)) {
			 	 	arrAllResults.pop();
				}
			}
		}
	}
	// tonen van de volgende volgende vraag
	if (strVolgendeVraag != "" || ( strVolgendeVraag == "" && oActVraag.name == arrAllQuestions[arrAllQuestions.length-1])) {
		if (arrAllResults.length == arrAllQuestions.length &&	oActVraag.name == arrAllQuestions[arrAllQuestions.length-1]) {
			arrAllResults[arrAllResults.length-1]= strConclusie;
		} else {
			arrAllResults[arrAllResults.length]= strConclusie;
		}	
 		if (strVolgendeVraag != "") {
			arrAllQuestions[arrAllQuestions.length]= strVolgendeVraag;
			toonDivs("div" + strVolgendeVraag, "divResult", "", "");
		}
	}
	if (strResult != "") {
		doUitvoerResult(strResult, arrAllResults);
	}
	// printwaarde vullen
	doPrnRadio("prn" + oActVraag.name, oActVraag.value);
}

function doPrnRadio(id, sSpanText){
	try {
		document.getElementById(id).innerHTML = sSpanText; 
	} catch(err){
		return;
	}
}
	
function isRadio(arrVelden, strVeld) {
// Deze functie behoort bij function doBeslis.
// De functie geeft het type terug van een inputveld waarbij het exacte id van het input-veld niet bekend is.
// Para1: De array met alle id's van de in het document aanwezige input-velden
// Para2: Het eerste unieke deel van de te onderzoeken vraag
	for (var i = arrVelden.length-1 ; i>0; i--) {
		if (arrVelden[i].id.substr(0 ,strVeld.length) == strVeld) {
		 	return(document.getElementById(arrVelden[i].id).type)
		}
	}
 	return('');
}
// EINDE Functies t.b.v. Module Beslisboom

// Nieuw - oktober 2007
function GenereerListBox(iVan, iTot, iStep, sVanTotTekst, sDefaultValue, sDefaultTekst) {
	if (sDefaultValue != "" && sDefaultTekst != "") {
		document.write("<option value=\"" + sDefaultValue + "\">" + sDefaultTekst + "</option>");
	}
	if (iStep > 0) {
		for(i=iVan; i<=iTot; i+=iStep) {
			document.write("<option value=\"" + i + "\">" + i + sVanTotTekst + "</option>");
		}
	} else if (iStep < 0) {
		for (i=iVan; i>=iTot; i+=iStep) {
			document.write("<option value=\"" + i + "\">" + i + sVanTotTekst + "</option>");
		}
	}
}

function isVisible(sDiv) {
	return document.getElementById(sDiv).style.display == "block";	// true of false
}

function isChecked(sDiv) {
	return document.getElementById(sDiv).checked;	// true of false
}

function GetCurrentFieldSet(sDiv,iProtect) {
	// iProtect: max. 20 loops
	oDiv = sDiv.parentNode;
	while(oDiv.id.substring(0,2) != "fs" && iProtect < 20) {
		return GetCurrentFieldSet(oDiv,iProtect+1);
	}
	return oDiv.id;
}

function ConvertToObject(elem) {
	return (typeof(sDiv) != "object") ? document.getElementById(elem) : sDiv;
}

function HideAndShowDiv(sDiv) {
	// IE bug: legends van fieldsets staan door elkaar heen wanneer er een div tussen 2 fieldsets wordt geplaatst
	if (isVisible(sDiv)) {
		document.getElementById(sDiv).style.display = 'none';
		document.getElementById(sDiv).style.display = 'block';
	}
}
