
var piecegif = new Array();
var piecealt = new Array();
var square = new Array();
var state = new Array();


piecegif[1] = new Image();
piecegif[1].src = "brook.gif";
piecealt[1] = "black queen's rook";
piecegif[2] = new Image();
piecegif[2].src = "bqknight.gif";
piecealt[2] = "black queen's knight";
piecegif[3] = new Image();
piecegif[3].src = "bbishop.gif";
piecealt[3] = "black queen's bishop";
piecegif[4] = new Image();
piecegif[4].src = "bqueen.gif";
piecealt[4] = "black queen";
piecegif[5] = new Image();
piecegif[5].src = "bking.gif";
piecealt[5] = "black king";
piecegif[6] = new Image();
piecegif[6].src = "bbishop.gif";
piecealt[6] = "black kings' bishop";
piecegif[7] = new Image();
piecegif[7].src = "bkknight.gif";
piecealt[7] = "black king's bishop";
piecegif[8] = new Image();
piecegif[8].src = "brook.gif";
piecealt[8] = "black king's rook";
piecegif[9] = new Image();
piecegif[9].src = "bpawn.gif";
piecealt[9] = "black pawn";
piecegif[10] = new Image();
piecegif[10].src = "bpawn.gif";
piecealt[10] = "black pawn";
piecegif[11] = new Image();
piecegif[11].src = "bpawn.gif";
piecealt[11] = "black pawn";
piecegif[12] = new Image();
piecegif[12].src = "bpawn.gif";
piecealt[12] = "black pawn";
piecegif[13] = new Image();
piecegif[13].src = "bpawn.gif";
piecealt[13] = "black pawn";
piecegif[14] = new Image();
piecegif[14].src = "bpawn.gif";
piecealt[14] = "black pawn";
piecegif[15] = new Image();
piecegif[15].src = "bpawn.gif";
piecealt[15] = "black pawn";
piecegif[16] = new Image();
piecegif[16].src = "bpawn.gif";
piecealt[16] = "black pawn";
piecegif[17] = new Image();
piecegif[17].src = "wrook.gif";
piecealt[17] = "white queen's rook";
piecegif[18] = new Image();
piecegif[18].src = "wqknight.gif";
piecealt[18] = "white queen's knight";
piecegif[19] = new Image();
piecegif[19].src = "wbishop.gif";
piecealt[19] = "white queen's bishop";
piecegif[20] = new Image();
piecegif[20].src = "wqueen.gif";
piecealt[20] = "white queen";
piecegif[21] = new Image();
piecegif[21].src = "wking.gif";
piecealt[21] = "wlack king";
piecegif[22] = new Image();
piecegif[22].src = "wbishop.gif";
piecealt[22] = "white kings' bishop";
piecegif[23] = new Image();
piecegif[23].src = "wkknight.gif";
piecealt[23] = "white king's knight";
piecegif[24] = new Image();
piecegif[24].src = "wrook.gif";
piecealt[24] = "white king's rook";
piecegif[25] = new Image();
piecegif[25].src = "wpawn.gif";
piecealt[25] = "white pawn";
piecegif[26] = new Image();
piecegif[26].src = "wpawn.gif";
piecealt[26] = "white pawn";
piecegif[27] = new Image();
piecegif[27].src = "wpawn.gif";
piecealt[27] = "white pawn";
piecegif[28] = new Image();
piecegif[28].src = "wpawn.gif";
piecealt[28] = "white pawn";
piecegif[29] = new Image();
piecegif[29].src = "wpawn.gif";
piecealt[29] = "white pawn";
piecegif[30] = new Image();
piecegif[30].src = "wpawn.gif";
piecealt[30] = "white pawn";
piecegif[31] = new Image();
piecegif[31].src = "wpawn.gif";
piecealt[31] = "white pawn";
piecegif[32] = new Image();
piecegif[32].src = "wpawn.gif";
piecealt[32] = "white pawn";
piecegif[33] = new Image();
piecegif[33].src = "blank.gif";
piecealt[33] = "";

var rpawn = new Image();
rpawn.src = "rpawn.gif";
var rrook = new Image();
rrook.src = "rrook.gif";
var rkknight = new Image();
rkknight.src = "rkknight.gif";
var rqknight = new Image();
rqknight.src = "rqknight.gif";
var rbishop = new Image();
rbishop.src = "rbishop.gif";
var rking = new Image();
rking.src = "rking.gif";
var rqueen = new Image();
rqueen.src = "rqueen.gif";


square[1] = 'a1';
square[2] = 'b1';
square[3] = 'c1';
square[4] = 'd1';
square[5] = 'e1';
square[6] = 'f1';
square[7] = 'g1';
square[8] = 'h1';
square[9] = 'a2';
square[10] = 'b2';
square[11] = 'c2';
square[12] = 'd2';
square[13] = 'e2';
square[14] = 'f2';
square[15] = 'g2';
square[16] = 'h2';
square[17] = 'a3';
square[18] = 'b3';
square[19] = 'c3';
square[20] = 'd3';
square[21] = 'e3';
square[22] = 'f3';
square[23] = 'g3';
square[24] = 'h3';
square[25] = 'a4';
square[26] = 'b4';
square[27] = 'c4';
square[28] = 'd4';
square[29] = 'e4';
square[30] = 'f4';
square[31] = 'g4';
square[32] = 'h4';
square[33] = 'a5';
square[34] = 'b5';
square[35] = 'c5';
square[36] = 'd5';
square[37] = 'e5';
square[38] = 'f5';
square[39] = 'g5';
square[40] = 'h5';
square[41] = 'a6';
square[42] = 'b6';
square[43] = 'c6';
square[44] = 'd6';
square[45] = 'e6';
square[46] = 'f6';
square[47] = 'g6';
square[48] = 'h6';
square[49] = 'a7';
square[50] = 'b7';
square[51] = 'c7';
square[52] = 'd7';
square[53] = 'e7';
square[54] = 'f7';
square[55] = 'g7';
square[56] = 'h7';
square[57] = 'a8';
square[58] = 'b8';
square[59] = 'c8';
square[60] = 'd8';
square[61] = 'e8';
square[62] = 'f8';
square[63] = 'g8';
square[64] = 'h8';

// squares 65 through 96 are the 'bullpen' areas off the left and right of the board
square[65] = 'bullpen1';
square[66] = 'bullpen2';
square[67] = 'bullpen3';
square[68] = 'bullpen4';
square[69] = 'bullpen5';
square[70] = 'bullpen6';
square[71] = 'bullpen7';
square[72] = 'bullpen8';
square[73] = 'bullpen9';
square[74] = 'bullpen10';
square[75] = 'bullpen11';
square[76] = 'bullpen12';
square[77] = 'bullpen13';
square[78] = 'bullpen14';
square[79] = 'bullpen15';
square[80] = 'bullpen16';
square[81] = 'bullpen17';
square[82] = 'bullpen18';
square[83] = 'bullpen19';
square[84] = 'bullpen20';
square[85] = 'bullpen21';
square[86] = 'bullpen22';
square[87] = 'bullpen23';
square[88] = 'bullpen24';
square[89] = 'bullpen25';
square[90] = 'bullpen26';
square[91] = 'bullpen27';
square[92] = 'bullpen28';
square[93] = 'bullpen29';
square[94] = 'bullpen30';
square[95] = 'bullpen31';
square[96] = 'bullpen32';

state[1] = 17;
state[2] = 18;
state[3] = 19;
state[4] = 20;
state[5] = 21;
state[6] = 22;
state[7] = 23;
state[8] = 24;
state[9] = 25;
state[10] = 26;
state[11] = 27;
state[12] = 28;
state[13] = 29;
state[14] = 30;
state[15] = 31;
state[16] = 32;
state[17] = 33;
state[18] = 33;
state[19] = 33;
state[20] = 33;
state[21] = 33;
state[22] = 33;
state[23] = 33;
state[24] = 33;
state[25] = 33;
state[26] = 33;
state[27] = 33;
state[28] = 33;
state[29] = 33;
state[30] = 33;
state[31] = 33;
state[32] = 33;
state[33] = 33;
state[34] = 33;
state[35] = 33;
state[36] = 33;
state[37] = 33;
state[38] = 33;
state[39] = 33;
state[40] = 33;
state[41] = 33;
state[42] = 33;
state[43] = 33;
state[44] = 33;
state[45] = 33;
state[46] = 33;
state[47] = 33;
state[48] = 33;
state[49] = 9;
state[50] = 10;
state[51] = 11;
state[52] = 12;
state[53] = 13;
state[54] = 14;
state[55] = 15;
state[56] = 16;
state[57] = 1;
state[58] = 2;
state[59] = 3;
state[60] = 4;
state[61] = 5;
state[62] = 6;
state[63] = 7;
state[64] = 8;

state[65] = 33;
state[66] = 33;
state[67] = 33;
state[68] = 33;
state[69] = 33;
state[70] = 33;
state[71] = 33;
state[72] = 33;
state[73] = 33;
state[74] = 33;
state[75] = 33;
state[76] = 33;
state[77] = 33;
state[78] = 33;
state[79] = 33;
state[80] = 33;
state[81] = 33;
state[82] = 33;
state[83] = 33;
state[84] = 33;
state[85] = 33;
state[86] = 33;
state[87] = 33;
state[88] = 33;
state[89] = 33;
state[90] = 33;
state[91] = 33;
state[92] = 33;
state[93] = 33;
state[94] = 33;
state[95] = 33;
state[96] = 33;

var moving = 0;
var turn = 'white';


function move(hotsquare) {
  clearStatus();
  var squarenum = getSquareNum(hotsquare);
 // alert ('You clicked on ' + squarenum + ' ! moving='+moving);

  if (state[squarenum] != 33 && moving == 0 &&
   (turn == 'white' && state[squarenum] < 17
   || turn == 'black' && state[squarenum] > 16)) {
    showStatus ("It's " + turn + "'s turn...");
    return;
  }
  if (moving == squarenum || (moving == 0 && state[squarenum] == 33)) {
    moving = 0;
    updateBoard();
  } else if (moving != 0) {
    if (state[squarenum] != 33) {
      var bullpen = state[squarenum] + 64;
      state[bullpen] = state[squarenum];
    }
    state[squarenum] = state[moving];
    state[moving] = 33;
    moving = 0;
//    this.style.cursor = 'default';
    updateBoard();
    if (turn == 'white') {
      turn = 'black';
    } else {
      turn = 'white';
    }
  } else {
    moving = squarenum;
    var imgname = square[squarenum];
    document.images[imgname].src = getRedGif(state[squarenum]);
    
//    this.style.cursor = 'move';
  }
}

function updateBoard() {
  var i = 1;
  while (state[i]) {
    var j = state[i];
    var imgname = square[i];
    document.images[imgname].src = piecegif[j].src;
    document.images[imgname].alt = piecealt[j];
//    alert('i='+i+' j='+j+' imgname='+imgname+' gif='+piecegif[j]+' alt='+piecealt[j]);
    i++;
  }
}

function getSquareNum(asquare) {
// Must do this because of stupid way I numbered board...
// Players' computers will suffer and labor because of my lack of foresight!
// Curses!
  var i = 1;
  var answer = 0;
  while (square[i] && answer == 0) { // blood, toil, tears and sweat...
    if (square[i] == asquare) {
      answer = i;
    }
    i++;
  }
  return answer;
}

function getRedGif(n) {


  if ((n < 33 && n > 24) || (n < 17 && n > 8)) {
    return rpawn.src;
  } 
  if (n == 24 || n == 17 || n == 8 || n == 1) {
    return rrook.src;
  }
  if (n == 23 || n == 7) {
    return rkknight.src;
  }
  if (n == 18 || n == 2) {
    return rqknight.src;
  }
  if (n == 22 || n == 19 || n == 6 || n == 3) {
    return rbishop.src;
  }
  if (n == 21 || n == 5) {
    return rking.src;
  }
  if (n == 20 || n == 4) {
    return rqueen.src;
  }
  return piecegif[33].src;
}

function clearStatus() {
  showStatus('&nbsp;');
}

function showStatus(text) {
  document.getElementById('statusText').innerHTML=text;
}



// below: unimplemented cursor stuff

var Xpos = 0;
var Ypos = 0;
var isNetscape = navigator.appName=="Netscape";

if (isNetscape) {
  document.captureEvents(Event.MOUSEMOVE);
  document.onMouseMove = MoveHandler;
} else {
  document.onmousemove = MoveHandlerIE;
}

var cursorpic;
//init();

function init() {
alert ('check 0');
  cursorpic = new cursorthing();
alert ('check 1');
  cursorpic.obj.left = cursorpic.X;
  cursorpic.obj.top = cursorpic.Y;
alert ('check 2');
  if (isNetscape) {
    // start right away since they are positioned
    // at 0, 0
    startanimate();
  } else {
    // let dots sit there for a few seconds
    // since they're hiding on the real bullets
    setTimeout("startanimate()", 100);
  }
}

function cursorthing() {
  this.X = Xpos;
  this.Y = Ypos;
  this.dx = 0;
  this.dy = 0;
  if (isNetscape) {	
      this.obj = eval("document.cursorpic");
  } else {
      this.obj = eval("cursorpic.style");
  }
}

// just save mouse position for animate() to use
function MoveHandler(e)
{
    Xpos = e.pageX;
    Ypos = e.pageY;	  
    return true;
}

// just save mouse position for animate() to use
function MoveHandlerIE() {
    Xpos = window.event.x + document.body.scrollLeft;
    Ypos = window.event.y + document.body.scrollTop;	  
}

function animate() {
  dots[0].X = Xpos;
  dots[0].Y = Ypos;	
}

function startanimate() {	
    setInterval("animate()", 20);
}


function vec(X, Y)
{
    this.X = X;
    this.Y = Y;
}
