/*

Het luisteren naar de toets kan met e.keyCode, dat door IExplore, FireFox èn Opera gekend wordt.
Onderscheid tussen linker- en rechterfunctietoetsen maakt zo te zien slechts IExplore,
dus we kunnen de gebruiker beter twee (series?) toetsen laten kiezen op het hoofdscherm en daarmee vergelijken.
Misschien laten intypen en de keyCode onthouden.

*/

fop = ""
function desc(obj) {
    var o = "Events:\n"; var p = "Properties:\n"; var f = "Functions:\n";
    for (var naam in obj) {
           waarde = obj[naam]
        waarde = (""+waarde).substring(0, 50).replace(/\n/g, ' ')
        t = "\n" + naam + " = " + waarde
        if (/^on/.test(naam))   o = o + t;  else
        if (/^function /.test(waarde)) f = f + t
        else    p = p + t}
    fop = o + "\n" + p + "\n" + f
    alert(o); alert(p); alert(f)
}

L1 = [["Vrouw", "Meisje", "Moeder", "Dochter", "Zus", "Tante", "Oma", "Dame", "Meid", "Juffrouw"],
      ["Man", "Jongen", "Vader", "Zoon", "Broer", "Oom", "Opa", "Heer", "Kerel", "Vent"]]
L2 = [["Keuken", "Pan", "Lepel", "Fornuis", "Afwas", "Koken", "Afdruiprek", "Magnetron", "Koffie", "Koelkast"],
      ["Schuur", "Hamer", "Zaag", "Nijptang", "Spijker", "Schroef", "Boor", "Schaaf", "Beitel", "Dopsleutel"]]
if (Math.random() < .5) L1.reverse()
if (Math.random() < .5) L2.reverse()
L = L1.concat(L2)  // Nog een reversie naar willekeur?
woord = ""
totaal = new Array(0, 0); start=new Date() // nu..
stap = 0

function zetTekst(elt, tekst) {document.getElementById(elt).childNodes[0].data = tekst}
// Versnellen mogelijk met globale vars: tekst = document.getElementById(elt).childNodes[0], enz.
function ev(e) {return e ? e : window.event}

function stap0() {
  stap += 1
  if (stap > 2) return einde()
  lijst = L[0].concat(L[1],L[2],L[3]) // Later het eerste element weglaten, en dat als titel links en rechts op het scherm zetten.
  doel = ':'+L[0].concat(L[1+stap]).join(':')+':'
  window.focus()
  zetTekst('links', L[0][0] + " of " + L[1+stap][0]) // Ook hier is nog willekeur mogelijk: L[1] eerst, enz.
  zetTekst('tel', "--")
  zetTekst('rechts', L[1][0] + " of " + L[4-stap][0])
  document.onkeydown=stap1
  zetTekst('t1', "Stap " + stap + " van 2.  Sla een toets aan om te beginnen.")
}

function stap2() { // Moet vòòr stap1, anders werkt setTimeout niet (zelfs niet als string!) :-(
  woord = lijst.splice(Math.floor(lijst.length*Math.random()),1)[0] // Een willekeurig element.
  document.onkeydown = stapN // We gaan weer luisteren
  zetTekst('tel', lijst.length.toString())
  zetTekst('t1', woord)
  start = new Date() // noteer de starttijd.
}

function stap1() {
  document.onkeydown = null // Geen ellende met parallelle processen
  if (lijst.length == 0) {return stap0()}
  zetTekst('t1', "")
  window.setTimeout(stap2, 1000+Math.random()*500) // Wacht tussen een halve en een hele seconde.
}

function stapN(e) {
  tijd = new Date() - start // noteer de stoptijd
  e = ev(e)
  // Doe het controle- en rekenwerk hier; return als de verkeerde toets is aangeslagen.
//  if (window.event.shiftLeft == (doel.indexOf(':'+woord+':') == -1)) return false // Verkeerde toets; negeren..
//  desc(e)
//  zetTekst('t2', fop)
  if (e.shiftLeft == (doel.indexOf(':'+woord+':') == -1)) return false // Verkeerde toets; negeren..
  totaal[stap-1] += tijd
  stap1()
}

function einde() {
  zetTekst('links', totaal[0])
  zetTekst('tel', totaal[0]+totaal[1])
  zetTekst('rechts', totaal[1])
  zetTekst('t1', L1[0][0] + " en " + L2[0][0] + "; " + L1[1][0] + " en " + L2[1][0] + ": " + totaal[1]/totaal[0])
  zetTekst('t2',    L1[1][0] + " en " + L2[0][0] + "; " + L1[0][0] + " en " + L2[1][0] + ": " + totaal[0]/totaal[1])
  zetTekst('t3',    "(Scores groter dan 1 duiden op een vooroordeel.)")
}

window.onload = stap0
