var timer;
var aktFrage    = 0;
var zeitLimit   = 0;
var benotung    = new Array('Schulnote: 6','Schulnote: 5','Schulnote: 5','Schulnote: 5','Schulnote: 5',
                            'Schulnote: 5+','Schulnote: 4-','Schulnote: 4','Schulnote: 4+','Schulnote: 3-',
                            'Schulnote: 3','Schulnote: 3+','Schulnote: 2-','Schulnote: 2','Schulnote: 2+',
                            'Schulnote: 1-','Schulnote: 1','Schulnote: 1+')
var htmlContent = '';
var fragen      = new Array();
var eingaben    = new Array();
var neueSeite;

var head =
         '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"\n\n>' +
         '<html>\n\n' +
         '<head>\n' +
         '  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">\n' +
         '  <title>Multiple-Choice Test</title>\n' +
         '  <link rel="stylesheet" type="text/css" href="multiplechoice.css">\n' +
         '</head>\n\n' +
         '<body>\n'+
         '<table border=0 cellpadding=0 cellspacing=0 width="100%" height="100%"><tr><td align=center valign=middle>'+
         '<table border=0 cellpadding=0 class="fragebogen" cellspacing=0><tr><td align=center valign=middle>';

var foot = '';

// <--  Fragen erzeugen
function question(frage, antworten, loesung, punkte) {
	this.loesung = loesung;
	this.frage = frage;
	this.korrekt = antworten[0];
	this.antworten = antworten;
	this.punkte = punkte;
	return this;
};

function add(frage, antworten, loesung, punkte) {
  fragen[fragen.length] = new question(frage, antworten, loesung, punkte);
};
// -->

// <--  Zeit stoppen
function stoppuhr() {
  if (zeitLimit > 0) {
    zeitLimit--;
    var timer = window.setTimeout("stoppuhr()", 1000);
  } else { // Testende
    bewerten(); return;
  };
  if (neueSeite.document.forms.length > 0) {
    neueSeite.document.zeit.uhr.value = (Math.floor(zeitLimit/(60*60)) % 24) + "h " + (Math.floor(zeitLimit/60) % 60) + "min "+ (zeitLimit%60) + " sek";
  };
};
// -->

// <--  Fragen und Antworten neu mischen
function mixer() {
  for (var i = 0; i < fragen.length; i++) {
    fragen[i].antworten.sort(randomizer);
  };
  fragen.sort(randomizer);
};

function randomizer() {
  return (Math.random() - Math.random());
};
// -->

// <--  Start-Funktion
function start() {
  mixer();
  frage();
  if (zeitLimit > 0) { stoppuhr(); };
};
// -->

// <--  Multiple-Choice Frage erstellen
function frage() {
  if (aktFrage == fragen.length) { bewerten(); return; };
  htmlContent = "";

  htmlContent +=
  '<TABLE HEIGHT="100%" WIDTH="100%"><TR><TD COLSPAN=2 vALIGN="top" ALIGN="CENTER">'+
  '<H2>Frage ' + (aktFrage + 1) + ' von ' + fragen.length + '</H2>' +
  '</TD></TR><TR><TD vALIGN="middle" ALIGN="left">'+
  '<FORM><hr><P class="frage"><B>' + fragen[aktFrage].frage + '</B> ('+fragen[aktFrage].punkte+'&nbsp;Punkte)</P>' +
  '<blockquote><P class="antwort">';

  for (var i=0; i < fragen[aktFrage].antworten.length; i++) {
    htmlContent += String.fromCharCode(i+65)+')&nbsp;<A TITLE="Antwort '+String.fromCharCode(i+65)+')" HREF="javascript:parent.eingaben[parent.eingaben.length] = \''+fragen[aktFrage].antworten[i]+'\'; parent.frage()">' + fragen[aktFrage].antworten[i] + '</A><BR>'
  };
  htmlContent += '</P></blockquote></blockquote></FORM>';

  // <--  Uhr
  if (zeitLimit > 0) {
    htmlContent +='</TD><TD><FORM NAME="zeit">'+
    '<P>&nbsp;<P>&nbsp;<BR><input title="Verbleibende Zeit" class=zeit" text-align: center" type="text" name="uhr" value="'+(Math.floor(zeitLimit/(60*60)) % 24) + "h " + (Math.floor(zeitLimit/60) % 60) + "min "+ (zeitLimit%60) + " sek"+'" size=15>'+
    '</TD></TR></TABLE>'+
    '</FORM>';
  };

  htmlContent += '</TR></TD></TABLE>';

  // -->

  aktFrage++;

  neueSeite = window.open('', 'main');
  neueSeite.document.writeln(head);
  neueSeite.document.writeln(htmlContent);
  neueSeite.document.writeln(foot);
  neueSeite.document.close();
};
// -->

// <--  Bewertung erstellen
function bewerten() {
  var score = 0; var richtigeAntworten = 0; var gesamtScore = 0;

  for (var i = 0; i < eingaben.length; i++) {
    gesamtScore += fragen[i].punkte;
    score   += (eingaben[i] == fragen[i].korrekt) ? fragen[i].punkte : 0;
    richtigeAntworten += (eingaben[i] == fragen[i].korrekt) ? 1 : 0;
  };

  if (gesamtScore>0) {
   var j = Math.floor((score/gesamtScore)*(benotung.length-1));
   var prozent = Math.floor((score/gesamtScore)*10);
  } else {
   var j = Math.floor((richtigeAntworten/fragen.length)*(benotung.length-1));
   var prozent = Math.floor((richtigeAntworten/fragen.length)*10);
  }

  ergebnisSeite(benotung[j], richtigeAntworten, score, prozent);
};
// -->

// <--  Bewertung erstellen
function ergebnisSeite(note, richtigeAntworten, score, prozent) {

  htmlContent =
  '<span class="ergebnistitel">Sie haben ' + richtigeAntworten + ' von ' + fragen.length + ' Fragen korrekt beantwortet</span>\n<br>' +
  '<span class="note">'+note+'</span>\n<br>'+
  '<span class="punktestand">Ihr Punktestand: '+score+' ('+(prozent*10)+'%)</span>\n<br><br>';

  htmlContent += '<span class="ergebnistitel">Ihre Lösungen</span>';

  for (var i = 0; i < fragen.length; i++) {
    htmlContent += '\n<hr><p class="frage"><B>Frage ' + (i + 1) + ':</B> ' + fragen[i].frage + '</P><P class="KOMMENTAR">\n\r';
    for (var j=0; j < fragen[i].antworten.length; j++) {
      if (fragen[i].antworten[j] ==  fragen[i].korrekt) {
        var korrekt = String.fromCharCode(j+97);
        htmlContent += '<span style="color: #00AA00">';
      };
      htmlContent += String.fromCharCode(j+65)+'. ' + fragen[i].antworten[j] + '<BR>';
      if (fragen[i].antworten[j] ==  fragen[i].korrekt) { htmlContent += '</span>'; };
    };
    htmlContent += '</P>';

    if (eingaben[i] == fragen[i].korrekt) {
      htmlContent += '<p class="richtig">Ihre Antwort war richtig. ('+fragen[i].punkte+'&nbsp;Punkte)</I></p\n';
    } else {
      htmlContent += '<p class="falsch">Die Antwort ('+korrekt+') wäre richtig gewesen ('+fragen[i].punkte+'&nbsp;Punkte), ' + fragen[i].loesung + '</p>';
    };
  }; // for
  neueSeite = window.open('', 'main');
  neueSeite.document.writeln(head);
  neueSeite.document.writeln(htmlContent);
  neueSeite.document.writeln(foot);
  neueSeite.document.close();
};