<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">Dagaz.Controller.persistense = "setup";

Dagaz.Model.WIDTH         = 5;
Dagaz.Model.HEIGHT        = 6;

(function() {

var getName = function() {
  var str = window.location.pathname.toString();
  var result = str.match(/\/([^.\/]+)\./);
  if (result) {
      return result[1].replace("-board", "").replace("-ai", "").replace("-kanji", "");
  } else {
      return str;
  }
}

var badName = function(str) {
  var result = str.match(/[?&amp;]game=([^&amp;*]*)/);
  if (result) {
      return result[1] != getName();
  } else {
      return true;
  }
}

var getCookie = function() {
  var result = localStorage.getItem('dagaz.setup');
  if (result) {
      if (badName(result)) return "";
      return result;
  } else {
      return "";
  }
}

var getSetup = function(setup) {
  var str = window.location.search.toString();
  if (setup) {
      str = setup;
  }
  var result = str.match(/[?&amp;]setup=([^&amp;]*)/);
  if (result) {
      return result[1];
  } else {
      str = getCookie();
      result = str.match(/[?&amp;]setup=([^&amp;]*)/);
      if (result) {
          return result[1];
      } else {
          return "";
      }
  }
}

var getTurn = function(setup) {
  var str = window.location.search.toString();
  if (setup) {
      str = setup;
  }
  var result = str.match(/[?&amp;]turn=(\d+)/);
  if (result) {
      return result[1];
  } else {
      str = getCookie();
      result = str.match(/[?&amp;]turn=(\d+)/);
      if (result) {
          return result[1];
      } else {
          return "";
      }
  }
}

var createPiece = function(design, c) {
  if (c == 'K') return Dagaz.Model.createPiece(design.getPieceType("King"), 1);
  if (c == 'k') return Dagaz.Model.createPiece(design.getPieceType("King"), 2);
  if (c == 'G') return Dagaz.Model.createPiece(design.getPieceType("Gold"), 1);
  if (c == 'g') return Dagaz.Model.createPiece(design.getPieceType("Gold"), 2);
  if (c == 'S') return Dagaz.Model.createPiece(design.getPieceType("Silver"), 1);
  if (c == 's') return Dagaz.Model.createPiece(design.getPieceType("Silver"), 2);
  if (c == 'E') return Dagaz.Model.createPiece(design.getPieceType("SilverP"), 1);
  if (c == 'e') return Dagaz.Model.createPiece(design.getPieceType("SilverP"), 2);
  if (c == 'B') return Dagaz.Model.createPiece(design.getPieceType("Bishop"), 1);
  if (c == 'b') return Dagaz.Model.createPiece(design.getPieceType("Bishop"), 2);
  if (c == 'H') return Dagaz.Model.createPiece(design.getPieceType("BishopP"), 1);
  if (c == 'h') return Dagaz.Model.createPiece(design.getPieceType("BishopP"), 2);
  if (c == 'R') return Dagaz.Model.createPiece(design.getPieceType("Rook"), 1);
  if (c == 'r') return Dagaz.Model.createPiece(design.getPieceType("Rook"), 2);
  if (c == 'D') return Dagaz.Model.createPiece(design.getPieceType("RookP"), 1);
  if (c == 'd') return Dagaz.Model.createPiece(design.getPieceType("RookP"), 2);
  if (c == 'P') return Dagaz.Model.createPiece(design.getPieceType("Pawn"), 1);
  if (c == 'p') return Dagaz.Model.createPiece(design.getPieceType("Pawn"), 2);
  if (c == 'T') return Dagaz.Model.createPiece(design.getPieceType("PawnP"), 1);
  if (c == 't') return Dagaz.Model.createPiece(design.getPieceType("PawnP"), 2);
  return null;
}

var toBoard = function(pos) {
  var y = (pos / Dagaz.Model.WIDTH) | 0;
  var x = (pos % Dagaz.Model.WIDTH) + 3;
  return y * (Dagaz.Model.WIDTH + 6) + x;
}

var toReserve = function(pos) {
  var y = (pos / 4) | 0;
  var x = pos % 4;
  if (x &gt; 1) x += Dagaz.Model.WIDTH + 2;
  return y * (Dagaz.Model.WIDTH + 6) + x;
}

Dagaz.Model.setup = function(board, init) {
  var design = Dagaz.Model.design;
  var setup  = getSetup(init);
  var player = 1;
  if (setup) {
      board.clear();
      var chunks = setup.split('-');
      var setup = chunks[0];
      var pos = 0; 
      for (var i = 0; i &lt; setup.length; i++) {
           var c = setup[i];
           if (c != '/') {
               if ((c &gt;= '0') &amp;&amp; (c &lt;= '9')) {
                   pos += +c;
               } else {
                   var piece = createPiece(design, c);
                   board.setPiece(toBoard(pos), piece);
                   pos++;
               }
               if (pos &gt;= Dagaz.Model.WIDTH * Dagaz.Model.HEIGHT) break;
           }
      }
      setup = chunks[1]; pos = 0; 
      for (var i = 0; i &lt; setup.length; i++) {
           var c = setup[i];
           if (c != '/') {
               if ((c &gt;= '0') &amp;&amp; (c &lt;= '9')) {
                   pos += +c;
               } else {
                   var piece = createPiece(design, c);
                   board.setPiece(toReserve(pos), piece);
                   pos++;
               }
               if (pos &gt;= 4 * Dagaz.Model.HEIGHT) break;
           }
      }
      var turn = getTurn(init);
      if (turn) {
          board.turn   = +turn;
          board.player = design.currPlayer(board.turn);
      }
  }
}

var getPieceNotation = function(design, piece) {
  var r = 'X';
  if (piece.type == design.getPieceType("King"))    r = 'K';
  if (piece.type == design.getPieceType("Silver"))  r = 'S';
  if (piece.type == design.getPieceType("SilverP")) r = 'E';
  if (piece.type == design.getPieceType("Gold"))    r = 'G';
  if (piece.type == design.getPieceType("Bishop"))  r = 'B';
  if (piece.type == design.getPieceType("BishopP")) r = 'H';
  if (piece.type == design.getPieceType("Rook"))    r = 'R';
  if (piece.type == design.getPieceType("RookP"))   r = 'D';
  if (piece.type == design.getPieceType("Pawn"))    r = 'P';
  if (piece.type == design.getPieceType("PawnP"))   r = 'T';
  if (piece.player &gt; 1) {
      return r.toLowerCase();
  }
  return r;
}

Dagaz.Model.getSetup = function(design, board) {
  var str = "?turn=" + board.turn + ";&amp;setup=";
  var k = 0; var c = 0;
  for (var pos = 0; pos &lt; Dagaz.Model.WIDTH * Dagaz.Model.HEIGHT; pos++) {
       if (k &gt;= Dagaz.Model.WIDTH) {
           if (c &gt; 0) {
               str += c;
           }
           str += "/";
           k = 0;
           c = 0;
       }
       k++;
       if (design.isKilledPos(toBoard(pos))) {
           if (c &gt; 0) {
               str += c;
           }
           c = 0;
           str += 'X';
       } else {
           var piece = board.getPiece(toBoard(pos));
           if (piece === null) {
               if (c &gt; 8) {
                   str += c;
                   c = 0;
               }
               c++;
           } else {
               if (c &gt; 0) {
                   str += c;
               }
               c = 0;
               str += getPieceNotation(design, piece);
           }
       }
  }
  if (c &gt; 0) {
      str += c;
  }
  str += '-';
  k = 0; c = 0;
  for (var pos = 0; pos &lt; 4 * Dagaz.Model.HEIGHT; pos++) {
       if (k &gt;= 4) {
           if (c &gt; 0) {
               str += c;
           }
           str += "/";
           k = 0;
           c = 0;
       }
       k++;
       var piece = board.getPiece(toReserve(pos));
       if (piece === null) {
           if (c &gt; 8) {
               str += c;
               c = 0;
           }
           c++;
       } else {
           if (c &gt; 0) {
               str += c;
           }
           c = 0;
           str += getPieceNotation(design, piece);
       }
  }
  if (c &gt; 0) {
      str += c;
  }
  if (board.turn == 0) {
      str += "-w";
  } else {
      str += "-b";
  }
  if (Dagaz.Controller.persistense == "setup") {
      var s = str + "&amp;game=" + getName() + "*";
      localStorage.setItem('dagaz.setup', s);
  }
  return str;
}

var clearGame = Dagaz.Controller.clearGame;

Dagaz.Controller.clearGame = function() {
   localStorage.setItem('dagaz.setup', '');
   if (!_.isUndefined(clearGame)) {
       clearGame();
   }
}

})();
</pre></body></html>