// Tic Tac Toe 04/26/2001 by Jim Shook-->

  var sq   = new Array(9);  // global
  for (var i=1; i<=9; i++) {sq[i] = 5;}
  var turn = new Array(1);  // global
  turn[0]  = "Computer's Turn";  turn[1]  = "Your Turn";
  var xo   = new Array(1);  // global
  xo[0]    = " O ";  xo[1]    = " X ";
  var fm   = new Array(9);  // global
  fm[1] =  1; fm[2] =  20; fm[3] =  27;
  fm[4] = 46; fm[5] =  53; fm[6] =  86;
  fm[7] = 93; fm[8] = 112; fm[9] = 119;
  var cb   = new Array(137);// global
  // 1-5
  cb[  1] = "2374689"; cb[  2] = "3284697"; cb[  3] = "4732869"; cb[  4] = "6923748"; cb[  5] = "6932847";
  cb[  6] = "6947000"; cb[  7] = "6974238"; cb[  8] = "6974328"; cb[  9] = "6974823"; cb[ 10] = "6983742";
  cb[ 11] = "7462893"; cb[ 12] = "8923000"; cb[ 13] = "8932476"; cb[ 14] = "8932647"; cb[ 15] = "8932746";
  cb[ 16] = "8947326"; cb[ 17] = "8967324"; cb[ 18] = "8974623"; cb[ 19] = "9287364";
  // 2-5 **
  cb[ 20] = "1374689"; cb[ 21] = "3196487"; cb[ 22] = "4193786"; cb[ 23] = "6371984"; cb[ 24] = "7469138";
  cb[ 25] = "8197000"; cb[ 26] = "9647318";
  // 3-5
  cb[ 27] = "1286479"; cb[ 28] = "2196487"; cb[ 29] = "4712869"; cb[ 30] = "4721968"; cb[ 31] = "4769000";
  cb[ 32] = "4781962"; cb[ 33] = "4796128"; cb[ 34] = "4796218"; cb[ 35] = "4796821"; cb[ 36] = "6912847";
  cb[ 37] = "7641982"; cb[ 38] = "8712469"; cb[ 39] = "8712694"; cb[ 40] = "8712964"; cb[ 41] = "8721000";
  cb[ 42] = "8749126"; cb[ 43] = "8769124"; cb[ 44] = "8796421"; cb[ 45] = "9642871";
  // 4-5 **
  cb[ 46] = "1732869"; cb[ 47] = "2197368"; cb[ 48] = "3289176"; cb[ 49] = "6739000"; cb[ 50] = "7198263";
  cb[ 51] = "8731962"; cb[ 52] = "9823716";
  // 5-1
  cb[ 53] = "2837000"; cb[ 54] = "2846379"; cb[ 55] = "2846739"; cb[ 56] = "2846937"; cb[ 57] = "2864739";
  cb[ 58] = "2873469"; cb[ 59] = "2873649"; cb[ 60] = "2873946"; cb[ 61] = "2893467"; cb[ 62] = "2893647";
  cb[ 63] = "2893746"; cb[ 64] = "3746289"; cb[ 65] = "3746829"; cb[ 66] = "3746928"; cb[ 67] = "4628379";
  cb[ 68] = "4628739"; cb[ 69] = "4628973"; cb[ 70] = "4637289"; cb[ 71] = "4637829"; cb[ 72] = "4637928";
  cb[ 73] = "4673000"; cb[ 74] = "4682379"; cb[ 75] = "4697283"; cb[ 76] = "4697328"; cb[ 77] = "4697823";
  cb[ 78] = "6473289"; cb[ 79] = "7328469"; cb[ 80] = "7328649"; cb[ 81] = "7328946"; cb[ 82] = "8237469";
  cb[ 83] = "9328467"; cb[ 84] = "9328647"; cb[ 85] = "9328746";
  // 6-5 **
  cb[ 86] = "1287394"; cb[ 87] = "2379148"; cb[ 88] = "3912847"; cb[ 89] = "4371000"; cb[ 90] = "7821934";
  cb[ 91] = "8913742"; cb[ 92] = "9378241";
  // 7-5
  cb[ 93] = "1468239"; cb[ 94] = "2314689"; cb[ 95] = "2341986"; cb[ 96] = "2361984"; cb[ 97] = "2389000";
  cb[ 98] = "2398146"; cb[ 99] = "2398416"; cb[100] = "2398641"; cb[101] = "3469128"; cb[102] = "4198263";
  cb[103] = "6314289"; cb[104] = "6314892"; cb[105] = "6314982"; cb[106] = "6329148"; cb[107] = "6341000";
  cb[108] = "6389142"; cb[109] = "6398241"; cb[110] = "8914623"; cb[111] = "9824631";
  // 8-5 **
  cb[112] = "1463792"; cb[113] = "2913000"; cb[114] = "3641972"; cb[115] = "4739126"; cb[116] = "6917324";
  cb[117] = "7914623"; cb[118] = "9736421";
  // 9-5
  cb[119] = "1823746"; cb[120] = "2136487"; cb[121] = "2143786"; cb[122] = "2163784"; cb[123] = "2178364";
  cb[124] = "2178463"; cb[125] = "2178634"; cb[126] = "2187000"; cb[127] = "3648217"; cb[128] = "4127368";
  cb[129] = "4136287"; cb[130] = "4136782"; cb[131] = "4136872"; cb[132] = "4163000"; cb[133] = "4178263";
  cb[134] = "4187362"; cb[135] = "6378241"; cb[136] = "7826413"; cb[137] = "8736421";
  
  var  t = 1, count = 0, cm = 0, cbp = 0;

function make_move(form,fs){
  if (sq[fs] == 5){
    count++; sq[fs] = t; t = 1-t; form.wt.value = turn[t];
    form.ss[fs-1].value = xo[sq[fs]];

    if (count == 9) {
      form.wt.value = "Game over.";
      alert("You Tied the Computer - good job!");
      history.go(0); return;
    }
    
    for (i=1; i<50000; i++){x=1/i;} // timing delay - waite here a second

    if (count == 1) {
      cbp = fm[fs]; mv = cb[cbp]; cm = 5;
      if (fs == 5) { cm = 1; }
    }

    if (count == 3) {
      while (mv.charAt(0) < fs) {
        cbp++; mv = cb[cbp]; // move up to next game
      }
      cm = mv.charAt(1);     // fs must be 1st # in mv, & cm is 2nd # in mv
    }
    
    if (count >= 5) {
      cm=0;
      if (sq[1]==5 && (sq[2]+sq[3]==0 || sq[5]+sq[9]==0 || sq[4]+sq[7]==0)){cm=1;}
      if (sq[3]==5 && (sq[1]+sq[2]==0 || sq[5]+sq[7]==0 || sq[6]+sq[9]==0)){cm=3;}
      if (sq[7]==5 && (sq[1]+sq[4]==0 || sq[5]+sq[3]==0 || sq[8]+sq[9]==0)){cm=7;}
      if (sq[9]==5 && (sq[7]+sq[8]==0 || sq[5]+sq[1]==0 || sq[3]+sq[6]==0)){cm=9;}
      if (sq[2]==5 && (sq[1]+sq[3]==0 || sq[5]+sq[8]==0)){cm=2;}
      if (sq[4]==5 && (sq[1]+sq[7]==0 || sq[5]+sq[6]==0)){cm=4;}
      if (sq[6]==5 && (sq[3]+sq[9]==0 || sq[5]+sq[4]==0)){cm=6;}
      if (sq[8]==5 && (sq[7]+sq[9]==0 || sq[5]+sq[2]==0)){cm=8;}
      if (sq[5]==5 && (sq[1]+sq[9]==0 || sq[2]+sq[8]==0 || sq[3]+sq[7]==0 || sq[4]+sq[6]==0)){cm=5;}

      if (cm == 0) {
        s2 = mv.substr(0,count-3);
        while ((s2==mv.substr(0,count-3)) && (mv.charAt(count-3) < fs)){
          cbp++; mv = cb[cbp];
        }
        cm = mv.charAt(count-2);
      }
    }
    
    count++; sq[cm] = t; t = 1-t; form.wt.value = turn[t];
    form.ss[cm-1].value = xo[sq[cm]];
    
    if (sq[1]+sq[2]+sq[3]==0 || sq[4]+sq[5]+sq[6]==0 ||
        sq[7]+sq[8]+sq[9]==0 || sq[1]+sq[4]+sq[7]==0 ||
        sq[2]+sq[5]+sq[8]==0 || sq[3]+sq[6]+sq[9]==0 ||
        sq[1]+sq[5]+sq[9]==0 || sq[3]+sq[5]+sq[7]==0 ){
        form.wt.value = "Game over."; alert ("Computer Won."); history.go(0);
    }
  }
}

/*    1-5-2374689  19     1
      2-5-1374689   7    20
      3-5-1286479  19    27
      4-5-1732869   7    46
      5-1-2837000  33    53
      6-5-1287394   7    86
      7-5-1468239  19    93
      8-5-1463792   7   112 
      9-5-1823746  19   119
      ---------------
                  137    */
                  

