var question = new Array()
var ans = new Array()
var questionhistory = new Array()

	function initquestions() {
		// initialise the questions, answers and conclusions
		// You can use html code in the questions and answers

		// SYNTAX for the functions:
		//		add_ans(question_parent, newans, question_next)
		//		add_question(id, newquestion)
		//		add_conclusion(id, title, text)

		// IMPORTANT! each question must have more than one answer (else the javascript code will give errors)
		add_question(1, "Ben je een man of een vrouw?")
		add_ans(1,"a. Man", 40);
		add_ans(1,"b. Vrouw",2);

			add_question(2, "Waarom zoek je een anticonceptiemethode?");
			add_ans(2,"a. ik wil voorlopig niet zwanger worden", 3);
			add_ans(2,"b. ik wil nooit (meer) zwanger worden", 119);
			add_ans(2,"c. ik mag nooit (meer) zwanger worden", 119);
			add_ans(2,"d. ik wil mijn menstruatieklachten verminderen", 15);
			add_ans(2,"e. ik wil mijn overgangsklachten verminderen", 113);
			add_ans(2,"f. ik wil mijn acne verminderen", 28);

				add_question(3, "Hoe vaak wil je met je anticonceptie bezig zijn?");
				add_ans(3,"a. alleen als het nodig is, dus als ik ga vrijen", 4);
				add_ans(3,"b. 1x per dag", 6);
				add_ans(3,"c. 1x per week", 111);
				add_ans(3,"d. 1x per maand", 112);
				add_ans(3,"e. 1x per 3 maanden", 117);
				add_ans(3,"f. 1x in een paar jaar", 14);

					add_question(4, "Ben je al eens bevallen?");
					add_ans(4,"a. nee", 5);
					add_ans(4,"b. ja, minder dan 2 maanden geleden", 120);
					add_ans(4,"c. ja, 2 - 6 maanden geleden", 5);
					add_ans(4,"d. ja, meer dan een half jaar geleden", 5);

						add_question(5, "Wil je een paar uur voordat je gaat vrijen je maatregelen treffen?");
						add_ans(5,"a. ja", 118);
						add_ans(5,"b. nee", 120);

					add_question(6, "Ben je bereid om een aantal dagen per menstruatiecyclus niet te vrijen?");
					add_ans(6,"a. ja", 8);
					add_ans(6,"b. nee", 7);

						add_question(7, "Wil/kun je elke dag precies op dezelfde tijd een pil slikken?");
						add_ans(7,"a. ja", 116);
						add_ans(7,"b. nee", 115);

						add_question(8, "Ben je bereid elke dag lichamelijk onderzoek bij jezelf te doen?");
						add_ans(8,"a. ja", 9);
						add_ans(8,"b. nee", 10);

							add_question(9, "Hoe regelmatig is je menstruatiecyclus?<br /><br />(1 cyclus duurt van de 1<sup>e</sup> dag van je menstruatie tot de 1<sup>e</sup> dag van je volgende menstruatie)");
							add_ans(9,"a. heel regelmatig, maar heel kort: soms duurt een cyclus korter dan 23 dagen", 11);
							add_ans(9,"b. heel regelmatig, maar soms duurt een cyclus langer dan 35 dagen ", 11);
							add_ans(9,"c. vrij regelmatig: een cyclus duurt 23-35 dagen ", 21);

								add_question(11, "Hoeveel lichamelijk onderzoek ben je bereid elke ochtend te doen?");
								add_ans(11,"a. temperatuur opnemen en in een grafiekje tekenen", 104);
								add_ans(11,"b. kenmerken opschrijven van het slijm in de vagina", 105);
								add_ans(11,"c. temperatuur opnemen en in een grafiekje tekenen en kenmerken opschrijven van het slijm in de vagina", 110);

								add_question(21, "Hoeveel lichamelijk onderzoek ben je bereid elke ochtend te doen?");
								add_ans(21,"a. temperatuur opnemen en in een grafiekje tekenen", 104);
								add_ans(21,"b. kenmerken opschrijven van het slijm in de vagina", 105);
								add_ans(21,"c. temperatuur opnemen en in een grafiekje tekenen en kenmerken opschrijven van het slijm in de vagina", 110);
								add_ans(21,"d. microcomputer aanzetten en urinetest doen", 108);

							add_question(10, "Hoe regelmatig is je menstruatiecyclus?<br /><br />(1 cyclus duurt van de 1<sup>e</sup> dag van je menstruatie tot de 1<sup>e</sup> dag van je volgende menstruatie)");
							add_ans(10,"a. heel regelmatig, maar heel kort: soms duurt een cyclus korter dan 26 dagen", 22);
							add_ans(10,"b. heel regelmatig, maar soms duurt een cyclus langer dan 32 dagen ", 22);
							add_ans(10,"c. vrij regelmatig: een cyclus duurt 26-32 dagen ", 12);

								add_question(22, "Wil je een anticonceptiemethode die afhankelijk is van het borstvoeding geven?");
								add_ans(22,"a. ja", 107);
								add_ans(22,"b. nee", 106);

								add_question(12, "Wil je een anticonceptiemethode die afhankelijk is van het borstvoeding geven?");
								add_ans(12,"a. ja", 107);
								add_ans(12,"b. nee", 13);

									add_question(13, "Wat vind je het belangrijkste bij je anticonceptiemethode?");
									add_ans(13,"a. betrouwbaarheid", 106);
									add_ans(13,"b. gemak", 109);

					add_question(14, "Heb je liever iets in je arm of in je baarmoeder?");
					add_ans(14,"a. bovenarm", 114);
					add_ans(14,"b. baarmoeder", 113);

				add_question(15, "Rook je?");
				add_ans(15,"a. ja", 16);
				add_ans(15,"b. nee", 23);

					add_question(16, "Hoe oud ben je?");
					add_ans(16,"a. Jonger dan 18 jaar", 23);
					add_ans(16,"b. 18 - 35 jaar", 23);
					add_ans(16,"c. 35 - 45 jaar", 24);
					add_ans(16,"d. ouder dan 45 jaar", 24);

						add_question(23, "Hoe vaak wil je met je anticonceptie bezig zijn?");
						add_ans(23,"a. 1x per dag", 7);
						add_ans(23,"b. 1x per maand ", 112);
						add_ans(23,"c. 1x per 3 maanden", 117);
						add_ans(23,"d. 1x per jaar", 113);
 
 							add_question(25, "Wil/kun je elke dag precies op dezelfde tijd een pil slikken?");
							add_ans(25,"a. ja", 116);
							add_ans(25,"b. nee", 115);

						add_question(24, "Hoe vaak wil je met je anticonceptie bezig zijn?");
						add_ans(24,"a. 1x per maand ", 112);
						add_ans(24,"b. 1x per 3 maanden", 117);
						add_ans(24,"c. 1x per jaar", 113);

				add_question(28, "Rook je?");
				add_ans(28,"a. ja", 29);
				add_ans(28,"b. nee", 17);

					add_question(29, "Hoe oud ben je?");
					add_ans(29,"a. Jonger dan 18 jaar", 17);
					add_ans(29,"b. 18 - 35 jaar", 17);
					add_ans(29,"c. 35 - 45 jaar", 117);
					add_ans(29,"d. ouder dan 45 jaar", 117);

						add_question(17, "Wil je elke dag een pil slikken?");
						add_ans(17,"a. ja", 7);
						add_ans(17,"b. nee", 117);

			add_question(40, "Waarom zoek je een anticonceptiemethode?");
			add_ans(40,"a. ik wil niet dat mijn vriendin zwanger wordt", 41);
			add_ans(40,"b. ik wil nooit (meer) kinderen krijgen", 103);

				add_question(41, "Hoe vaak wil je met je anticonceptie bezig zijn?");
				add_ans(41,"a. alleen als het nodig is, dus als ik ga vrijen", 18);
				add_ans(41,"b. 1x in een paar jaar", 101);
				add_ans(41,"c. 1x zodat het daarna nooit meer hoeft", 103);

					add_question(18, "Wil je een betrouwbare of een natuurlijke anticonceptiemethode?");
					add_ans(18,"a. betrouwbaar", 102);
					add_ans(18,"b. natuurlijk", 100);

		// all conclusions

		// Barrière
		add_conclusion(102, "<a href='index.php?p=30' target='_blank'>Condoom</a>", 
		"Het condoom is een dun, rubberen hoesje dat je strak om de penis schuift voordat je gaat vrijen. Bij een zaadlozing komt het sperma in het condoom en niet in de vagina. Op de buitenkant van een condoom zit meestal een dun laagje glijmiddel en op de binnenkant zit zaaddodend middel.");

		add_conclusion(118, "<a href='index.php?p=32' target='_blank'>Pessarium (diafragma)</a>",
		"Het pessarium is een rond kapje dat je over de baarmoederhals in de vagina plaatst voordat je gaat vrijen. Je smeert er zaaddodend middel in en op, waardoor zaadcellen de baarmoeder niet levend kunnen binnenkomen. Het kapje is van rubber of siliconen en heeft in de rand een buigzame plastic of metalen ring, veer of spiraal van 6-10 cm doorsnee. Het pessarium wordt ook wel diafragma of pessarium occlusivum genoemd.");

		add_conclusion(103, "<a href='index.php?p=29' target='_blank'>Sterilisatie van de man</a>", 
		"Een sterilisatie is een kleine, onherroepelijke operatie waarbij de zaadleiders tussen de zaadballen en de prostaat worden afgebonden of doorgeknipt. Zaadcellen kunnen daardoor nooit meer de penis uit komen.");

		add_conclusion(119, "<a href='index.php?p=57' target='_blank'>Sterilisatie van de vrouw</a>",
		"Een sterilisatie is een eenvoudige operatie waarbij de eileiders in de buik worden afgeklemd of doorgeknipt. Er kunnen dan geen eicellen meer door.");

		add_conclusion(120, "<a href='index.php?p=26' target='_blank'>Vrouwencondoom</a>",
		"Het vrouwencondoom is een doorzichtig rubber zakje van 17 cm lang dat je in de vagina plaatst. Het vangt het sperma op, zodat dat niet in de vagina komt.<br />"+
		"Het vrouwencondoom heeft aan de boven- en onderkant een ring. De grote buitenring heeft een doorsnee van 7 cm, de kleine binnenring is ongeveer 3 cm doorsnee.<br />"+
		"Het vrouwencondoom lijkt niet op het mannencondoom: het is twee keer zo dik, breder en langer.");

		// hormonaal
		add_conclusion(111, "<a href='index.php?p=36' target='_blank'>Hormoonpleister</a>",
		"De hormoonpleister plak je ergens op je lichaam, waar hij 1 week lang hormonen afgeeft. Het is een dunne, vierkante, flexibele, huidkleurige pleister van 4,5 bij 4,5 cm.");

		add_conclusion(112, "<a href='index.php?p=37' target='_blank'>Hormoonring</a>",
		"De hormoonring breng je in de vagina. Daar geeft hij 3 weken lang constant een kleine hoeveelheid hormonen af. De ring is buigzaam, doorzichtig en bijna kleurloos. Hij heeft een diameter van 54 mm en een dwarsdoorsnede van 4 mm.");

		add_conclusion(113, "<a href='index.php?p=38' target='_blank'>Hormoonspiraaltje</a>",
		"Het hormoonspiraaltje wordt in de baarmoeder geplaatst en geeft daar 5 jaar lang hormonen af. Het is een klein, plastic, T-vormig voorwerp van +/- 3 x 3 cm. Aan de verticale ‘poot’ zit een staafje dat een beetje hormoon bevat. Onder aan het spiraaltje zitten twee draadjes, die uit de baarmoedermond hangen. Het hormoonspiraaltje wordt ook wel ‘lokale pil’ genoemd, omdat het rechtstreeks in de baarmoeder hormonen afgeeft.");

		add_conclusion(114, "<a href='index.php?p=39' target='_blank'>Hormoonstaafje</a>",
		"Het hormoonstaafje wordt in de bovenarm geplaatst en geeft daar 3 jaar lang hormonen af. Het staafje is zo groot als een lucifer (4 cm lang en 2 mm in doorsnee). Het is dun, enigszins buigzaam en gemaakt van kunststof die niet door het lichaam wordt opgenomen.");

		add_conclusion(101, "<a href='index.php?p=40' target='_blank'>Mannenpil</a>", 
		"De mannenpil is eigenlijk geen pil, maar een klein implantaat. Op dit moment is de mannenpil nog niet op de markt.");

		add_conclusion(115, "<a href='index.php?p=41' target='_blank'>De pil</a>",
		"De anticonceptie-pil is een klein pilletje met meerdere hormonen, dat je elke dag op ongeveer hetzelfde tijdstip moet innemen.");

		add_conclusion(116, "<a href='index.php?p=41' target='_blank'>Minipil</a>",
		"De minipil is een klein pilletje met alleen het hormoon progestageen. Je moet hem elke dag op precies dezelfde tijd innemen. ");

		add_conclusion(117, "<a href='index.php?p=42' target='_blank'>Prikpil</a>",
		"De prikpil is een injectie met hormonen, die je elke 3 maanden bij de huisarts moet halen. De prikpil heeft grote risico's voor je vruchtbaarheid: als je ermee stopt, kan het soms jaren duren voordat je weer vruchtbaar bent.");

		// natuurlijk
		add_conclusion(105, "<a href='index.php?p=47' target='_blank'>Cervixslijmmethode</a>",
		"Je stelt het tijdstip van de eisprong vast op basis van de hoeveelheid en de eigenschappen van het baarmoederhalsslijm in de vagina. Je weet dan wanneer je vruchtbaar bent. Tijdens de vruchtbare dagen heb je geen geslachtsgemeenschap.");

		add_conclusion(100, "<a href='index.php?p=50' target='_blank'>Coïtus interruptus</a>", 
		"Coïtus interruptus is het terugtrekken van de penis uit de vagina voordat de man een zaadlozing krijgt. Daardoor kunnen de zaadcellen een eicel niet bevruchten. Coïtus interruptus betekent letterlijk: onderbroken geslachtsgemeenschap. Deze methode wordt ook wel “voor het zingen de kerk uit” genoemd. ");

		add_conclusion(106, "<a href='index.php?p=48' target='_blank'>Kalendermethode</a>",
		"Je rekent uit wanneer je vruchtbaar bent met behulp van een kalender. Op de kalender geef je aan welke dagen je vruchtbaar bent. In de vruchtbare periode van je cyclus heb je geen geslachtsgemeenschap. ");

		add_conclusion(107, "<a href='index.php?p=45' target='_blank'>Lactatie amenorroe</a>",
		"Je geeft je kind borstvoeding elke keer als het erom vraagt. Daardoor krijg je geen eisprong en kan je niet zwanger worden. Lactatie amenorroe betekent letterlijk ‘geen menstruatie door borstvoeding’.");

		add_conclusion(108, "<a href='index.php?p=44' target='_blank'>Microcomputer</a>",
		"De microcomputer bepaalt wanneer je vruchtbaar bent door middel van urine-teststrips. Tijdens de vruchtbare dagen geeft hij met een rood lampje aan dat je niet moet vrijen.");

		add_conclusion(109, "<a href='index.php?p=49' target='_blank'>Standaard Dagen Methode</a>",
		"Tussen dag 8 en dag 19 van je cyclus ben je waarschijnlijk vruchtbaar en heb je geen geslachtsgemeenschap.");

		add_conclusion(110, "<a href='index.php?p=43' target='_blank'>Symptothermaal</a>",
		"Je bepaalt wanneer je vruchtbaar bent door elke ochtend je temperatuur op te nemen en je baarmoederhals(slijm) te onderzoeken. In de vruchtbare dagen van de cyclus heb je geen geslachtsgemeenschap.");

		add_conclusion(104, "<a href='index.php?p=46' target='_blank'>Temperatuurmethode</a>",
		"Je stelt vast wanneer je eisprong was door elke ochtend je lichaamstemperatuur op te nemen. In de vruchtbare periode (tussen menstruatie en eisprong) heb je geen geslachtsgemeenschap.");

	}

	function start_test() {
		// start the test: load all arrays, and display question 1 on the screen
		initquestions();
		display_remaining_sol(1);
		displayquestion(1);
	}

	function add_question(id, newquestion) {
		// add a question to the list
		question[id] = new Array();
		question[id][0] = id;
		question[id][1] = newquestion;
	}

	function add_ans(question_parent, newans, question_next) {
		// add an answer to the list answers
		// the answer belongs to the question with id question_parent
		// if this answer is choosen, the id of next question of the test is question_next
		var count = ans.length;
		ans[count] = new Array();
		ans[count][0] = question_parent;
		ans[count][1] = newans;
		ans[count][2] = question_next;
	}

	function add_conclusion(id, title, text) {
		// add a conclusion to the list. 
		// the title is saved as a question, and the text as the answer
		add_question(id, title);
		add_ans(id, text, 0)
	}

	function displayquestion(id) {
		// display the question with given id on the screen, with its answers
		newquestion = question[id][1];
		newanswers = "<br />";
		var radiobuttonID = 0;
		for (i=0; i<ans.length; i++) {
			if (ans[i][0]==id) {
				if (ans[i][2]!=0) {
					// add a radiobutton if the link to the next question is not zero
					newanswers+="<span onclick='document.test.r_ans["+radiobuttonID+"].checked = true;viewbuttons();StoreRadioID();display_remaining_sol("+ans[i][2]+");'>";
					newanswers+="<input type=radio value="+ ans[i][2] +" name='r_ans' id='"+ ans[i][2] + ans[i][1] +"' onfocus='viewbuttons();StoreRadioID();'><label for='"+ ans[i][2] + ans[i][1] +"'>";
					newanswers+=ans[i][1];
					newanswers+="</label></span><br />";
					radiobuttonID++;
				} else {
					// if the link to next question is 0 then don't display a radiobutton but only the answer
					// in this case the answer is a conclusion
					newanswers  = "<br /><b>" + newquestion + "</b><br /><br />" + ans[i][1] + "<br />";
					newquestion ="<center><font color='white'>Dan past deze anticonceptiemethode het beste bij jou:</font></center>";
				}
			}
		}
		newanswers += "<br />";
		txt_question.innerHTML = newquestion;
		txt_answers.innerHTML = newanswers;

		radiobuttonID = question[id][2];
		if (String(radiobuttonID).length>0 & String(radiobuttonID).length<=2) {
			// set the selected radiobutton on the last choosen answer for this question
			document.test.r_ans[radiobuttonID].checked = true;
		}

		// add the id of this question to the historylist
		var count = questionhistory.length;
		questionhistory[count] = id;
		viewbuttons();
	}

	function display_remaining_sol(id) {
		// display the remaining solutions from the question with given id
		var res = new Array();				// list the quesions
		var conclusion = new Array();		// list the conclusions
		var index;
		index=0;
		res[index] = id;

		while (index<res.length) {
//			alert (index + " " + res[index]);
			for (i=0; i<ans.length; i++) {

				if (ans[i][0]==res[index]) {
					if (ans[i][2] != 0) {
						res[res.length] = ans[i][2];
					} else {
						// if the next question is zero, then this is an conclusion

						var exists=0;
						for (j=0; j<conclusion.length; j++) {
							if (conclusion[j][0]==ans[i][0]) {exists=1}
						}
						if (exists==0) {
							var count = conclusion.length;
							var qid = ans[i][0];
							conclusion[count] = new Array();
							conclusion[count][0] = ans[i][0];
							conclusion[count][1] = question[qid][1];
						}
					}
				}
			}
			index++;
		}

		var sol_list ="<font size=-2><b>Mogelijkheden:</b><br />";
		for (i=0; i<conclusion.length; i++) {
			sol_list += conclusion[i][1] + "<br />";
		}
		sol_list += "</font>";
		txt_remaining_sol.innerHTML = sol_list;
	}

	function previousquestion() {
		// go to the previous question
		var count = questionhistory.length;
		if (count > 1) {
			count=count-2;
			lastquestion = questionhistory[count];	//get the id of the last question
			questionhistory.length = count;				// delete the last two items of the history
			display_remaining_sol(lastquestion);
			displayquestion(lastquestion);				// last history item will be added again when displaying
		}
	}

	function nextquestion() {
		// go to the next question
		var count = 0;
		if(document.test.r_ans.length) {
		    count = document.test.r_ans.length;
		}
		if (count > 0) {
			// get the id where the current choosen answer is pointing to
			for (j=0; j<count; j++){
				if (document.test.r_ans[j].checked==true) {
					// selected radiobutton is found. Display next question
					newquestion = document.test.r_ans[j].value;
					display_remaining_sol(newquestion);
					displayquestion(newquestion);
					j=count;	// to directly exit this loop
				}
			}
		}
	}

	function StoreRadioID() {
		// store the ID of the current choosen radiobutton

		var count = document.test.r_ans.length;
		if (count > 0) {
			// get the id where the current choosen answer is pointing to
			for (i=0; i<count; i++){
				if (document.test.r_ans[i].checked==true) {
					// selected radiobutton is found. find the current question and store the radiobutton-id
					questionnow = questionhistory[questionhistory.length-1];
					question[questionnow][2] = i;	// store the radiobutton-id of choosen answer in the historyarray
				}
			}
		}
	}

	function viewbuttons() {
		// view, hide, enable, disable buttons on the form 
		// depending on if there are answers and if an answer is choosen

		// enable/disable the button next
		if (document.all.r_ans && document.all.r_ans[0]!=null) {
			// show te button. now check if button must be enabled/disabled
			document.getElementById('next').style.visibility = "visible";
			document.getElementById('next').src = "test/volgende_disabled.gif";

			count = document.test.r_ans.length
			for (i=0;i<count;i++){
				if (document.test.r_ans[i].checked==true) {
					// a selected radiobutton is found. enable the button "next"
					document.getElementById('next').src = "test/volgende.gif";
				}
			}
		} else {
			// don't display the button if there are no radiobuttons
			document.getElementById('next').src = "test/volgende_disabled.gif";
		}

		// enable/disable the button previous
		if (questionhistory.length<=1) {
			document.getElementById('prev').src = "test/vorige_disabled.gif";
		} else {
			document.getElementById('prev').src = "test/vorige.gif";
		}
	}

	function keydown(e) {
		// checks which key is pressed
		var key;
		
		if(window.event) {key = e.keyCode;} // for IE, e.keyCode or window.event.keyCode can be used
		else if(e.which) {key = e.which;}	// netscape

		if (key==37) {			// left arrow pressed
			previousquestion();
		}
		if (key==39) {			// right arrow pressed
			if (document.getElementById('next').src == "test/volgende.gif") {nextquestion();}
		}
		
		if (key==38 | key==40) {	// key up or down pressed
			// select the previous or next question by setting te focus to current selected ans
			if (document.getElementById('next').src == "test/volgende.gif") {
				count = document.test.r_ans.length;
				for (i=0; i<count; i++){
					if (document.test.r_ans[i].checked==true) {document.test.r_ans[i].focus();} // set focus to selected radiobutton
				}
			}
		}		
	}

	function keyup(e) {
		// checks which key is pressed
		var key;
		
		if(window.event) {key = e.keyCode;} // for IE, e.keyCode or window.event.keyCode can be used
		else if(e.which) {key = e.which;}	// netscape

		if (key==38 | key==40) {	// key up or down pressed
			// if there is no answer selected, then select ans[0]
			if (document.getElementById('next').src == "test/volgende.gif") {
				sel= -1;
				count = document.test.r_ans.length;
				for (i=0; i<count; i++){
					if (document.test.r_ans[i].checked==true) {sel=i;}
				}
				if (sel==-1) {
					document.test.r_ans[0].checked=true;
					document.test.r_ans[0].focus();
				}
			}
		}
	}

