// Copyright
// Rajko Zschiegner
// Reichenbacher Str. 20
// D-07973 Greiz

var ttt_images = "/fileadmin/ttt/";

var ttt_a=new Array(9);
var ttt_xi=new Image();ttt_xi.src=ttt_images+"x.gif";
var ttt_oi=new Image();ttt_oi.src=ttt_images+"o.gif";
var ttt_li=new Image();ttt_li.src=ttt_images+"_.gif";
var ttt_scon=new Image();ttt_scon.src=ttt_images+"ch_x_on.gif";
var ttt_scoff=new Image();ttt_scoff.src=ttt_images+"ch_x_off.gif";
var ttt_sson=new Image();ttt_sson.src=ttt_images+"ch_o_on.gif";
var ttt_ssoff=new Image();ttt_ssoff.src=ttt_images+"ch_o_off.gif";
var ttt_ston=new Image();ttt_ston.src=ttt_images+"start_on.gif";
var ttt_stoff=new Image();ttt_stoff.src=ttt_images+"start.gif";
var ttt_sieg=0;
var ttt_now=new Date();
var ttt_s_wer="c";
var ttt_first_field;

for(i = 0; i < document.images.length; ++i) {
    if(document.images[i].name == "field_1") {
      ttt_first_field = i;
    }
}

function ttt_show(){
  for (var i=0;i<9;i++){
    with (document.images[i+ttt_first_field]){
      if (ttt_a[i]==-1) src=ttt_oi.src;if (ttt_a[i]==0) src=ttt_li.src;if (ttt_a[i]==1) src=ttt_xi.src;
    }
  }
  return true;
}

function ttt_test(p) {
  var ttt_r=0;var ttt_h=new Array(8);
  ttt_h[0]=(Math.abs(ttt_a[0]+ttt_a[1]+ttt_a[2])==3);ttt_h[1]=(Math.abs(ttt_a[3]+ttt_a[4]+ttt_a[5])==3);ttt_h[2]=(Math.abs(ttt_a[6]+ttt_a[7]+ttt_a[8])==3);ttt_h[3]=(Math.abs(ttt_a[0]+ttt_a[3]+ttt_a[6])==3);
  ttt_h[4]=(Math.abs(ttt_a[1]+ttt_a[4]+ttt_a[7])==3);ttt_h[5]=(Math.abs(ttt_a[2]+ttt_a[5]+ttt_a[8])==3);ttt_h[6]=(Math.abs(ttt_a[0]+ttt_a[4]+ttt_a[8])==3);ttt_h[7]=(Math.abs(ttt_a[6]+ttt_a[4]+ttt_a[2])==3);
  if (ttt_h[0]||ttt_h[1]||ttt_h[2]||ttt_h[3]||ttt_h[4]||ttt_h[5]||ttt_h[6]||ttt_h[7]) ttt_r=1;
  return ttt_r;
}

function ttt_solve(ttt_zug) {
  var ttt_ts=0;
  var ttt_bw=0;
  var ttt_m2=((ttt_zug%2)==ttt_wer_s);
  if  (ttt_zug<10) {
    if (ttt_m2 == 1) {
      ttt_bw = 1;
    } else {
      ttt_bw = -1;
    }
    for (var i=0;i<9;i++) {
      if (ttt_a[i] == 0) {
        if (ttt_m2 == 1) {
          ttt_a[i] = -1;
        } else {
          ttt_a[i] = 1;
        }
        ttt_ts=ttt_test(i);
        if (ttt_ts == 1) {
          if (ttt_m2 == 1) {
            ttt_bw = -1;
          } else {
            ttt_bw = 1;
          }
        } else {
          ttt_ts = ttt_solve(ttt_zug+1);
          if (ttt_m2 == 1) {
            if (ttt_ts < ttt_bw) {
              ttt_bw = ttt_ts;
            }
          } else {
            if (ttt_ts > ttt_bw) {
              ttt_bw = ttt_ts;
            }
          }
        }
        ttt_a[i] = 0;
        if (ttt_m2 == 1) {
          if (ttt_bw == -1) i=9;
        } else {
          if (ttt_bw ==  1) i=9;
        }
      }
    }
  }
  return ttt_bw;
}

function ttt_ziehe(ttt_pos) {
  var ttt_mz = -1;
  var ttt_bewert = -1;
  var ttt_t_sieg;
  if ((ttt_a[ttt_pos] == 0) && (ttt_sieg == 0)) {
    ttt_a[ttt_pos] = -1;
    ttt_show();
    if (++ttt_zug > 4) {
      ttt_sieg = ttt_test(ttt_pos);
    }
    if (ttt_sieg == 1) { 
      document.forms["tictactoe"].ttt_ausgabe.value = "Sieg fuer Sie !";
    } else {
      ttt_zug++;
      if (ttt_zug == 2) {
        if (((ttt_pos % 2) == 0) && (ttt_pos != 4)) {
          ttt_mz = 4;
        } else {
          if ((ttt_pos == 1) || (ttt_pos == 5)) {
            ttt_mz = 2;
          } else {
            if ((ttt_pos == 3) || (ttt_pos == 7)) {
              ttt_mz = 6;
            } else {
              ttt_mz = (ttt_now.getTime() % 2)*2+(ttt_now.getTime()%2)*6;
            }
          }
        }
      } else {
        for (var i=0; i<9; i++) {
          if (ttt_a[i] == 0) {
            if (ttt_mz == -1) {
              ttt_mz = i;
            }
            ttt_a[i] = 1;
            ttt_t_sieg = ttt_test(i);
            if (ttt_t_sieg == 1) {
              document.forms["tictactoe"].ttt_ausgabe.value = "Sieg fuer mich!";
              ttt_mz = i;
              i = 9; ttt_sieg = 1;
            } else {
              ttt_t_sieg = ttt_solve(ttt_zug+1);
              if (ttt_t_sieg == 1) {
                ttt_mz = i; i = 9;
              } else {
                if (ttt_t_sieg > ttt_bewert) {
                  ttt_mz = i; ttt_bewert = ttt_t_sieg;
                }
              }
            }
            ttt_a[i] = 0;
          }
        }
      }
      if (ttt_mz != -1) {
        ttt_a[ttt_mz] = 1;
      }
    }
  }
  ttt_show();
}

function ttt_startwahl(s) {
  if (ttt_s == 0) {
    ttt_s_wer = "c";
    window.document.images[10+ttt_first_field].src = ttt_scon.src;
    window.document.images[11+ttt_first_field].src = ttt_ssoff.src;
  } else {
    ttt_s_wer = "s";
    window.document.images[10+ttt_first_field].src = ttt_scoff.src;
    window.document.images[11+ttt_first_field].src = ttt_sson.src;
  }
}

function ttt_startgame() {
  window.document.images[12+ttt_first_field].src = ttt_ston.src;
  for (var i=0;i<9;i++) {
    ttt_a[i] = 0;
  }
  ttt_zug = 0;
  if (ttt_s_wer == "c") {
    ttt_wer_s = 0;
  } else {
    ttt_wer_s = 1;
  }
  if (ttt_wer_s == 0) {
    ttt_a[Math.floor(ttt_now.getTime()/10 % 9)] = 1;
    ttt_zug++;
  }
  ttt_sieg = 0;
  document.forms["tictactoe"].ttt_ausgabe.value = "";
  ttt_show();
  window.document.images[12+ttt_first_field].src = ttt_stoff.src;
}

