//  Copyright 2005 Quixpace BVBA - http://www.quixpace.com
//  This script may not be used without prior permission.

var kwisvragen = new Array();
var kwisresultaten = new Object();
var huidige_vraag = -1;
var score = 0;
window.onload = kwisLaden;

function kwisLaden()
{
    if (kwis_xml == '') { return; }
    var httpreq;
    if (typeof(XMLHttpRequest) != 'undefined')
        httpreq = new XMLHttpRequest();
    else if (typeof(ActiveXObject) != 'undefined')
        httpreq = new ActiveXObject('Microsoft.XMLHTTP');
    if (httpreq)
    {
        httpreq.open('GET', kwis_xml, true);
        httpreq.onreadystatechange = function () {
            if (httpreq.readyState == 4 && httpreq.status == 200)
                parseKwis(httpreq.responseXML);
        }
        httpreq.send(null);
    }
}

function parseKwis(xml)
{
    var root = null;
    for (var x=0 ; x < xml.childNodes.length ; x++)
        if (xml.childNodes.item(x).nodeName == 'inverde-kwis')
            root = xml.childNodes.item(x);
    for (var x=0 ; x < root.childNodes.length; x++)
    {
        node = root.childNodes.item(x);
        if (node.nodeName == 'vragen')
        {
            for (var y=0 ; y < node.childNodes.length; y++)
            {
                vraag = node.childNodes.item(y);
                if (vraag.nodeName == 'vraag')
                {
                    var titel = '';
                    var beeld = '';
                    var duiding = '';
                    var antwoorden = new Array();
                    var correct_antwoord = -1;
                    for (var z=0 ; z < vraag.childNodes.length; z++)
                    {
                        el = vraag.childNodes.item(z);
                        if (el.nodeName == 'titel')
                            titel = el.firstChild.nodeValue;
                        if (el.nodeName == 'beeld')
                            beeld = el.attributes.getNamedItem('file').nodeValue;
                        if (el.nodeName == 'duiding')
                            duiding = el.firstChild.nodeValue;
                        else if (el.nodeName == 'antwoorden')
                        {
                            for (var aa=0 ; aa < el.childNodes.length; aa++)
                            {
                                antwoord = el.childNodes.item(aa);
                                if (antwoord.nodeName == 'antwoord')
                                {
                                    antwoorden[antwoorden.length] = antwoord.firstChild.nodeValue;
                                    for (var ab=0 ; ab < antwoord.childNodes.length; ab++)
                                        if (antwoord.childNodes.item(ab).nodeName == 'correct')
                                            correct_antwoord = antwoorden.length-1;
                                }
                            }
                        }
                    }
                    if (correct_antwoord != -1)
                    {
                        var tmp = new Array(3);
                        tmp.titel = titel;
                        tmp.beeld = beeld;
                        tmp.duiding = duiding;
                        tmp.antwoorden = antwoorden;
                        tmp.correct_antwoord = correct_antwoord;
                        kwisvragen[kwisvragen.length] = tmp;
                    }
                }
            }
        }
        else if (node.nodeName == 'eindscores')
        {
            for (var y=0 ; y < node.childNodes.length; y++)
            {
                var scorenode = node.childNodes.item(y);
                if(scorenode.nodeName == 'score')
                {
                    var limiet = scorenode.attributes.getNamedItem('limiet').nodeValue;
                    kwisresultaten['l'+limiet] = scorenode.firstChild.nodeValue;
                }
            }
        }
    }
    if (kwisvragen.length > 0)
        laadVraag(0);
}

function laadVraag(x)
{
    if ( x >= 0 && x < kwisvragen.length )
    {
        huidige_vraag = x;
        vraag = kwisvragen[x];
        document.getElementById('kwis-vraag').innerHTML=vraag.titel;
        if ( vraag.beeld != '' )
        {
            var beeldDiv = document.createElement('DIV');
            beeldDiv.style.margin = '5px';
            var beeld = document.createElement('IMG');
            beeld.src = vraag.beeld;
            beeldDiv.appendChild(beeld);
            document.getElementById('kwis-vraag').appendChild(beeldDiv);
        }
        laadAntwoorden(true);
        if (x == (kwisvragen.length-1))
        {
            var vv = getElementsByClass('kwis-volgende-vraag');
            for (var y=0 ; y<vv.length ; y++)
                vv[y].value = 'Toon resultaat';
        }
    }
}

function laadAntwoorden(clickable)
{
    aw = document.getElementById('kwis-antwoorden');
    while ( aw.hasChildNodes() )
        aw.removeChild(aw.firstChild);
    for ( var x=0 ; x<vraag.antwoorden.length ; x++)
    {
        var antwoord = vraag.antwoorden[x];
        var li = document.createElement('li');
        if (clickable)
        {
            var anchor = document.createElement('a');
            anchor.href = 'javascript:valideerAntwoord('+x+');';
            anchor.appendChild(document.createTextNode(antwoord));
            li.appendChild(anchor);
        }
        else
        {
            li.appendChild(document.createTextNode(antwoord));
        }
        aw.appendChild(li);
    }
}

function valideerAntwoord(antwoord)
{
    if (huidige_vraag >= 0 && huidige_vraag < kwisvragen.length)
    {
        var correct = (antwoord == kwisvragen[huidige_vraag].correct_antwoord);
        if (correct)
        {
            score++;
            document.getElementById('kwis-goed-antwoord').style.display = 'block';
            document.getElementById('kwis-fout-antwoord').style.display = 'none';
        }
        else
        {
            document.getElementById('kwis-goed-antwoord').style.display = 'none';
            document.getElementById('kwis-fout-antwoord').style.display = 'block';
            
            tmp = document.getElementById('kwis-correct-antwoord');
            while (tmp.hasChildNodes())
                tmp.removeChild(tmp.firstChild);
            correct_antwoord_tekst = kwisvragen[huidige_vraag].antwoorden[kwisvragen[huidige_vraag].correct_antwoord];
            tmp.appendChild(document.createTextNode(correct_antwoord_tekst));
        }
        
        var duiding = kwisvragen[huidige_vraag].duiding;
        if ( !duiding )
            duiding = '';
        if (document.getElementById('kwis-goed-antwoord-duiding'))
            document.getElementById('kwis-goed-antwoord-duiding').innerText = duiding;
        if ( document.getElementById('kwis-fout-antwoord-duiding') )
            document.getElementById('kwis-fout-antwoord-duiding').innerText = duiding;

        var scores = getElementsByClass('kwis-score');
        for ( var x=0 ; x<scores.length ; x++ )
        {
            var el = scores[x];
            while ( el.hasChildNodes() )
                el.removeChild(el.firstChild);
            el.appendChild(document.createTextNode(score));
        }
        var vraag_tellers = getElementsByClass('kwis-vraag-teller');
        for ( var x=0 ; x<vraag_tellers.length ; x++ )
        {
            var el = vraag_tellers[x];
            while ( el.hasChildNodes() )
                el.removeChild(el.firstChild);
            el.appendChild(document.createTextNode(huidige_vraag+1));
        }
        laadAntwoorden(false);
    }
}

function volgendeVraag()
{
    document.getElementById('kwis-goed-antwoord').style.display = 'none';
    document.getElementById('kwis-fout-antwoord').style.display = 'none';
    if ( (huidige_vraag + 1) < kwisvragen.length )
    {
        laadVraag(huidige_vraag + 1);
    }
    else
    {
        eindscore = (score / kwisvragen.length)*100;
        eindscoretekst = '';
        for (var r in kwisresultaten)
        {
            var v = parseInt(r.replace('l', ''));
            if (eindscore <= v)
            {
                eindscoretekst = kwisresultaten[r];
                break;
            }
        }
        var el = document.getElementById('kwis-score-tekst');
        while ( el.hasChildNodes() )
            el.removeChild(el.firstChild);
        el.innerHTML = eindscoretekst;

        document.getElementById('kwis-resultaat').style.display='block';
        document.getElementById('kwis-vragen').style.display='none';
    }
}

function getElementsByClass(c)
{
    var retArr = Array();
    var tmp = document.getElementsByTagName("*");
    for (var i=0 ; i<tmp.length ; i++)
        if (tmp[i].className == c)
            retArr[retArr.length] = tmp[i];
    return retArr;
}

