// epdview 1.2
var bcolor=new Array(2);
bcolor[0]="sqb";   // black board color
bcolor[1]="sqw"; // white
var picts=" bknpqrBKNPQR";
var pict=new Array(13);
pict[0]=new Image(38,38);
pict[0].src="../p/e.gif";
pict[1]=new Image(38,38);
pict[1].src="../p/bb.gif";
pict[2]=new Image(38,38);
pict[2].src="../p/bk.gif";
pict[3]=new Image(38,38);
pict[3].src="../p/bn.gif";
pict[4]=new Image(38,38);
pict[4].src="../p/bp.gif";
pict[5]=new Image(38,38);
pict[5].src="../p/bq.gif";
pict[6]=new Image(38,38);
pict[6].src="../p/br.gif";
pict[7]=new Image(38,38);
pict[7].src="../p/wb.gif";
pict[8]=new Image(38,38);
pict[8].src="../p/wk.gif";
pict[9]=new Image(38,38);
pict[9].src="../p/wn.gif";
pict[10]=new Image(38,38);
pict[10].src="../p/wp.gif";
pict[11]=new Image(38,38);
pict[11].src="../p/wq.gif";
pict[12]=new Image(38,38);
pict[12].src="../p/wr.gif";
var game;
var board;
var board2;

function clearBoard(form)
{ var i,j;
  for (i=7; i>=0; i--)
  { for (j=0; j<8; j++)
    { board[i][j]=" ";
      board2[i][j]="?";
      setPieceImage(i, j);
    }
  }
}


function setBoard(form,in_epd)
{ var i,j,k,l,lng,pos,c;
  var empty=false;
  var epd  =new String(in_epd);
  
  lng = epd.length;
  if ((epd=="") || (lng<15))
  { epd=null;
    alert("ERROR: EPD string is invalid");
    return;
  }

  pos=0;
  i  =7;
  while (i>=0)
  { j = 0;
    while (j<=7)
    { if (pos>=lng) { return; }
      c=epd.charAt(pos);
      pos++;
      if (c=="/")
      { if (j==0) continue;
        break;
      }
      empty = false;
      switch(c)
      { case "K": case "Q": case "R": case "B": case "N": case "P":
        case "k": case "q": case "r": case "b": case "n": case "p":
          board[i][j] = c;
          break;
        case "1": case "2": case "3": case "4":
        case "5": case "6": case "7": case "8":
           k=Number(c);
           if ((j+k) > 8)
           { alert("ERROR: EPD string is invalid");
             clearBoard(form);
             epd  = null;
             return;
           }
           for (l=0; l<k; l++)
             board[i][j+l] = ' ';
           j += k;
           empty = true;
           break;
        default:
           alert(c+" - unexpected in EPD string");
           clearBoard(form);
           epd=null;
           return;
      }      
      if (empty) continue;
      j++;
    }
    i--;
  }
  epd = null;
  for (i=7; i>=0; i--)
  { for (j=0; j<8; j++)
    { if (board2[i][j] != board[i][j])
      { setPieceImage(i,j);
        board2[i][j]=board[i][j];
      }
    }
  }
}
function setGame(form)
{ var i;
  if ((i=form.glist.selectedIndex)==-1) i=0;
  setBoard(form,game[i].epd);
  form.inf.value="Last:   "+game[i].pgn+"    "+game[i].upd;
}

function resetBoard(form)
{ clearBoard(form);
  setGame(form);
}

function makeBoard()
{ var i,j,color;
  var letters = "abcdefgh";
  game  =new gameList();
  board =new Array(8);
  board2=new Array(8);

  for (i=0; i<board.length; i++)
  { board[i] =new Array(8);
    board2[i]=new Array(8);
  }

  for (i=7; i>= 0; i--)
  { for (j=0; j<8; j++)
    { board[i][j] =' ';
      board2[i][j]=' ';
    }
  }

  document.writeln('<table width="330" border="0" cellspacing="0" cellpadding="0">');
  for (i=7; i>=0; i--)
  { document.write('<tr><th>&nbsp;'+(i+1)+'&nbsp;</th>');
    for (j=0; j<8; j++)
    { color= ((i % 2) + j) % 2;
      document.write('<td class="'+bcolor[color]+'">');
      document.write('<img name="cbi_'+i+'_'+j+'" src="'+pict[0].src+'" width="38" height="38" border="0">');
      document.write('</td>');
    }
  }
  document.write('<tr><td>&nbsp;</td>');
  for (i = 0; i <= 7; i++)
    document.write('<th>'+letters.charAt(i)+'</th>');
  document.writeln('</td></tr></table>');
  document.writeln('<form name="frmBoard">');
  document.writeln('<table border="0">');
  document.writeln('<tr><th width="330">');
  document.writeln('<select name="glist" size="1" width="320" onchange="setGame(document.frmBoard)">');
  document.writeln('<option value="0" selected>'+game[0].title+'</option>');
  for (i=1; i<game.length; i++)
    document.writeln('<option value="'+i+'">'+game[i].title+'</OPTION>');
  document.write('</select><br>');
  document.writeln('<input name="inf" size="28" value=" " readonly>');
  document.writeln('<input type="button" value="Redraw" onclick="resetBoard(document.frmBoard)">');
  document.writeln('</th></tr></table></form>');
  resetBoard(document.frmBoard);
}


function setPieceImage(i, j)
{ var n=picts.indexOf(board[i][j]);
  if (n==-1)
  { alert("board building error: piece on square ("+i+","+j+") = "+board[i][j]);
    clearBoard(document.frmBoard);
  }
  else
  {eval("document.cbi_"+i+"_"+j+".src=pict["+n+"].src");}
}

