-
-
Save farukuzun/7a6fe9b70024b2bbc627071f3f062509 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==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