/*
 *  pgn4web javascript chessboard
 *  copyright (C) 2009-2013 Paolo Casaschi
 *  see README file and http://pgn4web.casaschi.net
 *  for credits, license and more details
 */

"use strict";

function testAllMoves() {
  var ii = 0;
  var start = (new Date()).getTime();
  resetAlert();
  for (var gg = 0; gg < numberOfGames; gg++) {
    Init(gg);
    for (var vv = 0; vv < numberOfVars; vv++) {
      for (var hh = StartPlyVar[vv]; hh <= StartPlyVar[vv] + PlyNumberVar[vv]; hh++) {
        GoToMove(hh, vv);
        if ((++ii % 100) === 0) { console.log("i=" + ii + " g=" + gg + "/" + numberOfGames + " a=" + alertNumSinceReset); }
      }
    }
  }
  console.log("t=" + ((new Date()).getTime() - start) + " a=" + alertNumSinceReset);
  return alertNumSinceReset;
}

function testRandomMoves(nn, pv, pg) {
  var start = (new Date()).getTime();
  resetAlert();
  if (typeof(nn) == "undefined") { nn = numberOfGames * 100; }
  if (typeof(pv) == "undefined") { pv = 0.5; }
  if (typeof(pg) == "undefined") { pg = 0.1; }
  var vv = 0;
  var gg = 0;
  for (var ii = 1; ii <= nn; ii++) {
    if (Math.random() < pg) {
      gg = Math.floor(numberOfGames * Math.random());
      Init(gg);
      vv = 0;
    }
    if (Math.random() < pv) {
      vv = Math.floor(numberOfVars * Math.random());
    }
    var hh = StartPlyVar[vv] + Math.floor((PlyNumberVar[vv] + 1) * Math.random());
    GoToMove(hh, vv);
    if ((ii % 100) === 0) { console.log("i=" + ii + "/" + nn + " a=" + alertNumSinceReset); }
  }
  console.log("t=" + ((new Date()).getTime() - start) + " a=" + alertNumSinceReset);
  return alertNumSinceReset;
}

function customFunctionOnAlert (msg) {
  console.log("  alert: g=" + currentGame + " v=" + CurrentVar + " p=" + CurrentPly + " m=" + msg);
}