MediaWiki:Skin/Suchttest.js

/********************************************************************************
 * Hinweis: irgendwie funktioniert's (sollte es zumindest)			*
 * aber fragt mich bloß nicht, wie ...					*
 * Vermutlich ist das hier alles total umständlich und alles 		*
 * andere als übliches javascript. Aber ich bin ja noch am 		*
 * lernen.									*
 * --[[Kamel:WiMu|WiMu 12:13, 16. Apr. 2009 (CEST) 			*
 * --[[Kamel:WiMu|WiMu 12:13, 16. Apr. 2009 (CEST) 			*
 * --[[Kamel:WiMu|WiMu 12:13, 16. Apr. 2009 (CEST) 			*

window.onload = function {	suchtpotential = 0 optionvalue   = 0 notes         = 0 if(document.getElementById("suchttest")) {		makeoptions ; prepare (document.getElementById("numberofcategories").innerHTML); }	};

function makeoptions { optionsouter = document.getElementById("suchttest").getElementsByTagName("li"); optionsinner = document.getElementById("suchttest").getElementsByTagName("div"); numberofoptions = 0; for (var i = 0; i < optionsinner.length; i++) {		if (optionsinner[i].className == "testoption") {			numberofoptions++ }		}	for (var i = 0; i < numberofoptions; i++) {		for (var j = 0; j < optionsinner[i].getElementsByTagName("span").length; j++) {			switch (optionsinner[i].getElementsByTagName("span")[j].className.split("/")[0]) {				case "testoptionvalueinner": optionvalue = optionsinner[i].getElementsByTagName("span")[j].innerHTML; break; case "checkbox": optionsinner[i].getElementsByTagName("span")[j].innerHTML = ''; break; case "radio": optionsinner[i].getElementsByTagName("span")[j].innerHTML = ''; break; case "testoptionvalueouter": optionsinner[i].getElementsByTagName("span")[j].style.display = "none"; break; case "ref": notes++; document.getElementById("note" + notes).style.display = "none"; break; default: break; }			}		}	suboptions = document.getElementById("suchttest").getElementsByTagName("ul"); numberofsuboptions = suboptions.length; for (var i = 0; i < numberofsuboptions; i++) {		suboptions[i].style.display = "none" };	document.getElementById("auswertungsknopp").innerHTML = ' '; };

function auswertung (numberofcategories) { notes = 0 clicked = 0 restorenotes = document.getElementById("suchttest").getElementsByTagName("span"); for (var i = 0; i < restorenotes.length; i++) {		if (restorenotes[i].className == "refnumber") {			notes++; restorenotes[i].innerHTML = notes; }		}	notes = 0 for (var i = 0; i < numberofoptions; i++) {		if (document.getElementsByTagName("input")[i].checked == true) {			clicked++ suchtpotential = suchtpotential + Number(document.getElementsByTagName("input")[i].value); for (var j = 0; j < optionsinner[i].getElementsByTagName("span").length; j++) {				if (optionsinner[i].getElementsByTagName("span")[j].className == "testoptionvalueouter") {					optionsinner[i].getElementsByTagName("span")[j].style.display = "block"; }				if (optionsinner[i].getElementsByTagName("span")[j].className == "refnumber") {					notenumber = document.getElementById("note" + optionsinner[i].getElementsByTagName("span")[j].innerHTML); notenumber.style.display = "block"; notes++ optionsinner[i].getElementsByTagName("span")[j].innerHTML = notes; for (var k = 0; k < notenumber.getElementsByTagName("span").length; k++) {						if (notenumber.getElementsByTagName("span")[k].className == "notenumber") {							notenumber.getElementsByTagName("span")[k].innerHTML = notes; }						}					}				}			} else { for (var j = 0; j < optionsinner[i].getElementsByTagName("span").length; j++) {				if (optionsinner[i].getElementsByTagName("span")[j].className == "testoptionvalueouter") {					optionsinner[i].getElementsByTagName("span")[j].style.display = "none"; }				if (optionsinner[i].getElementsByTagName("span")[j].className == "refnumber") {					document.getElementById("note" + optionsinner[i].getElementsByTagName("span")[j].innerHTML).style.display = "none"; }				}			}		}	if(clicked == numberofoptions) {		document.getElementById("defaulttext").innerHTML = document.getElementById("allesanklicktext").innerHTML; document.getElementById("suchtomat").style.backgroundImage = 'url(../images/f/f2/WiMu%27s_Tapete.jpg)' document.getElementById("suchtomat").style.height = '100%' document.getElementById("result").innerHTML = "(verrat' ich nicht!)" } else { document.getElementById("suchtomat").style.backgroundImage = 'none'; var maxpoints = document.getElementById("maxpoints").innerHTML; var percent  = Math.round((suchtpotential / maxpoints) * 100); for (var i = 0; i <= numberofcategories; i++) {			if(suchtpotential >= categories['min' + i] && suchtpotential <= categories['max' + i]) {				document.getElementById("defaulttext").innerHTML = "Du hast " + suchtpotential + " von " + maxpoints + " möglichen Punkten erreicht " + categories['text' + i] + ""; }			}		if(percent >= 0) {						document.getElementById("suchtomat").style.backgroundColor = 'rgb(' + percent + '%,' + (100 - percent) + '%,0%)'; document.getElementById("suchtomat").style.height = 75 + (percent * 1.55) + 'px'; document.getElementById("suchtomat").style.display = "block"; } else { document.getElementById("suchtomat").style.display = "none"; }		document.getElementById("result").innerHTML = '(' + suchtpotential + ' Punkte)' };	suchtpotential = 0; };

function prepare (numberofcategories) { categories = new Array; for (var i = 0; i <= numberofcategories; i++) {		categories['min' + i] = document.getElementById('min' + i).innerHTML; categories['max' + i] = document.getElementById('max' + i).innerHTML; categories['text' + i] = document.getElementById('text' + i).innerHTML; }	document.getElementById("auswertungstext").style.display = "none"; document.getElementById("defaulttext").style.display    = "inline"; };

function checksuboptions(nr) { if (document.getElementsByTagName("input")[nr].checked == true && optionsouter[nr].getElementsByTagName("ul")[0]) {		optionsouter[nr].getElementsByTagName("ul")[0].style.display = "block"; }	if (document.getElementsByTagName("input")[nr].checked == false && optionsouter[nr].getElementsByTagName("ul")[0]) {		suboptions = optionsouter[nr].getElementsByTagName("ul"); numberofsuboptions = suboptions.length; for (var i = 0; i < numberofsuboptions; i++) {			suboptions[i].style.display = "none"; suboptions[i].innerHTML = suboptions[i].innerHTML; }		}	if (document.getElementsByTagName("input")[nr].name != "") {		radioname = document.getElementsByTagName("input")[nr].name; for (var i = 0; i < numberofoptions; i++) {			if(document.getElementsByTagName("input")[i].name == radioname && document.getElementsByTagName("input")[i].checked == false && optionsouter[i].getElementsByTagName("ul")[0]) {				suboptions = optionsouter[i].getElementsByTagName("ul"); numberofsuboptions = suboptions.length; for (var j = 0; j < numberofsuboptions; j++) {					suboptions[j].style.display = "none"; suboptions[j].innerHTML = suboptions[j].innerHTML; }				}			}		}	};