+var onpopstate = function() {
+ var old_moves = game.history({ verbose: true }).map(function(x) { return x.san; });
+ var new_moves = document.location.search.replace(/^\?/, "").split(",");
+
+ if (new_moves.length == 1 && new_moves[0] == "") {
+ new_moves = [];
+ }
+
+ var num_shared_moves;
+ for (num_shared_moves = 0; num_shared_moves < Math.min(old_moves.length, new_moves.length); ++num_shared_moves) {
+ if (old_moves[i] != new_moves[i]) {
+ break;
+ }
+ }
+
+ set_move(num_shared_moves, false);
+ for (var i = num_shared_moves; i < new_moves.length; ++i) {
+ make_move(new_moves[i], false);
+ }
+ update();
+ window.history.replaceState(null, null, get_history_url());
+}
+