/*

This is Freeware.

You may copy, modify, delete this code as you like.
But please leave this notice at the top of this file.

Author:
Ralf Leinemann
Germany
www.leinemann.net

Thank you

*/


// little helpers
var games = new Array('a','b','c','d','e','f');
var titles = new Array (
'zahl1',
'zahl2',
'zahl3',
'zahl4',
'zahl5',
'zahl6',
'pasch3',
'pasch4',
'fullhouse',
'kleinestrasse',
'grossestrasse',
'pasch5',
'chance',
'summezahl',
'bonus',
'summeoben',
'par',
'summeunten',
'summe_oben',
'summespiel');

// the score card -> x is 1 column, y is 1 row (as you see it on the screen)
var scores = [
[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0],
[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0],
[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0],
[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0],
[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0],
[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0]
];
var zahl1         = 0;
var zahl2         = 1;
var zahl3         = 2;
var zahl4         = 3;
var zahl5         = 4;
var zahl6         = 5;
var pasch3        = 6;
var pasch4        = 7;
var fullhouse     = 8;
var kleinestrasse = 9;
var grossestrasse = 10;
var pasch5        = 11;
var chance        = 12;
var par           = 13;
var bonus5        = 14;

// the 5 dices
var wuerfel = [
[0,0],
[1,0],
[1,0],
[1,0],
[1,0],
[1,0]
];
var wuerfel_status      = 0;
var wuerfel_zahl        = 1;
var verbleibende_wuerfe = 3;
var pasch5_counter      = 0;
var pasch5_points       = 0;

// vars for possibilities
var anzahl1er       = 0;
var anzahl2er       = 0;
var anzahl3er       = 0;
var anzahl4er       = 0;
var anzahl5er       = 0;
var anzahl6er       = 0;
var summe_1er       = 0;
var summe_2er       = 0;
var summe_3er       = 0;
var summe_4er       = 0;
var summe_5er       = 0;
var summe_6er       = 0;
var summe_alle      = 0;
var m_pasch3        = 0;
var m_pasch4        = 0;
var m_fullhouse     = 0;
var m_kleinestrasse = 0;
var m_grossestrasse = 0;
var m_pasch5        = 0;

// colors
var color_par      = '#000000';
var color_par_less = '#ee0000';
var color_par_more = '#008800';
var color_tone     = '#eeeeee';
var color_mark     = '#ffa21d';
var color_none     = '#ffffff';
var color_bgc0     = '#cccccc';
var color_txt0     = '#999999';
var color_bgc1     = '#eeeeee';
var color_txt1     = '#000000';

// undo
var undo_wuerfel   = [
[0,0],
[1,0],
[1,0],
[1,0],
[1,0],
[1,0]
];
var undo_verbleibende_wuerfe = 0;
var undo_field_id  = '';
var undo_col       = 0;
var undo_row       = 0;
var undo_bonus5    = 0;

// flags
var undo_flag      = 0;
var highlite_flag  = 1;
var nimm_wuerfel_status = 1;

// misc
var counter_rounds = 0;

function f_init_scorecard() {
var x = 0;
var y = 0;
var field = '';

  for (x = 0; x < games.length; x++)  {
    for (y = 0; y < titles.length; y++) {
      if (titles[y] == 'summezahl' || titles[y] == 'bonus' || titles[y] == 'summeoben' || titles[y] == 'par' || titles[y] == 'summeunten' || titles[y] == 'summe_oben' || titles[y] == 'summespiel') {
        field = games[x] + titles[y];
        document.getElementById(field).innerHTML = 0;
      }
    }
  }
  document.getElementById('verbleibende_wuerfe').style.backgroundColor = color_tone;
  if (navigator.userAgent.indexOf("MSIE") >= 0){
    document.getElementById('score').style.paddingTop = '5px';
    }
}

function f_wuerfel_behalten(wuerfel_id) {
var wuerfel_nummer = wuerfel_id.substr(1, 1);
var field = 'w'+ wuerfel_nummer;
var img_src = '';

  if (document.getElementById(field).innerHTML != '?') {
    if (wuerfel[wuerfel_nummer][wuerfel_status] == 1) {
      wuerfel[wuerfel_nummer][wuerfel_status] = 0;
      img_src = 'img/wi'+ wuerfel[wuerfel_nummer][wuerfel_zahl] +'.gif';
    } else {
      wuerfel[wuerfel_nummer][wuerfel_status] = 1;
      img_src = 'img/wa'+ wuerfel[wuerfel_nummer][wuerfel_zahl] +'.gif';
    }
    document.getElementById(field).innerHTML = '<img src="'+ img_src +'" width="30" height="30" alt="'+ wuerfel[wuerfel_nummer][wuerfel_zahl] +'" />';
  }
}

function f_wuerfeln() {
var x = 0;
var field = '';
var img_src = '';
var verbleibende_wuerfe_text = '';

  if (verbleibende_wuerfe > 0) {
    verbleibende_wuerfe--;
    for (x = 1; x < wuerfel.length; x++) {
      if (wuerfel[x][wuerfel_status] == 1) {
        wuerfel[x][wuerfel_zahl] = f_wurf_berechnen();
        field = 'w' + x;
        img_src = 'img/wa'+ wuerfel[x][wuerfel_zahl] +'.gif';
        document.getElementById(field).innerHTML = '<img src="'+ img_src +'" width="30" height="30" alt="'+ wuerfel[x][wuerfel_zahl] +'" />';
      }
    }
  }
  undo_flag = 0;
  f_undoflaeche_schreiben();
  f_wuerfelflaeche_schreiben();
  f_moeglichkeiten_berechnen();
}

function f_wurf_berechnen() {
var basis = 0;
var zahl = 0;

  while ((zahl < 1) || (zahl > 6)) {
    zahl = Math.ceil(Math.random() * 10);
  }
  return zahl;
}

function f_moeglichkeiten_berechnen() {
var x = 0;
var moeglichkeiten_text = '';
var par_color = '';

  // set global vars to 0
  anzahl1er       = 0;
  anzahl2er       = 0;
  anzahl3er       = 0;
  anzahl4er       = 0;
  anzahl5er       = 0;
  anzahl6er       = 0;
  summe_1er       = 0;
  summe_2er       = 0;
  summe_3er       = 0;
  summe_4er       = 0;
  summe_5er       = 0;
  summe_6er       = 0;
  summe_alle      = 0;
  m_pasch3        = 0;
  m_pasch4        = 0;
  m_fullhouse     = 0;
  m_kleinestrasse = 0;
  m_grossestrasse = 0;
  m_pasch5        = 0;
  // calculate sums
  for (x = 1; x < wuerfel.length; x++) {
    switch(wuerfel[x][wuerfel_zahl]){
      case 1:
        summe_1er += 1;
        anzahl1er++;
        break;
      case 2:
        summe_2er += 2;
        anzahl2er++;
        break;
      case 3:
        summe_3er += 3;
        anzahl3er++;
        break;
      case 4:
        summe_4er += 4;
        anzahl4er++;
        break;
      case 5:
        summe_5er += 5;
        anzahl5er++;
        break;
      case 6:
        summe_6er += 6;
        anzahl6er++;
        break;
    }
    summe_alle += wuerfel[x][wuerfel_zahl];
  }
  // which combinations are possible?
  if ((anzahl1er > 2) || (anzahl2er > 2) || (anzahl3er > 2) || (anzahl4er > 2) || (anzahl5er > 2) || (anzahl6er > 2)) {
    m_pasch3 = 1;
  }
  if ((anzahl1er > 3) || (anzahl2er > 3) || (anzahl3er > 3) || (anzahl4er > 3) || (anzahl5er > 3) || (anzahl6er > 3)) {
    m_pasch4 = 1;
  }
  if ((anzahl1er == 3) || (anzahl2er == 3) || (anzahl3er == 3) || (anzahl4er == 3) || (anzahl5er == 3) || (anzahl6er == 3)) {
    if ((anzahl1er == 2) || (anzahl2er == 2) || (anzahl3er == 2) || (anzahl4er == 2) || (anzahl5er == 2) || (anzahl6er == 2)) {
      m_fullhouse = 1;
    }
  }
  if ((anzahl3er > 0) && (anzahl4er > 0)) {
    if ((anzahl1er > 0) && (anzahl2er > 0)) {m_kleinestrasse = 1;}
    if ((anzahl2er > 0) && (anzahl5er > 0)) {m_kleinestrasse = 1;}
    if ((anzahl5er > 0) && (anzahl6er > 0)) {m_kleinestrasse = 1;}
  }
  if ((anzahl2er > 0) && (anzahl3er > 0) && (anzahl4er > 0) && (anzahl5er > 0)) {
    if ((anzahl1er > 0) || (anzahl6er > 0)) {m_grossestrasse = 1;}
  }
  if ((anzahl1er == 5) || (anzahl2er == 5) || (anzahl3er == 5) || (anzahl4er == 5) || (anzahl5er == 5) || (anzahl6er == 5)) {
    m_pasch5 = 1;
  }
  // print possibilities
  par_color = bestimme_farbe_par(summe_1er, 1);
  document.getElementById('m_1er').innerHTML = '<span style="color:'+ par_color +'">'+ summe_1er +'</span>';
  par_color = bestimme_farbe_par(summe_2er, 2);
  document.getElementById('m_2er').innerHTML = '<span style="color:'+ par_color +'">'+ summe_2er +'</span>';
  par_color = bestimme_farbe_par(summe_3er, 3);
  document.getElementById('m_3er').innerHTML = '<span style="color:'+ par_color +'">'+ summe_3er +'</span>';
  par_color = bestimme_farbe_par(summe_4er, 4);
  document.getElementById('m_4er').innerHTML = '<span style="color:'+ par_color +'">'+ summe_4er +'</span>';
  par_color = bestimme_farbe_par(summe_5er, 5);
  document.getElementById('m_5er').innerHTML = '<span style="color:'+ par_color +'">'+ summe_5er +'</span>';
  par_color = bestimme_farbe_par(summe_6er, 6);
  document.getElementById('m_6er').innerHTML = '<span style="color:'+ par_color +'">'+ summe_6er +'</span>';
  par_color = bestimme_farbe_par(m_pasch3, 0.1);
  if (m_pasch3 == 1) {
    document.getElementById('m_pasch3').innerHTML = '<span style="color:'+ par_color +'">'+ summe_alle +'</span>';
  } else {
    document.getElementById('m_pasch3').innerHTML = '<span style="color:'+ par_color +'">'+ 0 +'</span>';
  }
  par_color = bestimme_farbe_par(m_pasch4, 0.1);
  if (m_pasch4 == 1) {
    document.getElementById('m_pasch4').innerHTML = '<span style="color:'+ par_color +'">'+ summe_alle +'</span>';
  } else {
    document.getElementById('m_pasch4').innerHTML = '<span style="color:'+ par_color +'">'+ 0 +'</span>';
  }
  par_color = bestimme_farbe_par(m_fullhouse, 0.1);
  if (m_fullhouse == 1) {
    document.getElementById('m_fullhouse').innerHTML = '<span style="color:'+ par_color +'">'+ 25 +'</span>';
  } else {
    document.getElementById('m_fullhouse').innerHTML = '<span style="color:'+ par_color +'">'+ 0 +'</span>';
  }
  par_color = bestimme_farbe_par(m_kleinestrasse, 0.1);
  if (m_kleinestrasse == 1) {
    document.getElementById('m_kleinestrasse').innerHTML = '<span style="color:'+ par_color +'">'+ 30 +'</span>';
  } else {
    document.getElementById('m_kleinestrasse').innerHTML = '<span style="color:'+ par_color +'">'+ 0 +'</span>';
  }
  par_color = bestimme_farbe_par(m_grossestrasse, 0.1);
  if (m_grossestrasse == 1) {
    document.getElementById('m_grossestrasse').innerHTML = '<span style="color:'+ par_color +'">'+ 40 +'</span>';
  } else {
    document.getElementById('m_grossestrasse').innerHTML = '<span style="color:'+ par_color +'">'+ 0 +'</span>';
  }
  par_color = bestimme_farbe_par(m_pasch5, 0.1);
  if (m_pasch5 == 1) {
    document.getElementById('m_pasch5').innerHTML = '<span style="color:'+ par_color +'">'+ 50 +'</span>';
  } else {
    document.getElementById('m_pasch5').innerHTML = '<span style="color:'+ par_color +'">'+ 0 +'</span>';
  }
  par_color = color_par_more;
  document.getElementById('m_chance').innerHTML = '<span style="color:'+ par_color +'">'+ summe_alle +'</span>';
}

function f_punkte_eintragen(field_id) {
var col = field_id.substr(0, 1);
var row = field_id.substr(1, 100);
var x = 0;
var par_wert = 0;
var einzutragender_wert = -1;
var bonus5_ok = 0;
var this_field = new Object();
this_field = document.getElementById(field_id);

  // define col and row for scores array
  for (x = 0; x < games.length; x++) {
    if (games[x] == col) {
      col = x;
      break;
    }
  }
  for (x = 0; x < titles.length; x++) {
    if (titles[x] == row) {
      row = x;
      break;
    }
  }

  // only if there's no value for the clicked field
  if ((scores[col][row] == -1) && (verbleibende_wuerfe < 3)) {
    // how many points are made with five of a kind?
    // Keep that in mind to calculate the bonus later on
    for (x = 0; x < scores.length; x++) {
      pasch5_counter += scores[x][pasch5];
    }
    if (field_id.indexOf('zahl1') >= 0) {
      einzutragender_wert = summe_1er;
      par_wert = summe_1er - 3;
      scores[col][par] += par_wert;
      bonus5_ok = 1;
    }
    if (field_id.indexOf('zahl2') >= 0) {
      einzutragender_wert = summe_2er;
      par_wert = summe_2er - 6;
      scores[col][par] += par_wert;
      bonus5_ok = 1;
    }
    if (field_id.indexOf('zahl3') >= 0) {
      einzutragender_wert = summe_3er;
      par_wert = summe_3er - 9;
      scores[col][par] += par_wert;
      bonus5_ok = 1;
    }
    if (field_id.indexOf('zahl4') >= 0) {
      einzutragender_wert = summe_4er;
      par_wert = summe_4er - 12;
      scores[col][par] += par_wert;
      bonus5_ok = 1;
    }
    if (field_id.indexOf('zahl5') >= 0) {
      einzutragender_wert = summe_5er;
      par_wert = summe_5er - 15;
      scores[col][par] += par_wert;
      bonus5_ok = 1;
    }
    if (field_id.indexOf('zahl6') >= 0) {
      einzutragender_wert = summe_6er;
      par_wert = summe_6er - 18;
      scores[col][par] += par_wert;
      bonus5_ok = 1;
    }
    if (field_id.indexOf('pasch3') >= 0) {
      einzutragender_wert = (m_pasch3 == 1) ? summe_alle : 0;
      bonus5_ok = 1;
    }
    if (field_id.indexOf('pasch4') >= 0) {
      einzutragender_wert = (m_pasch4 == 1) ? summe_alle : 0;
      bonus5_ok = 1;
    }
    if (field_id.indexOf('fullhouse') >= 0) {
      einzutragender_wert = (m_fullhouse == 1) ? 25 : 0;
    }
    if (field_id.indexOf('kleinestrasse') >= 0) {
      einzutragender_wert = (m_kleinestrasse == 1) ? 30 : 0;
    }
    if (field_id.indexOf('grossestrasse') >= 0) {
      einzutragender_wert = (m_grossestrasse == 1) ? 40 : 0;
    }
    if (field_id.indexOf('pasch5') >= 0) {
      einzutragender_wert = (m_pasch5 == 1) ? 50 : 0;
    }
    if (field_id.indexOf('chance') >= 0) {
      einzutragender_wert = summe_alle;
      bonus5_ok = 1;
    }
    if (einzutragender_wert > -1) {
      this_field.innerHTML = einzutragender_wert;
      scores[col][row] = einzutragender_wert;
    }
    // If I made 300 points with five of a kind, I made a 'five of a kind'
    // 6 times so I get 100 points extra for each further valid entry of a
    // 'five of a kind'

    // WHY BONUS5_OK?
    // Some people prefer to allow 100 extra points only if you were able
    // to make a valid entry (get regular points with you entry)

    // Example:
    // You diced 55555 a second time, but your fives, 3 of a kind, 4 of a kind
    // and chance already have values so you are forced to cross out you ones
    // -> this would be an invalid entry, so you loose you 100 extra points
    // I think that's a stupid rule, so I do the following to get my bonus
    // every time I diced five of a kind more then 6 times, whatever i enter
    // or cross out (if you like this stupid ruel, comment the next line out):
    bonus5_ok = 1;

    if ((pasch5_counter == 300) && (m_pasch5 == 1) && (bonus5_ok == 1)) {
      this_field.style.backgroundColor = color_mark;
      undo_bonus5 = scores[col][bonus5];
      scores[col][bonus5] += 100;
    } else {
      this_field.style.backgroundColor = color_tone;
    }
    pasch5_counter = 0;
    bonus5_ok = 0;

    counter_rounds++;
    f_save_undo(field_id, col, row);
    f_undoflaeche_schreiben();
    f_formular_zuruecksetzen();
    f_punkte_berechnen();
    f_check_spielende();
  }
}

function f_formular_zuruecksetzen() {
  // reset values
  verbleibende_wuerfe = 3;
  anzahl1er       = 0;
  anzahl2er       = 0;
  anzahl3er       = 0;
  anzahl4er       = 0;
  anzahl5er       = 0;
  anzahl6er       = 0;
  summe_1er       = 0;
  summe_2er       = 0;
  summe_3er       = 0;
  summe_4er       = 0;
  summe_5er       = 0;
  summe_6er       = 0;
  summe_alle      = 0;
  m_pasch3        = 0;
  m_pasch4        = 0;
  m_fullhouse     = 0;
  m_kleinestrasse = 0;
  m_grossestrasse = 0;
  m_pasch5        = 0;
  pasch5_counter  = 0;
  wuerfel = [
    [0,0],
    [1,0],
    [1,0],
    [1,0],
    [1,0],
    [1,0]];

  // reset display
  document.getElementById('m_1er').innerHTML = '';
  document.getElementById('m_2er').innerHTML = '';
  document.getElementById('m_3er').innerHTML = '';
  document.getElementById('m_4er').innerHTML = '';
  document.getElementById('m_5er').innerHTML = '';
  document.getElementById('m_6er').innerHTML = '';
  document.getElementById('m_pasch3').innerHTML = '';
  document.getElementById('m_pasch4').innerHTML = '';
  document.getElementById('m_fullhouse').innerHTML = '';
  document.getElementById('m_kleinestrasse').innerHTML = '';
  document.getElementById('m_grossestrasse').innerHTML = '';
  document.getElementById('m_pasch5').innerHTML = '';
  document.getElementById('m_chance').innerHTML = '';
  document.getElementById('verbleibende_wuerfe').innerHTML = 'Noch 3 W&uuml;rfe.';
  document.getElementById('w1').innerHTML = '?';
  document.getElementById('w2').innerHTML = '?';
  document.getElementById('w3').innerHTML = '?';
  document.getElementById('w4').innerHTML = '?';
  document.getElementById('w5').innerHTML = '?';
  document.getElementById('verbleibende_wuerfe').style.backgroundColor = color_tone;
  document.getElementById('verbleibende_wuerfe').style.color = color_txt1;
}

function f_punkte_berechnen() {
var x = 0;
var y = 0;
var sum_oben_a = 0;
var sum_oben_b = 0;
var sum_oben_c = 0;
var sum_oben_d = 0;
var sum_oben_e = 0;
var sum_oben_f = 0;
var sum_unten_a = 0;
var sum_unten_b = 0;
var sum_unten_c = 0;
var sum_unten_d = 0;
var sum_unten_e = 0;
var sum_unten_f = 0;
var cell = '';
var par_color = '';

  for (x = 0; x < scores.length; x++) {
    for (y = zahl1; y <= zahl6; y++) {
      if ((games[x] == 'a') && (scores[x][y] >= 0)) sum_oben_a += scores[x][y];
      if ((games[x] == 'b') && (scores[x][y] >= 0)) sum_oben_b += scores[x][y];
      if ((games[x] == 'c') && (scores[x][y] >= 0)) sum_oben_c += scores[x][y];
      if ((games[x] == 'd') && (scores[x][y] >= 0)) sum_oben_d += scores[x][y];
      if ((games[x] == 'e') && (scores[x][y] >= 0)) sum_oben_e += scores[x][y];
      if ((games[x] == 'f') && (scores[x][y] >= 0)) sum_oben_f += scores[x][y];
    }
    for (y = pasch3; y <= chance; y++) {
      if ((games[x] == 'a') && (scores[x][y] >= 0)) sum_unten_a += scores[x][y];
      if ((games[x] == 'b') && (scores[x][y] >= 0)) sum_unten_b += scores[x][y];
      if ((games[x] == 'c') && (scores[x][y] >= 0)) sum_unten_c += scores[x][y];
      if ((games[x] == 'd') && (scores[x][y] >= 0)) sum_unten_d += scores[x][y];
      if ((games[x] == 'e') && (scores[x][y] >= 0)) sum_unten_e += scores[x][y];
      if ((games[x] == 'f') && (scores[x][y] >= 0)) sum_unten_f += scores[x][y];
    }
  }

  document.getElementById('asummezahl').innerHTML = sum_oben_a;
  document.getElementById('bsummezahl').innerHTML = sum_oben_b;
  document.getElementById('csummezahl').innerHTML = sum_oben_c;
  document.getElementById('dsummezahl').innerHTML = sum_oben_d;
  document.getElementById('esummezahl').innerHTML = sum_oben_e;
  document.getElementById('fsummezahl').innerHTML = sum_oben_f;
  if (sum_oben_a >= 63) {
    sum_oben_a += 35;
    document.getElementById('abonus').innerHTML = 35;
  }
  if (sum_oben_b >= 63) {
    sum_oben_b += 35;
    document.getElementById('bbonus').innerHTML = 35;
  }
  if (sum_oben_c >= 63) {
    sum_oben_c += 35;
    document.getElementById('cbonus').innerHTML = 35;
  }
  if (sum_oben_d >= 63) {
    sum_oben_d += 35;
    document.getElementById('dbonus').innerHTML = 35;
  }
  if (sum_oben_e >= 63) {
    sum_oben_e += 35;
    document.getElementById('ebonus').innerHTML = 35;
  }
  if (sum_oben_f >= 63) {
    sum_oben_f += 35;
    document.getElementById('fbonus').innerHTML = 35;
  }

  document.getElementById('asummeoben').innerHTML = sum_oben_a;
  document.getElementById('bsummeoben').innerHTML = sum_oben_b;
  document.getElementById('csummeoben').innerHTML = sum_oben_c;
  document.getElementById('dsummeoben').innerHTML = sum_oben_d;
  document.getElementById('esummeoben').innerHTML = sum_oben_e;
  document.getElementById('fsummeoben').innerHTML = sum_oben_f;
  document.getElementById('asumme_oben').innerHTML = sum_oben_a;
  document.getElementById('bsumme_oben').innerHTML = sum_oben_b;
  document.getElementById('csumme_oben').innerHTML = sum_oben_c;
  document.getElementById('dsumme_oben').innerHTML = sum_oben_d;
  document.getElementById('esumme_oben').innerHTML = sum_oben_e;
  document.getElementById('fsumme_oben').innerHTML = sum_oben_f;

  for (x = 0; x < games.length; x++) {
    if (scores[x][par] < 0) {par_color = color_par_less;}
    if (scores[x][par] == 0){par_color = color_par;}
    if (scores[x][par] > 0) {par_color = color_par_more;}
    cell = games[x] +'par';
    document.getElementById(cell).innerHTML = '<span style="color:'+ par_color +'">'+ scores[x][par] +'</span>';
  }

  document.getElementById('asummeunten').innerHTML = sum_unten_a;
  document.getElementById('bsummeunten').innerHTML = sum_unten_b;
  document.getElementById('csummeunten').innerHTML = sum_unten_c;
  document.getElementById('dsummeunten').innerHTML = sum_unten_d;
  document.getElementById('esummeunten').innerHTML = sum_unten_e;
  document.getElementById('fsummeunten').innerHTML = sum_unten_f;

var summe_a = sum_unten_a + sum_oben_a;
var summe_b = sum_unten_b + sum_oben_b;
var summe_c = sum_unten_c + sum_oben_c;
var summe_d = sum_unten_d + sum_oben_d;
var summe_e = sum_unten_e + sum_oben_e;
var summe_f = sum_unten_f + sum_oben_f;

  document.getElementById('asummespiel').innerHTML = summe_a;
  document.getElementById('bsummespiel').innerHTML = summe_b;
  document.getElementById('csummespiel').innerHTML = summe_c;
  document.getElementById('dsummespiel').innerHTML = summe_d;
  document.getElementById('esummespiel').innerHTML = summe_e;
  document.getElementById('fsummespiel').innerHTML = summe_f;

var summe_alle = summe_a + summe_b + summe_c + summe_d + summe_e + summe_f;
  document.getElementById('summealle').innerHTML = summe_alle;
  // calculate points for extra 'five of a kind'
  for (x = 0; x < scores.length; x++) {
    pasch5_points += scores[x][bonus5];
  }
  document.getElementById('summepasch5').innerHTML = pasch5_points;
  document.getElementById('endsummealle').innerHTML = summe_alle + pasch5_points;
  pasch5_points = 0;
}

function bestimme_farbe_par(zahl_sent, basis_sent) {
var return_color = color_par;

  basis_sent *= 3;
  if ((zahl_sent - basis_sent) > 0) {return_color = color_par_more;}
  else if ((zahl_sent - basis_sent) < 0) {return_color = color_par_less;}
  return return_color;
}

function highlite(cell) {
  if (highlite_flag == 1) {
    document.getElementById(cell).style.cursor="pointer";
    row = 't' + cell.substr(1,100);
    col = 'th' + cell.substr(0,1);
    document.getElementById(row).style.backgroundColor = color_mark;
    document.getElementById(col).style.backgroundColor = color_mark;
  }
}

function lowlite(cell) {
  row = 't' + cell.substr(1,100);
  col = 'th' + cell.substr(0,1);
  document.getElementById(row).style.backgroundColor = color_none;
  document.getElementById(col).style.backgroundColor = color_none;

}

function f_set_highlite_flag() {

  if (highlite_flag == 1) {
    highlite_flag = 0;
    document.getElementById('highlite').innerHTML = 'Eintraghilfe einschalten';
  } else {
    highlite_flag = 1;
    document.getElementById('highlite').innerHTML = 'Eintraghilfe ausschalten';

  }
}

function f_save_undo(field_id, col, row) {
var x = 0;

  undo_field_id = field_id;
  undo_col = col;
  undo_row = row;
  undo_verbleibende_wuerfe = verbleibende_wuerfe;
  for (x = 0; x < wuerfel.length; x++) {
    undo_wuerfel[x][wuerfel_status] = wuerfel[x][wuerfel_status];
    undo_wuerfel[x][wuerfel_zahl] = wuerfel[x][wuerfel_zahl];
  }
  undo_flag = 1;
}

function f_undo() {
var x = 0;
var y = 0;
var game = '';
var par_sum = 0;
var w_status = '';

  if (undo_flag == 1) {
    document.getElementById(undo_field_id).innerHTML = '';
    document.getElementById(undo_field_id).style.backgroundColor = color_none;
    scores[undo_col][undo_row] = -1;
    verbleibende_wuerfe = undo_verbleibende_wuerfe;
    for (x = 0; x < wuerfel.length; x++) {
      wuerfel[x][wuerfel_status] = undo_wuerfel[x][wuerfel_status];
      wuerfel[x][wuerfel_zahl] = undo_wuerfel[x][wuerfel_zahl];
    }

    // recaltulate par
    game =  undo_field_id.substr(0,1);
    for (y = 0; y < games.length; y++) {
      if (games[y] == game) {
        break;
      }
    }
    for (x = 0; x <= 5; x++) {
      if (scores[y][x] >= 0) {
        par_sum += scores[y][x] - (x + 1) * 3;
      }
    }
    scores[y][par] = par_sum;

    // set extra points for 'five of a kind' to the last value
    scores[undo_col][bonus5] = undo_bonus5;

    // reprint dices
    f_wuerfelflaeche_schreiben();
    for (x = 1; x < undo_wuerfel.length; x++) {
      w_status = (undo_wuerfel[x][wuerfel_status] == 0) ? 'i' : 'a';
      document.getElementById('w' + x).innerHTML = '<img src="img/w'+ w_status + undo_wuerfel[x][wuerfel_zahl] +'.gif" width="30" height="30" alt="'+ undo_wuerfel[x][wuerfel_zahl] +'" />';
    }

    undo_flag = 0;
    counter_rounds--;
    f_undoflaeche_schreiben();
    f_moeglichkeiten_berechnen();
    f_punkte_berechnen();
  }
}

function f_wuerfelflaeche_schreiben() {

  if (verbleibende_wuerfe > 1) {
    verbleibende_wuerfe_text = 'Noch '+ verbleibende_wuerfe +' W&uuml;rfe.';
  } else if (verbleibende_wuerfe == 1){
    verbleibende_wuerfe_text = 'Noch '+ verbleibende_wuerfe +' Wurf.';
  } else {
    verbleibende_wuerfe_text = 'Das war der letzte Wurf.';
    document.getElementById('verbleibende_wuerfe').style.color = color_txt0;
    document.getElementById('verbleibende_wuerfe').style.backgroundColor = color_bgc0;
  }
  document.getElementById('verbleibende_wuerfe').innerHTML = verbleibende_wuerfe_text;
  f_check_spielende();
}

function f_undoflaeche_schreiben() {
  if (undo_flag == 1) {
    document.getElementById('undo').style.color = color_txt1;
    document.getElementById('undo').style.backgroundColor = color_bgc1;
    document.getElementById('undo').innerHTML = 'R&uuml;ckg&auml;ngig';
  } else {
    document.getElementById('undo').style.color = color_txt0;
    document.getElementById('undo').style.backgroundColor = color_bgc0;
    document.getElementById('undo').innerHTML = 'R&uuml;ckg&auml;ngig nicht m&ouml;glich';
  }
}

function f_create_csv() {
var x = 0;
var y = 0;
var z = 0;
var csv_text = '';
var csv_text_line = '';
var now = new Date();
var my_year = now.getFullYear();
var my_month = now.getMonth() + 1;
  my_month = (my_month < 10) ? '0' + my_month.toString() : my_month.toString();
var my_day = (now.getDate() < 10) ? '0' + now.getDate().toString() : now.getDate().toString();
var my_hours = (now.getHours() < 10) ? '0' + now.getHours().toString() : now.getHours().toString();
var my_minutes = (now.getMinutes() < 10) ? '0' + now.getMinutes().toString() : now.getMinutes().toString();
var now_text =  my_year + my_month + my_day +'_'+ my_hours + my_minutes;

// FOR DEBUGGING
// counter_rounds = 78;

  if (counter_rounds == 78) {
    for (x = 0; x < scores.length; x++) {
      for (y = 0; y < scores[x].length; y++) {
        csv_text_line += scores[x][y].toString();
        csv_text_line += ';';

      }
      z = x + 1;
      csv_text_line = now_text +';'+ now_text +'_'+ z +';'+ csv_text_line;
      csv_text += csv_text_line.substring(0, csv_text_line.length - 1) + '\n';
      csv_text_line = '';
    }
    csv_text = '<textarea id="csv" style="width:450px;height:130px;border:solid 1px #0000BB;">'+ csv_text +'</textarea><p>Dieser Text kann nun markiert, kopiert und in eine .csv-Datei eingef&uuml;gt werden</p>';
    document.getElementById('debug').innerHTML = csv_text;
    document.getElementById('csv').focus();
    document.getElementById('csv').select();
  } else {
    alert('Das Spiel ist noch nicht zu Ende!');
  }
}

function f_game_safe() {
var cookie_text = '';
var today = new Date();
var expires_date = new Date(today.getTime() +  1000*60*60*24*100)

  if (verbleibende_wuerfe == 3) {
    for (x = 0; x < scores.length; x++) {
      for (y = 0; y < scores[x].length; y++) {
        cookie_text += scores[x][y] + '|';
      }
    }
    cookie_text += counter_rounds;
// FOR DEBUGGING
// document.getElementById('debug').innerHTML = cookie_text;
    document.cookie = "score=" + cookie_text + ";expires=" + expires_date.toGMTString() + ";";
  } else {
    alert('Ein Siel kann nur nach dem Eintrag eines Wurfs gespeichert werden.');
  }
}

function f_game_open() {
var score_start = 0;
var score_end   = 0;
var score_stored = '';
var scores_stored = new Array();
var x = 0;
var y = 0;
var z = 0;
var cell = '';


  if (document.cookie){
    score_start = document.cookie.indexOf("=") + 1;
    score_end = document.cookie.indexOf(";");
    if (score_end == -1) score_end = document.cookie.length;
    score_stored = document.cookie.substring(score_start,score_end);
// FOR DEBUGGING
// document.getElementById('debug').innerHTML = score_stored;
    scores_stored = score_stored.split('|');
    for (x = 0; x < scores.length; x++) {
      for (y = 0; y < scores[x].length - 1; y++) {
        scores[x][y] = parseInt(scores_stored[z]);
        cell = games[x] + titles[y];
        if (scores[x][y] >= 0) {
          document.getElementById(cell).innerHTML = scores[x][y];
          document.getElementById(cell).style.backgroundColor = color_tone;
        }
        z++;
      }
      scores[x][par] = parseInt(scores_stored[z]);
      cell = games[x] + 'par';
      document.getElementById(cell).innerHTML = scores[x][par];
      z++;
    }
    counter_rounds = parseInt(scores_stored[scores_stored.length - 1]);
    f_punkte_berechnen();
// FOR DEBUGGING
// document.getElementById('debug').innerHTML = scores.join(" ")
// document.getElementById('debug').innerHTML += '<br />Gespielte Runden: ' + counter_rounds;
  } else {
    alert('Es wurde noch kein Spiel gespeichert.');
  }
}

function f_change_nimm_wuerfel_status() {

  if (nimm_wuerfel_status == 1) {
    nimm_wuerfel_status = 0;
    document.getElementById('nimm_wuerfel_status').innerHTML = 'Markierte W&uuml;rfel verwenden (&auml;ndern) NICHT IMPLEMENTIERT';
  } else {
    nimm_wuerfel_status = 1;
    document.getElementById('nimm_wuerfel_status').innerHTML = 'Markierte W&uuml;rfel behalten (&auml;ndern) NICHT IMPLEMENTIERT';
  }
}

function f_check_spielende() {

  if (counter_rounds == 78) {
    verbleibende_wuerfe_text = 'SPIELENDE';
    document.getElementById('verbleibende_wuerfe').style.color = color_txt0;
    document.getElementById('verbleibende_wuerfe').style.backgroundColor = color_bgc0;
    document.getElementById('verbleibende_wuerfe').innerHTML = verbleibende_wuerfe_text;
    verbleibende_wuerfe = 0;
  }
}

function f_show_rules() {
  document.getElementById('versions').style.visibility = 'hidden';
  document.getElementById('rules').style.visibility = 'visible';
}

function f_hide_rules() {
  document.getElementById('rules').style.visibility = 'hidden';
}

function f_show_versions() {
var versions = [
['1.7','2004-11-27','Ralf Leinemann','New and hopefully bug-free method to add extra points for five-of-a-kind.'],
['1.6','2004-11-20','Ralf Leinemann','Save and load games enabled with cookies.'],
['1.5','2004-11-20','Ralf Leinemann','Now you can create CSV data in a textarea for your personal statistics.'],
['1.4','2004-11-13','Ralf Leinemann','Most necessary function: undo.'],
['1.3','2004-10-24','Ralf Leinemann','Show rules in german and switch on/off highlighting.'],
['1.2','2004-10-17','Ralf Leinemann','Highlighting colums and rows.'],
['1.1','2004-10-09','Ralf Leinemann','Extra points for five-of-a-kind enabled'],
['1.0','2004-09-18','Ralf Leinemann','First running HTML version of my old Pascal game']
];
var version_no = 0;
var version_date = 1;
var version_author = 2;
var version_comment = 3;
var x = 0;
var versions_html = '';

  versions_html = '<h2>Versionen</h2><table><tr><th>No.</th><th style="width:75px;">Date</th><th>Author</th><th>Comment</th></tr>';
  for (x = 0; x < versions.length; x++) {
    versions_html += '<tr>';
    versions_html += '<td>'+ versions[x][version_no] +'</td>';
    versions_html += '<td>'+ versions[x][version_date] +'</td>';
    versions_html += '<td>'+ versions[x][version_author] +'</td>';
    versions_html += '<td>'+ versions[x][version_comment] +'</td>';
    versions_html += '</tr>';
  }
  versions_html += '</table><p><span class="link" onclick="f_hide_versions();">Versionen schlie&szlig;en</span></p>';
  f_hide_rules();
  document.getElementById('versions').style.visibility = 'visible';
  document.getElementById('versions').innerHTML = versions_html;
}

function f_hide_versions() {
  document.getElementById('versions').style.visibility = 'hidden';
}
