/**
 * Für Multiple-Choice:
 * den Submit-Button aktivieren (sobald eine Antwort gewählt wurde)
 */
function activateSubmit() {
  document.getElementById("submitMC").disabled=false;
}

/**
 * Logarithmisches Scoring mit Toleranzparameter (Holmes) - 10/2008:
 * 
 * @param   val   [0...1]
 * @param   t     Toleranzparameter (z.B. 0.16666 / 0.04470 / 0.01340 / 0.00430
 * @param   k     Anzahl Fragen (z.B. 2 / 3)
 * @returns Score [-3...+1]   (Min/Max kann variieren)
 */
function logscore(val,t,k) {
  return (Math.log((1-t*k)*val+t)+Math.log(k)) / (Math.log(1-t*k+t)+Math.log(k));
}


/**
 * Scoring-Funktion
 *
 * @param   modell  [1...5]	Scoringmodell
 * @param   proz_c  [0...100]	Prozentwert richtig
 * @param   proz_w1 [0...100]	Prozentwert falsch (1)
 * @param   proz_w2 [0...100]	Prozentwert falsch (2)
 * @returns Score  (integer): [-300 ... +100]  (Wertebereich min/max je nach Scoringmodell!)
 *
 * Scr  Werte  t(k=3)
 * Reihenfolge geändert (webtest6!)
 *  0   (MC)   [Funktion nur für Scr>=1]
 *  1   (lin, 0..100)
 *  2   -100   0.16666
 *  3   -200   0.04470
 *  4   -300   0.01340
 *
 * nicht verwendet:
 *  x   -400   0.00430
 *  x   -50    0.333
 *  x   sphärisch (benötigt alle 3 prozentwerte!) - bisher nur für k=3 implementiert!
 */
function score(modell, proz_c, proz_w1, proz_w2) {

  var val=proz_c/100;
  
  if (modell==1) {		// linear [0..+100]
     s=val;  
  } else if (modell==2) {    	// Holmes [-100..+100]
     s=logscore(val, 0.16666, 3);
     if (proz_c==33) s=0;	// wg. Rundungsfehler: bei 33% (eigentlich 33.33%) soll der Score=0 sein    
  } else if (modell==3) {	// Holmes [-200..+100]
     s=logscore(val, 0.0447, 3); // 
     if (proz_c==33) s=0;	// wg. Rundungsfehler: bei 33% (eigentlich 33.33%) soll der Score=0 sein    
  } else if (modell==4) {	// Holmes [-300..+100]
     s=logscore(val, 0.0134, 3); // 
     if (proz_c==33) s=0;	// wg. Rundungsfehler: bei 33% (eigentlich 33.33%) soll der Score=0 sein    
  } else {
     alert('Falscher Parameter! (Modell='+modell);
     s=-9999;		// Fehler: dieser Zweig dürfte eigentlich nie erreicht werden
  }
  
  s=Math.round(100*s);		// Score = Val * 100 ([-100;100])
 
  return s;  
}


/**
 * Score als HTML aufbereiten
 *  (für mod_beschreibung_Slider.html)
 */
function score_html(modell,proz_c, proz_w1, proz_w2) {
  var sc=score(modell,proz_c, proz_w1, proz_w2);
  if (sc==0) {
    document.write('<font color="blue">'+sc+'</font>');	// Null: Score in blau
  } else if (sc<0) {
    document.write('<font color="red">'+sc+'</font>');	// Neg.: Score in rot
  } else {
    document.write('<font color="blue">'+sc+'</font>');	// Pos.: Score in blau
  }
}


/**
 * Score ausgeben: -100 .. 100 
 */
function formatScore(wert) {

  var score=wert;		// nicht ändern
  //score="<font size=+2>"+score+"</font> Punkte"    
  score=score+" Punkte"      
  if (wert==0) {
    score="<font color=blue><nobr>"+score+"</nobr></font>";		// Null: blau
  } else if (wert<0) {
    score="<font color=red><nobr>"+score+"</nobr></font>";		// negativ: rot
  } else {
    score="<font color=green><nobr>"+score+"</nobr></font>";  	// positiv: grün
  }
  
  return score;
}

/** Wrapper */
function score_out_k3(modell,a,b,c) {
  score_out(modell,a,b,c);
}

/**
 * Score in hidden-elementen speichern und in tabelle ausgeben:
 */
function score_out(modell,a,b,c) {
  // Scoring für A/B/C berechnen:
  // Achtung, IE-Bug: Variablen dürfen nicht "pkt_a" heißen (vermutlich, da ein Element der HTMl-Seite so heißt...)
  xpkt_a = score(modell,a,b,c);
  xpkt_b = score(modell,b,a,c);
  xpkt_c = score(modell,c,a,b); 

  // PROZENTE:

  // Die Prozentwerte A/B/C im Formular speichern (hidden):
  document.getElementById("h_val_a").value = a;
  document.getElementById("h_val_b").value = b;
  document.getElementById("h_val_c").value = c;

  // SCORE:

  // Den Score für A/B/C im Formular speichern:
  // ... hidden, wird in PHP ausgelesen und einer der drei fürs Scoring verwendet:
  document.getElementById("h_pkt_a").value = xpkt_a;
  document.getElementById("h_pkt_b").value = xpkt_b;
  document.getElementById("h_pkt_c").value = xpkt_c;

  score_a = formatScore(xpkt_a);
  score_b = formatScore(xpkt_b);
  score_c = formatScore(xpkt_c);


  if (fb=="y") {
    // Nur Punkte ausgeben:
    document.getElementById("text_proz_a").innerHTML = "<span title='Bei dieser Auswahl bekommen Sie "+xpkt_a+" Punkte, falls Antwort A richtig ist'> &nbsp;<b>"+score_a+"</b> falls A richtig</span>";
    document.getElementById("text_proz_b").innerHTML = "<span title='Bei dieser Auswahl bekommen Sie "+xpkt_b+" Punkte, falls Antwort B richtig ist'> &nbsp;<b>"+score_b+"</b> falls B richtig</span>";
    document.getElementById("text_proz_c").innerHTML = "<span title='Bei dieser Auswahl bekommen Sie "+xpkt_c+" Punkte, falls Antwort C richtig ist'> &nbsp;<b>"+score_c+"</b> falls C richtig</span>";
//    document.getElementById("text_proz_a").innerHTML = "<span title='Bei dieser Auswahl bekommen Sie "+xpkt_a+" Punkte, falls Antwort A richtig ist'>("+a+"%) &nbsp;<b>"+score_a+"</b> falls A richtig</span>";
//    document.getElementById("text_proz_b").innerHTML = "<span title='Bei dieser Auswahl bekommen Sie "+xpkt_b+" Punkte, falls Antwort B richtig ist'>("+b+"%) &nbsp;<b>"+score_b+"</b> falls B richtig</span>";
//    document.getElementById("text_proz_c").innerHTML = "<span title='Bei dieser Auswahl bekommen Sie "+xpkt_c+" Punkte, falls Antwort C richtig ist'>("+c+"%) &nbsp;<b>"+score_c+"</b> falls C richtig</span>";
  } else {
    // Nur Prozent ausgeben:
    document.getElementById("text_proz_a").innerHTML = " &nbsp;<b>"+a+"%</b>";
    document.getElementById("text_proz_b").innerHTML = " &nbsp;<b>"+b+"%</b>";
    document.getElementById("text_proz_c").innerHTML = " &nbsp;<b>"+c+"%</b>";
  }
}

