var color="white";
var cell_height=40;
var cell_width=40;
var name_id;

var white_king=new Image();
white_king.src="grafika/sach/kingW.gif";
var white_queen=new Image();
white_queen.src="grafika/sach/queenW.gif";
var white_rook=new Image();
white_rook.src="grafika/sach/rookW.gif";
var white_bishop=new Image();
white_bishop.src="grafika/sach/bishopW.gif";
var white_knight=new Image();
white_knight.src="grafika/sach/knightW.gif";
var white_pawn=new Image();
white_pawn.src="grafika/sach/pawnW.gif";

var black_king=new Image();
black_king.src="grafika/sach/kingB.gif";
var black_queen=new Image();
black_queen.src="grafika/sach/queenB.gif";
var black_rook=new Image();
black_rook.src="grafika/sach/rookB.gif";
var black_bishop=new Image();
black_bishop.src="grafika/sach/bishopB.gif";
var black_knight=new Image();
black_knight.src="grafika/sach/knightB.gif";
var black_pawn=new Image();
black_pawn.src="grafika/sach/pawnB.gif";
var blank_=new Image();
blank_.src="grafika/sach/blank.gif";

var txt;
var datasplit;
var playercolor;
var matemove;
var count_sel=0;
var swapboard=true; // true=biely dole, false=cierny dole
var variationtxt='rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR';

function ShowBoard(FEN_text)
{
 for (i=1;i<9;i++)
  {for(j=1;j<9;j++)
   {txt=IntToChar(i)+j;
    document.images[txt].src=blank_.src;
   }
  }
 TextToDiagram(FEN_txt);
 InitBoard();
 return true;
}


function DrawBoard(variationtxt)
{txt='';
 txt=txt+"<table border=0 cols=2 cellpadding=0 cellspacing=0><tr><td width=20><table border=0 cellpadding=0 cellspacing=0 cols=1>";
 if(swapboard)
  {for(i=0;i<8;i++)
   {txt=txt+"<tr height="+cell_height+"><td width=15 valign='middle' align='center'>"+(8-i)+"</td></tr>";
   }
  }
 else
  {for(i=0;i<8;i++)
   {txt=txt+"<tr height="+cell_height+"><td width=15 valign='middle' align='center'>"+(i+1)+"</td></tr>";
   }
  }
 txt=txt+"<tr><td>&nbsp</td></tr></table></td><td><table border=1 cellpadding=0 cellspacing=0 cols=1>";
 txt=txt+"<tr><td><table border=0 cellpadding=0 cellspacing=0 cols=9>";
 for(i=0;i<8;i++)
 {txt=txt+"<tr height="+cell_height+">";
  for(j=0;j<8;j++)
  {if(swapboard)
   {name_id=IntToChar(j+1)+(8-i);
   }
   else
   {name_id=IntToChar(8-j)+(i+1);
   }
   txt=txt+"<td width="+cell_width+" bgcolor="+color+"><img src='' name='"+name_id+"' border=0></td>";
   if(color=="white") color="gray";
   else color="white";
  }
  if(color=="white") color="gray";
  else color="white";
  txt=txt+"</tr>";
 }
 txt=txt+"</table></td></tr></table>"; // koniec sachovnice
 txt=txt+"<table border=0 cellpadding=0 cellspacing=0 cols=1><tr align='center'><td>";
 txt=txt+"<table border=0 cellpadding=0 cellspacing=0 cols=1><tr align='center'>";
 if(swapboard)
  {for(i=0;i<8;i++)
   {txt=txt+"<td width="+cell_width+">"+IntToChar(i+1)+"</td>";
   }
  }
 else
  {for(i=0;i<8;i++)
   {txt=txt+"<td width="+cell_width+">"+IntToChar(8-i)+"</td>";
   }
  }
 txt=txt+"</td></tr></table></tr></table></td></tr></table>";


 board1=document.getElementById('board');board1.innerHTML=txt; 

 for(i=1;i<9;i++)
 {for(j=1;j<9;j++)
  {txt=IntToChar(i)+j;
   document.images[txt].src=blank_.src;
  }
 }
 TextToDiagram(variationtxt);
 InitBoard();
 return true;
}


function ChangeSwapboard()
{if(swapboard) swapboard=false;
 else swapboard=true;
 return true;
}


var W_King=new Array(1);
var W_Queen=new Array(9);
var W_Bishop=new Array(11);
var W_Knight=new Array(11);
var W_Rook=new Array(11);
var W_Pawn=new Array(8);
var B_King=new Array(1);
var B_Queen=new Array(9);
var B_Bishop=new Array(11);
var B_Knight=new Array(11);
var B_Rook=new Array(11);
var B_Pawn=new Array(8);
var w_rook=0;
var b_rook=0;
var w_knight=0;
var b_knight=0;
var w_bishop=0;
var b_bishop=0;
var w_pawn=0;
var b_pawn=0;
var w_queen=0;
var b_queen=0;

var move_from;
var move_to;
var length;
var piece;
var rank;
var file;
var dataFEN;

var begin_num_move = 1;
var actual_color = 'white';


function IntToChar(value)
{
  switch (value) {
    case 1 : return ("a");
    case 2 : return ("b");
    case 3 : return ("c");
    case 4 : return ("d");
    case 5 : return ("e");
    case 6 : return ("f");
    case 7 : return ("g");
    case 8 : return ("h");
    default : return ("NN");
   }
}

function CharToInt(value)
{
  switch (value) {
    case 'a' : return 1;
    case 'b' : return 2;
    case 'c' : return 3;
    case 'd' : return 4;
    case 'e' : return 5;
    case 'f' : return 6;
    case 'g' : return 7;
    case 'h' : return 8;
    default : return 0;
  }
}

function CharToPieceSVK(value)
{
  switch (value) {
    case 'K' : return "king";
    case 'D' : return "queen";
    case 'S' : return "bishop";
    case 'J' : return "knight";
    case 'V' : return "rook";
    default : return "pawn";
  }
}

function CharToPiece(value)
{
  switch (value) {
    case 'K' : return "king";
    case 'Q' : return "queen";
    case 'B' : return "bishop";
    case 'N' : return "knight";
    case 'R' : return "rook";
    default : return "pawn";
  }
}

function ResetBoard()
{
   for (i = 1; i < 9; i++)
    {for (j = 1; j < 9; j++)
      { txt = IntToChar(i)+j;
        document.images[txt].src=blank_;
      }
    }
    document.images['a1'].src=white_rook.src;
    document.images['b1'].src=white_knight.src;
    document.images['c1'].src=white_bishop.src;
    document.images['d1'].src=white_queen.src;
    document.images['e1'].src=white_king.src;
    document.images['f1'].src=white_bishop.src;
    document.images['g1'].src=white_knight.src;
    document.images['h1'].src=white_rook.src;

    document.images['a8'].src=black_rook.src;
    document.images['b8'].src=black_knight.src;
    document.images['c8'].src=black_bishop.src;
    document.images['d8'].src=black_queen.src;
    document.images['e8'].src=black_king.src;
    document.images['f8'].src=black_bishop.src;
    document.images['g8'].src=black_knight.src;
    document.images['h8'].src=black_rook.src;

    document.images['a2'].src=white_pawn.src;
    document.images['b2'].src=white_pawn.src;
    document.images['c2'].src=white_pawn.src;
    document.images['d2'].src=white_pawn.src;
    document.images['e2'].src=white_pawn.src;
    document.images['f2'].src=white_pawn.src;
    document.images['g2'].src=white_pawn.src;
    document.images['h2'].src=white_pawn.src;

    document.images['a7'].src=black_pawn.src;
    document.images['b7'].src=black_pawn.src;
    document.images['c7'].src=black_pawn.src;
    document.images['d7'].src=black_pawn.src;
    document.images['e7'].src=black_pawn.src;
    document.images['f7'].src=black_pawn.src;
    document.images['g7'].src=black_pawn.src;
    document.images['h7'].src=black_pawn.src;
}

function TextToDiagram(textstr)
{
    dataFEN = textstr.split(" ");
    if (dataFEN[1] == 'w') actual_color = 'white';
    else actual_color = 'black';
    begin_num_move = dataFEN[5];

    rank = 8;
    file = 1;

    w_rook = 0;
    b_rook = 0;
    w_knight = 0;
    b_knight = 0;
    w_bishop = 0;
    b_bishop = 0;
    w_pawn = 0;
    b_pawn = 0;
    w_queen = 0;
    b_queen = 0;


    for (i = 0; i < dataFEN[0].length; i++)
     {  if (textstr.charAt(i) == '/')
	 { rank--;
	   file = 1;
	 }
	else
	 { switch (textstr.charAt(i)) {
		case 'R': { W_Rook[w_rook]=IntToChar(file)+rank; w_rook++; file++; break; }
		case 'r': { B_Rook[b_rook]=IntToChar(file)+rank; b_rook++; file++; break; }
		case 'N': { W_Knight[w_knight]=IntToChar(file)+rank; w_knight++; file++; break; }
		case 'n': { B_Knight[b_knight]=IntToChar(file)+rank; b_knight++; file++; break; }
		case 'B': { W_Bishop[w_bishop]=IntToChar(file)+rank; w_bishop++; file++; break; }
		case 'b': { B_Bishop[b_bishop]=IntToChar(file)+rank; b_bishop++; file++; break; }
		case 'Q': { W_Queen[w_queen]=IntToChar(file)+rank; w_queen++; file++; break; }
		case 'q': { B_Queen[b_queen]=IntToChar(file)+rank; b_queen++; file++; break; }
		case 'K': { W_King[0]=IntToChar(file)+rank; file++; break; }
		case 'k': { B_King[0]=IntToChar(file)+rank; file++; break; }
		case 'P': { W_Pawn[w_pawn]=IntToChar(file)+rank; w_pawn++; file++; break; }
		case 'p': { B_Pawn[b_pawn]=IntToChar(file)+rank; b_pawn++; file++; break; }
		case '1': { file++; break; }
		case '2': { file=file+2; break; }
		case '3': { file=file+3; break; }
		case '4': { file=file+4; break; }
		case '5': { file=file+5; break; }
		case '6': { file=file+6; break; }
		case '7': { file=file+7; break; }
		case '8': { file=file+8; break; }
		default : ;
	    }
	 }
     }
}

function InitBoard()
{
    if (W_King[0] != "NN") document.images[W_King].src=white_king.src;
    if (B_King[0] != "NN") document.images[B_King].src=black_king.src;

    for (i = 0; i < w_queen; i++)
     { if (W_Queen[i] != "NN") document.images[W_Queen[i]].src=white_queen.src;
     }
    for (i = 0; i < b_queen; i++)
     { if (B_Queen[i] != "NN") document.images[B_Queen[i]].src=black_queen.src;
     }
    for (i = 0; i < w_bishop; i++)
     { if (W_Bishop[i] != "NN") document.images[W_Bishop[i]].src=white_bishop.src;
     }
    for (i = 0; i < b_bishop; i++)
     { if (B_Bishop[i] != "NN") document.images[B_Bishop[i]].src=black_bishop.src;
     }
    for (i = 0; i < w_knight; i++)
     { if (W_Knight[i] != "NN") document.images[W_Knight[i]].src=white_knight.src;
     }
    for (i = 0; i < b_knight; i++)
     { if (B_Knight[i] != "NN") document.images[B_Knight[i]].src=black_knight.src;
     }
    for (i = 0; i < w_rook; i++)
     { if (W_Rook[i] != "NN") document.images[W_Rook[i]].src=white_rook.src;
     }
    for (i = 0; i < b_rook; i++)
     { if (B_Rook[i] != "NN") document.images[B_Rook[i]].src=black_rook.src;
     }
    for (i = 0; i < w_pawn; i++)
     { if (W_Pawn[i] != "NN") document.images[W_Pawn[i]].src=white_pawn.src;
     }
    for (i = 0; i < b_pawn; i++)
     { if (B_Pawn[i] != "NN") document.images[B_Pawn[i]].src=black_pawn.src;
     }
}

function Move_ext(last_move, move, color)
{
    if (color == 'white') rank = 1;
    else rank = 8;

    if (move == 'O-O')
     { Move_ext('.', 'Ke'+rank+'-g'+rank, color);
       Move_ext('.', 'Rh'+rank+'-f'+rank, color);
     }
    else if (move == 'O-O-O')
     	  { Move_ext('.', 'Ke'+rank+'-c'+rank, color);
       	    Move_ext('.', 'Ra'+rank+'-d'+rank, color);
  	  }
	 else
	  { if ((last_move.charAt(1) == '7') && (last_move.charAt(4) == '5') && (last_move.charAt(3) == move.charAt(3)) && (move.charAt(4) == '6')) // en pasant white
	     { document.images[last_move.charAt(3)+last_move.charAt(4)].src=blank_.src;
	     }
	    if ((last_move.charAt(1) == '2') && (last_move.charAt(4) == '4') && (last_move.charAt(3) == move.charAt(3)) && (move.charAt(4) == '3')) // en pasant black
	     { document.images[last_move.charAt(3)+last_move.charAt(4)].src=blank_.src;
	     }

            if ((move.length > 6) && (move.substr(5, 1) == '='))  // premena pesiaka
             { move_from=move.substr(0, 2);
               move_to=move.substr(3, 2);
               piece=CharToPiece(move.substr(6, 1));
             }
            else
	     { piece=CharToPiece(move.substr(0, 1));
	       if (piece == "pawn")
	        { move_from=move.substr(0, 2);
	          move_to=move.substr(3, 2);
	        }
	       else
	        { move_from=move.substr(1, 2);
	          move_to=move.substr(4, 2);
	        }
             }
	  }
	piece=color+"_"+piece;
	document.images[move_from].src=blank_.src;

    if (piece=="white_king") document.images[move_to].src=white_king.src;
	if (piece=="white_queen") document.images[move_to].src=white_queen.src;
	if (piece=="white_bishop") document.images[move_to].src=white_bishop.src;
	if (piece=="white_knight") document.images[move_to].src=white_knight.src;
	if (piece=="white_rook") document.images[move_to].src=white_rook.src;
	if (piece=="white_pawn") document.images[move_to].src=white_pawn.src;

	if (piece=="black_king") document.images[move_to].src=black_king.src;
	if (piece=="black_queen") document.images[move_to].src=black_queen.src;
	if (piece=="black_bishop") document.images[move_to].src=black_bishop.src;
	if (piece=="black_knight") document.images[move_to].src=black_knight.src;
	if (piece=="black_rook") document.images[move_to].src=black_rook.src;
	if (piece=="black_pawn") document.images[move_to].src=black_pawn.src;
}