var max_DEPTH = 4;
var MAX_PLY = 32;
var FEN_STD = 'rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1';

var pc_cod = { 'P':2, 'p':3, 'N':4, 'n':5, 'K':6, 'k':7, 'B':8, 'b':9, 'R':10, 'r':11, 'Q':12, 'q':13 };
var pc_char = [ , , 'P', 'p', 'N', 'n', 'K', 'k', 'B', 'b', 'R', 'r', 'Q', 'q' ];

var offs = { 6: [-17, -16, -15, -1, 1, 15, 16, 17], 12: [-17, -16, -15, -1, 1, 15, 16, 17],
             10: [-16, -1, 1, 16], 8: [-17, -15, 15, 17], 4: [-33, -31, -18, -14, 14, 18, 31, 33] };
var offs_n = [-33, -31, -18, -14, 14, 18, 31, 33];
var offs_k = [-17, -16, -15, -1, 1, 15, 16, 17];
var offs_r = [-16, -1, 1, 16];
var offs_b = [-17, -15, 15, 17];

// piece-square tables, for the static evaluation of the position 

var sPAWN =  [ [   0,   0,   0,   0,   0,  0,   0,    0,  ,,,,,,,,// white (= 0) pawn-square table of static values
                 -10,  -4,   2, -20, -20,  2,  -4,  -10,  ,,,,,,,,// penalty for d/e pawns on their initial squares
                  -8,  -4,   4,   8,   8,  4,  -4,   -8,  ,,,,,,,,// small bonus for standing on a3/h3
                 -12,  -6,   6,  10,  10,  6,  -6,  -12,  ,,,,,,,,// favoring to capture towards the center
                 -12,  -6,   0,   6,   6,  0,  -6,  -12,  ,,,,,,,,
                 -12,  -6,   0,   6,   6,  0,  -6,  -12,  ,,,,,,,,
                 -12,  -6,   0,   6,   6,  0,  -6,  -12,  ,,,,,,,,
                   0,   0,   0,   0,   0,  0,   0,    0  ],
                 
               [   0,   0,   0,   0,   0,  0,   0,    0,   ,,,,,,,, // black (= 1)
                 -12,  -6,   0,   6,   6,  0,  -6,  -12,   ,,,,,,,,
                 -12,  -6,   0,   6,   6,  0,  -6,  -12,   ,,,,,,,,
                 -12,  -6,   0,   6,   6,  0,  -6,  -12,   ,,,,,,,,
                 -12,  -6,   6,  10,  10,  6,  -6,  -12,   ,,,,,,,,
                  -8,  -4,   4,   8,   8,  4,  -4,   -8,   ,,,,,,,,
                 -10,  -4,   2, -20, -20,  2,  -4,  -10,   ,,,,,,,,
                   0,   0,   0,   0,   0,  0,   0,    0  ] ];

var sKnight = [[ -12, -20,  -6,  -6,  -6,  -6, -20, -12,   ,,,,,,,,// white knight-square table of static values
                  -6,   0,   2,   4,   4,   2,   0,  -6,   ,,,,,,,,
                  -6,   2,   6,   6,   6,   6,   2,  -6,   ,,,,,,,,
                  -6,   0,   6,  12,  12,   6,   0,  -6,   ,,,,,,,,
                  -6,   0,   6,  12,  12,   6,   0,  -6,   ,,,,,,,,
                  -6,   0,   6,   6,   6,   6,   0,  -6,   ,,,,,,,,
                  -6,   0,   2,   4,   4,   2,   0,  -6,   ,,,,,,,,
                 -12, -20,  -6,  -6,  -6,  -6, -20, -12  ],

               [ -12,  -6,  -6,  -6,  -6,  -6,  -6, -12,   ,,,,,,,,// black
                  -6,   0,   2,   4,   4,   2,   0,  -6,   ,,,,,,,,
                  -6,   0,   6,   6,   6,   6,   0,  -6,   ,,,,,,,,
                  -6,   0,   6,  12,  12,   6,   0,  -6,   ,,,,,,,,
                  -6,   0,   6,  12,  12,   6,   0,  -6,   ,,,,,,,,
                  -6,   2,   6,   6,   6,   6,   2,  -6,   ,,,,,,,,
                  -6,   0,   2,   4,   4,   2,   0,  -6,   ,,,,,,,,
                 -12, -20,  -6,  -6,  -6,  -6, -20, -12  ] ];

var sBishop = [ [ -8,  -8, -16,  -8,  -8, -16,  -8,  -8,   ,,,,,,,, // white
                  -4,   6,   2,   4,   4,   2,   6,  -4,   ,,,,,,,,
                  -8,   2,   4,   6,   6,   4,   2,  -8,   ,,,,,,,,
                  -8,   2,   6,   8,   8,   6,   2,  -8,   ,,,,,,,,
                  -8,   2,   6,   8,   8,   6,   2,  -8,   ,,,,,,,,
                  -8,   0,   4,   6,   6,   4,   0,  -8,   ,,,,,,,,
                  -8,   0,   0,   4,   4,   0,   0,  -8,   ,,,,,,,,
                  -8,  -8,  -8,  -8,  -8,  -8,  -8,  -8  ],
                  
                [ -8,  -8,  -8,  -8,  -8,  -8,  -8,  -8,   ,,,,,,,, // black
                  -8,   0,   0,   4,   4,   0,   0,  -8,   ,,,,,,,,
                  -8,   0,   4,   6,   6,   4,   0,  -8,   ,,,,,,,,
                  -8,   2,   6,   8,   8,   6,   2,  -8,   ,,,,,,,,
                  -8,   2,   6,   8,   8,   6,   2,  -8,   ,,,,,,,,
                  -8,   2,   4,   6,   6,   4,   2,  -8,   ,,,,,,,,
                  -4,   6,   2,   4,   4,   2,   6,  -4,   ,,,,,,,,
                  -8,  -8, -16,  -8,  -8, -16,  -8,  -8 ] ];

var sRook =   [ [  0,   0,   2,   4,   4,   2,   0,   0,   ,,,,,,,, // white
                  -4,   0,   0,   0,   0,   0,   0,  -4,   ,,,,,,,,
                  -4,   0,   0,   0,   0,   0,   0,  -4,   ,,,,,,,,
                  -4,   0,   0,   0,   0,   0,   0,  -4,   ,,,,,,,,
                  -4,   0,   0,   0,   0,   0,   0,  -4,   ,,,,,,,,
                  -4,   0,   0,   0,   0,   0,   0,  -4,   ,,,,,,,,
                  16,  16,  16,  16,  16,  16,  16,  16,   ,,,,,,,,
                   8,   8,   8,   8,   8,   8,   8,   8  ],

                [  8,   8,   8,   8,   8,   8,   8,   8,   ,,,,,,,, // black
                  16,  16,  16,  16,  16,  16,  16,  16,   ,,,,,,,,
                  -4,   0,   0,   0,   0,   0,   0,  -4,   ,,,,,,,,
                  -4,   0,   0,   0,   0,   0,   0,  -4,   ,,,,,,,,
                  -4,   0,   0,   0,   0,   0,   0,  -4,   ,,,,,,,,
                  -4,   0,   0,   0,   0,   0,   0,  -4,   ,,,,,,,,
                  -4,   0,   0,   0,   0,   0,   0,  -4,   ,,,,,,,,
                   0,   0,   2,   4,   4,   2,   0,   0  ] ];

var sQueen = [ [ 
-4,  -4,  -4,  -4,  -4,  -4,  -4,  -4,  ,,,,,,,,
 0,   0,   2,   2,   2,   2,   0,   0,  ,,,,,,,,
 0,   2,   2,   3,   3,   2,   2,   0,  ,,,,,,,,
 0,   1,   3,   4,   4,   3,   1,   0,  ,,,,,,,,
 0,   1,   3,   4,   4,   3,   1,   0,  ,,,,,,,,
 0,   0,   2,   3,   3,   2,   0,   0,  ,,,,,,,,
 0,   0,   0,   0,   0,   0,   0,   0,  ,,,,,,,,
 0,   0,   0,   0,   0,   0,   0,   0 ],
[
 0,   0,   0,   0,   0,   0,   0,   0,  ,,,,,,,,
 0,   0,   0,   0,   0,   0,   0,   0,  ,,,,,,,,
 0,   0,   2,   3,   3,   2,   0,   0,  ,,,,,,,,
 0,   1,   3,   4,   4,   3,   1,   0,  ,,,,,,,,
 0,   1,   3,   4,   4,   3,   1,   0,  ,,,,,,,,
 0,   2,   2,   3,   3,   2,   2,   0,  ,,,,,,,,
 0,   0,   2,   2,   2,   2,   0,   0,  ,,,,,,,,
-4,  -4,  -4,  -4,  -4,  -4,  -4,  -4 ] ];

var sKing = [ [
 15,  20,  10,  -20, -10,   0,  20,  15, ,,,,,,,,
 15,  15,   5,  -20, -20,   5,  15,  15, ,,,,,,,,
-30, -30, -30,  -30, -30, -30, -30, -30, ,,,,,,,,
-40, -40, -40,  -40, -40, -40, -40, -40, ,,,,,,,,
-50, -50, -50,  -50, -50, -50, -50, -50, ,,,,,,,,
-60, -60, -60,  -60, -60, -60, -60, -60, ,,,,,,,,
-60, -60, -60,  -60, -60, -60, -60, -60, ,,,,,,,,
-60, -60, -60,  -60, -60, -60, -60, -60 ],
[
-60, -60, -60,  -60, -60, -60, -60, -60, ,,,,,,,,
-60, -60, -60,  -60, -60, -60, -60, -60, ,,,,,,,,
-60, -60, -60,  -60, -60, -60, -60, -60, ,,,,,,,,
-50, -50, -50,  -50, -50, -50, -50, -50, ,,,,,,,,
-40, -40, -40,  -40, -40, -40, -40, -40, ,,,,,,,,
-30, -30, -30,  -30, -30, -30, -30, -30, ,,,,,,,,
 15,  15,   5,  -20, -20,   5,  15,  15, ,,,,,,,,
 15,  20,  10,  -20, -10,   0,  20,  15 ] ];  

var sKing_end = [    // both white and black  ENDGAME
-10,  -5,   0,  10,  10,   0,  -5, -10, ,,,,,,,,
 -5,   0,  10,  20,  20,  10,   0,  -5, ,,,,,,,,
  0,  10,  20,  30,  30,  20,  10,   0, ,,,,,,,,
 10,  20,  30,  40,  40,  30,  20,  10, ,,,,,,,,
 10,  20,  30,  40,  40,  30,  20,  10, ,,,,,,,,
  0,  10,  20,  30,  30,  20,  10,   0, ,,,,,,,,
 -5,   0,  10,  20,  20,  10,   0,  -5, ,,,,,,,,
-10,  -5,   0,  10,  10,   0,  -5, -10 ];

var v_piece = [ 0,0,100,100,310,310,4000,4000,325,325,500,500,900,900 ];



/*
var PrV = [
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
];    
var lPrV = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];


int diag_nw[64] = {
   0, 1, 2, 3, 4, 5, 6, 7,
   1, 2, 3, 4, 5, 6, 7, 8,
   2, 3, 4, 5, 6, 7, 8, 9,
   3, 4, 5, 6, 7, 8, 9,10,
   4, 5, 6, 7, 8, 9,10,11,
   5, 6, 7, 8, 9,10,11,12,
   6, 7, 8, 9,10,11,12,13,
   7, 8, 9,10,11,12,13,14
};
 
int diag_ne[64] = {
   7, 6, 5, 4, 3, 2, 1, 0,
   8, 7, 6, 5, 4, 3, 2, 1,
   9, 8, 7, 6, 5, 4, 3, 2,
  10, 9, 8, 7, 6, 5, 4, 3,
  11,10, 9, 8, 7, 6, 5, 4,
  12,11,10, 9, 8, 7, 6, 5,
  13,12,11,10, 9, 8, 7, 6,
  14,13,12,11,10, 9, 8, 7
};
*/ 
//int bonus_dia_distance[14] = {5, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
/*
but then again, you don't need diag_ne and diag_nw
abs(diag_ne[i] - diag_ne[j]) = abs(col(i) - col(j) - row(i) + row(j)) and
abs(diag_nw[i] - diag_nw[j]) = abs(col(i) - col(j) + row(i) - row(j))
 */
 
/* initializes the table of distances between squares */
/*void setDist() {
   int i,j;
 
   // basic distance table used to generate separate tables for pieces 
   for (i = 0; i < 64; ++i) {
      for (j = 0; j < 64; ++j) {
         dist_bonus[i][j] = 14 - ( abs( COL(i) - COL(j) ) + abs( ROW(i) - ROW(j) ) );
 
         qk_dist[i][j]  = (dist_bonus[i][j] * 5) / 2;
         rk_dist[i][j]  =  dist_bonus[i][j] / 2;
         nk_dist[i][j]  =  dist_bonus[i][j];
         // bk_dist[i][j] takes into account the numbers of the diagonals 
         bk_dist[i][j]  = dist_bonus[i][j] / 2;
         kb_dist[i][j] += bonus_dia_distance[abs(diag_ne[i] - diag_ne[j])];
         kb_dist[i][j] += bonus_dia_distance[abs(diag_nw[i] - diag_nw[j])];
      }
   }
}
*/
//the pawn shield value is computed (I'd like it to be 0 for a complete pawn shield, growing negative as defects accumulate)
// whiteKingSafety = ( (whiteKingShield - tropismToWhiteKing) * blackPieceMaterial ) / INITIAL_PIECE_MATERIAL;
// blackKingSafety = ( (blackKingShield - tropismToBlackKing) * whitePieceMaterial ) / INITIAL_PIECE_MATERIAL;

/*
var ah_88 = {
    'a1': 0,
    'a2': 16,
    'a3': 32,
    'a4': 48,
    'a5': 64,
    'a6': 80,
    'a7': 96,
    'a8': 112,
    'b1': 1,
    'b2': 17,
    'b3': 33,
    'b4': 49,
    'b5': 65,
    'b6': 81,
    'b7': 97,
    'b8': 113,
    'c1': 2,
    'c2': 18,
    'c3': 34,
    'c4': 50,
    'c5': 66,
    'c6': 82,
    'c7': 98,
    'c8': 114,
    'd1': 3,
    'd2': 19,
    'd3': 35,
    'd4': 51,
    'd5': 67,
    'd6': 83,
    'd7': 99,
    'd8': 115,
    'e1': 4,
    'e2': 20,
    'e3': 36,
    'e4': 52,
    'e5': 68,
    'e6': 84,
    'e7': 100,
    'e8': 116,
    'f1': 5,
    'f2': 21,
    'f3': 37,
    'f4': 53,
    'f5': 69,
    'f6': 85,
    'f7': 101,
    'f8': 117,
    'g1': 6,
    'g2': 22,
    'g3': 38,
    'g4': 54,
    'g5': 70,
    'g6': 86,
    'g7': 102,
    'g8': 118,
    'h1': 7,
    'h2': 23,
    'h3': 39,
    'h4': 55,
    'h5': 71,
    'h6': 87,
    'h7': 103,
    'h8': 119
}


// ah_88['g8'] = 118  (setting ah_88)
<script>
var a_h = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'];
var ah_88 = {};
for(var c = 0; c < 8; c++) {
    for(var r = 1; r <= 8; r++) {
        field = a_h[c] + r;
        ah_88[field] = (field.charCodeAt(0) - 97) + 16 * (field.charCodeAt(1) - 49);
    }
}
for(y in ah_88) {
    document.write("'"+y +"': " + ah_88[y] + ",<br>");
}
</script> 

*/
