Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save farukuzun/7a6fe9b70024b2bbc627071f3f062509 to your computer and use it in GitHub Desktop.
Save farukuzun/7a6fe9b70024b2bbc627071f3f062509 to your computer and use it in GitHub Desktop.
// ==UserScript==
// @name ___ChromeExtention_Keyboard
// @version 1
// @grant none
// @run-at document-start
// @include /^https:\/\/(lichess\.org|lichess\.dev|mskchess\.ru)\/(\w{8}|\w{12})(\/white|\/black)?$
// The original script and inspiration by Vempele: https://gist.github.com/Vempele/46333e85e33b6d488c3ffb131942272d
// ==/UserScript==
(() => {
var innerContent = function () {
let styleCSS = `#KeyboardO {
cursor: pointer;
height: 49px;
width:50px;
margin-left: 10px;
font-family: Verdana, Geneva, sans-serif;
font-size: 15px;
color: #d8d8d8;
background: #242424;
border-radius: 60px;
border-color: #e0e0e0;
border-width: 3px;
}
#Save {
cursor: pointer;
height: 29px;
width:150px;
margin-left: 10px;
font-family: Verdana, Geneva, sans-serif;
font-size: 15px;
color: #d8d8d8;
background: #000;
border-radius: 8px;
border-color: #e9e9e9;
border-width: 3px;
}
#Save:focus {
outline-width: 0;
}
#KeyboardO:focus {
outline-width: 0;
}
#container{padding-left:5px; margin-top: 25px;display: inline-block;clear: left;width: 237px;}
#pieces{padding-left:5px; margin-top: 25px;display: inline-block;}
#container summary {
width: 187px;
float: left;
clear: left;
color: #b6a9b9;
text-align: left;
font-family: Verdana, Geneva, sans-serif;
margin-left: -8px;
padding: 3px;
font-size: 11px;
}
a#readm:not(:hover){
width: 197px;
float: left;
clear: left;
color: #b6a9b9;
text-align: left;
font-family: Verdana, Geneva, sans-serif;
margin-left: -5px;
padding: 3px;
font-size: 11px;
}
a#readm:hover{
width: 197px;
float: left;
clear: left;
text-align: left;
font-family: Verdana, Geneva, sans-serif;
margin-left: -5px;
padding: 3px;
font-size: 11px;
}
#container label{
display: inline-block;
float: left;
width: 117px;
font-size: 18px;
margin-top: 9px;
color: #b6a9b9;
font-family: Verdana, Geneva, sans-serif;
text-align: left; /*Change to right here if you want it close to the inputs*/
margin-left: -5px;
}
#container input {
padding: 0.1em;
display: inline-block;
float: left;
width: 65px;
margin-top: 5px;
color: #fff;
font-size: 18px;
font-weight: 600;
background: #636064;
border-radius: 60px;
border-color: #d5d5d5;
border-width: 3px;
text-align: center;
}
#container input:focus {
outline-width: 0;
}
#container input::-webkit-input-placeholder{
color: #000;
text-shadow: none;
-webkit-text-fill-color: initial;
}
#container {
user-select: none; /* supported by Chrome and Opera */
-webkit-user-select: none; /* Safari */
-khtml-user-select: none; /* Konqueror HTML */
-moz-user-select: none; /* Firefox */
-ms-user-select: none; /* Internet Explorer/Edge */
}`
setTimeout(function () {
let head = document.head || document.getElementsByTagName('head')[0],
style = document.createElement('style');
head.appendChild(style);
style.type = 'text/css';
style.appendChild(document.createTextNode(styleCSS));
console.log(performance.now());
var cx, cy;
var doit = 0, sName, convertionString = MouseEvent;
if (document.getElementById("user_tag") != undefined) {
var name1 = document.getElementById("user_tag").innerText;
var name1H = name1.innerText;
}
var nameC = document.getElementsByClassName("text ulpt");
var pieceArrayWithNotations = ["mousedown", "mouseup", "dispatchEvent", "view", "bubbles", "cancelable", "clientX", "clientY", window, true, false, 0, 0];
for (var i = 0; i < nameC.length; i++) {
console.log("@");
if (nameC[i].innerText.indexOf(" ") !== -1) {
sName = nameC[i].innerText.split(" ")[1];
} else {
var something = nameC[i].innerText;
do {
var i$0 = something.indexOf(" ");
something = something.slice(i$0 + 1);
sName = something;
} while (something.indexOf(" ") !== -1);
}
console.log(name1, sName);
if (name1 == sName) {
doit = 1;
}
}
if (document.getElementsByClassName("signin button button-empty")[0] != undefined) {
var anonc = document.getElementsByClassName("signin button button-empty")[0];
if (anonc.innerText == "SIGN IN") {
doit = 1;
}
}
if (doit == 1) {
var cancelPrem = function () {
tts1(rect.left + 5, rect.bottom - 5);
tts1(rect.left + 5, rect.bottom - 5);
};
var getPremove = function () {
if (document.getElementsByClassName("current-premove")[0] != undefined && document.getElementsByClassName("current-premove")[0] != null) {
premove = 1;
}
};
var KeyUp = function (event) {
var key = event.key.toLowerCase();
for (var i = 0; i < keys.length; i++) {
if (keys[i] === key) {
keys.splice(i, 1);
}
}
for (var j = 0; j < keysT.length; j++) {
if (keysT[j] === key) {
keysT.splice(j, 1);
}
}
if (key == biK) {
for (var ee = 0; ee < document.getElementsByClassName(mycolor + " bishop").length; ee++) {
document.getElementsByClassName(mycolor + " bishop")[ee].style.backgroundColor = "";
}
}
if (key == qK) {
if (document.getElementsByClassName(mycolor + " queen")[0] != undefined) {
document.getElementsByClassName(mycolor + " queen")[0].style.backgroundColor = "";
}
}
if (key == roL) {
if (document.getElementsByClassName(mycolor + " rook")[nn0] != undefined) {
document.getElementsByClassName(mycolor + " rook")[nn0].style.backgroundColor = "";
}
}
if (key == roR) {
if (document.getElementsByClassName(mycolor + " rook")[nn1] != undefined) {
document.getElementsByClassName(mycolor + " rook")[nn1].style.backgroundColor = "";
}
}
if (key == knL) {
if (document.getElementsByClassName(mycolor + " knight")[nn0] != undefined) {
document.getElementsByClassName(mycolor + " knight")[nn0].style.backgroundColor = "";
}
}
if (key == knR) {
if (document.getElementsByClassName(mycolor + " knight")[nn1] != undefined) {
document.getElementsByClassName(mycolor + " knight")[nn1].style.backgroundColor = "";
}
}
if (key == kingK) {
document.getElementsByClassName(mycolor + " king")[0].style.backgroundColor = "";
}
if (key == pLK || key == pFK || key == pRK) {
for (var e1 = 0; e1 < document.getElementsByClassName(mycolor + " pawn").length; e1++) {
document.getElementsByClassName(mycolor + " pawn")[e1].style.backgroundColor = "";
}
}
};
var KeyDown = function (event) {
var key = event.key.toLowerCase();
console.log(key);
if (key == cprm) {
cancelPrem();
}
if (key == "f") {
if (event.target.tagName != "INPUT") {
event.preventDefault();
}
}
if (key === "z" || key === "h" || key === "j" || key === "k" || key === "l") {
event.preventDefault();
}
if (!keys.includes(key) && key != "Control" && key != "Alt") {
keys.unshift(key);
keysT.unshift(key);
makemoves();
}
if (key == rmtch) {
if (document.getElementsByClassName("fbt rematch white")[0] != undefined) {
document.getElementsByClassName("fbt rematch white")[0].click();
}
}
if (key == biK) {
for (var ee = 0; ee < document.getElementsByClassName(mycolor + " bishop").length; ee++) {
document.getElementsByClassName(mycolor + " bishop")[ee].style.backgroundColor = "blue";
}
}
if (key == qK) {
if (document.getElementsByClassName(mycolor + " queen")[0] != undefined) {
document.getElementsByClassName(mycolor + " queen")[0].style.backgroundColor = "blue";
}
}
if (key == roL) {
if (document.getElementsByClassName(mycolor + " rook")[nn0] != undefined) {
document.getElementsByClassName(mycolor + " rook")[nn0].style.backgroundColor = "blue";
}
}
if (key == roR) {
if (document.getElementsByClassName(mycolor + " rook")[nn1] != undefined) {
document.getElementsByClassName(mycolor + " rook")[nn1].style.backgroundColor = "blue";
}
}
if (key == knL) {
if (document.getElementsByClassName(mycolor + " knight")[nn0] != undefined) {
document.getElementsByClassName(mycolor + " knight")[nn0].style.backgroundColor = "blue";
}
}
if (key == knR) {
if (document.getElementsByClassName(mycolor + " knight")[nn1] != undefined) {
document.getElementsByClassName(mycolor + " knight")[nn1].style.backgroundColor = "blue";
}
}
if (key == kingK) {
document.getElementsByClassName(mycolor + " king")[0].style.backgroundColor = "blue";
}
if (key == pLK || key == pFK || key == pRK) {
for (var e1 = 0; e1 < document.getElementsByClassName(mycolor + " pawn").length; e1++) {
document.getElementsByClassName(mycolor + " pawn")[e1].style.backgroundColor = "blue";
}
}
};
var tts = function (x, y, tx, ty, el) {
if (true || drag === false) {
tts1(x, y, el);
tts1(tx, ty, el);
} else {
fenIntroduction(x, y, el);
fenData(tx, ty, el);
}
movecount = movecount + 1;
console.log(movecount, "data", x, y, tx, ty);
if (true || drag === false) {
window.setTimeout(function () {
var ds = board.children;
for (var ii = 0; ii < ds.length; ++ii) {
if (ds[ii].className.includes("selected")) {
tts1(tx, ty, el);
return;
}
}
}, 0);
}
};
var tts1 = function (x, y, el) {
fenIntroduction(x, y, el);
fenData(x, y, el);
};
var fenIntroduction = function (x, y) {
notationObject[plyArray[3]] = x, notationObject[plyArray[4]] = y;
var fenString = new fen(fenChessBoard, notationObject);
fenString.data = "KQkq -";
existingNotation.addAPiece(fenString);
};
var makemoves = function () {
hor = horiz0;
vert = vertic0;
mp = 0;
if (turnC == 1) {
for (var chk = 0; chk < st.length; ++chk) {
if (horiz0 * 10 + vertic0 == st[chk]) {
mp = 1;
break;
} else {
mp = 0;
}
}
}
if (mp == 0) {
numK = keysT.length;
for (var y = 0; y < numK; y++) {
if (keysT[0] == pFK) {
pawnC = document.getElementsByClassName(mycolor + " pawn");
pawnN = pawnC.length;
p2 = 0;
if (document.getElementsByClassName("ghost " + mycolor + " pawn")[0] != undefined && document.getElementsByClassName("ghost " + mycolor + " pawn")[0] != null) {
pawnN = pawnN - 1;
}
for (var pn = 0; pn < pawnN; pn++) {
pawnrect = pawnC[pn].getBoundingClientRect();
pawnX = Math.ceil((pawnrect.left + sqsize / 2 - rect.left) / sqsize);
pawnY = 9 - Math.ceil((pawnrect.top + sqsize / 2 - rect.top) / sqsize);
if (pawnX == horiz0 && pawnY == vertic0 - 1) {
toX = horiz0 * sqsize + rect.left - sqsize / 2;
toY = (9 - vertic0) * sqsize + rect.top - sqsize / 2;
tts(pawnrect.left + sqsize / 2, pawnrect.top + sqsize / 2, toX, toY);
p2 = 0;
break;
} else {
if (pawnX == horiz0 && pawnY == 2 && vertic0 == 4) {
p2 = 1;
pawn2X = pawnrect.left + sqsize / 2;
pawn2Y = pawnrect.top + sqsize / 2;
}
}
}
if (p2 == 1) {
toX = horiz0 * sqsize + rect.left - sqsize / 2;
toY = (9 - vertic0) * sqsize + rect.top - sqsize / 2;
tts(pawn2X, pawn2Y, toX, toY);
}
}
if (keysT[0] == pLK) {
pawnLC = document.getElementsByClassName(mycolor + " pawn");
pawnN = pawnLC.length;
if (document.getElementsByClassName("ghost " + mycolor + " pawn")[0] != undefined && document.getElementsByClassName("ghost " + mycolor + " pawn")[0] != null) {
pawnN = pawnN - 1;
}
for (var pnL = 0; pnL < pawnN; pnL++) {
pawnLrect = pawnLC[pnL].getBoundingClientRect();
pawnLX = Math.ceil((pawnLrect.left + sqsize / 2 - rect.left) / sqsize);
pawnLY = 9 - Math.ceil((pawnLrect.top + sqsize / 2 - rect.top) / sqsize);
if (pawnLX == horiz0 + 1 && pawnLY == vertic0 - 1) {
toX = horiz0 * sqsize + rect.left - sqsize / 2;
toY = (9 - vertic0) * sqsize + rect.top - sqsize / 2;
tts(pawnLrect.left + sqsize / 2, pawnLrect.top + sqsize / 2, toX, toY);
break;
}
}
}
if (keysT[0] == pRK) {
pawnRC = document.getElementsByClassName(mycolor + " pawn");
pawnN = pawnRC.length;
if (document.getElementsByClassName("ghost " + mycolor + " pawn")[0] != undefined && document.getElementsByClassName("ghost " + mycolor + " pawn")[0] != null) {
pawnN = pawnN - 1;
}
for (var pnR = 0; pnR < pawnN; pnR++) {
pawnRrect = pawnRC[pnR].getBoundingClientRect();
pawnRX = Math.ceil((pawnRrect.left + sqsize / 2 - rect.left) / sqsize);
pawnRY = 9 - Math.ceil((pawnRrect.top + sqsize / 2 - rect.top) / sqsize);
if (pawnRX == horiz0 - 1 && pawnRY == vertic0 - 1) {
toX = horiz0 * sqsize + rect.left - sqsize / 2;
toY = (9 - vertic0) * sqsize + rect.top - sqsize / 2;
tts(pawnRrect.left + sqsize / 2, pawnRrect.top + sqsize / 2, toX, toY);
break;
}
}
}
if (keysT[0] == kingK) {
kingC = document.getElementsByClassName(mycolor + " king")[0];
kingrect = kingC.getBoundingClientRect();
kingX = Math.ceil((kingrect.left + sqsize / 2 - rect.left) / sqsize);
kingY = 9 - Math.ceil((kingrect.top + sqsize / 2 - rect.top) / sqsize);
if (kingX == horiz0 && kingY == vertic0 - 1 || kingX == horiz0 && kingY == vertic0 + 1 || kingX == horiz0 - 1 && kingY == vertic0 || kingX == horiz0 + 1 && kingY == vertic0 || kingX == horiz0 - 1 && kingY == vertic0 - 1 || kingX == horiz0 - 1 && kingY == vertic0 + 1 || kingX == horiz0 + 1 && kingY == vertic0 - 1 || kingX == horiz0 + 1 && kingY == vertic0 + 1 || kingX == horiz0 + 2 && kingY == vertic0 || kingX == horiz0 - 2 && kingY == vertic0) {
toX = horiz0 * sqsize + rect.left - sqsize / 2;
toY = (9 - vertic0) * sqsize + rect.top - sqsize / 2;
tts(kingrect.left + sqsize / 2, kingrect.top + sqsize / 2, toX, toY);
}
}
if (keysT[0] == qK) {
queenC = document.getElementsByClassName(mycolor + " queen");
queenN = queenC.length;
if (document.getElementsByClassName("ghost " + mycolor + " queen")[0] != undefined && document.getElementsByClassName("ghost " + mycolor + " queen")[0] != null) {
queenN = queenN - 1;
}
for (var qR = 0; qR < queenN; qR++) {
queenrect = queenC[qR].getBoundingClientRect();
queenX = Math.ceil((queenrect.left + sqsize / 2 - rect.left) / sqsize);
queenY = 9 - Math.ceil((queenrect.top + sqsize / 2 - rect.top) / sqsize);
if ((queenX == horiz0 || queenY == vertic0 || Math.abs(horiz0 - queenX) == Math.abs(vertic0 - queenY)) && !(queenX == horiz0 && queenY == vertic0)) {
toX = horiz0 * sqsize + rect.left - sqsize / 2;
toY = (9 - vertic0) * sqsize + rect.top - sqsize / 2;
tts(queenrect.left + sqsize / 2, queenrect.top + sqsize / 2, toX, toY);
break;
}
}
}
if (keysT[0] == biK) {
bishC = document.getElementsByClassName(mycolor + " bishop");
bishN = bishC.length;
if (document.getElementsByClassName("ghost " + mycolor + " bishop")[0] != undefined && document.getElementsByClassName("ghost " + mycolor + " bishop")[0] != null) {
bishN = bishN - 1;
}
for (var bR = 0; bR < bishN; bR++) {
bishrect = bishC[bR].getBoundingClientRect();
bishX = Math.ceil((bishrect.left + sqsize / 2 - rect.left) / sqsize);
bishY = 9 - Math.ceil((bishrect.top + sqsize / 2 - rect.top) / sqsize);
if (Math.abs(horiz0 - bishX) == Math.abs(vertic0 - bishY) && !(bishX == horiz0 && bishY == vertic0)) {
toX = horiz0 * sqsize + rect.left - sqsize / 2;
toY = (9 - vertic0) * sqsize + rect.top - sqsize / 2;
tts(bishrect.left + sqsize / 2, bishrect.top + sqsize / 2, toX, toY);
break;
}
}
}
if (keysT[0] == roL) {
if (mycolor == "white") {
rookC = document.getElementsByClassName(mycolor + " rook");
rookN = rookC.length;
if (document.getElementsByClassName("ghost " + mycolor + " rook")[0] != undefined && document.getElementsByClassName("ghost " + mycolor + " rook")[0] != null) {
rookN = rookN - 1;
}
for (var rR = 0; rR < rookN; rR++) {
rookrect = rookC[rR].getBoundingClientRect();
rookX = Math.ceil((rookrect.left + sqsize / 2 - rect.left) / sqsize);
rookY = 9 - Math.ceil((rookrect.top + sqsize / 2 - rect.top) / sqsize);
if ((rookX == horiz0 || rookY == vertic0) && !(rookX == horiz0 && rookY == vertic0)) {
if (rR == 0 && turnC == 1 && rookN > 1) {
rooktrect = rookC[1].getBoundingClientRect();
rooktX = Math.ceil((rooktrect.left + sqsize / 2 - rect.left) / sqsize);
rooktY = 9 - Math.ceil((rooktrect.top + sqsize / 2 - rect.top) / sqsize);
if (rooktX == rookX && rookX == horiz0 && (rooktY < vertic0 && rookY < vertic0 && rookY < rooktY || rooktY > vertic0 && rookY > vertic0 && rookY > rooktY) || rooktY == rookY && rookY == vertic0 && (rooktX < horiz0 && rookX < horiz0 && rookX < rooktX || rooktX > horiz0 && rookX > horiz0 && rookX > rooktX)) {
toX = horiz0 * sqsize + rect.left - sqsize / 2;
toY = (9 - vertic0) * sqsize + rect.top - sqsize / 2;
tts(rooktrect.left + sqsize / 2, rooktrect.top + sqsize / 2, toX, toY);
break;
}
}
toX = horiz0 * sqsize + rect.left - sqsize / 2;
toY = (9 - vertic0) * sqsize + rect.top - sqsize / 2;
tts(rookrect.left + sqsize / 2, rookrect.top + sqsize / 2, toX, toY);
break;
}
}
}
if (mycolor == "black") {
rookC = document.getElementsByClassName(mycolor + " rook");
rookN = rookC.length;
if (document.getElementsByClassName("ghost " + mycolor + " rook")[0] != undefined && document.getElementsByClassName("ghost " + mycolor + " rook")[0] != null) {
rookN = rookN - 1;
}
for (var rbR = rookN - 1; rbR > -1; rbR--) {
rookrect = rookC[rbR].getBoundingClientRect();
rookX = Math.ceil((rookrect.left + sqsize / 2 - rect.left) / sqsize);
rookY = 9 - Math.ceil((rookrect.top + sqsize / 2 - rect.top) / sqsize);
if ((rookX == horiz0 || rookY == vertic0) && !(rookX == horiz0 && rookY == vertic0)) {
if (rbR == rookN - 1 && turnC == 1 && rookN > 1) {
rooktrect = rookC[rookN - 2].getBoundingClientRect();
rooktX = Math.ceil((rooktrect.left + sqsize / 2 - rect.left) / sqsize);
rooktY = 9 - Math.ceil((rooktrect.top + sqsize / 2 - rect.top) / sqsize);
if (rooktX == rookX && rookX == horiz0 && (rooktY < vertic0 && rookY < vertic0 && rookY < rooktY || rooktY > vertic0 && rookY > vertic0 && rookY > rooktY) || rooktY == rookY && rookY == vertic0 && (rooktX < horiz0 && rookX < horiz0 && rookX < rooktX || rooktX > horiz0 && rookX > horiz0 && rookX > rooktX)) {
toX = horiz0 * sqsize + rect.left - sqsize / 2;
toY = (9 - vertic0) * sqsize + rect.top - sqsize / 2;
tts(rooktrect.left + sqsize / 2, rooktrect.top + sqsize / 2, toX, toY);
break;
}
}
toX = horiz0 * sqsize + rect.left - sqsize / 2;
toY = (9 - vertic0) * sqsize + rect.top - sqsize / 2;
tts(rookrect.left + sqsize / 2, rookrect.top + sqsize / 2, toX, toY);
break;
}
}
}
}
if (keysT[0] == roR) {
if (mycolor == "white") {
rookC = document.getElementsByClassName(mycolor + " rook");
rookN = rookC.length;
if (document.getElementsByClassName("ghost " + mycolor + " rook")[0] != undefined && document.getElementsByClassName("ghost " + mycolor + " rook")[0] != null) {
rookN = rookN - 1;
}
for (var r1bR = rookN - 1; r1bR > -1; r1bR--) {
rookrect = rookC[r1bR].getBoundingClientRect();
rookX = Math.ceil((rookrect.left + sqsize / 2 - rect.left) / sqsize);
rookY = 9 - Math.ceil((rookrect.top + sqsize / 2 - rect.top) / sqsize);
if ((rookX == horiz0 || rookY == vertic0) && !(rookX == horiz0 && rookY == vertic0)) {
if (r1bR == rookN - 1 && turnC == 1 && rookN > 1) {
rooktrect = rookC[rookN - 2].getBoundingClientRect();
rooktX = Math.ceil((rooktrect.left + sqsize / 2 - rect.left) / sqsize);
rooktY = 9 - Math.ceil((rooktrect.top + sqsize / 2 - rect.top) / sqsize);
if (rooktX == rookX && rookX == horiz0 && (rooktY < vertic0 && rookY < vertic0 && rookY < rooktY || rooktY > vertic0 && rookY > vertic0 && rookY > rooktY) || rooktY == rookY && rookY == vertic0 && (rooktX < horiz0 && rookX < horiz0 && rookX < rooktX || rooktX > horiz0 && rookX > horiz0 && rookX > rooktX)) {
toX = horiz0 * sqsize + rect.left - sqsize / 2;
toY = (9 - vertic0) * sqsize + rect.top - sqsize / 2;
tts(rooktrect.left + sqsize / 2, rooktrect.top + sqsize / 2, toX, toY);
break;
}
}
toX = horiz0 * sqsize + rect.left - sqsize / 2;
toY = (9 - vertic0) * sqsize + rect.top - sqsize / 2;
tts(rookrect.left + sqsize / 2, rookrect.top + sqsize / 2, toX, toY);
break;
}
}
}
if (mycolor == "black") {
rookC = document.getElementsByClassName(mycolor + " rook");
rookN = rookC.length;
if (document.getElementsByClassName("ghost " + mycolor + " rook")[0] != undefined && document.getElementsByClassName("ghost " + mycolor + " rook")[0] != null) {
rookN = rookN - 1;
}
for (var r1R = 0; r1R < rookN; r1R++) {
rookrect = rookC[r1R].getBoundingClientRect();
rookX = Math.ceil((rookrect.left + sqsize / 2 - rect.left) / sqsize);
rookY = 9 - Math.ceil((rookrect.top + sqsize / 2 - rect.top) / sqsize);
if ((rookX == horiz0 || rookY == vertic0) && !(rookX == horiz0 && rookY == vertic0)) {
if (r1R == 0 && turnC == 1 && rookN > 1) {
rooktrect = rookC[1].getBoundingClientRect();
rooktX = Math.ceil((rooktrect.left + sqsize / 2 - rect.left) / sqsize);
rooktY = 9 - Math.ceil((rooktrect.top + sqsize / 2 - rect.top) / sqsize);
if (rooktX == rookX && rookX == horiz0 && (rooktY < vertic0 && rookY < vertic0 && rookY < rooktY || rooktY > vertic0 && rookY > vertic0 && rookY > rooktY) || rooktY == rookY && rookY == vertic0 && (rooktX < horiz0 && rookX < horiz0 && rookX < rooktX || rooktX > horiz0 && rookX > horiz0 && rookX > rooktX)) {
toX = horiz0 * sqsize + rect.left - sqsize / 2;
toY = (9 - vertic0) * sqsize + rect.top - sqsize / 2;
tts(rooktrect.left + sqsize / 2, rooktrect.top + sqsize / 2, toX, toY);
break;
}
}
toX = horiz0 * sqsize + rect.left - sqsize / 2;
toY = (9 - vertic0) * sqsize + rect.top - sqsize / 2;
tts(rookrect.left + sqsize / 2, rookrect.top + sqsize / 2, toX, toY);
break;
}
}
}
}
if (keysT[0] == knL) {
if (mycolor == "white") {
knightC = document.getElementsByClassName(mycolor + " knight");
knightN = knightC.length;
if (document.getElementsByClassName("ghost " + mycolor + " knight")[0] != undefined && document.getElementsByClassName("ghost " + mycolor + " knight")[0] != null) {
knightN = knightN - 1;
}
for (var kR = 0; kR < knightN; kR++) {
knightrect = knightC[kR].getBoundingClientRect();
knightX = Math.ceil((knightrect.left + sqsize / 2 - rect.left) / sqsize);
knightY = 9 - Math.ceil((knightrect.top + sqsize / 2 - rect.top) / sqsize);
if (knightX == horiz0 + 1 && knightY == vertic0 - 2 || knightX == horiz0 + 2 && knightY == vertic0 - 1 || knightX == horiz0 + 2 && knightY == vertic0 + 1 || knightX == horiz0 + 1 && knightY == vertic0 + 2 || knightX == horiz0 - 1 && knightY == vertic0 + 2 || knightX == horiz0 - 2 && knightY == vertic0 + 1 || knightX == horiz0 - 2 && knightY == vertic0 - 1 || knightX == horiz0 - 1 && knightY == vertic0 - 2) {
toX = horiz0 * sqsize + rect.left - sqsize / 2;
toY = (9 - vertic0) * sqsize + rect.top - sqsize / 2;
tts(knightrect.left + sqsize / 2, knightrect.top + sqsize / 2, toX, toY);
break;
}
}
}
if (mycolor == "black") {
knightC = document.getElementsByClassName(mycolor + " knight");
knightN = knightC.length;
if (document.getElementsByClassName("ghost " + mycolor + " knight")[0] != undefined && document.getElementsByClassName("ghost " + mycolor + " knight")[0] != null) {
knightN = knightN - 1;
}
for (var kbR = knightN - 1; kbR > -1; kbR--) {
knightrect = knightC[kbR].getBoundingClientRect();
knightX = Math.ceil((knightrect.left + sqsize / 2 - rect.left) / sqsize);
knightY = 9 - Math.ceil((knightrect.top + sqsize / 2 - rect.top) / sqsize);
if (knightX == horiz0 + 1 && knightY == vertic0 - 2 || knightX == horiz0 + 2 && knightY == vertic0 - 1 || knightX == horiz0 + 2 && knightY == vertic0 + 1 || knightX == horiz0 + 1 && knightY == vertic0 + 2 || knightX == horiz0 - 1 && knightY == vertic0 + 2 || knightX == horiz0 - 2 && knightY == vertic0 + 1 || knightX == horiz0 - 2 && knightY == vertic0 - 1 || knightX == horiz0 - 1 && knightY == vertic0 - 2) {
toX = horiz0 * sqsize + rect.left - sqsize / 2;
toY = (9 - vertic0) * sqsize + rect.top - sqsize / 2;
tts(knightrect.left + sqsize / 2, knightrect.top + sqsize / 2, toX, toY);
break;
}
}
}
}
if (keysT[0] == knR) {
if (mycolor == "white") {
knightC = document.getElementsByClassName(mycolor + " knight");
knightN = knightC.length;
if (document.getElementsByClassName("ghost " + mycolor + " knight")[0] != undefined && document.getElementsByClassName("ghost " + mycolor + " knight")[0] != null) {
knightN = knightN - 1;
}
for (var k1bR = knightN - 1; k1bR > -1; k1bR--) {
knightrect = knightC[k1bR].getBoundingClientRect();
knightX = Math.ceil((knightrect.left + sqsize / 2 - rect.left) / sqsize);
knightY = 9 - Math.ceil((knightrect.top + sqsize / 2 - rect.top) / sqsize);
if (knightX == horiz0 + 1 && knightY == vertic0 - 2 || knightX == horiz0 + 2 && knightY == vertic0 - 1 || knightX == horiz0 + 2 && knightY == vertic0 + 1 || knightX == horiz0 + 1 && knightY == vertic0 + 2 || knightX == horiz0 - 1 && knightY == vertic0 + 2 || knightX == horiz0 - 2 && knightY == vertic0 + 1 || knightX == horiz0 - 2 && knightY == vertic0 - 1 || knightX == horiz0 - 1 && knightY == vertic0 - 2) {
toX = horiz0 * sqsize + rect.left - sqsize / 2;
toY = (9 - vertic0) * sqsize + rect.top - sqsize / 2;
tts(knightrect.left + sqsize / 2, knightrect.top + sqsize / 2, toX, toY);
break;
}
}
}
if (mycolor == "black") {
knightC = document.getElementsByClassName(mycolor + " knight");
knightN = knightC.length;
if (document.getElementsByClassName("ghost " + mycolor + " knight")[0] != undefined && document.getElementsByClassName("ghost " + mycolor + " knight")[0] != null) {
knightN = knightN - 1;
}
for (var k1R = 0; k1R < knightN; k1R++) {
knightrect = knightC[k1R].getBoundingClientRect();
knightX = Math.ceil((knightrect.left + sqsize / 2 - rect.left) / sqsize);
knightY = 9 - Math.ceil((knightrect.top + sqsize / 2 - rect.top) / sqsize);
if (knightX == horiz0 + 1 && knightY == vertic0 - 2 || knightX == horiz0 + 2 && knightY == vertic0 - 1 || knightX == horiz0 + 2 && knightY == vertic0 + 1 || knightX == horiz0 + 1 && knightY == vertic0 + 2 || knightX == horiz0 - 1 && knightY == vertic0 + 2 || knightX == horiz0 - 2 && knightY == vertic0 + 1 || knightX == horiz0 - 2 && knightY == vertic0 - 1 || knightX == horiz0 - 1 && knightY == vertic0 - 2) {
toX = horiz0 * sqsize + rect.left - sqsize / 2;
toY = (9 - vertic0) * sqsize + rect.top - sqsize / 2;
tts(knightrect.left + sqsize / 2, knightrect.top + sqsize / 2, toX, toY);
break;
}
}
}
}
keysT.splice(0, 1);
}
}
};
var fenData = function (x, y) {
notationObject[plyArray[3]] = x, notationObject[plyArray[4]] = y;
var fenString = new fen(fenToPlies, notationObject);
fenString.data = "KQkq -";
existingNotation.addAPiece(fenString);
};
var MouseMove = function (e) {
cx = e.clientX;
cy = e.clientY;
boardx = cx - rect.left;
boardy = cy - rect.top;
horiz = Math.ceil(boardx / sqsize);
vertic = 9 - Math.ceil(boardy / sqsize);
if (horiz != horiz2 || vertic != vertic2) {
keysT = keys.slice(0);
horiz0 = horiz;
vertic0 = vertic;
makemoves();
}
horiz2 = horiz;
vertic2 = vertic;
};
var get_color = function () {
var mycolor = isFlipped() ? "black" : "white";
var fen_els = $("input.copyable");
if (fen_els.length > 0) {
mycolor = fen_els[0].value.split(" ")[1] === "w" ? "white" : "black";
}
if (wclock) {
mycolor = wclock.className.includes("clock_bottom") ? "white" : "black";
}
return mycolor;
};
var isFlipped = function () {
return bparent.className.includes("orientation-black");
};
var hasDuplicates = function (array) {
return (new Set(array)).size !== array.length;
};
var oneKey = function () {
var Parr = [];
Parr.push(pFK);
Parr.push(pLK);
Parr.push(pRK);
Parr.push(qK);
Parr.push(roL);
Parr.push(roR);
Parr.push(knL);
Parr.push(knR);
Parr.push(biK);
Parr.push(kingK);
console.log(Parr);
return hasDuplicates(Parr);
console.log(hasDuplicates(Parr));
};
var AssignKeys = function (idK) {
if (storeK == " ") {
document.getElementById(idK).value = "Space";
} else {
document.getElementById(idK).value = storeK;
}
if (idK == "Kpawnu") {
pFK = storeK;
if (storeK == " ") {
setCookie("pawn", "Space");
} else {
setCookie("pawn", pFK);
}
}
if (idK == "Kpawnl") {
pLK = storeK;
if (storeK == " ") {
setCookie("pawnl", "Space");
} else {
setCookie("pawnl", pLK);
}
}
if (idK == "Kpawnr") {
pRK = storeK;
if (storeK == " ") {
setCookie("pawnr", "Space");
} else {
setCookie("pawnr", pRK);
}
}
if (idK == "Kqueen") {
qK = storeK;
if (storeK == " ") {
setCookie("queen", "Space");
} else {
setCookie("queen", qK);
}
}
if (idK == "Krookl") {
roL = storeK;
if (storeK == " ") {
setCookie("rookl", "Space");
} else {
setCookie("rookl", roL);
}
}
if (idK == "Krookr") {
roR = storeK;
if (storeK == " ") {
setCookie("rookr", "Space");
} else {
setCookie("rookr", roR);
}
}
if (idK == "Kknightl") {
knL = storeK;
if (storeK == " ") {
setCookie("knightl", "Space");
} else {
setCookie("knightl", knL);
}
}
if (idK == "Kknightr") {
knR = storeK;
if (storeK == " ") {
setCookie("knightr", "Space");
} else {
setCookie("knightr", knR);
}
}
if (idK == "Kbishop") {
biK = storeK;
if (storeK == " ") {
setCookie("bishop", "Space");
} else {
setCookie("bishop", biK);
}
}
if (idK == "Kking") {
kingK = storeK;
if (storeK == " ") {
setCookie("king", "Space");
} else {
setCookie("king", kingK);
}
}
if (oneKey() == true) {
for (var b = 0; b < 10; b++) {
myInputs[b].style.backgroundColor = "#636064";
}
for (var v = 0; v < 10; v++) {
var samK = myInputs[v].value;
for (var z = 0; z < 10; z++) {
if (myInputs[z].value == samK && z != v) {
myInputs[z].style.backgroundColor = "#971400";
myInputs[v].style.backgroundColor = "#971400";
}
}
}
document.body.removeEventListener("mousemove", MouseMove);
} else {
if (ch1skeys == 1) {
document.getElementsByTagName("summary")[0].innerText = "Hover the cursor over a destination square and press a corresponding key";
document.getElementsByTagName("summary")[0].style.color = "#b6a9b9";
ch1skeys = 0;
}
for (var t = 0; t < 10; t++) {
myInputs[t].style.backgroundColor = "#636064";
}
document.body.addEventListener("mousemove", MouseMove, false);
}
};
var RemoveInputListen = function () {
for (var kk = 0; kk < myInputs.length; ++kk) {
myInputs[kk].removeEventListener("keydown", InputDown);
myInputs[kk].removeEventListener("focus", InputFocus);
myInputs[kk].removeEventListener("blur", InputBlur);
}
};
var InputBlur = function (event) {
focusK = 0;
};
var InputFocus = function (event) {
focusK = 1;
};
var InputDown = function (event) {
event.preventDefault();
storeK = event.key.toLowerCase();
AssignKeys(this.id);
};
var AddInputListen = function () {
for (var kk = 0; kk < myInputs.length; ++kk) {
myInputs[kk].addEventListener("keydown", InputDown, false);
myInputs[kk].addEventListener("focus", InputFocus, false);
myInputs[kk].addEventListener("blur", InputBlur, false);
}
};
var getCookie = function (cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(";");
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == " ") {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return decodeURIComponent(c.substring(name.length, c.length));
}
}
return "";
};
var setCookie = function (cname, cvalue) {
var d = new Date;
d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);
var expires = "expires=" + d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
};
var pieceArray = pieceArrayWithNotations.slice();
var fenChessBoard = pieceArray[0];
var fenToPlies = pieceArray[1];
var fenToString = pieceArray[2];
var convertNotation = Element;
var notationObject = {};
var existingNotation;
var plyArray = [pieceArray[3], pieceArray[4], pieceArray[5], pieceArray[6], pieceArray[7]];
var fenArray = [pieceArray[8], pieceArray[9], pieceArray[10], pieceArray[11], pieceArray[12]];
for (var i$1 = 0; i$1 < 5; i$1++) {
Object.defineProperty(notationObject, plyArray[i$1], { value: fenArray[i$1], writable: fenArray[i$1] === 0, enumerable: true });
}
var NotationToCoordinates = convertNotation.prototype;
NotationToCoordinates.addAPiece = NotationToCoordinates[fenToString];
var fen = convertionString;
console.log(document.cookie);
var exdays = 1000;
var lichess = document.getElementById("main-wrap");
var keyORnot, KeyCO;
KeyCO = getCookie("KeyB");
if (KeyCO != "") {
keyORnot = parseInt(KeyCO, 10);
} else {
keyORnot = 1;
}
var container = document.createElement("div");
lichess.appendChild(container);
container.id = "container";
container.innerHTML = '<div id="container">' + '<button id="KeyboardO">Show</button>' + '<div id="pieces">' + '<label>Pawn Up :</label><input type="text" value="w" id="Kpawnu" class="keyB">' + '<label>Pawn \u21d6 :</label><input type="text" value="q" id="Kpawnl" class="keyB">' + '<label>Pawn \u21d7 :</label><input type = "text" value="e" id="Kpawnr" class="keyB">' + '<label>Queen :</label><input type="text" value="s" id="Kqueen" class="keyB">' + '<label>Rook :</label><input type="text" value="1" id="Krookl" class="keyB">' +
'<label>Rook \u25a3 :</label><input type="text" value="3" id="Krookr" class="keyB">' + '<label>Knight :</label><input type="text" value="a" id="Kknightl" class="keyB">' + '<label>Knight \u25a3 :</label><input type="text" value="d" id="Kknightr" class="keyB">' + '<label>Bishop :</label><input type="text" value="Space" id="Kbishop" class="keyB">' + '<label>King :</label><input type="text" value="shift" id="Kking" class="keyB">' + '<label><button id="Save">Save</button></label>' + "<summary> Hover the cursor over a destination square and press a corresponding key* </summary>" +
"</div>" + "</div>";
var button1 = document.getElementById("KeyboardO");
var pieces = document.getElementById("pieces");
var myInputs = document.getElementsByClassName("keyB");
var pFKc, pLKc, pRKc, qKc, roLc, roRc, knLc, knRc, biKc, kingKc;
var pFK, pLK, pRK, qK, roL, roR, knL, knR, biK, kingK;
button1.addEventListener("click", function (e) {
e.preventDefault();
if (keyORnot == 1) {
button1.innerText = "Show";
document.getElementById("pieces").style.display = "none";
RemoveInputListen();
keyORnot = 0;
setCookie("KeyB", "0");
} else {
keyORnot = 1;
button1.innerText = "Hide";
document.getElementById("pieces").style.display = "block";
AddInputListen();
setCookie("KeyB", "1");
}
button1.blur();
});
var save = document.getElementById("Save");
save.addEventListener("click", function (e) {
save.blur();
});
var focusK = 0;
var storeK;
if (keyORnot == 1) {
button1.innerText = "Hide";
document.getElementById("pieces").style.display = "block";
AddInputListen();
} else {
button1.innerText = "Show";
document.getElementById("pieces").style.display = "none";
}
if (document.getElementsByClassName("mchat__say")[0] != undefined) {
var chat = document.getElementsByClassName("mchat__say")[0];
chat.addEventListener("focus", function () {
document.removeEventListener("keydown", KeyDown);
console.log("f");
});
chat.addEventListener("blur", function () {
document.addEventListener("keydown", KeyDown, false);
console.log("b");
});
}
pFKc = getCookie("pawn");
if (pFKc != "") {
if (pFKc == "Space") {
pFK = " ";
} else {
pFK = pFKc;
}
document.getElementById("Kpawnu").value = pFKc;
} else {
pFK = "w";
}
pLKc = getCookie("pawnl");
if (pLKc != "") {
if (pLKc == "Space") {
pLK = " ";
} else {
pLK = pLKc;
}
document.getElementById("Kpawnl").value = pLKc;
} else {
pLK = "q";
}
pRKc = getCookie("pawnr");
if (pRKc != "") {
if (pRKc == "Space") {
pRK = " ";
} else {
pRK = pRKc;
}
document.getElementById("Kpawnr").value = pRKc;
} else {
pRK = "e";
}
qKc = getCookie("queen");
if (qKc != "") {
if (qKc == "Space") {
qK = " ";
} else {
qK = qKc;
}
document.getElementById("Kqueen").value = qKc;
} else {
qK = "s";
}
roLc = getCookie("rookl");
if (roLc != "") {
if (roLc == "Space") {
roL = " ";
} else {
roL = roLc;
}
document.getElementById("Krookl").value = roLc;
} else {
roL = "1";
}
roRc = getCookie("rookr");
if (roRc != "") {
if (roRc == "Space") {
roR = " ";
} else {
roR = roRc;
}
document.getElementById("Krookr").value = roRc;
} else {
roR = "3";
}
knLc = getCookie("knightl");
if (knLc != "") {
if (knLc == "Space") {
knL = " ";
} else {
knL = knLc;
}
document.getElementById("Kknightl").value = knLc;
} else {
knL = "a";
}
knRc = getCookie("knightr");
if (knRc != "") {
if (knRc == "Space") {
knR = " ";
} else {
knR = knRc;
}
document.getElementById("Kknightr").value = knRc;
} else {
knR = "d";
}
biKc = getCookie("bishop");
if (biKc != "") {
if (biKc == "Space") {
biK = " ";
} else {
biK = biKc;
}
document.getElementById("Kbishop").value = biKc;
} else {
biK = " ";
}
kingKc = getCookie("king");
if (kingKc != "") {
if (kingKc == "Space") {
kingK = " ";
} else {
kingK = kingKc;
}
document.getElementById("Kking").value = kingKc;
} else {
kingK = "shift";
}
var ch1skeys = 0;
if (oneKey() == true) {
document.getElementsByTagName("summary")[0].innerText = "Please make sure you use different keys for each piece";
document.getElementsByTagName("summary")[0].style.color = "red";
ch1skeys = 1;
keyORnot = 1;
button1.innerText = "Hide";
document.getElementById("pieces").style.display = "block";
AddInputListen();
setCookie("KeyB", "1");
for (var v = 0; v < 10; v++) {
var samK = myInputs[v].value;
for (var z = 0; z < 10; z++) {
if (myInputs[z].value == samK && z != v) {
myInputs[z].style.backgroundColor = "#971400";
myInputs[v].style.backgroundColor = "#971400";
}
}
}
}
document.getElementById("clinput").remove();
var rmtch = "7";
var cprm = "8";
var bparent = $(".cg-wrap")[0];
var wclock, bclock;
var mycolor;
wclock = $("div.clock_white");
wclock = wclock.length ? wclock[0] : null;
mycolor = get_color();
var nn0, nn1;
if (mycolor == "white") {
nn0 = 0;
nn1 = 1;
if (document.getElementsByClassName(mycolor + " rook")[nn1] != undefined) {
document.getElementsByClassName(mycolor + " rook")[nn1].style.backgroundImage = "url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNDUgNDUiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDQ1IDQ1OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4uc3Qwe2ZpbGw6I0ZGRkZGRjtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS41O3N0cm9rZS1saW5lam9pbjpyb3VuZDt9LnN0MXtmaWxsOiNGRkZGRkY7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjEuNTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7fS5zdDJ7ZmlsbDojRkZGRkZGO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjU7fS5zdDN7ZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7fS5zdDR7ZmlsbDojM0VBRjRFO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjE4MjE7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO308L3N0eWxlPjxnPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik05LDM5aDI3di0zSDlWMzl6IE0xMiwzNnYtNGgyMXY0SDEyeiBNMTEsMTRWOWg0djJoNVY5aDV2Mmg1VjloNHY1Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTM0LDE0bC0zLDNIMTRsLTMtMyIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0zMSwxN3YxMi41SDE0VjE3Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTMxLDI5LjVsMS41LDIuNWgtMjBsMS41LTIuNSIvPjxwYXRoIGNsYXNzPSJzdDMiIGQ9Ik0xMSwxNGgyMyIvPjwvZz48cmVjdCB4PSIyOC44IiB5PSIyOCIgY2xhc3M9InN0NCIgd2lkdGg9IjEzLjgiIGhlaWdodD0iMTMuOCIvPjwvc3ZnPg==')";
}
if (document.getElementsByClassName(mycolor + " knight")[nn1] != undefined) {
document.getElementsByClassName(mycolor + " knight")[nn1].style.backgroundImage = "url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNDUgNDUiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDQ1IDQ1OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4uc3Qwe2ZpbGw6I0ZGRkZGRjtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS41O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDt9LnN0MXtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS41O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDt9LnN0MntmaWxsOiMzRUFGNEU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjEuMTgyMTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7fTwvc3R5bGU+PGc+PHBhdGggY2xhc3M9InN0MCIgZD0iTTIyLDEwYzEwLjUsMSwxNi41LDgsMTYsMjlIMTVjMC05LDEwLTYuNSw4LTIxIi8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTI0LDE4YzAuNCwyLjktNS41LDcuNC04LDljLTMsMi0yLjgsNC4zLTUsNGMtMS0wLjksMS40LTMsMC0zYy0xLDAsMC4yLDEuMi0xLDJjLTEsMC00LDEtNC00YzAtMiw2LTEyLDYtMTJzMS45LTEuOSwyLTMuNWMtMC43LTEtMC41LTItMC41LTNjMS0xLDMsMi41LDMsMi41aDJjMCwwLDAuOC0yLDIuNS0zYzEsMCwxLDMsMSwzIi8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTkuNSwyNS41QzkuNSwyNS44LDkuMywyNiw5LDI2cy0wLjUtMC4yLTAuNS0wLjVTOC43LDI1LDksMjVTOS41LDI1LjIsOS41LDI1LjV6IE0xNC45LDE1LjdjLTAuNCwwLjctMC45LDEuMi0xLjIsMS4xYy0wLjItMC4xLTAuMS0wLjgsMC4zLTEuNWMwLDAsMCwwLDAsMGMwLjQtMC43LDAuOS0xLjIsMS4yLTEuMUMxNS41LDE0LjMsMTUuNCwxNSwxNC45LDE1LjdDMTQuOSwxNS43LDE0LjksMTUuNywxNC45LDE1Ljd6Ii8+PHJlY3QgeD0iMjguOCIgeT0iMjgiIGNsYXNzPSJzdDIiIHdpZHRoPSIxMy44IiBoZWlnaHQ9IjEzLjgiLz48L2c+PC9zdmc+')";
}
}
if (mycolor == "black") {
nn0 = 1;
nn1 = 0;
if (document.getElementsByClassName(mycolor + " rook")[nn1] != undefined) {
document.getElementsByClassName(mycolor + " rook")[nn1].style.backgroundImage = "url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNDUgNDUiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDQ1IDQ1OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4uc3Qwe3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjU7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO30uc3Qxe3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjU7fS5zdDJ7ZmlsbDpub25lO3N0cm9rZTojRUNFQ0VDO3N0cm9rZS1saW5lY2FwOnJvdW5kO30uc3Qze2ZpbGw6IzNFQUY0RTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MS4xODIxO3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDt9PC9zdHlsZT48Zz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNOSwzOWgyN3YtM0g5VjM5eiBNMTIuNSwzMmwxLjUtMi41aDE3bDEuNSwyLjVIMTIuNXogTTEyLDM2di00aDIxdjRIMTJ6Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTE0LDI5LjV2LTEzaDE3djEzSDE0eiIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNCwxNi41TDExLDE0aDIzbC0zLDIuNUgxNHogTTExLDE0VjloNHYyaDVWOWg1djJoNVY5aDR2NUgxMXoiLz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTIsMzUuNWgyMSBNMTMsMzEuNWgxOSBNMTQsMjkuNWgxNyBNMTQsMTYuNWgxNyBNMTEsMTRoMjMiLz48L2c+PHJlY3QgeD0iMjguOCIgeT0iMjgiIGNsYXNzPSJzdDMiIHdpZHRoPSIxMy44IiBoZWlnaHQ9IjEzLjgiLz48L3N2Zz4=')";
}
if (document.getElementsByClassName(mycolor + " knight")[nn1] != undefined) {
document.getElementsByClassName(mycolor + " knight")[nn1].style.backgroundImage = "url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNDUgNDUiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDQ1IDQ1OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4uc3Qwe3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO30uc3Qxe2ZpbGw6I0VDRUNFQztzdHJva2U6I0VDRUNFQztzdHJva2Utd2lkdGg6MS41O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1saW5lam9pbjpyb3VuZDt9LnN0MntmaWxsOiNFQ0VDRUM7fS5zdDN7ZmlsbDojM0VBRjRFO3N0cm9rZTojRkZGRkZGO3N0cm9rZS13aWR0aDoxLjE4MjE7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO308L3N0eWxlPjxnPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yMiwxMGMxMC41LDEsMTYuNSw4LDE2LDI5SDE1YzAtOSwxMC02LjUsOC0yMSIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yNCwxOGMwLjQsMi45LTUuNSw3LjQtOCw5Yy0zLDItMi44LDQuMy01LDRjLTEtMC45LDEuNC0zLDAtM2MtMSwwLDAuMiwxLjItMSwyYy0xLDAtNCwxLTQtNGMwLTIsNi0xMiw2LTEyczEuOS0xLjksMi0zLjVjLTAuNy0xLTAuNS0yLTAuNS0zYzEtMSwzLDIuNSwzLDIuNWgyYzAsMCwwLjgtMiwyLjUtM2MxLDAsMSwzLDEsMyIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik05LjUsMjUuNUM5LjUsMjUuOCw5LjMsMjYsOSwyNnMtMC41LTAuMi0wLjUtMC41UzguNywyNSw5LDI1UzkuNSwyNS4yLDkuNSwyNS41eiBNMTQuOSwxNS43Yy0wLjQsMC43LTAuOSwxLjItMS4yLDEuMWMtMC4yLTAuMS0wLjEtMC44LDAuMy0xLjVjMCwwLDAsMCwwLDBjMC40LTAuNywwLjktMS4yLDEuMi0xLjFDMTUuNSwxNC4zLDE1LjQsMTUsMTQuOSwxNS43QzE0LjksMTUuNywxNC45LDE1LjcsMTQuOSwxNS43eiIvPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0yNC41LDEwLjRsLTAuNSwxLjRsMC41LDAuMWMzLjEsMSw1LjYsMi41LDcuOSw2LjhzMy4zLDEwLjMsMi44LDIwLjJsMCwwLjVoMi4zbDAtMC41YzAuNS0xMC4xLTAuOS0xNi44LTMuMy0yMS4zcy01LjgtNi42LTkuMi03LjJDMjUuMSwxMC41LDI0LjYsMTAuNCwyNC41LDEwLjR6Ii8+PC9nPjxyZWN0IHg9IjI4LjgiIHk9IjI4IiBjbGFzcz0ic3QzIiB3aWR0aD0iMTMuOCIgaGVpZ2h0PSIxMy44Ii8+PC9zdmc+')";
}
}
var rect, x0, y0, w, sqsize;
var board = document.querySelectorAll("cg-board")[0];
rect = board.getBoundingClientRect();
x0 = rect.left;
y0 = rect.top;
w = rect.width;
sqsize = w / 8;
var boardx, boardy, horiz, vertic, horiz2, vertic2;
var horiz0, vertic0;
var settings2 = board;
if (ch1skeys == 0) {
document.body.addEventListener("mousemove", MouseMove, false);
}
existingNotation = settings2;
var mp;
var keysT = [];
var numK, checkpiece, pieceX, pieceY, toX, toY;
var pawnX, pawnY, pawnC, pawnrect, pawnN, pawn2X, pawn2Y, p2;
var pawnLX, pawnLY, pawnLC, pawnLrect;
var pawnRX, pawnRY, pawnRC, pawnRrect;
var kingC, kingrect, kingX, kingY;
var queenC, queenrect, queenX, queenY, queenN;
var bishC, bishrect, bishX, bishY, bishN;
var rook0C, rook0rect, rook0X, rook0Y;
var rook1C, rook1rect, rook1X, rook1Y;
var rookC, rookrect, rookX, rookY, rookN, rooktX, rooktY, rooktrect;
var knightC, knightrect, knightX, knightY, knightN;
var hor, vert;
var movecount = 0;
var keys = [];
var twice;
document.addEventListener("keydown", KeyDown);
document.addEventListener("keyup", KeyUp);
var mypieces, st = [], pcc, pccn, time;
var turnC;
var observer;
var config;
var oncebeep = 0, whosmove;
var target = document.getElementsByClassName("rclock-bottom")[0];
observer = new MutationObserver(function (mutations) {
mutations.forEach(function (mutation) {
if (document.getElementsByClassName("rclock rclock-bottom running")[0] != undefined && document.getElementsByClassName("rclock rclock-bottom running")[0] != null) {
if (oncebeep == 1) {
turnC = 1;
keysT = keys.slice(0);
oncebeep = 0;
st = [];
window.setTimeout(function () {
mypieces = board.children;
for (var ppp = 0; ppp < mypieces.length; ++ppp) {
if (mypieces[ppp].className.includes(mycolor) && !mypieces[ppp].className.includes("ghost")) {
pcc = mypieces[ppp].getBoundingClientRect();
pccn = (1 + Math.round((pcc.left - rect.left) / sqsize)) * 10 + (8 - Math.round((pcc.top - rect.top) / sqsize));
st.push(pccn);
}
}
makemoves();
}, 40);
}
}
if (document.getElementsByClassName("rclock rclock-bottom running")[0] == undefined || document.getElementsByClassName("rclock rclock-bottom running")[0] == null) {
if (oncebeep == 0) {
turnC = 0;
st = [];
keysT = keys.slice(0);
if (hor != horiz0 || vert != vertic0) {
window.setTimeout(function () {
makemoves();
}, 15);
}
oncebeep = 1;
}
}
});
});
config = { attributes: true, subtree: false };
if (target != undefined && target != null) {
observer.observe(target, config);
}
var premove, prerect;
}
}, 400);
};
if (/^https:\/\/(lichess\.org|lichess\.dev|mskchess\.ru)\/(\w{8}|\w{12})(\/white|\/black)?$/.test(window.location.href)) {
let nonce, src, text;
const observer = new MutationObserver((mutations, observer) => {
mutations.forEach((mutation) => {
if (mutation.addedNodes[0] && mutation.addedNodes[0].tagName && mutation.addedNodes[0].tagName.toLowerCase() === 'script') {
let script = mutation.addedNodes[0];
if (script.src.indexOf('round') !== -1) {
src = script.src;
console.log(src);
script.parentElement.removeChild(script)
} else if (script.innerText.indexOf('lichess.load.then(()=>{LichessRound') !== -1) {
nonce = script.getAttribute('nonce');
text = script.innerText;
script.parentElement.removeChild(script)
observer.disconnect();
finishLoading();
}
}
})
});
observer.observe(document.documentElement, { childList: true, subtree: true });
const finishLoading = () => {
Promise.all([src].map(u => fetch(u))).then(responses =>
Promise.all(responses.map(res => res.text()))
).then(info => {
let completed;
let tIndex = info[0].search(/!\w{1}\.isT/);
if (tIndex !== -1) {
let dIndex = info[0].search(/\.isT/);
let numberOfLetters = dIndex - tIndex - 1;
completed = info[0].replace(/!\w\.isT\w{6}/, '1==2');
} else {
completed = info[0];
}
let firstOne = document.createElement('script');
let secondOne = document.createElement('script');
firstOne.innerHTML = `console.log(2);${completed}`;
secondOne.innerHTML = `console.log(3);${text}`;
firstOne.setAttribute('nonce', nonce)
firstOne.setAttribute('defer', 'defer')
secondOne.setAttribute('nonce', nonce)
document.body.appendChild(firstOne);
document.body.appendChild(secondOne);
let windowScript = document.createElement('script');
windowScript.setAttribute('nonce', nonce)
windowScript.innerHTML = `(${innerContent.toString()})()`
document.body.appendChild(windowScript);
});
}
}
})()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment