169 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			169 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!DOCTYPE HTML>
 | 
						|
<html>
 | 
						|
 | 
						|
<!--
 | 
						|
  pgn4web javascript chessboard
 | 
						|
  copyright (C) 2009-2013 Paolo Casaschi
 | 
						|
  see README file and http://pgn4web.casaschi.net
 | 
						|
  for credits, license and more details
 | 
						|
-->
 | 
						|
 | 
						|
<head>
 | 
						|
 | 
						|
<title>Gelfand Grisichuk 2011 - needs an HTML5 browser with SVG IMG support</title>
 | 
						|
 | 
						|
<!-- use viewport settings when body.onresize adapts the chessboard to the available space -->
 | 
						|
<meta name="viewport" content="initial-scale=1, maximum-scale=1">
 | 
						|
 | 
						|
<link rel="shortcut icon" href="pawn.ico" />
 | 
						|
 | 
						|
<style type="text/css">
 | 
						|
 | 
						|
html, body {
 | 
						|
  margin:0px;
 | 
						|
  padding:0px;
 | 
						|
}
 | 
						|
 | 
						|
body {
 | 
						|
  background: #F4F4F4;
 | 
						|
}
 | 
						|
 | 
						|
.boardTable {
 | 
						|
  border-style: solid;
 | 
						|
  border-color: transparent;
 | 
						|
}
 | 
						|
 | 
						|
.whiteSquare, .highlightWhiteSquare {
 | 
						|
  background-color: #FFCE9E;
 | 
						|
}
 | 
						|
 | 
						|
.blackSquare, .highlightBlackSquare {
 | 
						|
  background-color: #D18B47;
 | 
						|
}
 | 
						|
 | 
						|
</style>
 | 
						|
 | 
						|
<style id="dynamicStyle" type="text/css"></style>
 | 
						|
 | 
						|
<script type="text/javascript">
 | 
						|
"use strict";
 | 
						|
 | 
						|
var squareSize;
 | 
						|
function myOnResize() {
 | 
						|
  var boardObject = document.getElementById("GameBoard");
 | 
						|
  var squareSize = Math.floor(Math.min(window.innerWidth, window.innerHeight) / 9);
 | 
						|
  if (squareSize > 0) {
 | 
						|
    var pieceSize = Math.floor(squareSize * (pieceFont == "svgchess" ? 0.9 : 0.8));
 | 
						|
    var boardBorder = Math.ceil(squareSize / 20);
 | 
						|
    var shadowBorder = Math.floor(squareSize / 2);
 | 
						|
 | 
						|
    var sheet = document.styleSheets[1];
 | 
						|
    var oldRules = sheet.cssRules.lenght;
 | 
						|
    sheet.insertRule(".boardTable { border-width: " + boardBorder + "px; border-radius: " + boardBorder + "px; box-shadow: 0px 0px " + shadowBorder + "px #734C27; } ", sheet.cssRules.length);
 | 
						|
    sheet.insertRule(".pieceImage { width:" + pieceSize + "px; height:" + pieceSize + "px; } ", sheet.cssRules.length);
 | 
						|
    sheet.insertRule(".whiteSquare, .blackSquare, .highlightWhiteSquare, .highlightBlackSquare { width:" + squareSize + "px; height:" + squareSize + "px; } ", sheet.cssRules.length);
 | 
						|
    for (var ii = 0; ii < oldRules; ii++) { sheet.deleteRule(0); }
 | 
						|
 | 
						|
    boardObject.style.paddingTop = (window.innerHeight - 8 * squareSize - 2 * boardBorder) / 2 + "px";
 | 
						|
    boardObject.style.paddingBottom = (window.innerHeight - 8 * squareSize - 2 * boardBorder) / 2 + "px";
 | 
						|
    boardObject.style.paddingLeft = (window.innerWidth - 8 * squareSize - 2 * boardBorder) / 2 + "px";
 | 
						|
    boardObject.style.paddingRight = (window.innerWidth - 8 * squareSize - 2 * boardBorder) / 2 + "px";
 | 
						|
    var theObj = document.getElementById("boardTable");
 | 
						|
    if (theObj) {
 | 
						|
      theObj.style.height = (squareSize * 8 + boardBorder * 2) + "px";
 | 
						|
      theObj.style.width = (squareSize * 8 + boardBorder * 2) + "px";
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
</script>
 | 
						|
 | 
						|
<script src="pgn4web.js" type="text/javascript"></script>
 | 
						|
<script type="text/javascript">
 | 
						|
"use strict";
 | 
						|
 | 
						|
var pieceFont = "random";
 | 
						|
var thisRegExp = /(&|\?)(pieceFont|pf)=([^&]*)(&|$)/i;
 | 
						|
if (window.location.search.match(thisRegExp) !== null) {
 | 
						|
  pieceFont = unescape(window.location.search.match(thisRegExp)[3]);
 | 
						|
}
 | 
						|
if (pieceFont == "i") { pieceFont = "igorsvg"; }
 | 
						|
if (pieceFont == "s") { pieceFont = "svgchess"; }
 | 
						|
if (pieceFont == "t") { pieceFont = "tilesvg"; }
 | 
						|
if ((pieceFont != "igorsvg") && (pieceFont != "svgchess") && (pieceFont != "tilesvg")) { pieceFont = "random"; }
 | 
						|
if ((pieceFont == "random") || (pieceFont == "r")) {
 | 
						|
  pieceFont = ["igorsvg", "svgchess", "tilesvg"][Math.floor(3 * Math.random())];
 | 
						|
}
 | 
						|
 | 
						|
SetImagePath("images/" + pieceFont);
 | 
						|
SetImageType("svg");
 | 
						|
SetHighlightOption(true);
 | 
						|
SetAutoplayDelay(2000); // milliseconds
 | 
						|
SetAutostartAutoplay(true);
 | 
						|
SetAutoplayNextGame(true);
 | 
						|
SetShortcutKeysEnabled(false);
 | 
						|
 | 
						|
function customFunctionOnPgnGameLoad() { myOnResize(); }
 | 
						|
 | 
						|
function customDebugInfo() { return "squareSize=" + squareSize; }
 | 
						|
 | 
						|
// redefine FlipBoard() to include myOnResize()
 | 
						|
window['defaultFlipBoard'] = window['FlipBoard'];
 | 
						|
window['FlipBoard'] = function() { defaultFlipBoard(); myOnResize(); };
 | 
						|
 | 
						|
</script>
 | 
						|
 | 
						|
</head>
 | 
						|
 | 
						|
<body onResize="myOnResize();">
 | 
						|
 | 
						|
<!-- paste your PGN below and make sure you dont specify an external source with SetPgnUrl() -->
 | 
						|
<form style="display: none;"><textarea style="display: none;" id="pgnText">
 | 
						|
 | 
						|
[Event "WCh Candidates"]
 | 
						|
[Site "Kazan RUS"]
 | 
						|
[Date "2011.05.25"]
 | 
						|
[Round "3.6"]
 | 
						|
[White "Gelfand, Boris"]
 | 
						|
[Black "Grischuk, Alexander"]
 | 
						|
[Result "1-0"]
 | 
						|
 | 
						|
1. d4 Nf6 2. c4 g6 3. Nf3 Bg7 4. g3 d5 5. cxd5 Nxd5 6. Bg2 Nb6 7. Nc3 Nc6 8. e3
 | 
						|
O-O 9. O-O Re8 10. Re1 a5 11. Qe2 Bg4 12. h3 Be6 13. b3 a4 14. Rb1 axb3 15. axb3
 | 
						|
Qc8 16. Kh2 Ra5 17. Rd1 Rh5 18. Nh4 Bf6 19. f4 Rd8 20. Qf2 Bxh4 21. gxh4 Nd5 22.
 | 
						|
Nxd5 Rhxd5 23. Bb2 Rb5 24. Qe2 Rh5 25. e4 Bxb3 26. Rdc1 Na5 27. d5 b6 28. Be5 c5
 | 
						|
29. dxc6 f6 30. Ba1 Rc5 31. Rxc5 bxc5 32. Qb5 Qc7 33. Rxb3 Nxc6 34. e5 Nd4 35.
 | 
						|
Qc4+ 1-0
 | 
						|
 | 
						|
</textarea></form>
 | 
						|
<!-- paste your PGN above and make sure you dont specify an external source with SetPgnUrl() -->
 | 
						|
 | 
						|
<div id="GameBoard"></div>
 | 
						|
 | 
						|
<script type="text/javascript">
 | 
						|
"use strict";
 | 
						|
 | 
						|
window.onerror = function(msg, url, linenumber) {
 | 
						|
  document.body.innerHTML = "<p style='font-family: sans-serif; text-align: center;'><br>this web browser<br>is not supported</p>";
 | 
						|
  document.body.innerHTML += "<p style='font-family: sans-serif; text-align: left;'><br><br>message: " + msg + "<br><br>url: " + url + "<br><br>line: " + linenumber + "<br><br>browser: " + navigator.userAgent + "</p>";
 | 
						|
};
 | 
						|
 | 
						|
function checkSVGSupport() {
 | 
						|
  var img = document.createElement("img");
 | 
						|
  img.onerror = function() { throw("SVG browser support required for the IMG HTML tag"); };
 | 
						|
  img.onload = function() { };
 | 
						|
  img.setAttribute("src","data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNzUiIGhlaWdodD0iMjc1Ij48L3N2Zz4%3D");
 | 
						|
}
 | 
						|
 | 
						|
function pgn4web_onload(e) {
 | 
						|
  checkSVGSupport();
 | 
						|
  myOnResize();
 | 
						|
  start_pgn4web();
 | 
						|
}
 | 
						|
 | 
						|
</script>
 | 
						|
 | 
						|
</body>
 | 
						|
 | 
						|
</html>
 |