//  multiple-select und multiple-choice
function evms(q){
        // i18n Feedback Texte
    var feedback0 = document.getElementById("fdbk0" + q).value;
    var feedback1 = document.getElementById("fdbk1" + q).value;
    var feedback2 = document.getElementById("fdbk2" + q).value;
    var feedback3 = document.getElementById("fdbk3" + q).value;
        //Formular
        //  var vscform = document.getElementById("vscexform+q);
        //  es ist keine richtige Frage angekreuzt
    var correct = 0;
    var xcor;
    var vscexfalse = 0;
        //  fuer Textfeld
    var qt = document.getElementById("vscexreaction"+q);
        //  Anzahl aller Antworten
    var totalinput= eval("correctchoices"+q+".length");
        //  eine richtige Antwort einer Frage
    var qc = eval("correctchoices"+q);
        //  Anzahl der richtigen Fragen
    var tq = eval("truequestion"+q).length;
        //  zaehlt so lange hoch wie die Disclaimer vorhanden sind.
        //  Da bei 0 begonnen wird eins mehr als die Anzahl der Disclaimer.
    for(c=0;c<totalinput;c++) {
        var thequestion=document.getElementById("vscexcheckbox"+q+c);
            //  wird benoetigt, um die id der respons zu finden
        var vscId= c+1;
            //  es ist eine Frage angekreuzt
        if (thequestion.checked==true) {
            actualchoices[q] = thequestion.checked;
                //  Responstext wird sichtbar
            document.getElementById("vscexfeedback"+q+c).style.visibility = "visible";
            if (actualchoices[q]==qc[c]) {
                    //  100% durch die Laenge des Arrays der richtigen Fragen, abgerundet
                document.getElementById("vscexcorrect"+q+c).style.visibility="visible";
                document.getElementById("vscexanswer"+q+c).className= "checked-true";
                correct++;
            } else if (actualchoices[q]!=qc[c]) {
                    //  was ist mit gleichvielen falschen und richtigen?
                vscexfalse++;
                document.getElementById("vscexanswer"+q+c).className= "checked-false";
                document.getElementById("vsceximg" + q + c).src = Properties.images + "/false.gif";
                document.getElementById("vscexcorrect" + q + c).style.visibility="visible";
                document.getElementById("vscexfeedback"+q+c).style.visibility = "visible";
            }
        }
            //  Schranke Browser
        switch(navigator.appName) {
                //  IE
        case "Microsoft Internet Explorer":
                // xcor wird benoetigt, da IE eine Ziffer hoeher zu Zuruehlen anf Laengt als N
            xcor = tq - 1 ;
            break;
                //  alle anderen Browser
        default:
            xcor = tq;
        }
            //  wenn correct gleich der Anzahl an richtigen Antworten und keine falsche Antwort angekreuzt ist
        if ((correct==xcor) && (vscexfalse==0)) {
                //  Style wechselt auf green und gibt richtig aus
            qt.className="green";
            qt.firstChild.nodeValue = feedback1;
                //  wenn keine richtige und keine falsche Frage angekreuzt ist bleibt der Style neutral
                //   Hinweistext, dass keine Antwort gegeben wurde
        } else  if ((correct == 0)&&(vscexfalse==0)) {
            qt.className="red";
            qt.firstChild.nodeValue = feedback0;
                //  wenn correct nicht 0 ist aber auch kein vorheriger Fall eintritt bleibt Style neutral
                //  Hinweistext gibt teilweise richtig zurueck
        } else if(correct != 0) {
            qt.className="big";
            qt.firstChild.nodeValue = feedback2;
                //  wenn die falschen Antworten groesser als 0 und kein vorheriger Fall eintritt,
                //  Style wechselt auf red und gibt richtig aus
        } else if(vscexfalse>0) {
            qt.className="red";
            qt.firstChild.nodeValue = feedback3;
        }
    }
}

// Loesung zeigen
function showanswer_ms(q) {
        // i18n Feedback Texte
    var feedback4 = document.getElementById("fdbk4" + q).value;
        //  Hinweistext wird, wenn er nicht neutral ist auf neutral gestellt und es wird darauf hingewiesen,
        //  dass die angezeigte Antwort die richtige waere (weil nicht selbst angekreuzt, anderer Text als bei richtig)
    document.getElementById("vscexreaction"+q).className="big";
    document.getElementById("vscexreaction"+q).firstChild.nodeValue = feedback4;
    var totalinput= eval("correctchoices"+q+".length");
        //  geht ueber die Anzahl der Antwortmoeglichkeiten
    for(c=0;c<totalinput;c++) {
        var thequestion=document.getElementById("vscexcheckbox" +q+c);
            //  wenn die Auswahl zu den richtigen gehoert, wird thequestion fuer diese Auswahl
            //  richtig und der Style checked-true aktiv
        if(thequestion.value=="true") {
            thequestion.checked=true;
            document.getElementById("vscexanswer"+q+c).className= "checked-true";
                //  wenn die Auswahl zu den falschen gehoert, wird thequestion fuer diese Auswahl falsch
                //  und der Style checked-false aktiv
        } else {
            thequestion.checked=false;
            document.getElementById("vscexanswer"+q+c).className= "checked-neutral";
            document.getElementById("vscexcorrect"+q+c).style.visibility="hidden";
        }
    }
}

//  Reset
function reset_ms(q) {
        // i18n Feedback Texte
    var feedback0 = document.getElementById("fdbk0" + q).value;
        //  re wird definiert, da in eval() q uebergeben werden muss
    var re = document.getElementById("vscexform"+q);
        //deaktiviert alle Auswahlen
    re.reset();
    var qc = eval("correctchoices"+q);
        //  setzt Hinweistext zurueck
    document.getElementById("vscexreaction"+q).className="neutral";
    document.getElementById("vscexreaction"+q).firstChild.nodeValue = feedback0;
        //  correctchoices.length ist die Laenge des Arrays aus dem Dokument
    var totalinput = qc.length;
    for(c=0;c<totalinput;c++) {
            //  entfernt die Rahmen
        document.getElementById("vscexanswer"+q+c).className= "checked-neutral";
            //  entfernt den Begruendungstext
        document.getElementById("vscexfeedback"+q+c).style.visibility = "hidden";
        document.getElementById("vscexcorrect"+q+c).style.visibility="hidden";
    }
}

//  cloze
function evc(q, element) {
        // i18n Feedback Texte
    var feedback0 = document.getElementById("fdbk0" + q).value;
    var feedback1 = document.getElementById("fdbk1" + q).value;
    var feedback2 = document.getElementById("fdbk2" + q).value;
    var feedback3 = document.getElementById("fdbk3" + q).value;
        //  fuer Textfeld
    var qt = document.getElementById("vscexreaction"+q);
        //  eine richtige Antwort einer Frage
    var qc = eval("correctchoices"+q);
        //  correctchoices.length ist die L�nge des Arrays aus dem Dokument
    var totalinput = qc.length;
        //  richtig angekreuzte Antworten
    var correct = 0;
        //  richtig angekreuzte Antworten
    var vscexfalse = 0;
        //zaehlt die Felder
    for(c=0;c<totalinput;c++) {
            //  ein bestimmtes Feld
        var vscexfield=document.getElementById("vscexfield"+q+c);
        var thequestion=vscexfield.value;
            //  switch(navigator.appName){
            //  wenn das Feld ein Imputelement ist dann soll der eingetragene Wert zurueckgegeben werden, ....
        if ((vscexfield == "[object HTMLInputElement]")||(vscexfield.type == "text")) {
                //  wenn die die Eingabe bzw. die Auswahl der richtigen Antwort entspricht wird correct
                //  um eins erhoet und das Feld bekommt den Style text-true
            if(thequestion == qc[c]) {
                correct++;
                vscexfield.className= "text-true";
                    //  wenn die Eingabe bzw. die Auswahl nicht der richtigen Antwort entspricht
                    //  wird vscexfalse um eins erhoet und das Feld bekommt den Style text-false
            } else if ((thequestion != qc[c]) && (thequestion!=0)) {
                vscexfalse++;
                vscexfield.className= "text-false";
                vscexfield.value=qc[c] + " " + "(" + thequestion + ")";
            }
        } else {
                //... wenn vscexTehequestion nicht definiert, dann soll die gewaehlte option zurueckgegeben werden
            if(thequestion=="true") {
                correct++;
                vscexfield.className="text-true";
            }  else if (thequestion=="false") {
                vscexfalse++;
                vscexfield.className="text-false";
            }
        }
            //  wenn correct gleich der Anzahl an richtigen Antworten
        if (correct==totalinput) {
                //  Style wechselt auf green
            qt.className="green";
                //  schreibt den Kommentar ins Textfeld
            qt.firstChild.nodeValue = feedback1;
                //  wenn keine richtige und keine falsche Frage angegeben wurde bleibt der Style neutral Hinweistext, dass keine Antwort gegeben wurde
        } else if ((correct == 0) && (vscexfalse==0)) {
            qt.className="red";
            qt.firstChild.nodeValue = feedback0;
                //  wenn correct nicht 0 ist aber auch kein vorheriger Fall eintritt bleibt Style neutral, Hinweistext gibt teilweise richtig zurueck
        } else if(correct != 0) {
            qt.className="big";
            qt.firstChild.nodeValue = feedback2;
                //  wenn die falschen Antworten gr��er als 0 und kein vorheriger Fall eintritt, wechselt der Style auf red und gibt richtig aus
        } else if(vscexfalse>0) {
            qt.className="red";
            qt.firstChild.nodeValue = feedback3;
        }
    }
}

//  Loesung zeigen
function showanswer_c(q) {
        // i18n Feedback Texte
    var feedback4 = document.getElementById("fdbk4" + q).value;
        //  Hinweistext wird, wenn er nicht neutral ist auf neutral gestellt und es wird darauf hingewiesen,
        //  dass die angezeigte Antwort die richtige waere
    var vscexForm;
    var vscexreaction =  document.getElementById("vscexreaction"+q);
    vscexreaction.className="big";
    vscexreaction.firstChild.nodeValue = feedback4;
    var qc = eval("correctchoices"+q);
        //  correctchoices.length ist die Laenge des Arrays aus dem Dokument
    var totalinput = qc.length;
        //  geht �ber die Anzahl der Antwortmoeglichkeiten
    for(c=0;c<totalinput;c++) {
        var qcc= qc[c];
            //  var vscexThequestion= document.getElementById("vscexfield"+c;
        var vscexHtmlInput=document.getElementById("vscexfield"+q+c);
            //  Weiche fuer Browser
            //  wenn es kein Element mit der Id=b[] gibt, dann greife auf das Element mit einer Id=a[] zurueck
        switch(navigator.appName) {
        case "Netscape":
                //  wenn das Feld ein Imputelement ist dann soll der eingetragene Wert zurueckgegeben werden, ....
            if (vscexHtmlInput== "[object HTMLInputElement]") {
                vscexHtmlInput.value =  qc[c];                          //  schreibe die richtige Antwort
                vscexHtmlInput.className= "text-free";                  //  neutralisiert die Farbe

            } else if (vscexHtmlInput== "[object HTMLSelectElement]") { //  in allen anderen Faellen
                    //  ... wenn vscexTehequestion nicht definiert, dann soll die gew�hlte option zurueckgegeben werden
                    //  zeige das richtige Auswahlfeld im Menue
                vscexForm = document.getElementById("vscexextract"+q+qc[c]);
                vscexForm.selected= true;
                vscexHtmlInput.className= "text-free"; //  neutralisiert die Farbe
            }
            break;
                //  alle Browser au�er IE
        default:
                //  wenn das Feld ein Imputelement ist dann soll der richtige Wert zurueckgegeben und das Feld als richtig markiert werden, ....
            if (vscexHtmlInput.type=="text") {
                vscexHtmlInput.value =  qc[c];         //  schreibe die richtige Antwort
                vscexHtmlInput.className= "text-free"; //  markiere das Feld als richtig

            } else {                                   //  in allen anderen Faellen
                vscexForm = document.getElementById("vscexextract"+q+qc[c]); //  zeige das richtige Auswahlfeld im Menue
                vscexForm.selected = true;
                vscexHtmlInput.className= "text-free"; //  markiere das Feld als richtig
            }
        }
    }
}

//  Reset
function reset_c(q) {
        // i18n Feedback Texte
    var feedback0 = document.getElementById("fdbk0" + q).value;
        //  re wird definiert, da in eval() q uebergen werden muss
    var re = document.getElementById("vscexform"+q);
        //  setzt alle Felder und Menues zurueck
    re.reset();
    var qc = eval("correctchoices"+q);
        //  setzt Hinweistext zurueck
    document.getElementById("vscexreaction"+q).className="neutral";
    document.getElementById("vscexreaction"+q).firstChild.nodeValue = feedback0;
        //  correctchoices.length ist die Laenge des Arrays aus dem Dokument
    var totalinput = qc.length;
    for(c=0;c<totalinput;c++) {
            //  entfernt die Rahmen
        document.getElementById("vscexfield"+q+c).className= "text-free";
    }
}

//  instruction
function showanswer_i(q, button) {
    var toggled = document.getElementById('vscexfeedback'+q);
    var text1 = document.getElementById('vscexform'+q+'-text1').firstChild.nodeValue;
    var text2 = document.getElementById('vscexform'+q+'-text2').firstChild.nodeValue;
    toggled.style.display = (toggled.style.display != 'block') ? 'block' : 'none';
    button.value = (button.value != text2) ? text2 : text1;
}
//  Hilfe
//  Variable, die den aktuellen Klick zaehlt
var vscexCurHelp = new Array();
function vscexHelp(q) {
        //  greift Anzahl an Hilfe einer bestimmten Frage ab
    var nH = eval("numHelp"+q);
        //  wenn noch keine Hilfe aufgerufen wurde
    if (vscexCurHelp[q]==undefined) {
        vscexCurHelp[q] = 0;
    }
    var element= document.getElementById("vscexhelp" +q+ vscexCurHelp[q]);
        //  wenn deraktuelle Klick kleiner als die Anzahl der vorhandenen Fragen, wird vscexCurHelp
        //  fuer diese Frage um eins hochgezaehlt und die aktuelle Hilfe wird angezeigt
    if(vscexCurHelp[q] < nH) {
        if (element=="[object HTMLDivElement]"||"[object]") {
            document.getElementById("vscexhelp" +q+ vscexCurHelp[q]).style.display = "inline";
            vscexCurHelp[q]++;
        }
    }
}
