//
//Copyright David Hayes 23 April 1997
//Others may use this code by permission only.
//

var selectedPiece = "wp";
var selectedFenPiece = "P";
var diagramFen = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR";
var Figurine_Folder = "lc", size = 36;
var shade = new Array();
var contentsOf = new Array();
var today = new Date();
var expiresInOneYear = new Date(today.getTime() + 365 * 24 * 60 * 60 * 1000);
contentsOf[8] = new Array("r","n","b","q","k","b","n","r");
contentsOf[7] = new Array("p","p","p","p","p","p","p","p");
contentsOf[6] = new Array("s","s","s","s","s","s","s","s");
contentsOf[5] = new Array("s","s","s","s","s","s","s","s");
contentsOf[4] = new Array("s","s","s","s","s","s","s","s");
contentsOf[3] = new Array("s","s","s","s","s","s","s","s");
contentsOf[2] = new Array("P","P","P","P","P","P","P","P");
contentsOf[1] = new Array("R","N","B","Q","K","B","N","R");

function getCookieVal (offset) {
 var endstr = document.cookie.indexOf (";", offset);
 if (endstr == -1) {
  endstr = document.cookie.length;
 }
 return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie (name) {
 var arg = name + "=";
 var alen = arg.length;
 var clen = document.cookie.length;
 var i = 0;
 while (i < clen) {
  var j = i + alen;
  if (document.cookie.substring(i, j) == arg) {
   return getCookieVal (j);
   }
  i = document.cookie.indexOf(" ", i) + 1;
  if (i == 0) break; 
  }
 return null;
}

function SetCookie (name,value,expires,path,domain,secure) {
 document.cookie = name + "=" + escape (value) +
  ((expires) ? "; expires=" + expires.toGMTString() : "") +
  ((path) ? "; path=" + path : "") +
  ((domain) ? "; domain=" + domain : "") +
  ((secure) ? "; secure" : "");
}

function InstantiateBoard(){
 shade = new Array();
 square = 0;
 for (var row = 0; row < 8; row++){
  for (var col = 0; col < 8; col++){
   if ((row + col) % 2 != 0){
    shade[square] = "d.jpg";
    square++;
   } else {
    shade[square] = "l.jpg";
    square++;
   }
  }
 }
 if (GetCookie('Board_Size') == null) {
  SetCookie('Board_Size', '' + size + '', expiresInOneYear);
 } else {
  size = GetCookie('Board_Size');
 }
 var dataURL = "/common/xml/" + top.name + ".xml";
 Hide_Size_Controls()
 Display_Diagram(diagramFen);
}

function Change_Figurine_Style(Figurine_Folder_Selection) {
 Figurine_Folder = Figurine_Folder_Selection;
 document.getElementById("activePiece").innerHTML = '<IMG src="/common/figurines/' + Figurine_Folder + '/' + selectedPiece + 'l.jpg' + '" height="' + size + '" width="' + size + '">';
 Display_Diagram(diagramFen);
}

function IncrementalResize(button) {
 if (button.value == "+") {
  size++;
 }
 if (button.value == "-") {
  size--;
 }
 if (size > 72) {
  size = 72;
 }
 if (size < 18) {
  size = 18;
 }
 Display_Diagram(diagramFen);
}

function Reveal_Size_Controls() {
 document.getElementById("Sizing").innerHTML = '<font class="darkonlight">\n<a class="darkonlight" href="javascript:Hide_Size_Controls()">Save and Hide Size Controls</A>\n<br><br><font class="darkonlight">\n<form>\n<input type="button" value="+" onclick="IncrementalResize(this)">\n<input type="button" value="-" onclick="IncrementalResize(this)">\n<br></form>';
}

function Hide_Size_Controls() {
 document.getElementById("Sizing").innerHTML = '<a class="darkonlight" href="javascript:Reveal_Size_Controls()">Resize Board</A><br><br>';
 SetCookie('Board_Size', '' + size + '', expiresInOneYear);
}

function Process_White_Piece_Selection(button) {
 if (button.value == "King") {
  selectedPiece = "wk";
  selectedFenPiece = "K";
 }
 if (button.value == "Queen") {
  selectedPiece = "wq";
  selectedFenPiece = "Q";
 }
 if (button.value == "Rook") {
  selectedPiece = "wr";
  selectedFenPiece = "R";
 }
 if (button.value == "Bishop") {
  selectedPiece = "wb";
  selectedFenPiece = "B";
 }
 if (button.value == "Knight") {
  selectedPiece = "wn";
  selectedFenPiece = "N";
 }
 if (button.value == "Pawn") {
  selectedPiece = "wp";
  selectedFenPiece = "P";
 }
 document.getElementById("activePiece").innerHTML = '<IMG src="file:///C:/Users/Dave/Documents/LogicalChess Web Site/logicalchess.com/common/figurines/' + Figurine_Folder + '/' + selectedPiece + 'l.jpg' + '" height="' + size + '" width="' + size + '">';
}

function Process_Black_Piece_Selection(button) {
 if (button.value == "King") {
  selectedPiece = "bk";
  selectedFenPiece = "k";
 }
 if (button.value == "Queen") {
  selectedPiece = "bq";
  selectedFenPiece = "q";
 }
 if (button.value == "Rook") {
  selectedPiece = "br";
  selectedFenPiece = "r";
 }
 if (button.value == "Bishop") {
  selectedPiece = "bb";
  selectedFenPiece = "b";
 }
 if (button.value == "Knight") {
  selectedPiece = "bn";
  selectedFenPiece = "n";
 }
 if (button.value == "Pawn") {
  selectedPiece = "bp";
  selectedFenPiece = "p";
 }
 document.getElementById("activePiece").innerHTML = '<IMG src="file:///C:/Users/Dave/Documents/LogicalChess Web Site/logicalchess.com/common/figurines/' + Figurine_Folder + '/' + selectedPiece + 'l.jpg' + '" height="' + size + '" width="' + size + '">';
}

function Setup_Diagram(button) {
 var spaceCount = 0;
 if (button.value == "Clear Diagram") {
  diagramFen = "8/8/8/8/8/8/8/8";
 }
 if (button.value == "Initial Position") {
  diagramFen = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR";
 }
 document.getElementById("textBoxFen").innerHTML = '<INPUT TYPE="text" NAME="formFen" size="55" maxlength="80" VALUE="' + diagramFen + '">';
 Display_Diagram(diagramFen);
}

function Process_Place_Selection(here) {
 var spaceCount = 0;
 var row = parseInt(here.toString().substring(0,1));
 var col = parseInt(here.toString().substring(1,2));
 var diagramFen = "";
 var togglePiece = selectedPiece;
 var toggleFenPiece = selectedFenPiece;
 if ((row + col) % 2 != 0) {
  squareColor = "l.jpg"
 } else {
  squareColor = "d.jpg"
 }
 if (selectedFenPiece == contentsOf[row][col]) {
  togglePiece = "s";
  toggleFenPiece = "s";
 }
 content = '<a href="javascript:Process_Place_Selection(\'' + here + '\')" onMouseOver="window.status=\'Click on any square to place or remove a piece.\'; return true"><img src="file:///C:/Users/Dave/Documents/LogicalChess Web Site/logicalchess.com/common/figurines/' + Figurine_Folder + '/' + togglePiece + squareColor + '" border="0" height="' + size + '" width="' + size + '"></a>';
 contentsOf[row][col] = toggleFenPiece;
 document.getElementById(here).innerHTML = content;
 for (row = 8; row > 0; row--) {
  for (col = 1; col < 9; col++) {
   if (contentsOf[row][col] == "s") {
    spaceCount = 0;
    while (contentsOf[row][col] == "s" && col < 9) {
     spaceCount++;
     col++; 
    }
   col--;
   diagramFen = diagramFen + spaceCount;
   continue;
   }
   diagramFen = diagramFen + contentsOf[row][col];
  }
  diagramFen = diagramFen + "/";
 }
 diagramFen = diagramFen.substring(0, diagramFen.length - 1);
 document.getElementById("textBoxFen").innerHTML = '<INPUT TYPE="text" NAME="formFen" size="55" maxlength="80" VALUE="' + diagramFen + '">';
}

function Process_Form_Fen(form_data) {
 var fen = form_data.formFen.value;
 Display_Diagram(fen);
}

function Display_Diagram(Forsythe_Notation) {
 var piece = new Array();
 var square = 0;
 var row = 8;
 var col = 1;
 for (index = 0; index < Forsythe_Notation.length; index++){
  current_char = Forsythe_Notation.charAt(index)
  rowcol = row * 10 + col;
  if (current_char == "/"){
   row--
   col = 1;
   continue;
  }
  if (current_char == "p"){
   piece[square] = "bp";
   content = '<a href="javascript:Process_Place_Selection(\'' + rowcol + '\')" onMouseOver="window.status=\'Click on any square to place or remove a piece.\'; return true"><img src="file:///C:/Users/Dave/Documents/LogicalChess Web Site/logicalchess.com/common/figurines/' + Figurine_Folder + '/' + piece[square] + shade[square] + '" border="0" height="' + size + '" width="' + size + '"></a>';
   document.getElementById(rowcol).innerHTML = content;
   square++;
   col++;
   contentsOf[row][col] = "p";
   continue;
  }
  if (current_char == "P"){
   piece[square] = "wp";
   content = '<a href="javascript:Process_Place_Selection(\'' + rowcol + '\')" onMouseOver="window.status=\'Click on any square to place or remove a piece.\'; return true"><img src="file:///C:/Users/Dave/Documents/LogicalChess Web Site/logicalchess.com/common/figurines/' + Figurine_Folder + '/' + piece[square] + shade[square] + '" border="0" height="' + size + '" width="' + size + '"></a>';
   document.getElementById(rowcol).innerHTML = content;
   contentsOf[row][col] = "P";
   square++;
   col++;
   continue;
  }
  if (current_char == "n"){
   piece[square] = "bn";
   content = '<a href="javascript:Process_Place_Selection(\'' + rowcol + '\')" onMouseOver="window.status=\'Click on any square to place or remove a piece.\'; return true"><img src="file:///C:/Users/Dave/Documents/LogicalChess Web Site/logicalchess.com/common/figurines/' + Figurine_Folder + '/' + piece[square] + shade[square] + '" border="0" height="' + size + '" width="' + size + '"></a>';
   document.getElementById(rowcol).innerHTML = content;
   contentsOf[row][col] = "n";
   square++;
   col++;
   continue;
  }
  if (current_char == "N"){
   piece[square] = "wn";
   content = '<a href="javascript:Process_Place_Selection(\'' + rowcol + '\')" onMouseOver="window.status=\'Click on any square to place or remove a piece.\'; return true"><img src="file:///C:/Users/Dave/Documents/LogicalChess Web Site/logicalchess.com/common/figurines/' + Figurine_Folder + '/' + piece[square] + shade[square] + '" border="0" height="' + size + '" width="' + size + '"></a>';
   document.getElementById(rowcol).innerHTML = content;
   contentsOf[row][col] = "N";
   square++;
   col++;
   continue;
  }
  if (current_char == "b"){
   piece[square] = "bb";
   content = '<a href="javascript:Process_Place_Selection(\'' + rowcol + '\')" onMouseOver="window.status=\'Click on any square to place or remove a piece.\'; return true"><img src="file:///C:/Users/Dave/Documents/LogicalChess Web Site/logicalchess.com/common/figurines/' + Figurine_Folder + '/' + piece[square] + shade[square] + '" border="0" height="' + size + '" width="' + size + '"></a>';
   document.getElementById(rowcol).innerHTML = content;
   contentsOf[row][col] = "b";
   square++;
   col++;
   continue;
  }
  if (current_char == "B"){
   piece[square] = "wb";
   content = '<a href="javascript:Process_Place_Selection(\'' + rowcol + '\')" onMouseOver="window.status=\'Click on any square to place or remove a piece.\'; return true"><img src="file:///C:/Users/Dave/Documents/LogicalChess Web Site/logicalchess.com/common/figurines/' + Figurine_Folder + '/' + piece[square] + shade[square] + '" border="0" height="' + size + '" width="' + size + '"></a>';
   document.getElementById(rowcol).innerHTML = content;
   contentsOf[row][col] = "B";
   square++;
   col++;
   continue;
  }
  if (current_char == "r"){
   piece[square] = "br";
   content = '<a href="javascript:Process_Place_Selection(\'' + rowcol + '\')" onMouseOver="window.status=\'Click on any square to place or remove a piece.\'; return true"><img src="file:///C:/Users/Dave/Documents/LogicalChess Web Site/logicalchess.com/common/figurines/' + Figurine_Folder + '/' + piece[square] + shade[square] + '" border="0" height="' + size + '" width="' + size + '"></a>';
   document.getElementById(rowcol).innerHTML = content;
   contentsOf[row][col] = "r";
   square++;
   col++;
   continue;
  }
  if (current_char == "R"){
   piece[square] = "wr";
   content = '<a href="javascript:Process_Place_Selection(\'' + rowcol + '\')" onMouseOver="window.status=\'Click on any square to place or remove a piece.\'; return true"><img src="file:///C:/Users/Dave/Documents/LogicalChess Web Site/logicalchess.com/common/figurines/' + Figurine_Folder + '/' + piece[square] + shade[square] + '" border="0" height="' + size + '" width="' + size + '"></a>';
   document.getElementById(rowcol).innerHTML = content;
   contentsOf[row][col] = "R";
   square++;
   col++;
   continue;
  }
  if (current_char == "k"){
   piece[square] = "bk";
   content = '<a href="javascript:Process_Place_Selection(\'' + rowcol + '\')" onMouseOver="window.status=\'Click on any square to place or remove a piece.\'; return true"><img src="file:///C:/Users/Dave/Documents/LogicalChess Web Site/logicalchess.com/common/figurines/' + Figurine_Folder + '/' + piece[square] + shade[square] + '" border="0" height="' + size + '" width="' + size + '"></a>';
   document.getElementById(rowcol).innerHTML = content;
   contentsOf[row][col] = "k";
   square++;
   col++;
   continue;
  }
  if (current_char == "K"){
   piece[square] = "wk";
   content = '<a href="javascript:Process_Place_Selection(\'' + rowcol + '\')" onMouseOver="window.status=\'Click on any square to place or remove a piece.\'; return true"><img src="file:///C:/Users/Dave/Documents/LogicalChess Web Site/logicalchess.com/common/figurines/' + Figurine_Folder + '/' + piece[square] + shade[square] + '" border="0" height="' + size + '" width="' + size + '"></a>';
   document.getElementById(rowcol).innerHTML = content;
   contentsOf[row][col] = "K";
   square++;
   col++;
   continue;
  }
  if (current_char == "q"){
   piece[square] = "bq";
   content = '<a href="javascript:Process_Place_Selection(\'' + rowcol + '\')" onMouseOver="window.status=\'Click on any square to place or remove a piece.\'; return true"><img src="file:///C:/Users/Dave/Documents/LogicalChess Web Site/logicalchess.com/common/figurines/' + Figurine_Folder + '/' + piece[square] + shade[square] + '" border="0" height="' + size + '" width="' + size + '"></a>';
   document.getElementById(rowcol).innerHTML = content;
   contentsOf[row][col] = "q";
   square++;
   col++;
   continue;
  }
  if (current_char == "Q"){
   piece[square] = "wq";
   content = '<a href="javascript:Process_Place_Selection(\'' + rowcol + '\')" onMouseOver="window.status=\'Click on any square to place or remove a piece.\'; return true"><img src="file:///C:/Users/Dave/Documents/LogicalChess Web Site/logicalchess.com/common/figurines/' + Figurine_Folder + '/' + piece[square] + shade[square] + '" border="0" height="' + size + '" width="' + size + '"></a>';
   document.getElementById(rowcol).innerHTML = content;
   contentsOf[row][col] = "Q";
   square++;
   col++;
   continue;
  }
  num_of_empty_squares = parseInt(current_char)
  for (num = 0; num < num_of_empty_squares; num++){
   piece[square] = "s";
   rowcol = row * 10 + col;
   content = '<a href="javascript:Process_Place_Selection(\'' + rowcol + '\')" onMouseOver="window.status=\'Click on any square to place or remove a piece.\'; return true"><img src="file:///C:/Users/Dave/Documents/LogicalChess Web Site/logicalchess.com/common/figurines/' + Figurine_Folder + '/' + piece[square] + shade[square] + '" border="0" height="' + size + '" width="' + size + '"></a>';
   document.getElementById(rowcol).innerHTML = content;
   contentsOf[row][col] = "s";
   square++;
   col++;
  }
 }
}
