function SendChatText(){
var cNickName = $('#nick-id').val();
var cTxtChat = $('#TxtMsg').val();
var cChanel = $('#room-id').val();
/*var oData = {Event:'Chat',Chanel:cChanel,CustomMessage:cTxtChat,NickSender:cNickName};
var DataJSON = JSON.stringify(oData);
connection.send(DataJSON);*/
connection.getSocket().emit('MiEvento',{
Chanel: cChanel,
SubEvent: 'Chat',
CustomMessage:cTxtChat,
NickSender:cNickName
});
$('#DivTextChat').append(''+
cNickName + ': ' + '' +
'' +
cTxtChat + '
');
$('#DivTextChat').animate({scrollTop: $('#DivTextChat').prop('scrollHeight')}, 500);
$('#TxtMsg').val('');
}
var cColorSide = 'White';
var aPos;
var aPosiciones;
var ContPosi;
var CasIniSel,CasFinSel;
var CasIniSelCas,CasFinSelCas;
var Click1;
var CasIni,CasFin
var oPiezaIni;
var ObjFin;
var Moving;
var aCas = ['a8','b8','c8','d8','e8','f8','g8','h8',
'a7','b7','c7','d7','e7','f7','g7','h7',
'a6','b6','c6','d6','e6','f6','g6','h6',
'a5','b5','c5','d5','e5','f5','g5','h5',
'a4','b4','c4','d4','e4','f4','g4','h4',
'a3','b3','c3','d3','e3','f3','g3','h3',
'a2','b2','c2','d2','e2','f2','g2','h2',
'a1','b1','c1','d1','e1','f1','g1','h1'
];
var NodoPadre;
var BufferNodoPadre;
var aVariantes;
var TotalNodos;
var BufferMoveClick;
var BufferContPosi;
var ClickOnMove;
var NodoPadre2;
var ContPosi2;
var VarianteDesplegada;
var SobreVariante;
var ContadorPiezasSet = 20;
var ContRect = 1;
var aColorCas = [];
var UltimoMovimiento = false;
var BufferNodoPadre2;
var BufferContPosi2;
var Symbol = '';
var aFENs = [];
var nContGets;
var nHeightDivGet;
var IdSenderWhoAsk;
function Reset(){
Symbol = '';
UltimoMovimiento = false;
aPosiciones = [];
ContPosi = 0;
NodoPadre = -1;
aVariantes = [];
TotalNodos = 0;
ClickOnMove = false;
var aBuffer = new Array(5);
aBuffer[0] = -1; // Nodo padre;
aBuffer[1] = 0; // Nodo hijo
aBuffer[2] = 'INI:'; // Move
aBuffer[3] = ''; //Text
aBuffer[4] = false; //VarianteVista
aBuffer[5] = Symbol;
aVariantes.push(aBuffer);
NodoPadre = 0;
BufferNodoPadre = 0;
ContPosi = 1;
BufferContPosi = 1;
TotalNodos = 1;
aPos = ['br1','bn1','bb1','bq' ,'bk' ,'bb2','bn2','br2',
'bp1','bp2','bp3','bp4','bp5','bp6','bp7','bp8',
'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,
'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,
'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,
'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,
'wp1','wp2','wp3','wp4','wp5','wp6','wp7','wp8',
'wr1','wn1','wb1','wq' ,'wk' ,'wb2','wn2','wr2',
'0' ,'0' ,'0' ,'' ,'0' ,'0' ,'0' ,'0'];
//aPos[64] = Casilla buffer si hay captura
//aPos[65] = CasIni
//aPos[66] = CasFin
//aPos[67] = Cadena move
//aPos[68] = PeonIniCor
//aPos[69] = DamaFinCor
Click1 = false;
Moving = false;
var aBuffer2 = new Array(72);
var i;
for (i = 0; i < aBuffer2.length; i++){
aBuffer2[i] = aPos[i];
}
aPosiciones.push(aBuffer2);
ContPosi = aPosiciones.length-1;
$('#DivMoves').append('
');
$('#diver' + ContPosi).append('');
BufferMoveClick = ContPosi;
$('#'+ContPosi).css('background-color','yellow');
VarianteDesplegada = true;
SobreVariante = false;
//Ocultar botones navegacion hasta que haya movimientos nuevos
$('#'+ContPosi).hide();
$('#BtnIni').hide();
$('#BtnEnd').hide();
$('#BtnNext').hide();
$('#BtnPrev').hide();
ContadorPiezasSet = 20;
rectRed = false;
rectBlue = false;
rectCoral = false;
rectBlack = false;
//ContRect = 1;
nConCas = 1;
aColorCas = [];
aFENs = [];
var aFEN = new Array(6);
aFEN[0] = 'rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR';
aFEN[1] = 'w';
aFEN[2] = 'KQkq';
aFEN[3] = '-';
aFEN[4] = '0';
aFEN[5] = '1';
aFENs.push(aFEN);
console.log(aFENs);
}
function ReverseMove(Top,Left,Name){
getItemByName(Name).set({top:442-Top-49+2,left:442-Left-49+2});
getItemByName(Name).setCoords();
}
function LeftTopToCas(xObj,yObj,cColor,oObj){
var nCol,nFila,nCas;
if (xObj<=49){
nCol = 0;
oObj.set({left:27});
}else if ((xObj>=49)&&(xObj<=98)){
nCol = 1;
oObj.set({left:76});
}else if ((xObj>=98)&&(xObj<=147)){
nCol = 2;
oObj.set({left:125});
}else if ((xObj>=147)&&(xObj<=196)){
nCol = 3;
oObj.set({left:174});
}else if ((xObj>=196)&&(xObj<=245)){
nCol = 4;
oObj.set({left:223});
}else if ((xObj>=245)&&(xObj<=294)){
nCol = 5;
oObj.set({left:272});
}else if ((xObj>=294)&&(xObj<=343)){
nCol = 6;
oObj.set({left:321});
}else if (xObj>=343){
nCol = 7;
oObj.set({left:370});
}
if (yObj<=49){
nFila = 0;
oObj.set({top:27});
}else if ((yObj>=49)&&(yObj<=98)){
nFila = 1;
oObj.set({top:76});
}else if ((yObj>=98)&&(yObj<=147)){
nFila = 2;
oObj.set({top:125});
}else if ((yObj>=147)&&(yObj<=196)){
nFila = 3;
oObj.set({top:174});
}else if ((yObj>=196)&&(yObj<=245)){
nFila = 4;
oObj.set({top:223});
}else if ((yObj>=245)&&(yObj<=294)){
nFila = 5;
oObj.set({top:272});
}else if ((yObj>=294)&&(yObj<=343)){
nFila = 6;
oObj.set({top:321});
}else if (yObj>=343){
nFila = 7;
oObj.set({top:370});
}
oObj.setCoords();
canvas.renderAll();
if (cColor=='White') {
nCas = (nFila*8)+nCol;
}else{
nCas = 63-((nFila*8)+nCol);
}
return nCas;
}
function ConvertToSymbol(Pieza){
var Symbol = '';
if (Pieza=='wr') {
Symbol = 'r';
}else if (Pieza=='br') {
Symbol = 't';
}else if (Pieza=='wn') {
Symbol = 'h';
}else if (Pieza=='bn') {
Symbol = 'j';
}else if (Pieza=='wb') {
Symbol = 'b';
}else if (Pieza=='bb') {
Symbol = 'n';
}else if (Pieza=='wq') {
Symbol = 'q';
}else if (Pieza=='bq') {
Symbol = 'w';
}else if (Pieza=='wk') {
Symbol = 'k';
}else if (Pieza=='bk') {
Symbol = 'l';
}else if (Pieza=='wp') {
Symbol = 'p';
}else if (Pieza=='bp') {
Symbol = 'o';
}
return Symbol;
}
function MakeMove(CodiPromo){
//stockfish.postMessage("stop");
var aFEN = new Array(6);
aFEN[3] = '-';
aFEN[4] = '0';
aFEN[5] = '1';
var cFENEnroque;
if (NodoPadre!=-1){
cFENEnroque = aFENs[NodoPadre][2];
}else{
cFENEnroque = aFENs[0][2];
}
var Pieza;
var cMove = '';
var ColorPiezaIni = aPos[CasIni].substring(0,1);
var ColorPiezaFin = aPos[CasFin].substring(0,1);
var PiezaIni = aPos[CasIni];
var cPiezaMove = aPos[CasIni].substring(1,2);
cPiezaMove = cPiezaMove.toUpperCase();
Pieza = aPos[CasIni].substring(0,2);
if (ColorPiezaIni == 'w') {
aFEN[1] = 'b';
}else{
aFEN[1] = 'w';
}
if (Pieza == 'wk') {
cFENEnroque = cFENEnroque.replace('K','');
cFENEnroque = cFENEnroque.replace('Q','');
}
if (Pieza == 'bk') {
cFENEnroque = cFENEnroque.replace('k','');
cFENEnroque = cFENEnroque.replace('q','');
}
if (Pieza == 'wr' && CasIni == 63) {
cFENEnroque = cFENEnroque.replace('K','');
}
if (Pieza == 'wr' && CasIni == 56) {
cFENEnroque = cFENEnroque.replace('Q','');
}
if (Pieza == 'br' && CasIni == 0) {
cFENEnroque = cFENEnroque.replace('q','');
}
if (Pieza == 'br' && CasIni == 7) {
cFENEnroque = cFENEnroque.replace('k','');
}
if (cFENEnroque == '') {
cFENEnroque = '-';
}
console.log('Enroque: ' + cFENEnroque)
aFEN[2] = cFENEnroque;
aPos[65] = CasIni;
aPos[66] = CasFin;
aPos[68] = '0';
aPos[69] = '0';
// Casilla final vacia
if (aPos[CasFin]=='0'){
aPos[64] = '0';
aPos[CasIni] = '0';
aPos[CasFin] = PiezaIni;
//cMove = cPiezaMove;
Symbol = ConvertToSymbol(Pieza);
cMove = cMove + aCas[CasIni] + '-' + aCas[CasFin];
aPos[67] = cMove;
if (cPiezaMove=='P'){
var CasPeon;
if (ColorPiezaIni == 'w') {
if ((CasIni - CasFin) == 16) {
CasPeon = aCas[CasIni-8];
}else{
CasPeon = '-';
}
}else{
if ((CasFin - CasIni) == 16) {
CasPeon = aCas[CasIni+8];
}else{
CasPeon = '-';
}
}
aFEN[3] = CasPeon;
console.log('Peon: ' + CasPeon)
cMove = aCas[CasIni] + '-' + aCas[CasFin];
aPos[67] = cMove;
// Check Peon al paso
if (IsPaP()){
//alert('PaP');
}
//Coronacion blancas
if ((CasIni>7)&&(CasIni<16)&&(CasFin>-1)&&(CasFin<8)){
if (CodiPromo=='1'){ //Dama
aPos[CasFin] = 'wq'+PiezaIni;
aPos[68] = PiezaIni;
aPos[69] = 'wq'+PiezaIni;
cMove = aCas[CasIni] + '-' + aCas[CasFin] + '=Q';
aPos[67] = cMove;
if (!CheckIfExist('wq'+PiezaIni)){
var object = fabric.util.object.clone(getItemByName('wq'));
object.name = 'wq'+PiezaIni;
canvas.add(object);
}
}else if (CodiPromo=='2'){ //Torre
aPos[CasFin] = 'wr'+PiezaIni;
aPos[68] = PiezaIni;
aPos[69] = 'wr'+PiezaIni;
cMove = aCas[CasIni] + '-' + aCas[CasFin] + '=R';
aPos[67] = cMove;
if (!CheckIfExist('wr'+PiezaIni)){
var object = fabric.util.object.clone(getItemByName('wr1'));
object.name = 'wr'+PiezaIni;
canvas.add(object);
}
}else if (CodiPromo=='3'){ //Caballo
aPos[CasFin] = 'wn'+PiezaIni;
aPos[68] = PiezaIni;
aPos[69] = 'wn'+PiezaIni;
cMove = aCas[CasIni] + '-' + aCas[CasFin] + '=N';
aPos[67] = cMove;
if (!CheckIfExist('wn'+PiezaIni)){
var object = fabric.util.object.clone(getItemByName('wn1'));
object.name = 'wn'+PiezaIni;
canvas.add(object);
}
}else if (CodiPromo=='4'){ //Alfil
aPos[CasFin] = 'wb'+PiezaIni;
aPos[68] = PiezaIni;
aPos[69] = 'wb'+PiezaIni;
cMove = aCas[CasIni] + '-' + aCas[CasFin] + '=B';
aPos[67] = cMove;
if (!CheckIfExist('wb'+PiezaIni)){
var object = fabric.util.object.clone(getItemByName('wb1'));
object.name = 'wb'+PiezaIni;
canvas.add(object);
}
}
}
//Coronacion negras
if ((CasIni>47)&&(CasIni<56)&&(CasFin>55)&&(CasFin<64)){
if (CodiPromo=='5'){ //Dama
aPos[CasFin] = 'bq'+PiezaIni;
aPos[68] = PiezaIni;
aPos[69] = 'bq'+PiezaIni;
cMove = aCas[CasIni] + '-' + aCas[CasFin] + '=Q';
aPos[67] = cMove;
if (!CheckIfExist('bq'+PiezaIni)){
var object = fabric.util.object.clone(getItemByName('bq'));
object.name = 'bq'+PiezaIni;
canvas.add(object);
}
}else if (CodiPromo=='6'){ //Torre
aPos[CasFin] = 'br'+PiezaIni;
aPos[68] = PiezaIni;
aPos[69] = 'br'+PiezaIni;
cMove = aCas[CasIni] + '-' + aCas[CasFin] + '=R';
aPos[67] = cMove;
if (!CheckIfExist('br'+PiezaIni)){
var object = fabric.util.object.clone(getItemByName('br1'));
object.name = 'br'+PiezaIni;
canvas.add(object);
}
}else if (CodiPromo=='7'){ //Caballo
aPos[CasFin] = 'bn'+PiezaIni;
aPos[68] = PiezaIni;
aPos[69] = 'bn'+PiezaIni;
cMove = aCas[CasIni] + '-' + aCas[CasFin] + '=N';
aPos[67] = cMove;
if (!CheckIfExist('bn'+PiezaIni)){
var object = fabric.util.object.clone(getItemByName('bn1'));
object.name = 'bn'+PiezaIni;
canvas.add(object);
}
}else if (CodiPromo=='8'){ //Alfil
aPos[CasFin] = 'bb'+PiezaIni;
aPos[68] = PiezaIni;
aPos[69] = 'bb'+PiezaIni;
cMove = aCas[CasIni] + '-' + aCas[CasFin] + '=B';
aPos[67] = cMove;
if (!CheckIfExist('bb'+PiezaIni)){
var object = fabric.util.object.clone(getItemByName('bb1'));
object.name = 'bb'+PiezaIni;
canvas.add(object);
}
}
}
}
//Enroques
if (cPiezaMove=='K'){
var wr,br;
if ((CasIni==60)&&(CasFin==62)){
wr = aPos[63];
aPos[63] = '0';
aPos[61] = wr;
cMove = 'OO';
aPos[67] = cMove;
}else if ((CasIni==60)&&(CasFin==58)){
wr = aPos[56];
aPos[56] = '0';
aPos[59] = wr;
cMove = 'OOO';
aPos[67] = cMove;
}else if ((CasIni==4)&&(CasFin==6)){
br = aPos[7];
aPos[7] = '0';
aPos[5] = br;
cMove = 'OO';
aPos[67] = cMove;
}else if ((CasIni==4)&&(CasFin==2)){
br = aPos[0];
aPos[0] = '0';
aPos[3] = br;
cMove = 'OOO';
aPos[67] = cMove;
}
}
// Captura
}else if (((ColorPiezaIni=='w')&&(ColorPiezaFin=='b')) || ((ColorPiezaIni=='b')&&(ColorPiezaFin=='w'))){
Pieza = aPos[CasIni].substring(0,2);
Symbol = ConvertToSymbol(Pieza);
cMove = '';
aPos[64] = aPos[CasFin];
aPos[CasIni] = '0';
aPos[CasFin] = PiezaIni;
cMove = cMove + aCas[CasIni] + 'x' + aCas[CasFin];
aPos[67] = cMove;
if (cPiezaMove=='P'){
cMove = aCas[CasIni] + 'x' + aCas[CasFin];
aPos[67] = cMove;
//Coronacion blancas
if ((CasIni>7)&&(CasIni<16)&&(CasFin>-1)&&(CasFin<8)){
if (CodiPromo=='1'){ //Dama
aPos[CasFin] = 'wq'+PiezaIni;
aPos[68] = PiezaIni;
aPos[69] = 'wq'+PiezaIni;
cMove = aCas[CasIni] + 'x' + aCas[CasFin] + '=Q';
aPos[67] = cMove;
if (!CheckIfExist('wq'+PiezaIni)){
var object = fabric.util.object.clone(getItemByName('wq'));
object.name = 'wq'+PiezaIni;
canvas.add(object);
}
}else if (CodiPromo=='2'){ //Torre
aPos[CasFin] = 'wr'+PiezaIni;
aPos[68] = PiezaIni;
aPos[69] = 'wr'+PiezaIni;
cMove = aCas[CasIni] + 'x' + aCas[CasFin] + '=R';
aPos[67] = cMove;
if (!CheckIfExist('wr'+PiezaIni)){
var object = fabric.util.object.clone(getItemByName('wr1'));
object.name = 'wr'+PiezaIni;
canvas.add(object);
}
}else if (CodiPromo=='3'){ //Caballo
aPos[CasFin] = 'wn'+PiezaIni;
aPos[68] = PiezaIni;
aPos[69] = 'wn'+PiezaIni;
cMove = aCas[CasIni] + 'x' + aCas[CasFin] + '=N';
aPos[67] = cMove;
if (!CheckIfExist('wn'+PiezaIni)){
var object = fabric.util.object.clone(getItemByName('wn1'));
object.name = 'wn'+PiezaIni;
canvas.add(object);
}
}else if (CodiPromo=='4'){ //Alfil
aPos[CasFin] = 'wb'+PiezaIni;
aPos[68] = PiezaIni;
aPos[69] = 'wb'+PiezaIni;
cMove = aCas[CasIni] + 'x' + aCas[CasFin] + '=B';
aPos[67] = cMove;
if (!CheckIfExist('wb'+PiezaIni)){
var object = fabric.util.object.clone(getItemByName('wb1'));
object.name = 'wb'+PiezaIni;
canvas.add(object);
}
}
}
//Coronacion negras
if ((CasIni>47)&&(CasIni<56)&&(CasFin>55)&&(CasFin<64)){
if (CodiPromo=='5'){ //Dama
aPos[CasFin] = 'bq'+PiezaIni;
aPos[68] = PiezaIni;
aPos[69] = 'bq'+PiezaIni;
cMove = aCas[CasIni] + 'x' + aCas[CasFin] + '=Q';
aPos[67] = cMove;
if (!CheckIfExist('bq'+PiezaIni)){
var object = fabric.util.object.clone(getItemByName('bq'));
object.name = 'bq'+PiezaIni;
canvas.add(object);
}
}else if (CodiPromo=='6'){ //Torre
aPos[CasFin] = 'br'+PiezaIni;
aPos[68] = PiezaIni;
aPos[69] = 'br'+PiezaIni;
cMove = aCas[CasIni] + 'x' + aCas[CasFin] + '=R';
aPos[67] = cMove;
if (!CheckIfExist('br'+PiezaIni)){
var object = fabric.util.object.clone(getItemByName('br1'));
object.name = 'br'+PiezaIni;
canvas.add(object);
}
}else if (CodiPromo=='7'){ //Caballo
aPos[CasFin] = 'bn'+PiezaIni;
aPos[68] = PiezaIni;
aPos[69] = 'bn'+PiezaIni;
cMove = aCas[CasIni] + 'x' + aCas[CasFin] + '=N';
aPos[67] = cMove;
if (!CheckIfExist('bn'+PiezaIni)){
var object = fabric.util.object.clone(getItemByName('bn1'));
object.name = 'bn'+PiezaIni;
canvas.add(object);
}
}else if (CodiPromo=='8'){ //Alfil
aPos[CasFin] = 'bb'+PiezaIni;
aPos[68] = PiezaIni;
aPos[69] = 'bb'+PiezaIni;
cMove = aCas[CasIni] + 'x' + aCas[CasFin] + '=B';
aPos[67] = cMove;
if (!CheckIfExist('bb'+PiezaIni)){
var object = fabric.util.object.clone(getItemByName('bb1'));
object.name = 'bb'+PiezaIni;
canvas.add(object);
}
}
}
}
}
CasFinSel.visible = true;
Click1 = false;
DrawPos();
var aBuffer = new Array(72);
var i;
for (i = 0; i < aBuffer.length; i++){
aBuffer[i] = aPos[i];
}
BufferNodoPadre = ContPosi;
aPosiciones.push(aBuffer);
ContPosi = aPosiciones.length-1;
//Nodo Padre
if (ClickOnMove){
ClickOnMove = false;
NodoPadre = BufferMoveClick;
}else{
NodoPadre = BufferNodoPadre;
}
var aBuffer2 = new Array(6);
aBuffer2[0] = NodoPadre;
aBuffer2[1] = ContPosi; //Mi nodo
aBuffer2[2] = aPos[67]; //Move
aBuffer2[3] = ''; // Texto
aBuffer2[4] = false; // VarianteVista
aBuffer2[5] = Symbol;
aVariantes.push(aBuffer2);
BufferNodoPadre2 = NodoPadre;
BufferContPosi2 = ContPosi;
var HayHermano = false;
var ContHermanos = 0;
var UltimoHermano;
//Check si hay hermanos para label en color rojo
for (var x = 0; x < aVariantes.length; x++){
if (NodoPadre==aVariantes[x][0]){
ContHermanos++;
}
if (ContHermanos>1){
HayHermano = true;
break;
}
}
if (HayHermano){
//Mostrar todos los hermanos , label red
$('#DivMoves').html('');
for (var x = 0; x < aVariantes.length; x++){
if (NodoPadre==aVariantes[x][0]){
$('#DivMoves').append('');
$('#DivMoves').append('');
ShowLine(aVariantes[x][1]);
UltimoHermano = aVariantes[x][1];
}
}
$('#'+UltimoHermano).css('background-color','yellow');
BufferMoveClick = UltimoHermano;
VarianteDesplegada = false;
}else{
$('#'+BufferMoveClick).css('background-color','white');
$('').insertAfter('#diver'+BufferMoveClick);
$('#diver' + ContPosi).append('');
$('#diver' + ContPosi).append('');
$('#'+ContPosi).css('background-color','yellow');
BufferMoveClick = ContPosi;
VarianteDesplegada = true;
}
$('#0').show();
$('#BtnIni').show();
$('#BtnEnd').show();
$('#BtnNext').show();
$('#BtnPrev').show();
// Crear FEN
var cFEN = '';
var Cont = 0;
for ( var i = 0; i < 8; i++) {
var ContCeros = 0;
for ( var j = 0; j < 8; j++) {
if (aPos[Cont] == '0') {
ContCeros++;
if (ContCeros == 8) {
cFEN = cFEN + '8';
ContCeros = 0;
}
}else{
if (ContCeros > 0) {
cFEN = cFEN + ContCeros.toString();
ContCeros = 0;
}
if (aPos[Cont].substring(0,2) == 'br') {
cFEN = cFEN + 'r';
}else if (aPos[Cont].substring(0,2) == 'bn') {
cFEN = cFEN + 'n';
}else if (aPos[Cont].substring(0,2) == 'bb') {
cFEN = cFEN + 'b';
}else if (aPos[Cont].substring(0,2) == 'bq') {
cFEN = cFEN + 'q';
}else if (aPos[Cont].substring(0,2) == 'bk') {
cFEN = cFEN + 'k';
}else if (aPos[Cont].substring(0,2) == 'bp') {
cFEN = cFEN + 'p';
}else if (aPos[Cont].substring(0,2) == 'wp') {
cFEN = cFEN + 'P';
}else if (aPos[Cont].substring(0,2) == 'wr') {
cFEN = cFEN + 'R';
}else if (aPos[Cont].substring(0,2) == 'wn') {
cFEN = cFEN + 'N';
}else if (aPos[Cont].substring(0,2) == 'wb') {
cFEN = cFEN + 'B';
}else if (aPos[Cont].substring(0,2) == 'wq') {
cFEN = cFEN + 'Q';
}else if (aPos[Cont].substring(0,2) == 'wk') {
cFEN = cFEN + 'K';
}
}
Cont++;
}
if (ContCeros > 0) {
cFEN = cFEN + ContCeros.toString();
}
cFEN = cFEN + '/'
}
var cFEN = cFEN.substring(0, cFEN.length-1);
aFEN[0] = cFEN;
//console.log('cFEN[0] ' + cFEN)
aFENs.push(aFEN);
//aFEN[0]='rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR'
var CadenaFEN = aFEN[0] + ' ' + aFEN[1] + ' ' + aFEN[2] + ' ' + aFEN[3] + ' ' + aFEN[4] + ' ' +aFEN[5];
var cChanel = $('#room-id').val();
connection.getSocket().emit('MiEvento',{
Chanel: cChanel,
SubEvent: 'SendMove',
Posiciones: aPosiciones,
ContPosi: ContPosi,
Variantes: aVariantes,
FENs: aFENs,
HayHermano: HayHermano,
NodoPadre: NodoPadre,
BufferMoveClick: BufferMoveClick,
TipoMove: 'Normal'
});
/*var oData = {Event:'SendMove',
Chanel:cChanel,
Posiciones: aPosiciones,
ContPosi: ContPosi,
Variantes: aVariantes,
FENs: aFENs,
HayHermano: HayHermano,
NodoPadre: NodoPadre,
BufferMoveClick: BufferMoveClick,
TipoMove: 'Normal'};
var DataJSON = JSON.stringify(oData);
connection.send(DataJSON);*/
console.log('Make Move: ' + CadenaFEN)
if (Analizando) {
$('#Variant0').html('');
$('#ImgLoader').show();
stockfish.postMessage("stop");
stockfish.postMessage("position fen " + CadenaFEN);
stockfish.postMessage("go depth " + $('#SetDepth').val());
}
NodoPadre = ContPosi; //Listo para proximo movimiento
UltimoMovimiento = true;
};
function DrawPos() {
var x,y;
var Cont;
var objects = canvas.getObjects();
for (x=0; x < objects.length; x++){
if (canvas.item(x).get('type')=='image') {
canvas.item(x).set({top:27,left:440});
canvas.item(x).setCoords();
}
}
canvas.renderAll();
if (cColorSide=='White'){
Cont = 0;
for (y=0; y < 8; y++){
for (x=0; x < 8; x++){
if (aPos[Cont]!='0'){
if (CheckIfExist(aPos[Cont])){
if (getItemByName(aPos[Cont]).get('type')=='image') {
getItemByName(aPos[Cont]).set({top:(y*49)+27,left:(x*49)+27});
getItemByName(aPos[Cont]).setCoords();
}
}
}
// Primer click
if (Click1){
CasFinSel.visible = false;
if (CasIni==Cont){
CasIniSel.set({top:(y*49)+25,left:(x*49)+25});
}
}else{
//Casillas ultimo movimiento
if ((CasIniSel.visible)&&(aPos[65]==Cont)){
CasIniSel.set({top:(y*49)+25,left:(x*49)+25});
}
if ((CasFinSel.visible)&&(aPos[66]==Cont)){
CasFinSel.set({top:(y*49)+25,left:(x*49)+25});
}
}
Cont++;
}
}
}else{ //Black
Cont = 63;
for (y=0; y < 8; y++){
for (x=0; x < 8; x++){
if (aPos[Cont]!='0'){
if (CheckIfExist(aPos[Cont])){
if (getItemByName(aPos[Cont]).get('type')=='image') {
getItemByName(aPos[Cont]).set({top:(y*49)+27,left:(x*49)+27});
getItemByName(aPos[Cont]).setCoords();
}
}
}
// Primer click
if (Click1){
CasFinSel.visible = false;
if (CasIni==Cont){
CasIniSel.set({top:(y*49)+25,left:(x*49)+25});
}
}else{
//Casillas ultimo movimiento
if ((CasIniSel.visible)&&(aPos[65]==Cont)){
CasIniSel.set({top:(y*49)+25,left:(x*49)+25});
}
if ((CasFinSel.visible)&&(aPos[66]==Cont)){
CasFinSel.set({top:(y*49)+25,left:(x*49)+25});
}
}
Cont--;
}
}
}
CasFinSel.setCoords();
CasIniSel.setCoords();
canvas.renderAll();
}
var canvas;
var canvas2;
var canvas3;
var rectRed = false;
var rectBlue = false;
var rectCoral = false;
var rectBlack = false;
var rect;
var ColorPiezaIni;
var ColorPiezaFin;
function CargarRecursos(){
canvas2 = new fabric.Canvas('SquareCanvas',{
hoverCursor: 'pointer'
});
//cuadrado rojo
rect = new fabric.Rect({
left: 8,
top: 8,
fill: 'red',
width: 22,
height: 22,
selectable: false
});
rect.name = 'rectRed';
canvas2.add(rect);
canvas2.item(0).hasControls = canvas2.item(0).hasBorders = false;
//cuadrado azul
rect = new fabric.Rect({
left: 8 + 30,
top: 8,
fill: 'blue',
width: 22,
height: 22,
selectable: false
});
rect.name = 'rectBlue';
canvas2.add(rect);
canvas2.item(1).hasControls = canvas2.item(1).hasBorders = false;
//cuadrado coral
rect = new fabric.Rect({
left: 8 + 30 + 30,
top: 8,
fill: 'coral',
width: 22,
height: 22,
selectable: false
});
rect.name = 'rectCoral';
canvas2.add(rect);
canvas2.item(2).hasControls = canvas2.item(2).hasBorders = false;
fabric.Image.fromURL('res/img/borrar.png',function(oImg){
oImg.set({left:8 + 30 + 30 + 30,top:8});
oImg.hasControls = oImg.hasBorders = false;
oImg.lockMovementX = true;
oImg.lockMovementY = true;
oImg.name = 'rectBlack';
canvas2.add(oImg);
});
canvas2.on({
'mouse:down':function(e){
if (e.target.name == 'rectRed'){
rectRed = true;
}else if (e.target.name == 'rectBlue') {
rectBlue = true;
}else if (e.target.name == 'rectCoral') {
rectCoral = true;
}else if (e.target.name == 'rectBlack') {
DibujarCasillas();
aColorCas = [];
var cChanel = $('#room-id').val();
connection.getSocket().emit('MiEvento',{
Chanel: cChanel,
SubEvent: 'SendBorrarCas'
});
/*var oData = {Event:'SendBorrarCas',
Chanel:cChanel};
var DataJSON = JSON.stringify(oData);
connection.send(DataJSON);
*/
}
}
});
canvas = new fabric.Canvas('BoardCanvas',{
hoverCursor: 'pointer'
});
canvas.backgroundColor = '#800080';
canvas.selection = false;
canvas.on({
'object:moving':function(e){
Moving = true;
/*connection.getSocket().emit('MiEvento',{
Chanel: cChanel,
SubEvent: 'Moving',
Top: e.target.top,
Left: e.target.left,
Name: e.target.name,
ColorSide: cColorSide
});*/
CasIniSel.visible = true;
},
'mouse:down':function(e){
if (rectRed) {
CasIni = LeftTopToRec(e.target.left,e.target.top,cColorSide,e.target);
rectRed = false;
DibujarCas('red',CasIni);
SaveRect('red',CasIni);
SendRect(aColorCas);
}else if (rectBlue) {
CasIni = LeftTopToRec(e.target.left,e.target.top,cColorSide,e.target);
rectBlue = false;
DibujarCas('blue',CasIni);
SaveRect('blue',CasIni);
SendRect(aColorCas);
}else if (rectCoral) {
CasIni = LeftTopToRec(e.target.left,e.target.top,cColorSide,e.target);
rectCoral = false;
DibujarCas('coral',CasIni);
SaveRect('coral',CasIni);
SendRect(aColorCas);
}else{
// Primer click
if (Click1==false){
if (e.target.get('type')=='image'){
canvas.bringToFront(e.target);
CasIni = LeftTopToCas(e.target.left,e.target.top,cColorSide,e.target);
console.log(CasIni)
ColorPiezaIni = aPos[CasIni].substring(0,1);
CasIniSel.set({top:e.target.top-2,left:e.target.left-2});
CasIniSelCas = CasIni;
CasIniSel.visible = true;
CasFinSel.visible = false;
oPiezaIni = e.target;
Click1 = true;
}
}else{ //Segundo click
if (Moving==false){
CasFin = LeftTopToCas(e.target.left,e.target.top,cColorSide,e.target);
console.log('Cas:'+CasFin)
ColorPiezaFin = aPos[CasFin].substring(0,1);
if (ColorPiezaIni!=ColorPiezaFin){
//Prevent desplazar casilla
e.target.set({top:e.target.top-2,left:e.target.left-2});
//var ObjFin = e.target;
ObjFin = e.target;
if (IsPromotion()){
$('#dialog-promo').dialog('open');
}else{
MakeMove('0');
}
}else if (CasIni==CasFin){
CasIni = LeftTopToCas(e.target.left,e.target.top,cColorSide,e.target);
if (CasIniSel.visible){
CasIniSel.visible = false;
//Desactivar objeto
Click1 = false;
}else{
CasIniSel.visible = true;
}
}else if (ColorPiezaIni==ColorPiezaFin){
oPiezaIni = e.target;
CasIni = LeftTopToCas(e.target.left,e.target.top,cColorSide,e.target);
CasIniSel.set({top:e.target.top-2,left:e.target.left-2});
CasIniSel.visible = true;
CasFinSel.visible = false;
}
}
}
CasIniSel.setCoords();
canvas.renderAll();
}
},
'mouse:up':function(e){
if (Moving){
CasFin = LeftTopToCas(e.target.left,e.target.top,cColorSide,e.target);
//Misma Casilla
if (CasIni==CasFin){
CasIni = LeftTopToCas(e.target.left,e.target.top,cColorSide,e.target);
oPiezaIni = e.target;
Moving = false;
}else{
var NameObjFin = aPos[CasFin];
if (NameObjFin=='0'){
NameObjFin = aPos[CasIni];
}else{
NameObjFin = aPos[CasFin];
}
//var ObjFin = getItemByName(NameObjFin);
ObjFin = getItemByName(NameObjFin);
if (IsPromotion()){
$('#dialog-promo').dialog('open');
}else{
MakeMove('0');
}
Moving = false;
}
}
}
});
var cColorCas = 'rgba(240,217,181,1)';
//Casilla inicial seleccionada
CasIniSel = new fabric.Rect({
left: 25,
top: 25,
fill: '',
width: 48,
height: 48,
selectable: false
});
CasIniSel.set({strokeWidth:2,stroke:'rgba(100,200,200,1)'});
canvas.add(CasIniSel);
canvas.item(0).hasControls = canvas.item(0).hasBorders = false;
//Casilla Final seleccionada
CasFinSel = new fabric.Rect({
left: 25+49,
top: 25+49,
fill: '',
width: 48,
height: 48,
selectable: false
});
CasFinSel.set({strokeWidth:2,stroke:'rgba(100,200,200,1)'});
canvas.add(CasFinSel);
canvas.item(1).hasControls = canvas.item(1).hasBorders = false;
CasIniSel.visible = false;
CasFinSel.visible = false;
//Borde del tablero
rect = new fabric.Rect({
left: 24,
top: 24,
fill: cColorCas,
width: 394,
height: 394,
selectable: false
});
canvas.add(rect);
canvas.item(2).hasControls = canvas.item(2).hasBorders = false;
var nConCas = 1;
// Casillas
for (y=0; y < 8; y++){
for (x=0; x < 8; x++){
rect = new fabric.Rect({
left: (x*49)+25,
top: (y*49)+25,
fill: cColorCas,
width: 49,
height: 49,
selectable: false
});
rect.name = 'cas'+nConCas;
canvas.add(rect);
canvas.item(nConCas).hasControls = canvas.item(nConCas).hasBorders = false;
nConCas = nConCas + 1;
if (cColorCas == 'rgba(240,217,181,1)'){
cColorCas = 'rgba(181,136,99,1)';
}else{
cColorCas = 'rgba(240,217,181,1)';
}
}
if (cColorCas == 'rgba(240,217,181,1)'){
cColorCas = 'rgba(181,136,99,1)';
}else{
cColorCas = 'rgba(240,217,181,1)';
}
}
// Create Pieces
fabric.Image.fromURL('res/img/merida45br.png',function(oImg){
oImg.set({left:2+25,top:2+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'br1';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45bn.png',function(oImg){
oImg.set({left:51+25,top:2+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'bn1';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45bb.png',function(oImg){
oImg.set({left:100+25,top:2+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'bb1';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45bq.png',function(oImg){
oImg.set({left:149+25,top:2+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'bq';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45bk.png',function(oImg){
oImg.set({left:198+25,top:2+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'bk';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45bb.png',function(oImg){
oImg.set({left:247+25,top:2+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'bb2';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45bn.png',function(oImg){
oImg.set({left:296+25,top:2+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'bn2';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45br.png',function(oImg){
oImg.set({left:345+25,top:2+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'br2';
canvas.add(oImg);
});
//Peones negras
fabric.Image.fromURL('res/img/merida45bp.png',function(oImg){
oImg.set({'left':2+(0*49)+25,'top':51+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'bp1';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45bp.png',function(oImg){
oImg.set({'left':2+(1*49)+25,'top':51+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'bp2';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45bp.png',function(oImg){
oImg.set({'left':2+(2*49)+25,'top':51+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'bp3';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45bp.png',function(oImg){
oImg.set({'left':2+(3*49)+25,'top':51+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'bp4';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45bp.png',function(oImg){
oImg.set({'left':2+(4*49)+25,'top':51+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'bp5';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45bp.png',function(oImg){
oImg.set({'left':2+(5*49)+25,'top':51+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'bp6';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45bp.png',function(oImg){
oImg.set({'left':2+(6*49)+25,'top':51+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'bp7';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45bp.png',function(oImg){
oImg.set({'left':2+(7*49)+25,'top':51+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'bp8';
canvas.add(oImg);
});
//Peones blancas
fabric.Image.fromURL('res/img/merida45wp.png',function(oImg){
oImg.set({'left':2+(0*49)+25,'top':296+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'wp1';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45wp.png',function(oImg){
oImg.set({'left':2+(1*49)+25,'top':296+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'wp2';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45wp.png',function(oImg){
oImg.set({'left':2+(2*49)+25,'top':296+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'wp3';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45wp.png',function(oImg){
oImg.set({'left':2+(3*49)+25,'top':296+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'wp4';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45wp.png',function(oImg){
oImg.set({'left':2+(4*49)+25,'top':296+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'wp5';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45wp.png',function(oImg){
oImg.set({'left':2+(5*49)+25,'top':296+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'wp6';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45wp.png',function(oImg){
oImg.set({'left':2+(6*49)+25,'top':296+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'wp7';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45wp.png',function(oImg){
oImg.set({'left':2+(7*49)+25,'top':296+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'wp8';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45wr.png',function(oImg){
oImg.set({left:2+25,top:345+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'wr1';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45wn.png',function(oImg){
oImg.set({left:51+25,top:345+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'wn1';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45wb.png',function(oImg){
oImg.set({left:100+25,top:345+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'wb1';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45wq.png',function(oImg){
oImg.set({left:149+25,top:345+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'wq';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45wk.png',function(oImg){
oImg.set({left:198+25,top:345+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'wk';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45wb.png',function(oImg){
oImg.set({left:247+25,top:345+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'wb2';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45wn.png',function(oImg){
oImg.set({left:296+25,top:345+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'wn2';
canvas.add(oImg);
});
fabric.Image.fromURL('res/img/merida45wr.png',function(oImg){
oImg.set({left:345+25,top:345+25});
oImg.hasControls = oImg.hasBorders = false;
oImg.name = 'wr2';
canvas.add(oImg);
});
ColocarCoordenadas('White');
canvas.bringToFront(CasIniSel);
canvas.bringToFront(CasFinSel);
}
function ColocarCoordenadas(cColor){
var text;
//Horizontal
if (cColor=='White'){
text = new fabric.Text('a',{selectable:false,left:45,top:423,fontFamily:'Arial',fontSize:16,fontWeight:'bold',fill:'white'});
text.name = 'a';
canvas.add(text);
text = new fabric.Text('b',{selectable:false,left:94,top:423,fontFamily:'Arial',fontSize:16,fontWeight:'bold',fill:'white'});
text.name = 'b';
canvas.add(text);
text = new fabric.Text('c',{selectable:false,left:143,top:423,fontFamily:'Arial',fontSize:16,fontWeight:'bold',fill:'white'});
text.name = 'c';
canvas.add(text);
text = new fabric.Text('d',{selectable:false,left:192,top:423,fontFamily:'Arial',fontSize:16,fontWeight:'bold',fill:'white'});
text.name = 'd';
canvas.add(text);
text = new fabric.Text('e',{selectable:false,left:241,top:423,fontFamily:'Arial',fontSize:16,fontWeight:'bold',fill:'white'});
text.name = 'e';
canvas.add(text);
text = new fabric.Text('f',{selectable:false,left:290,top:423,fontFamily:'Arial',fontSize:16,fontWeight:'bold',fill:'white'});
text.name = 'f';
canvas.add(text);
text = new fabric.Text('g',{selectable:false,left:339,top:421,fontFamily:'Arial',fontSize:16,fontWeight:'bold',fill:'white'});
text.name = 'g';
canvas.add(text);
text = new fabric.Text('h',{selectable:false,left:388,top:423,fontFamily:'Arial',fontSize:16,fontWeight:'bold',fill:'white'});
text.name = 'h';
canvas.add(text);
}
//Vertical
if (cColor=='White'){
text = new fabric.Text('8',{selectable:false,left:6,top:45,fontFamily:'Arial',fontSize:16,fontWeight:'bold',fill:'white'});
text.name = '8';
canvas.add(text);
text = new fabric.Text('7',{selectable:false,left:6,top:94,fontFamily:'Arial',fontSize:16,fontWeight:'bold',fill:'white'});
text.name = '7';
canvas.add(text);
text = new fabric.Text('6',{selectable:false,left:6,top:143,fontFamily:'Arial',fontSize:16,fontWeight:'bold',fill:'white'});
text.name = '6';
canvas.add(text);
text = new fabric.Text('5',{selectable:false,left:6,top:192,fontFamily:'Arial',fontSize:16,fontWeight:'bold',fill:'white'});
text.name = '5';
canvas.add(text);
text = new fabric.Text('4',{selectable:false,left:6,top:241,fontFamily:'Arial',fontSize:16,fontWeight:'bold',fill:'white'});
text.name = '4';
canvas.add(text);
text = new fabric.Text('3',{selectable:false,left:6,top:290,fontFamily:'Arial',fontSize:16,fontWeight:'bold',fill:'white'});
text.name = '3';
canvas.add(text);
text = new fabric.Text('2',{selectable:false,left:6,top:339,fontFamily:'Arial',fontSize:16,fontWeight:'bold',fill:'white'});
text.name = '2';
canvas.add(text);
text = new fabric.Text('1',{selectable:false,left:6,top:388,fontFamily:'Arial',fontSize:16,fontWeight:'bold',fill:'white'});
text.name = '1';
canvas.add(text);
}
}
function FlipCoordenadas(cColor){
//Horizontal
if (cColor=='White'){
getItemByName('a').set({left:45,top:423});
getItemByName('a').setCoords();
getItemByName('b').set({left:94,top:423});
getItemByName('b').setCoords();
getItemByName('c').set({left:143,top:423});
getItemByName('c').setCoords();
getItemByName('d').set({left:192,top:423});
getItemByName('d').setCoords();
getItemByName('e').set({left:241,top:423});
getItemByName('e').setCoords();
getItemByName('f').set({left:290,top:423});
getItemByName('f').setCoords();
getItemByName('g').set({left:339,top:421});
getItemByName('g').setCoords();
getItemByName('h').set({left:388,top:423});
getItemByName('h').setCoords();
}else{
getItemByName('a').set({left:388,top:423});
getItemByName('a').setCoords();
getItemByName('b').set({left:339,top:423});
getItemByName('b').setCoords();
getItemByName('c').set({left:290,top:423});
getItemByName('c').setCoords();
getItemByName('d').set({left:241,top:423});
getItemByName('d').setCoords();
getItemByName('e').set({left:192,top:423});
getItemByName('e').setCoords();
getItemByName('f').set({left:143,top:423});
getItemByName('f').setCoords();
getItemByName('g').set({left:94,top:421});
getItemByName('g').setCoords();
getItemByName('h').set({left:45,top:423});
getItemByName('h').setCoords();
}
//Vertical
if (cColor=='White'){
getItemByName('1').set({left:6,top:388});
getItemByName('1').setCoords();
getItemByName('2').set({left:6,top:339});
getItemByName('2').setCoords();
getItemByName('3').set({left:6,top:290});
getItemByName('3').setCoords();
getItemByName('4').set({left:6,top:241});
getItemByName('4').setCoords();
getItemByName('5').set({left:6,top:192});
getItemByName('5').setCoords();
getItemByName('6').set({left:6,top:143});
getItemByName('6').setCoords();
getItemByName('7').set({left:6,top:94});
getItemByName('7').setCoords();
getItemByName('8').set({left:6,top:45});
getItemByName('8').setCoords();
}else{
getItemByName('1').set({left:6,top:45});
getItemByName('1').setCoords();
getItemByName('2').set({left:6,top:94});
getItemByName('2').setCoords();
getItemByName('3').set({left:6,top:143});
getItemByName('3').setCoords();
getItemByName('4').set({left:6,top:192});
getItemByName('4').setCoords();
getItemByName('5').set({left:6,top:241});
getItemByName('5').setCoords();
getItemByName('6').set({left:6,top:290});
getItemByName('6').setCoords();
getItemByName('7').set({left:6,top:339});
getItemByName('7').setCoords();
getItemByName('8').set({left:6,top:388});
getItemByName('8').setCoords();
}
}
function getItemByName(name){
var object = null,
objects = canvas.getObjects();
var x;
for ( x=0; x7)&&(CasIni<16)&&(CasFin>-1)&&(CasFin<8)){
$('#wqpromo').show();
$('#wrpromo').show();
$('#wnpromo').show();
$('#wbpromo').show();
$('#bqpromo').hide();
$('#brpromo').hide();
$('#bnpromo').hide();
$('#bbpromo').hide();
return true;
}else if ((CasIni>47)&&(CasIni<56)&&(CasFin>55)&&(CasFin<64)){
$('#wqpromo').hide();
$('#wrpromo').hide();
$('#wnpromo').hide();
$('#wbpromo').hide();
$('#bqpromo').show();
$('#brpromo').show();
$('#bnpromo').show();
$('#bbpromo').show();
return true;
}
}
return false;
}
function IsPaP(){
// Blancas derecha
if ((CasIni>23)&&(CasIni<31)&&(CasFin>16)&&(CasFin<24)){
if ((CasIni-CasFin)==7){
aPos[CasIni+1] = '0';
return true;
}
}
// Blancas izquierda
if ((CasIni>24)&&(CasIni<32)&&(CasFin>15)&&(CasFin<23)){
if ((CasIni-CasFin)==9){
aPos[CasIni-1] = '0';
return true;
}
}
// Negras derecha
if ((CasIni>31)&&(CasIni<39)&&(CasFin>40)&&(CasFin<48)){
if ((CasFin-CasIni)==9){
aPos[CasIni+1] = '0';
return true;
}
}
// Negras izquierda
if ((CasIni>32)&&(CasIni<40)&&(CasFin>39)&&(CasFin<47)){
if ((CasFin-CasIni)==7){
aPos[CasIni-1] = '0';
return true;
}
}
return false;
}
function MoveClick(id){
UltimoMovimiento = false;
if ($('#'+id).css('color')=='rgb(128, 0, 0)') {
$('#'+id).css('color','rgb(255, 0, 0)');
aVariantes[id][4]=false;
}else if ($('#'+id).css('color')=='rgb(255, 0, 0)'){
$('#'+id).css('color','rgb(128, 0, 0)');
aVariantes[id][4]=true;
}
var cText = aVariantes[id][3];
var cMove = aVariantes[id][2];
console.log(cText);
console.log(cMove);
if (cText != '' ) {
$('#DivTextChat').append(''+
cMove + ': ' + '' +
'' +
cText + '
');
$('#DivTextChat').animate({scrollTop: $('#DivTextChat').prop('scrollHeight')}, 500);
$('#addtxt').val(cText);
}else{
$('#addtxt').val('');
}
var cChanel = $('#room-id').val();
connection.getSocket().emit('MiEvento',{
Chanel: cChanel,
SubEvent: 'SendMove',
Posiciones: aPosiciones,
ContPosi: id,
Variantes: aVariantes,
FENs: aFENs,
//HayHermano: false,
//NodoPadre: -1,
//BufferMoveClick: 0,
TipoMove: 'TxT'
});
/*var oData = {Event:'SendMove',Chanel:cChanel,Posiciones:aPosiciones,ContPosi:id,Variantes:aVariantes,FENs:aFENs,TipoMove:'TxT'};
var DataJSON = JSON.stringify(oData);
connection.send(DataJSON);*/
$('#'+BufferMoveClick).css('background-color','white');
$('#'+id).css('background-color','yellow');
//Ir a posicion
for (var i = 0; i < aPos.length; i++){
aPos[i] = aPosiciones[id][i];
}
ContPosi = id;
var aFEN = aFENs[ContPosi];
var CadenaFEN = aFEN[0] + ' ' + aFEN[1] + ' ' + aFEN[2] + ' ' + aFEN[3] + ' ' + aFEN[4] + ' ' +aFEN[5];
console.log(CadenaFEN)
if (Analizando) {
$('#bestmovelabel').text('');
$('#ImgLoader').show();
stockfish.postMessage("stop");
stockfish.postMessage("position fen " + CadenaFEN);
stockfish.postMessage("go depth " + $('#SetDepth').val());
}
if (ContPosi==0){
CasIniSel.visible = false;
CasFinSel.visible = false;
// Primer click
if (Click1){
Click1 = false;
}
}else{
CasIniSel.visible = true;
CasFinSel.visible = true;
}
DrawPos();
for (var x = 0; x < aVariantes.length; x++){
// Buscar nodo padre
if (ContPosi==aVariantes[x][1]){
NodoPadre = aVariantes[x][0];
if (NodoPadre==-1){
NodoPadre = 0;
}
break;
}
}
BufferMoveClick = id;
ClickOnMove = true;
var cChanel = $('#room-id').val();
connection.getSocket().emit('MiEvento',{
Chanel: cChanel,
SubEvent: 'MoveClickEvent',
Posiciones: aPosiciones,
ContPosi: ContPosi,
Variantes: aVariantes,
FENs: aFENs,
NodoPadre: NodoPadre,
BufferMoveClick: BufferMoveClick
});
/*var oData = {Event:'MoveClickEvent',
Chanel:cChanel,
Posiciones: aPosiciones,
ContPosi: ContPosi,
Variantes: aVariantes,
FENs: aFENs,
NodoPadre: NodoPadre,
BufferMoveClick: BufferMoveClick
};
var DataJSON = JSON.stringify(oData);
connection.send(DataJSON);*/
}
function MoveClick2(id){
UltimoMovimiento = false;
$('#DivMoves').html('');
$('#'+BufferMoveClick).css('background-color','white');
//Ir a posicion
for (var i = 0; i < aPos.length; i++){
aPos[i] = aPosiciones[id][i];
}
ContPosi = id;
var aFEN = aFENs[ContPosi];
var CadenaFEN = aFEN[0] + ' ' + aFEN[1] + ' ' + aFEN[2] + ' ' + aFEN[3] + ' ' + aFEN[4] + ' ' +aFEN[5];
console.log(CadenaFEN)
if (Analizando) {
$('#bestmovelabel').text('');
$('#ImgLoader').show();
stockfish.postMessage("stop");
stockfish.postMessage("position fen " + CadenaFEN);
stockfish.postMessage("go depth " + $('#SetDepth').val());
}
if (ContPosi==0){
CasIniSel.visible = false;
CasFinSel.visible = false;
// Primer click
if (Click1){
Click1 = false;
}
}else{
CasIniSel.visible = true;
CasFinSel.visible = true;
}
DrawPos();
for (var x = 0; x < aVariantes.length; x++){
// Buscar nodo padre
if (ContPosi==aVariantes[x][1]){
NodoPadre = aVariantes[x][0];
if (NodoPadre==-1){
NodoPadre = 0;
}
break;
}
}
BufferMoveClick = id;
ClickOnMove = true;
// Buscar nodos hijos
for (var x = 0; x < aVariantes.length; x++){
if (NodoPadre==aVariantes[x][0]){
$('#DivMoves').append('');
// Variante vista
if (aVariantes[x][4] == true) {
$('#DivMoves').append('');
$('#diver' + aVariantes[x][1]).append('');
$('#diver' + aVariantes[x][1]).append('');
}else{
$('#DivMoves').append('');
$('#diver' + aVariantes[x][1]).append('');
$('#diver' + aVariantes[x][1]).append('');
}
ShowLine(aVariantes[x][1]);
}
}
$('#'+id).css('background-color','yellow');
var cChanel = $('#room-id').val();
connection.getSocket().emit('MiEvento',{
Chanel: cChanel,
SubEvent: 'MoveClick2Event',
Posiciones: aPosiciones,
ContPosi: ContPosi,
Variantes: aVariantes,
FENs: aFENs,
NodoPadre: NodoPadre,
BufferMoveClick: BufferMoveClick
});
/*
var oData = {Event:'MoveClick2Event',
Chanel:cChanel,
Posiciones: aPosiciones,
ContPosi: ContPosi,
Variantes: aVariantes,
FENs: aFENs,
NodoPadre: NodoPadre,
BufferMoveClick: BufferMoveClick
};
var DataJSON = JSON.stringify(oData);
connection.send(DataJSON);*/
}
function MoveClick5(id){
UltimoMovimiento = false;
$('#'+BufferMoveClick).css('background-color','white');
//Ir a posicion
for (var i = 0; i < aPos.length; i++){
aPos[i] = aPosiciones[id][i];
}
ContPosi = id;
NodoPadre = id - 1;
var aFEN = aFENs[ContPosi];
var CadenaFEN = aFEN[0] + ' ' + aFEN[1] + ' ' + aFEN[2] + ' ' + aFEN[3] + ' ' + aFEN[4] + ' ' +aFEN[5];
console.log(CadenaFEN)
if (Analizando) {
$('#bestmovelabel').text('');
$('#ImgLoader').show();
stockfish.postMessage("stop");
stockfish.postMessage("position fen " + CadenaFEN);
stockfish.postMessage("go depth " + $('#SetDepth').val());
}
if (ContPosi==0){
CasIniSel.visible = false;
CasFinSel.visible = false;
// Primer click
if (Click1){
Click1 = false;
}
}else{
CasIniSel.visible = true;
CasFinSel.visible = true;
}
DrawPos();
BufferMoveClick = id;
ClickOnMove = true;
$('#'+id).css('background-color','yellow');
var cChanel = $('#room-id').val();
connection.getSocket().emit('MiEvento',{
Chanel: cChanel,
SubEvent: 'MoveClick5Event',
Posiciones: aPosiciones,
ContPosi: ContPosi,
Variantes: aVariantes,
FENs: aFENs,
NodoPadre: NodoPadre,
BufferMoveClick: BufferMoveClick
});
/*var oData = {Event:'MoveClick5Event',
Chanel: cChanel,
SubEvent: 'MoveClick5Event',
Posiciones: aPosiciones,
ContPosi: ContPosi,
Variantes: aVariantes,
FENs: aFENs,
NodoPadre: NodoPadre,
BufferMoveClick: BufferMoveClick};
var DataJSON = JSON.stringify(oData);
connection.send(DataJSON);*/
}
function ShowLine(Nodo){
for (var x = 0; x < aVariantes.length ; x++){
if (aVariantes[x][0]==Nodo){ //Padre
//Check si tiene hermanos
var HayHermano = false;
var ContHermanos = 0;
var NodoHermano;
NodoHermano = aVariantes[x][0];
ContHermanos = 0;
//Check si hay hermanos
for (var i = 0; i < aVariantes.length; i++){
if (NodoHermano==aVariantes[i][0]){
ContHermanos++;
}
if (ContHermanos>1){
HayHermano = true;
break;
}
}
if (HayHermano){
$('#DivMoves').append('');
}else{
$('#DivMoves').append('');
$('#diver' + aVariantes[x][1]).append('');
$('#diver' + aVariantes[x][1]).append('');
ShowLine(aVariantes[x][1]);
}
break;
}
}
}
function ShowLineBack(Cont){
//Check si tiene hermanos
var HayHermano = false;
var ContHermanos = 0;
var NodoHermano;
for (var x = 0; x < aVariantes.length; x++){
if (NodoPadre2==aVariantes[x][1]){
NodoPadre2 = aVariantes[x][0];
ContPosi2 = aVariantes[x][1];
HayHermano = false;
NodoHermano = aVariantes[x][0];
ContHermanos = 0;
//Check si hay hermanos
for (var i = 0; i < aVariantes.length; i++){
if (NodoHermano==aVariantes[i][0]){
if (NodoHermano != (-2)) {
ContHermanos++;
}
}
if (ContHermanos>1){
HayHermano = true;
break;
}
}
if (HayHermano){
$('#DivMoves').append('');
ShowLineHijos();
VarianteDesplegada = true;
break;
}else{
Cont++;
ShowLineBack(Cont);
}
if (NodoPadre2==-1){
ContPosi2 = aVariantes[x][1];
$('#DivMoves').html('');
ShowLine(-1);
break;
}
}
}
}
function ShowLineHijos(){
//Mostrar todos los hermanos , label red
$('#DivMoves').html('');
for (var x = 0; x < aVariantes.length; x++){
if (NodoPadre2==aVariantes[x][0]){
$('#DivMoves').append('');
if (aVariantes[x][4]==true) {
$('#DivMoves').append('');
$('#diver' + aVariantes[x][1]).append('');
$('#diver' + aVariantes[x][1]).append('');
}else{
$('#DivMoves').append('');
$('#diver' + aVariantes[x][1]).append('');
$('#diver' + aVariantes[x][1]).append('');
}
ShowLine(aVariantes[x][1]);
}
}
}
function FinalLine(){
var Cont = 0;
var Buffer = 0;
for (var x = 0; x < aVariantes.length; x++){
if (aVariantes[x][0]==ContPosi){
Cont++;
Buffer = aVariantes[x][1];
}
}
if (Cont==1){
$('#'+ContPosi).css('background-color','white');
ContPosi = Buffer;
$('#'+ContPosi).css('background-color','yellow');
BufferMoveClick = ContPosi;
if (ContPosi==0){
CasIniSel.visible = false;
CasFinSel.visible = false;
}else{
CasIniSel.visible = true;
CasFinSel.visible = true;
}
// Primer click
if (Click1){
Click1 = false;
}
//Ir a posicion
for (var i = 0; i < aPos.length; i++){
aPos[i] = aPosiciones[ContPosi][i];
}
DrawPos();
for (var x = 0; x < aVariantes.length; x++){
// Buscar nodo padre
if (ContPosi==aVariantes[x][1]){
NodoPadre = aVariantes[x][0];
if (NodoPadre==-1){
NodoPadre = 0;
}
break;
}
}
FinalLine();
}
}
function GetMove(Message){
$('#BtnIni').show();
$('#BtnEnd').show();
$('#BtnNext').show();
$('#BtnPrev').show();
Click1 = false;
aPosiciones = [];
aVariantes = [];
aFENs = [];
var x,i,j;
for ( x = 0; x < Message.Posiciones.length; x++){
aPosiciones.push(Message.Posiciones[x]);
}
CheckPromos();
for ( x = 0; x < Message.Variantes.length; x++){
aVariantes.push(Message.Variantes[x]);
}
for ( x = 0; x < Message.FENs.length; x++){
aFENs.push(Message.FENs[x]);
}
if (aPosiciones.length > 1){
CasIniSel.visible = true;
CasFinSel.visible = true;
}
//Posicion Actual
ContPosi = Message.ContPosi;
NodoPadre = Message.NodoPadre;
DrawPos();
var UltimoHermano;
if (Message.HayHermano){
//Mostrar todos los hermanos , label red
$('#DivMoves').html('');
for (var x = 0; x < aVariantes.length; x++){
if (NodoPadre==aVariantes[x][0]){
$('#DivMoves').append('');
$('#DivMoves').append('');
ShowLine(aVariantes[x][1]);
UltimoHermano = aVariantes[x][1];
}
}
$('#'+UltimoHermano).css('background-color','yellow');
BufferMoveClick = UltimoHermano;
VarianteDesplegada = false;
}else{
NodoPadre2 = NodoPadre;
ContPosi2 = ContPosi;
ShowLineBack(0);
$('#'+ContPosi).css('background-color','yellow');
BufferMoveClick = ContPosi;
VarianteDesplegada = true;
}
NodoPadre = ContPosi; //Listo para proximo movimiento
// Primer click
if (Click1){
Click1 = false;
}
if (Message.TipoMove=='FEN'){
$('#DivMoves').html('');
$('#DivMoves').append('');
$('#diver' + ContPosi).append('');
BufferMoveClick = ContPosi;
$('#'+ContPosi).show();
$('#'+ContPosi).css('background-color','yellow');
$('#BtnIni').hide();
$('#BtnPrev').hide();
$('#BtnNext').hide();
$('#BtnEnd').hide();
CasIniSel.visible = false;
Click1 = true;
DrawPos();
Click1 = false;
}else if (Message.TipoMove=='Load'){
$('#DivMoves').html('');
ShowLine(-1);
CasIniSel.visible = false;
Click1 = true;
DrawPos();
Click1 = false;
}else if (Message.TipoMove=='LoadPGN') {
CheckPromos();
$('#DivMoves').html('');
ContPosi = 0;
ShowLine(-1);
CasIniSel.visible = false;
Click1 = true;
//Ir a posicion
for (var i = 0; i < aPos.length; i++){
aPos[i] = aPosiciones[Message.ContPosi][i];
}
var Index = Message.ContPosi;
$('#'+Index).css('background-color','yellow');
BufferMoveClick = Index;
ContPosi = Message.ContPosi;
DrawPos();
Click1 = false;
$('#BtnIni').show();
$('#BtnPrev').show();
$('#BtnNext').show();
$('#BtnEnd').show();
}else if (Message.TipoMove=='ClearAll'){
$('#DivMoves').html('');
Reset();
$('#BtnIni').hide();
$('#BtnPrev').hide();
$('#BtnNext').hide();
$('#BtnEnd').hide();
CasIniSel.visible = false;
Click1 = true;
DrawPos();
Click1 = false;
}else if (Message.TipoMove=='TxT') {
console.log(aVariantes[ContPosi][2])
console.log(aVariantes[ContPosi][3])
// Comprobar si movimiento tiene comentario
if (aVariantes[ContPosi][3] != '') {
var cMove = aVariantes[ContPosi][2];
var cText = aVariantes[ContPosi][3];
$('#DivTextChat').append(''+
cMove + ': ' + '' +
'' +
aVariantes[ContPosi][3] + '
');
$('#DivTextChat').animate({scrollTop: $('#DivTextChat').prop('scrollHeight')}, 500);
$('#' + ContPosi).text(cMove);
$('#addtxt').val(cText);
}else{
$('#addtxt').val('');
}
}
}
function BtnIniEvent(Message){
$('#0').show();
$('#BtnIni').show();
$('#BtnEnd').show();
$('#BtnNext').show();
$('#BtnPrev').show();
Click1 = false;
aPosiciones = [];
aVariantes = [];
aFENs = [];
var x,i;
for ( x = 0; x < Message.Posiciones.length; x++){
aPosiciones.push(Message.Posiciones[x]);
}
CheckPromos();
for ( x = 0; x < Message.Variantes.length; x++){
aVariantes.push(Message.Variantes[x]);
}
for ( x = 0; x < Message.FENs.length; x++){
aFENs.push(Message.FENs[x]);
}
NodoPadre = -1;
NodoPadre2 = -1;
ContPosi = 0;
ContPosi2 = 0;
//Posicion Actual
for (i = 0; i < aPos.length; i++){
aPos[i] = aPosiciones[ContPosi][i];
}
$('#DivMoves').html('');
ShowLine(-1);
$('#'+ContPosi).css('background-color','yellow');
BufferMoveClick = ContPosi;
CasIniSel.visible = false;
CasFinSel.visible = false;
DrawPos();
}
function BtnEndEvent(Message){
$('#0').show();
$('#BtnIni').show();
$('#BtnEnd').show();
$('#BtnNext').show();
$('#BtnPrev').show();
Click1 = false;
aPosiciones = [];
aVariantes = [];
aFENs = [];
var x,i;
for ( x = 0; x < Message.Posiciones.length; x++){
aPosiciones.push(Message.Posiciones[x]);
}
CheckPromos();
for ( x = 0; x < Message.Variantes.length; x++){
aVariantes.push(Message.Variantes[x]);
}
for ( x = 0; x < Message.FENs.length; x++){
aFENs.push(Message.FENs[x]);
}
NodoPadre = Message.NodoPadre;
ContPosi = Message.ContPosi;
$('#DivMoves').html('');
var HayHermano = false;
var ContHermanos = 0;
var UltimoHermano;
//Check si hay hermanos para label en color rojo
for (var x = 0; x < aVariantes.length; x++){
if (NodoPadre==aVariantes[x][0]){
ContHermanos++;
}
if (ContHermanos>1){
HayHermano = true;
break;
}
}
if (HayHermano){
//Mostrar todos los hermanos , label red
for (var x = 0; x < aVariantes.length; x++){
if (NodoPadre==aVariantes[x][0]){
$('#DivMoves').append('');
$('#DivMoves').append('');
ShowLine(aVariantes[x][1]);
}
}
VarianteDesplegada = false;
}else{
NodoPadre2 = NodoPadre;
ContPosi2 = ContPosi;
ShowLineBack(0);
//Posicion Actual
for (var i = 0; i < aPos.length; i++){
aPos[i] = aPosiciones[ContPosi][i];
}
$('#'+ContPosi).css('background-color','yellow');
BufferMoveClick = ContPosi;
DrawPos();
VarianteDesplegada = true;
}
}
function MoveClickEvent(Message){
$('#0').show();
$('#BtnIni').show();
$('#BtnEnd').show();
$('#BtnNext').show();
$('#BtnPrev').show();
Click1 = false;
aPosiciones = [];
aVariantes = [];
aFENs = [];
var x,i;
for ( x = 0; x < Message.Posiciones.length; x++){
aPosiciones.push(Message.Posiciones[x]);
}
CheckPromos();
for ( x = 0; x < Message.Variantes.length; x++){
aVariantes.push(Message.Variantes[x]);
}
for ( x = 0; x < Message.FENs.length; x++){
aFENs.push(Message.FENs[x]);
}
NodoPadre = Message.NodoPadre;
ContPosi = Message.ContPosi;
//Posicion Actual
for (i = 0; i < aPos.length; i++){
aPos[i] = aPosiciones[ContPosi][i];
}
$('#DivMoves').html('');
var HayHermano = false;
var ContHermanos = 0;
var UltimoHermano;
//Check si hay hermanos para label en color rojo
for (var x = 0; x < aVariantes.length; x++){
if (NodoPadre==aVariantes[x][0]){
ContHermanos++;
}
if (ContHermanos>1){
HayHermano = true;
break;
}
}
if (HayHermano){
//Mostrar todos los hermanos , label red
for (var x = 0; x < aVariantes.length; x++){
if (NodoPadre==aVariantes[x][0]){
$('#DivMoves').append('');
// Variante vista
if (aVariantes[x][4] == true) {
$('#DivMoves').append('');
$('#diver' + aVariantes[x][1]).append('');
$('#diver' + aVariantes[x][1]).append('');
}else{
$('#DivMoves').append('');
$('#diver' + aVariantes[x][1]).append('');
$('#diver' + aVariantes[x][1]).append('');
}
ShowLine(aVariantes[x][1]);
}
}
VarianteDesplegada = false;
}else{
NodoPadre2 = NodoPadre;
ContPosi2 = ContPosi;
ShowLineBack(0);
VarianteDesplegada = true;
}
$('#'+ContPosi).css('background-color','yellow');
BufferMoveClick = ContPosi;
ClickOnMove = true;
if (ContPosi==0){
CasIniSel.visible = false;
CasFinSel.visible = false;
}else{
CasIniSel.visible = true;
CasFinSel.visible = true;
}
DrawPos();
}
function MoveClick2Event(Message){
$('#0').show();
$('#BtnIni').show();
$('#BtnEnd').show();
$('#BtnNext').show();
$('#BtnPrev').show();
Click1 = false;
aPosiciones = [];
aVariantes = [];
aFENs = [];
var x,i;
for ( x = 0; x < Message.Posiciones.length; x++){
aPosiciones.push(Message.Posiciones[x]);
}
CheckPromos();
for ( x = 0; x < Message.Variantes.length; x++){
aVariantes.push(Message.Variantes[x]);
}
for ( x = 0; x < Message.FENs.length; x++){
aFENs.push(Message.FENs[x]);
}
NodoPadre = Message.NodoPadre;
ContPosi = Message.ContPosi;
//Posicion Actual
for (i = 0; i < aPos.length; i++){
aPos[i] = aPosiciones[ContPosi][i];
}
$('#DivMoves').html('');
if (ContPosi==0){
CasIniSel.visible = false;
CasFinSel.visible = false;
}else{
CasIniSel.visible = true;
CasFinSel.visible = true;
}
DrawPos();
BufferMoveClick = ContPosi;
ClickOnMove = true;
// Buscar nodos hijos
for (var x = 0; x < aVariantes.length; x++){
if (NodoPadre==aVariantes[x][0]){
$('#DivMoves').append('');
// Variante vista
if (aVariantes[x][4] == true) {
$('#DivMoves').append('');
$('#diver' + aVariantes[x][1]).append('');
$('#diver' + aVariantes[x][1]).append('');
}else{
$('#DivMoves').append('');
$('#diver' + aVariantes[x][1]).append('');
$('#diver' + aVariantes[x][1]).append('');
}
ShowLine(aVariantes[x][1]);
}
}
$('#'+BufferMoveClick).css('background-color','yellow');
}
function MoveClick5Event(Message){
$('#0').show();
$('#BtnIni').show();
$('#BtnEnd').show();
$('#BtnNext').show();
$('#BtnPrev').show();
Click1 = false;
aPosiciones = [];
aVariantes = [];
aFENs = [];
var x,i;
for ( x = 0; x < Message.Posiciones.length; x++){
aPosiciones.push(Message.Posiciones[x]);
}
CheckPromos();
for ( x = 0; x < Message.Variantes.length; x++){
aVariantes.push(Message.Variantes[x]);
}
for ( x = 0; x < Message.FENs.length; x++){
aFENs.push(Message.FENs[x]);
}
NodoPadre = Message.NodoPadre;
ContPosi = Message.ContPosi;
//Posicion Actual
for (i = 0; i < aPos.length; i++){
aPos[i] = aPosiciones[ContPosi][i];
}
//$('#DivMoves').html('');
if (ContPosi==0){
CasIniSel.visible = false;
CasFinSel.visible = false;
}else{
CasIniSel.visible = true;
CasFinSel.visible = true;
}
DrawPos();
$('#'+BufferMoveClick).css('background-color','white');
BufferMoveClick = ContPosi;
ClickOnMove = true;
$('#'+BufferMoveClick).css('background-color','yellow');
}
function BtnPrevEvent(Message){
$('#0').show();
$('#BtnIni').show();
$('#BtnEnd').show();
$('#BtnNext').show();
$('#BtnPrev').show();
Click1 = false;
aPosiciones = [];
aVariantes = [];
aFENs = [];
var x,i;
for ( x = 0; x < Message.Posiciones.length; x++){
aPosiciones.push(Message.Posiciones[x]);
}
CheckPromos();
for ( x = 0; x < Message.Variantes.length; x++){
aVariantes.push(Message.Variantes[x]);
}
for ( x = 0; x < Message.FENs.length; x++){
aFENs.push(Message.FENs[x]);
}
NodoPadre = Message.NodoPadre;
ContPosi = Message.ContPosi;
$('#DivMoves').html('');
NodoPadre2 = Message.NodoPadre2;
ContPosi2 = Message.ContPosi2;
ShowLineBack(0);
if (NodoPadre2==-1){
$('#DivMoves').html('');
ShowLine(-1);
}
$('#'+ContPosi).css('background-color','yellow');
BufferMoveClick = ContPosi;
//Posicion Actual
for (i = 0; i < aPos.length; i++){
aPos[i] = aPosiciones[ContPosi][i];
}
if (ContPosi==0){
CasIniSel.visible = false;
CasFinSel.visible = false;
}else{
CasIniSel.visible = true;
CasFinSel.visible = true;
}
DrawPos();
}
function BtnNextEvent(Message){
var HayHermano = false;
var ContHermanos = 0;
var NodoHermano;
$('#0').show();
$('#BtnIni').show();
$('#BtnEnd').show();
$('#BtnNext').show();
$('#BtnPrev').show();
Click1 = false;
aPosiciones = [];
aVariantes = [];
aFENs = [];
var x,i;
for ( x = 0; x < Message.Posiciones.length; x++){
aPosiciones.push(Message.Posiciones[x]);
}
CheckPromos();
for ( x = 0; x < Message.Variantes.length; x++){
aVariantes.push(Message.Variantes[x]);
}
for ( x = 0; x < Message.FENs.length; x++){
aFENs.push(Message.FENs[x]);
}
NodoPadre = Message.NodoPadre;
ContPosi = Message.ContPosi;
$('#DivMoves').html('');
NodoPadre2 = Message.NodoPadre;
ContPosi2 = Message.ContPosi;
ShowLineBack(0);
if (NodoPadre2==-1){
$('#DivMoves').html('');
ShowLine(-1);
}
SobreVariante = Message.SobreVariante;
VarianteDesplegada = Message.VarianteDesplegada;
if (SobreVariante){
SobreVariante = false;
MoveClick2(ContPosi);
}else{
for (var x = 0; x < aVariantes.length ; x++){
if (aVariantes[x][1]==ContPosi){
NodoHermano = aVariantes[x][0];
//Check si hay hermanos
for (var i = 0; i < aVariantes.length; i++){
if (NodoHermano==aVariantes[i][0]){
ContHermanos++;
}
if (ContHermanos>1){
HayHermano = true;
break;
}
}
}
}
if ((HayHermano)&&(VarianteDesplegada==false)){
//Mostrar todos los hermanos , label red
$('#DivMoves').html('');
for (var x = 0; x < aVariantes.length; x++){
if (NodoHermano==aVariantes[x][0]){
$('#DivMoves').append('');
$('#DivMoves').append('');
$('#diver' + aVariantes[x][1]).append('');
$('#diver' + aVariantes[x][1]).append('');
//Mostrar hijos
ShowLine(aVariantes[x][1]);
}
}
VarianteDesplegada = true;
$('#'+ContPosi).css('background-color','yellow');
BufferMoveClick = ContPosi;
}else{
//Control de variantes normal
var Cont = 0;
for (var x = 0; x < aVariantes.length ; x++){
if (aVariantes[x][0]==ContPosi){
Cont++;
}
}
if (Cont==0){
//Fin de variante
}else if (Cont==1){
//Buscar hijo
NodoPadre = ContPosi;
for (var x = 0; x < aVariantes.length ; x++){
if (aVariantes[x][0]==NodoPadre){
ContPosi = aVariantes[x][1];
}
}
$('#'+BufferMoveClick).css('background-color','white');
$('#'+ContPosi).css('background-color','yellow');
BufferMoveClick = ContPosi;
var i;
for (i = 0; i < aPos.length; i++){
aPos[i] = aPosiciones[ContPosi][i];
}
if (ContPosi==0){
CasIniSel.visible = false;
CasFinSel.visible = false;
// Primer click
if (Click1){
Click1 = false;
}
}else{
CasIniSel.visible = true;
CasFinSel.visible = true;
}
DrawPos();
}else if (Cont>1){
if (SobreVariante==false){
SobreVariante = true;
//Buscar primer hijo
NodoPadre = ContPosi;
for (var x = 0; x < aVariantes.length ; x++){
if (aVariantes[x][0]==NodoPadre){
ContPosi = aVariantes[x][1];
break;
}
}
$('#'+BufferMoveClick).css('background-color','white');
$('#'+ContPosi).css('background-color','yellow');
BufferMoveClick = ContPosi;
}
}
}
}
}
function SavePos(){
var aObjPosi = [];
var aObjVari = [];
var aObjFENs = [];
var aObjAll = [];
for (var i = 0; i < aPosiciones.length; i++){
aObjPosi.push({"Posi":aPosiciones[i]});
}
for (var i = 0; i < aVariantes.length; i++){
aObjVari.push({"NodoPadre":aVariantes[i][0],"NodoHijo":aVariantes[i][1],"Movi":aVariantes[i][2],"Text":aVariantes[i][3],"VarianteVista":aVariantes[i][4],"Symbol":aVariantes[i][5]});
}
for (var i = 0; i < aFENs.length; i++){
aObjFENs.push({"PosiFEN":aFENs[i]});
}
aObjAll.push({"Posiciones":aObjPosi,"Variantes":aObjVari,"PosiFENs":aObjFENs});
var blob = new Blob([JSON.stringify(aObjAll)],{type:'text/plain;charset=utf-8'});
saveAs(blob,$('#room-id').val()+'.txt');
}
function LoadPos(result){
var aObjAll = eval('(' + result + ')');
// Check for the various File API support.
if (window.File && window.FileReader && window.FileList && window.Blob){
// Great success! All the File APIs are supported.
}else{
alert('The File APIs are not fully supported in this browser.');
return;
}
Reset();
$('#DivMoves').html('');
aPosiciones = [];
aVariantes = [];
aFENs = [];
for (var i = 0; i < aObjAll[0].PosiFENs.length; i++){
aFENs.push(aObjAll[0].PosiFENs[i].PosiFEN);
}
for (var i = 0; i < aObjAll[0].Posiciones.length; i++){
aPosiciones.push(aObjAll[0].Posiciones[i].Posi);
}
for (var i = 0; i < aObjAll[0].Variantes.length; i++){
var Vista = aObjAll[0].Variantes[i].VarianteVista;
if (Vista != true) {
Vista = false;
}
aVariantes.push([aObjAll[0].Variantes[i].NodoPadre,aObjAll[0].Variantes[i].NodoHijo,aObjAll[0].Variantes[i].Movi,aObjAll[0].Variantes[i].Text,Vista,aObjAll[0].Variantes[i].Symbol]);
}
$('#BtnIni').show();
$('#BtnPrev').show();
$('#BtnNext').show();
$('#BtnEnd').show();
CasIniSel.visible = false;
//Click1 = true;
Click1 = false;
ShowLine(-1);
$('#0').show();
ContPosi = 0;
NodoPadre = -1;
BufferMoveClick = 0;
$('#BufferMoveClick').css('background-color','yellow');
DrawPos();
var cChanel = $('#room-id').val();
connection.getSocket().emit('MiEvento',{
Chanel: cChanel,
SubEvent: 'SendMove',
Posiciones: aPosiciones,
ContPosi: 0,
Variantes: aVariantes,
FENs: aFENs,
HayHermano: false,
NodoPadre: -1,
BufferMoveClick: 0,
TipoMove: 'Load'
});
/*var oData = {Event:'SendMove',
Chanel:cChanel,
Posiciones: aPosiciones,
ContPosi: 0,
Variantes: aVariantes,
FENs: aFENs,
HayHermano: false,
NodoPadre: -1,
BufferMoveClick: 0,
TipoMove: 'Load'};
var DataJSON = JSON.stringify(oData);
connection.send(DataJSON);*/
$('#BtnIni').trigger('click');
}
function ClearAll(){
$('#DivMoves').html('');
Reset();
$('#BtnIni').hide();
$('#BtnPrev').hide();
$('#BtnNext').hide();
$('#BtnEnd').hide();
CasIniSel.visible = false;
Click1 = true;
DrawPos();
Click1 = false;
var cChanel = $('#room-id').val();
connection.getSocket().emit('MiEvento',{
Chanel: cChanel,
SubEvent: 'SendMove',
Posiciones: aPosiciones,
ContPosi: 0,
Variantes: aVariantes,
FENs: aFENs,
HayHermano: false,
NodoPadre: -1,
BufferMoveClick: 0,
TipoMove: 'ClearAll'
});
/*var oData = ({Event:'SendMove',
Chanel:cChanel,
Posiciones: aPosiciones,
ContPosi: 0,
Variantes: aVariantes,
FENs: aFENs,
HayHermano: false,
NodoPadre: -1,
BufferMoveClick: 0,
TipoMove: 'ClearAll'
});
var DataJSON = JSON.stringify(oData);
connection.send(DataJSON);*/
}
function IntroFen(){
var FenString = $('#fen-id').val();
var i = 0;
var j = 0;
var cPos = '';
if ($('#fen-id').val()==''){
alert('You must enter a correct value in FEN character string.');
return
}
var aFEN = FenString.split(" ");
aFENs = [];
aFENs.push(aFEN);
var CadenaFEN = aFEN[0] + ' ' + aFEN[1] + ' ' + aFEN[2] + ' ' + aFEN[3] + ' ' + aFEN[4] + ' ' +aFEN[5];
console.log(CadenaFEN)
/*if (Analizando) {
$('#bestmovelabel').text('');
$('#ImgLoader').show();
stockfish.postMessage("stop");
stockfish.postMessage("position fen " + CadenaFEN);
stockfish.postMessage("go depth " + $('#SetDepth').val());
}*/
for ( i = 0; i < FenString.length; i++ ){
if (i>71){
break;
}
var Letra = FenString.substr(i,1);
if (Letra=='/'){
j++;
}else if (isNumber(Letra)){
for ( var k=0; k71) {
break;
}
}
}else if (Letra==''){
cPos = cPos + '0';
j++;
}else{
cPos = cPos + Letra;
j++;
}
if (j>71){
break;
}
}
var flag_Q = 1;
var flag_R = 1;
var flag_N = 1;
var flag_B = 1;
var flag_P = 1;
var flag_q = 1;
var flag_r = 1;
var flag_n = 1;
var flag_b = 1;
var flag_p = 1;
for ( var n = 0; n < 64; n++ ){
var Letra = cPos.substr(n,1);
aPos[n] = Letra;
if (aPos[n]=='r') {
if (!CheckIfExist('br'+flag_r)){
var object = fabric.util.object.clone(getItemByName('br1'));
object.name = 'br'+flag_r;
canvas.add(object);
}
aPos[n] = 'br'+flag_r;
flag_r++;
}else if (aPos[n]=='n') {
if (!CheckIfExist('bn'+flag_n)){
var object = fabric.util.object.clone(getItemByName('bn1'));
object.name = 'bn'+flag_n;
canvas.add(object);
}
aPos[n] = 'bn'+flag_n;
flag_n++;
}else if (aPos[n]=='b') {
if (!CheckIfExist('bb'+flag_b)){
var object = fabric.util.object.clone(getItemByName('bb1'));
object.name = 'bb'+flag_b;
canvas.add(object);
}
aPos[n] = 'bb'+flag_b;
flag_b++;
}else if (aPos[n]=='q') {
if (!CheckIfExist('bq'+flag_q)){
var object = fabric.util.object.clone(getItemByName('bq'));
object.name = 'bq'+flag_q;
canvas.add(object);
}
aPos[n] = 'bq'+flag_q;
flag_q++;
}else if (aPos[n]=='k') {
aPos[n] = 'bk';
}else if (aPos[n]=='p') {
if (!CheckIfExist('bp'+flag_p)){
var object = fabric.util.object.clone(getItemByName('bp1'));
object.name = 'bp'+flag_p;
canvas.add(object);
}
aPos[n] = 'bp'+flag_p;
flag_p++;
}else if (aPos[n]=='P') {
if (!CheckIfExist('wp'+flag_P)){
var object = fabric.util.object.clone(getItemByName('wp1'));
object.name = 'wp'+flag_P;
canvas.add(object);
}
aPos[n] = 'wp'+flag_P;
flag_P++;
}else if (aPos[n]=='R') {
if (!CheckIfExist('wr'+flag_R)){
var object = fabric.util.object.clone(getItemByName('wr1'));
object.name = 'wr'+flag_R;
canvas.add(object);
}
aPos[n] = 'wr'+flag_R;
flag_R++;
}else if (aPos[n]=='N') {
if (!CheckIfExist('wn'+flag_N)){
var object = fabric.util.object.clone(getItemByName('wn1'));
object.name = 'wn'+flag_N;
canvas.add(object);
}
aPos[n] = 'wn'+flag_N;
flag_N++;
}else if (aPos[n]=='B') {
if (!CheckIfExist('wb'+flag_B)){
var object = fabric.util.object.clone(getItemByName('wb1'));
object.name = 'wb'+flag_B;
canvas.add(object);
}
aPos[n] = 'wb'+flag_B;
flag_B++;
}else if (aPos[n]=='Q') {
if (!CheckIfExist('wq'+flag_Q)){
var object = fabric.util.object.clone(getItemByName('wq'));
object.name = 'wq'+flag_Q;
canvas.add(object);
}
aPos[n] = 'wq'+flag_Q;
flag_Q++;
}else if (aPos[n]=='K') {
aPos[n] = 'wk';
}else{
aPos[n] = '0';
}
}
$('#DivMoves').html('');
aPosiciones = [];
ContPosi = 0;
NodoPadre = -1;
aVariantes = [];
TotalNodos = 0;
ClickOnMove = false;
var aBuffer = new Array(6);
aBuffer[0] = -1; // Nodo padre;
aBuffer[1] = 0; // Nodo hijo
aBuffer[2] = 'INI:'; // Move
aBuffer[3] = '';
aBuffer[4] = false;
aBuffer[5] = '';
aVariantes.push(aBuffer);
NodoPadre = 0;
BufferNodoPadre = 0;
BufferContPosi = 1;
TotalNodos = 1;
aPos[64] = '0'; //Casilla buffer si hay captura
aPos[65] = '0'; //CasIni
aPos[66] = '0'; //CasFin
aPos[67] = ''; //Cadena move
aPos[68] = '0'; //PeonIniCor
aPos[69] = '0'; //DamaFinCor
aPos[70] = '0';
aPos[71] = '0';
Click1 = false;
Moving = false;
var aBuffer2 = new Array(72);
var i;
for (i = 0; i < aBuffer2.length; i++){
aBuffer2[i] = aPos[i];
}
aPosiciones.push(aBuffer2);
ContPosi = 0;
$('#DivMoves').append('');
$('#diver' + ContPosi).append('');
BufferMoveClick = ContPosi;
$('#'+ContPosi).show();
$('#'+ContPosi).css('background-color','yellow');
VarianteDesplegada = true;
SobreVariante = false;
CasIniSel.visible = false;
Click1 = true;
DrawPos();
Click1 = false;
//Ocultar botones navegacion hasta que haya movimientos nuevos
$('#BtnIni').hide();
$('#BtnEnd').hide();
$('#BtnNext').hide();
$('#BtnPrev').hide();
var cChanel = $('#room-id').val();
connection.getSocket().emit('MiEvento',{
Chanel: cChanel,
SubEvent: 'SendMove',
Posiciones: aPosiciones,
ContPosi: 0,
Variantes: aVariantes,
HayHermano: false,
NodoPadre: -1,
BufferMoveClick: 0,
TipoMove: 'FEN',
FENs: aFENs
});
/*var oData = ({Event:'SendMove',
Chanel:cChanel,
Posiciones: aPosiciones,
ContPosi: 0,
Variantes: aVariantes,
HayHermano: false,
NodoPadre: -1,
BufferMoveClick: 0,
TipoMove: 'FEN',
FENs: aFENs
});
var DataJSON = JSON.stringify(oData);
connection.send(DataJSON);*/
$('#BtnIni').trigger('click');
NodoPadre = ContPosi; //Listo para proximo movimiento
}
function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
function CargarPGN() {
var aPromo = [];
var oInfo = chess.header();
FillChatPGNHeaders('White',oInfo.White);
FillChatPGNHeaders('Black',oInfo.Black);
FillChatPGNHeaders('Event',oInfo.Event);
FillChatPGNHeaders('Date',oInfo.Date);
FillChatPGNHeaders('Result',oInfo.Result);
var BufferHistory = [];
BufferHistory = chess.history({ verbose: true });
chess.reset();
ClearAll();
var FenString;
var h = 0;
var i = 0;
var j = 0;
var cPos;
var aPosi = new Array(72);
NodoPadre = -1;
BufferNodoPadre = -1;
ContPosi = 0;
BufferContPosi = 0;
TotalNodos = 1;
$('#0').show();
BufferMoveClick = ContPosi;
$('#BtnIni').show();
$('#BtnEnd').show();
$('#BtnNext').show();
$('#BtnPrev').show();
NodoPadre = 0
BufferNodoPadre = 0;
ContPosi = 1;
BufferContPosi = 1;
TotalNodos = 1;
for ( h = 0; h < BufferHistory.length; h++) {
chess.move(BufferHistory[h].san);
aPos[65] = CasToIndex(BufferHistory[h].from);
aPos[66] = CasToIndex(BufferHistory[h].to);
FenString = chess.fen();
console.log(FenString)
var aFEN = FenString.split(" ");
aFENs.push(aFEN);
cPos = '';
for ( i = 0; i < 64; i++ ){
if (i>71){
break;
}
var Letra = FenString.substr(i,1);
if (Letra=='/'){
j++;
}else if (isNumber(Letra)){
for ( var k=0; k71) {
break;
}
}
}else if (Letra==''){
cPos = cPos + '0';
j++;
}else{
cPos = cPos + Letra;
j++;
}
if (j>71){
break;
}
}
j = 0;
var flag_Q = 1;
var flag_R = 1;
var flag_N = 1;
var flag_B = 1;
var flag_P = 1;
var flag_q = 1;
var flag_r = 1;
var flag_n = 1;
var flag_b = 1;
var flag_p = 1;
var Symbol = '';
for ( var n = 0; n < 64; n++ ){
var Letra = cPos.substr(n,1);
aPosi[n] = Letra;
if (aPosi[n]=='Q') {
aPos[n] = 'wq'+flag_Q;
if (!CheckIfExist(aPos[n])){
var object = fabric.util.object.clone(getItemByName('wq'));
object.name = aPos[n];
canvas.add(object);
//aPromo.push('wq'+flag_Q);
}
flag_Q++;
}else if (aPosi[n]=='R') {
aPos[n] = 'wr'+flag_R;
if (!CheckIfExist(aPos[n])){
var object = fabric.util.object.clone(getItemByName('wr1'));
object.name = aPos[n];
canvas.add(object);
//aPromo.push('wr'+flag_R);
}
flag_R++;
}else if (aPosi[n]=='N') {
aPos[n] = 'wn'+flag_N;
if (!CheckIfExist(aPos[n])){
var object = fabric.util.object.clone(getItemByName('wn1'));
object.name = aPos[n];
canvas.add(object);
//aPromo.push('wn'+flag_N);
}
flag_N++;
}else if (aPosi[n]=='B') {
aPos[n] = 'wb'+flag_B;
if (!CheckIfExist(aPos[n])){
var object = fabric.util.object.clone(getItemByName('wb1'));
object.name = aPos[n];
canvas.add(object);
//aPromo.push('wb'+flag_B);
}
flag_B++;
}else if (aPosi[n]=='P') {
aPos[n] = 'wp'+flag_P;
if (!CheckIfExist(aPos[n])){
var object = fabric.util.object.clone(getItemByName('wp1'));
object.name = aPos[n];
canvas.add(object);
//aPromo.push('wp'+flag_P);
}
flag_P++;
}else if (aPosi[n]=='K') {
aPos[n] = 'wk';
}else if (aPosi[n]=='q') {
aPos[n] = 'bq'+flag_q;
if (!CheckIfExist(aPos[n])){
var object = fabric.util.object.clone(getItemByName('bq'));
object.name = aPos[n];
canvas.add(object);
//aPromo.push('bq'+flag_q);
}
flag_q++;
}else if (aPosi[n]=='r') {
aPos[n] = 'br'+flag_r;
if (!CheckIfExist(aPos[n])){
var object = fabric.util.object.clone(getItemByName('br1'));
object.name = aPos[n];
canvas.add(object);
//aPromo.push('br'+flag_r);
}
flag_r++;
}else if (aPosi[n]=='n') {
aPos[n] = 'bn'+flag_n;
if (!CheckIfExist(aPos[n])){
var object = fabric.util.object.clone(getItemByName('bn1'));
object.name = aPos[n];
canvas.add(object);
//aPromo.push('bn'+flag_n);
}
flag_n++;
}else if (aPosi[n]=='b') {
aPos[n] = 'bb'+flag_b;
if (!CheckIfExist(aPos[n])){
var object = fabric.util.object.clone(getItemByName('bb1'));
object.name = aPos[n];
canvas.add(object);
//aPromo.push('bb'+flag_b);
}
flag_b++;
}else if (aPosi[n]=='p') {
aPos[n] = 'bp'+flag_p;
if (!CheckIfExist(aPos[n])){
var object = fabric.util.object.clone(getItemByName('bp1'));
object.name = aPos[n];
canvas.add(object);
//aPromo.push('bp'+flag_p);
}
flag_p++;
}else if (aPosi[n]=='k') {
aPos[n] = 'bk';
}else{
aPos[n] = '0';
}
}
Symbol = '';
var CasPieza = BufferHistory[h].to;
var Index = CasToIndex(CasPieza);
var Pieza = aPos[Index];
Pieza = Pieza.substr(0,2);
if (Pieza == 'p') {
Pieza = 'bp';
}else if (Pieza == 'P') {
Pieza = 'wp';
}else if (Pieza == 'n') {
Pieza = 'bn';
}else if (Pieza == 'N') {
Pieza = 'wn';
}else if (Pieza == 'r') {
Pieza = 'br';
}else if (Pieza == 'R') {
Pieza = 'wr';
}else if (Pieza == 'b') {
Pieza = 'bb';
}else if (Pieza == 'B') {
Pieza = 'wb';
}else if (Pieza == 'q') {
Pieza = 'bq';
}else if (Pieza == 'Q') {
Pieza = 'wq';
}else if (Pieza == 'k') {
Pieza = 'bk';
}else if (Pieza == 'K') {
Pieza = 'wk';
}
Symbol = ConvertToSymbol(Pieza);
//Capture
var Capture = '-';
if (BufferHistory[h].flags == 'c') {
Capture = 'x';
}
var PiezaCor = '';
var To = BufferHistory[h].to;
if (BufferHistory[h].flags == 'np') {
PiezaCor = '=' + ((chess.get(To)).type).toUpperCase();
} else if (BufferHistory[h].flags == 'cp') {
Capture = 'x';
PiezaCor = '=' + ((chess.get(To)).type).toUpperCase();
}
var aBuffer = new Array(6);
aBuffer[0] = NodoPadre; // Nodo padre;
aBuffer[1] = ContPosi; // Nodo hijo
aBuffer[2] = BufferHistory[h].from + Capture + BufferHistory[h].to + PiezaCor;
aBuffer[3] = '';
aBuffer[4] = false;
aBuffer[5] = Symbol;
aVariantes.push(aBuffer);
var aBuffer2 = new Array(72);
var k;
for (k = 0; k < aBuffer2.length; k++){
aBuffer2[k] = aPos[k];
}
aBuffer2[64] = '0';
aBuffer2[65] = CasToIndex(BufferHistory[h].from);
aBuffer2[66] = CasToIndex(BufferHistory[h].to);
aBuffer2[67] = '';
aBuffer2[68] = '0';
aBuffer2[69] = '0';
aBuffer2[70] = '0';
aBuffer2[71] = '0';
aPosiciones.push(aBuffer2);
$('#DivMoves').append('');
$('#diver' + ContPosi).append('');
$('#diver' + ContPosi).append('');
NodoPadre++;
BufferNodoPadre++;
ContPosi ++;
BufferContPosi++;
TotalNodos++;
}
console.log(chess.ascii());
NodoPadre = -1;
BufferNodoPadre = -1;
ContPosi = 0;
BufferContPosi = 0;
TotalNodos = 1;
//Ir a posicion
for (var i = 0; i < aPos.length; i++){
aPos[i] = aPosiciones[ContPosi][i];
}
DrawPos();
var Index = ContPosi;
BufferMoveClick = Index;
$('#BtnIni').show();
$('#BtnEnd').show();
$('#BtnNext').show();
$('#BtnPrev').show();
var cChanel = $('#room-id').val();
connection.getSocket().emit('MiEvento',{
Chanel: cChanel,
SubEvent: 'SendMove',
Posiciones: aPosiciones,
ContPosi: ContPosi,
Variantes: aVariantes,
FENs: aFENs,
HayHermano: false,
NodoPadre: NodoPadre,
BufferMoveClick: BufferMoveClick,
TipoMove: 'LoadPGN',
Promo : aPromo
});
/*var oData = ({Event:'SendMove',
Chanel:cChanel,
Posiciones: aPosiciones,
ContPosi: ContPosi,
Variantes: aVariantes,
FENs: aFENs,
HayHermano: false,
NodoPadre: NodoPadre,
BufferMoveClick: BufferMoveClick,
TipoMove: 'LoadPGN',
Promo : aPromo
});
var DataJSON = JSON.stringify(oData);
connection.send(DataJSON);*/
NodoPadre = -1;
BufferNodoPadre = -1;
ContPosi = 0;
BufferContPosi = 0;
TotalNodos = 1;
$('#BtnIni').trigger('click');
}
function MoveClick3(id){
UltimoMovimiento = false;
$('#'+BufferMoveClick).css('background-color','white');
$('#'+id).css('background-color','yellow');
console.log(id);
//Ir a posicion
for (var i = 0; i < aPos.length; i++){
aPos[i] = aPosiciones[id][i];
}
ContPosi = id;
BufferMoveClick = ContPosi;
var aFEN = aFENs[ContPosi];
var CadenaFEN = aFEN[0] + ' ' + aFEN[1] + ' ' + aFEN[2] + ' ' + aFEN[3] + ' ' + aFEN[4] + ' ' +aFEN[5];
console.log(CadenaFEN)
if (Analizando) {
$('#bestmovelabel').text('');
$('#ImgLoader').show();
stockfish.postMessage("stop");
stockfish.postMessage("position fen " + CadenaFEN);
stockfish.postMessage("go depth " + $('#SetDepth').val());
}
DrawPos();
}
function CasToIndex(Cas){
var Index = -1;
for (var i = 0; i < 64; i++) {
if ( aCas[i] == Cas ) {
Index = i;
}
}
return Index;
}
function FillChatPGNHeaders(Nick,Txt) {
var cNickName = Nick;
var cTxtChat = Txt;
var cChanel = $('#room-id').val();
connection.getSocket().emit('MiEvento',{
NickSender: cNickName,
CustomMessage: cTxtChat,
Chanel: cChanel,
SubEvent: 'Chat'
});
/*var oData = ({NickSender: cNickName,
CustomMessage: cTxtChat,
Chanel: cChanel,
Event: 'Chat'
});
var DataJSON = JSON.stringify(oData);
connection.send(DataJSON);*/
$('#DivTextChat').append(''+
cNickName + ': ' + '' +
'' +
cTxtChat + '
');
$('#DivTextChat').animate({scrollTop: $('#DivTextChat').prop('scrollHeight')}, 500);
}
function AddText() {
var cMove = $('#' + ContPosi).text();
if (cMove != '(...+)') {
$('#DivTextChat').append(''+
cMove + ': ' + '' +
'' +
$('#addtxt').val() + '
');
$('#DivTextChat').animate({scrollTop: $('#DivTextChat').prop('scrollHeight')}, 500);
$('#' + ContPosi).text(cMove + '(T)');
aVariantes[ContPosi][2] = cMove + '(T)';
aVariantes[ContPosi][3] = $('#addtxt').val();
var cChanel = $('#room-id').val();
connection.getSocket().emit('MiEvento',{
Chanel: cChanel,
SubEvent: 'SendMove',
Posiciones: aPosiciones,
ContPosi: ContPosi,
Variantes: aVariantes,
FENs: aFENs,
//HayHermano: false,
//NodoPadre: -1,
//BufferMoveClick: 0,
TipoMove: 'TxT'
});
/*var oData = {Event:'SendMove',
Chanel:cChanel,
Posiciones: aPosiciones,
ContPosi: ContPosi,
Variantes: aVariantes,
FENs: aFENs,
//HayHermano: false,
//NodoPadre: -1,
//BufferMoveClick: 0,
TipoMove: 'TxT'};
var DataJSON = JSON.stringify(oData);
connection.send(DataJSON);*/
}
}
function DibujarCasillas(){
var nConCas = 1;
var cColorCas = 'rgba(240,217,181,1)';
// Casillas
for (var y=0; y < 8; y++){
for (var x=0; x < 8; x++){
getItemByName('cas'+nConCas).fill = cColorCas;
nConCas = nConCas + 1;
if (cColorCas == 'rgba(240,217,181,1)'){
cColorCas = 'rgba(181,136,99,1)';
}else{
cColorCas = 'rgba(240,217,181,1)';
}
}
if (cColorCas == 'rgba(240,217,181,1)'){
cColorCas = 'rgba(181,136,99,1)';
}else{
cColorCas = 'rgba(240,217,181,1)';
}
}
canvas.renderAll();
}
function LeftTopToRec(xObj,yObj,cColor,oObj){
var nCol,nFila,nCas;
if (xObj<=49){
nCol = 0;
oObj.set({left:27-2});
}else if ((xObj>=49)&&(xObj<=98)){
nCol = 1;
oObj.set({left:76-2});
}else if ((xObj>=98)&&(xObj<=147)){
nCol = 2;
oObj.set({left:125-2});
}else if ((xObj>=147)&&(xObj<=196)){
nCol = 3;
oObj.set({left:174-2});
}else if ((xObj>=196)&&(xObj<=245)){
nCol = 4;
oObj.set({left:223-2});
}else if ((xObj>=245)&&(xObj<=294)){
nCol = 5;
oObj.set({left:272-2});
}else if ((xObj>=294)&&(xObj<=343)){
nCol = 6;
oObj.set({left:321-2});
}else if (xObj>=343){
nCol = 7;
oObj.set({left:370-2});
}
if (yObj<=49){
nFila = 0;
oObj.set({top:27-2});
}else if ((yObj>=49)&&(yObj<=98)){
nFila = 1;
oObj.set({top:76-2});
}else if ((yObj>=98)&&(yObj<=147)){
nFila = 2;
oObj.set({top:125-2});
}else if ((yObj>=147)&&(yObj<=196)){
nFila = 3;
oObj.set({top:174-2});
}else if ((yObj>=196)&&(yObj<=245)){
nFila = 4;
oObj.set({top:223-2});
}else if ((yObj>=245)&&(yObj<=294)){
nFila = 5;
oObj.set({top:272-2});
}else if ((yObj>=294)&&(yObj<=343)){
nFila = 6;
oObj.set({top:321-2});
}else if (yObj>=343){
nFila = 7;
oObj.set({top:370-2});
}
oObj.setCoords();
canvas.renderAll();
if (cColor=='White') {
nCas = (nFila*8)+nCol;
}else{
nCas = 63-((nFila*8)+nCol);
}
return nCas;
}
function DibujarCas(Color,CasIni){
if (cColorSide == 'White') {
getItemByName('cas'+(CasIni+1)).set('fill',Color);
}else{
getItemByName('cas'+(63-CasIni+1)).set('fill',Color);
}
canvas.renderAll();
}
function SaveRect(Color,CasIni){
var aBuffer = new Array(2);
aBuffer[0] = CasIni;
aBuffer[1] = Color;
console.log(CasIni);
aColorCas.push(aBuffer);
console.log(aColorCas);
}
function RecolocarRect() {
for ( var i = 0; i < aColorCas.length; i++) {
if (cColorSide == 'White') {
getItemByName('cas'+((aColorCas[i][0])+1)).set('fill',aColorCas[i][1]);
}else{
getItemByName('cas'+(63-(aColorCas[i][0])+1)).set('fill',aColorCas[i][1]);
}
}
canvas.renderAll();
}
function SendRect(aColorCas){
var cChanel = $('#room-id').val();
connection.getSocket().emit('MiEvento',{
Chanel: cChanel,
SubEvent: 'SendColorCas',
aColorCas: aColorCas
});
/*var oData = {Chanel: cChanel,
Event: 'SendColorCas',
aColorCas: aColorCas};
var DataJSON = JSON.stringify(oData);
connection.send(DataJSON);*/
}
function DeleteMove(){
var Padre;
var Ultimo = true;
var Hijo = ContPosi;
if (UltimoMovimiento == false) {
NodoPadre2 = NodoPadre;
ContPosi2 = ContPosi;
}else{
UltimoMovimiento = false;
NodoPadre2 = BufferNodoPadre2;
ContPosi2 = BufferContPosi2;
}
// Prevent not delete INI Position
if (ContPosi != 0) {
// Check Ultimo movimiento
for ( var i = 0; i < aVariantes.length; i++){
// Buscar hijos
Padre = ContPosi;
if (Padre == aVariantes[i][0]) {
Ultimo = false;
break;
}
}
// En medio
if (Ultimo == false) {
$('#' + ContPosi).remove();
// Buscar NodoPadre
for (var x = 0; x < aVariantes.length; x++){
if (aVariantes[x][1] == ContPosi){
NodoPadre = aVariantes[x][0];
break;
}
}
// Buscar hijos
for (var x = 0; x < aVariantes.length; x++){
if (aVariantes[x][0] == Hijo){
aVariantes[x][0] = NodoPadre;
}
}
aVariantes[ContPosi][0] = -2;
ContPosi = NodoPadre;
// Buscar NodoPadre
for (var x = 0; x < aVariantes.length; x++){
if (aVariantes[x][1] == ContPosi){
NodoPadre = aVariantes[x][0];
break;
}
}
// Move Final
}else{
$('#' + ContPosi).remove();
aVariantes[ContPosi][0] = -2;
for (var x = 0; x < aVariantes.length; x++){
if (NodoPadre2==aVariantes[x][1]){
NodoPadre = aVariantes[x][0];
ContPosi = aVariantes[x][1];
break;
}
}
}
var cChanel = $('#room-id').val();
connection.getSocket().emit('MiEvento',{
Chanel: cChanel,
SubEvent: 'BtnPrevEvent',
Posiciones: aPosiciones,
ContPosi: ContPosi,
Variantes: aVariantes,
FENs: aFENs,
NodoPadre: NodoPadre,
BufferMoveClick: BufferMoveClick,
ContPosi2: ContPosi2,
NodoPadre2: NodoPadre2
});
/*var oData = {Chanel: cChanel,
Event: 'BtnPrevEvent',
Posiciones: aPosiciones,
ContPosi: ContPosi,
Variantes: aVariantes,
FENs: aFENs,
NodoPadre: NodoPadre,
BufferMoveClick: BufferMoveClick,
ContPosi2: ContPosi2,
NodoPadre2: NodoPadre2};
var DataJSON = JSON.stringify(oData);
connection.send(DataJSON);*/
ShowLineBack(0);
$('#'+ContPosi).css('background-color','yellow');
BufferMoveClick = ContPosi;
if (ContPosi==0){
CasIniSel.visible = false;
CasFinSel.visible = false;
// Primer click
if (Click1){
Click1 = false;
}
}else{
CasIniSel.visible = true;
CasFinSel.visible = true;
}
var i;
for (i = 0; i < aPos.length; i++){
aPos[i] = aPosiciones[ContPosi][i];
}
DrawPos();
}
}
function CutMoves(Nodo){
// Prevent not delete INI Position
if (Nodo != 0) {
for (var x = 0; x < aVariantes.length ; x++){
if (aVariantes[x][0]==Nodo){ //Padre
var Hijo = aVariantes[x][1];
aVariantes[x][0] = -2;
$('#'+Hijo).remove();
CutMoves(Hijo);
}
}
}
}
function CutMoves2(Nodo){
// Prevent not delete INI Position
if (NodoPadre != 0) {
for (var x = 0; x < aVariantes.length ; x++){
if (aVariantes[x][0]==Nodo){ //Padre
var Hijo = aVariantes[x][1];
aVariantes[x][0] = -2;
$('#'+Hijo).remove();
CutMoves2(Hijo);
}
}
$('#'+Nodo).remove();
aVariantes[Nodo][0] = -2;
}
}
function RestorePosi(Nodo) {
for (var x = 0; x < aVariantes.length; x++){
if (NodoPadre==aVariantes[x][1]){
NodoPadre = aVariantes[x][0];
ContPosi = aVariantes[x][1];
break;
}
}
NodoPadre2 = NodoPadre;
ContPosi2 = Nodo; //ContPosi nuevo
ShowLineBack(0);
$('#'+Nodo).css('background-color','yellow');
BufferMoveClick = Nodo;
ContPosi = Nodo;
if (Nodo==0){
CasIniSel.visible = false;
CasFinSel.visible = false;
// Primer click
if (Click1){
Click1 = false;
}
}else{
CasIniSel.visible = true;
CasFinSel.visible = true;
}
var i;
for (i = 0; i < aPos.length; i++){
aPos[i] = aPosiciones[Nodo][i];
}
DrawPos();
UltimoMovimiento = false
var cChanel = $('#room-id').val();
connection.getSocket().emit('MiEvento',{
Chanel: cChanel,
SubEvent: 'BtnPrevEvent',
Posiciones: aPosiciones,
ContPosi: Nodo,
Variantes: aVariantes,
FENs: aFENs,
NodoPadre: NodoPadre,
BufferMoveClick: BufferMoveClick,
ContPosi2: ContPosi2,
NodoPadre2: NodoPadre2
});
}
function CheckHayHermanos(Nodo) {
var HayHermano = false;
var ContHermanos = 0;
var NodoHermano;
for (var x = 0; x < aVariantes.length ; x++){
if (aVariantes[x][1]==Nodo){
NodoHermano = aVariantes[x][0];
//Check si hay hermanos
for (var i = 0; i < aVariantes.length; i++){
if (NodoHermano==aVariantes[i][0]){
if (NodoHermano != (-2)) {
ContHermanos++;
}
}
if (ContHermanos>1){
HayHermano = true;
break;
}
}
}
}
return HayHermano;
}
function CheckPromos() {
for (var x = 0; x < aPosiciones.length; x++){
for (var i = 0; i < aPos.length; i++){
aPos[i] = aPosiciones[x][i];
if (i < 64) {
if (!CheckIfExist(aPos[i])){
if (aPos[i].substring(0,2)=='wq'){
var object = fabric.util.object.clone(getItemByName('wq'));
object.name = aPos[i];
canvas.add(object);
}
}
if (!CheckIfExist(aPos[i])){
if (aPos[i].substring(0,2)=='wr'){
var object = fabric.util.object.clone(getItemByName('wr1'));
object.name = aPos[i];
canvas.add(object);
}
}
if (!CheckIfExist(aPos[i])){
if (aPos[i].substring(0,2)=='wn'){
var object = fabric.util.object.clone(getItemByName('wn1'));
object.name = aPos[i];
canvas.add(object);
}
}
if (!CheckIfExist(aPos[i])){
if (aPos[i].substring(0,2)=='wb'){
var object = fabric.util.object.clone(getItemByName('wb1'));
object.name = aPos[i];
canvas.add(object);
}
}
if (!CheckIfExist(aPos[i])){
if (aPos[i].substring(0,2)=='wk'){
var object = fabric.util.object.clone(getItemByName('wk'));
object.name = aPos[i];
canvas.add(object);
}
}
if (!CheckIfExist(aPos[i])){
if (aPos[i].substring(0,2)=='wp'){
var object = fabric.util.object.clone(getItemByName('wp1'));
object.name = aPos[i];
canvas.add(object);
}
}
if (!CheckIfExist(aPos[i])){
if (aPos[i].substring(0,2)=='bq'){
var object = fabric.util.object.clone(getItemByName('bq'));
object.name = aPos[i];
canvas.add(object);
}
}
if (!CheckIfExist(aPos[i])){
if (aPos[i].substring(0,2)=='br'){
var object = fabric.util.object.clone(getItemByName('br1'));
object.name = aPos[i];
canvas.add(object);
}
}
if (!CheckIfExist(aPos[i])){
if (aPos[i].substring(0,2)=='bn'){
var object = fabric.util.object.clone(getItemByName('bn1'));
object.name = aPos[i];
canvas.add(object);
}
}
if (!CheckIfExist(aPos[i])){
if (aPos[i].substring(0,2)=='bb'){
var object = fabric.util.object.clone(getItemByName('bb1'));
object.name = aPos[i];
canvas.add(object);
}
}
if (!CheckIfExist(aPos[i])){
if (aPos[i].substring(0,2)=='bk'){
var object = fabric.util.object.clone(getItemByName('bk'));
object.name = aPos[i];
canvas.add(object);
}
}
if (!CheckIfExist(aPos[i])){
if (aPos[i].substring(0,2)=='bp'){
var object = fabric.util.object.clone(getItemByName('bp1'));
object.name = aPos[i];
canvas.add(object);
}
}
}
}
}
}
$.urlParam = function(name){
var results = new RegExp('[\?&]' + name + '=([^]*)').exec(window.location.href);
if (results==null) {
return null;
}
return decodeURI(results[1]) || 0;
}
function ConvertVariant(Tipo,cMoves){
if (Tipo==0){
$('#Variant0').html('');
}else if (Tipo==1){
$('#Variant1').html('');
}else if (Tipo==2){
$('#Variant2').html('');
}else if (Tipo==3){
$('#Variant3').html('');
}
var aMoves = cMoves.split(" ");
var aCadenaFEN = aFENs[ContPosi];
var cCadFEN = aCadenaFEN[0] + " " + aCadenaFEN[1] + " " + aCadenaFEN[2] + " " + aCadenaFEN[3] + " " + aCadenaFEN[4] + " " + aCadenaFEN[5];
chess2.load(cCadFEN);
for (var x = 0; x < aMoves.length; x++){
var oRest = chess2.move(aMoves[x], {sloppy: true});
DrawVariant(Tipo,oRest);
if (x==10){
break;
}
}
}
function DrawVariant(Tipo,oRest){
//Capture
var Capture = '-';
if (oRest.flags == 'c') {
Capture = 'x';
}
//Coronacion
var PiezaCor = '';
var To = oRest.to;
if (oRest.flags == 'np') {
PiezaCor = '=' + ((chess2.get(To)).type).toUpperCase();
}else if (oRest.flags == 'cp') {
Capture = 'x';
PiezaCor = '=' + ((chess2.get(To)).type).toUpperCase();
}
var Symbol;
var cMove = oRest.from + Capture + oRest.to + PiezaCor;
//Enroques
if (oRest.color=='w'){
if (oRest.piece=='k'){
if (oRest.from=='e1'){
if (oRest.to=='g1'){
cMove = 'OO';
}else if (oRest.to=='c1'){
cMove = 'OOO'
}
}
}
}else{
if (oRest.piece=='k'){
if (oRest.from=='e8'){
if (oRest.to=='g8'){
cMove = 'OO';
}else if (oRest.to=='c8'){
cMove = 'OOO'
}
}
}
}
if (oRest.color=='w'){
if (oRest.piece=='p'){
Symbol = 'p';
}else if (oRest.piece=='n'){
Symbol = 'h';
}else if (oRest.piece=='b'){
Symbol = 'b';
}else if (oRest.piece=='r'){
Symbol = 'r';
}else if (oRest.piece=='q'){
Symbol = 'q';
}else if (oRest.piece=='k'){
Symbol = 'k';
}
}else{
if (oRest.piece=='p'){
Symbol = 'o';
}else if (oRest.piece=='n'){
Symbol = 'j';
}else if (oRest.piece=='b'){
Symbol = 'n';
}else if (oRest.piece=='r'){
Symbol = 't';
}else if (oRest.piece=='q'){
Symbol = 'w';
}else if (oRest.piece=='k'){
Symbol = 'l';
}
}
if (Tipo==0){
$('#Variant0').append('');
$('#Variant0').append('');
}else if (Tipo==1){
$('#Variant1').append('');
$('#Variant1').append('');
}else if (Tipo==2){
$('#Variant2').append('');
$('#Variant2').append('');
}else if (Tipo==3){
$('#Variant3').append('');
$('#Variant3').append('');
}
}
function BuscarLugar(Elemento){
var Lugar = -1;
for ( var i = 0; i < aAnalizeResult.length; i++){
if (aAnalizeResult[i]==Elemento){
Lugar = i;
break;
}
}
console.log('Lugar: ' + Lugar)
return Lugar;
}
function DialogGetOpen(Message){
$('#divget').height(nHeightDivGet);
// Cargar datos de otros participantes
$('#divget').append('');
$('#divget'+nContGets).append('');
$('#divget'+nContGets).append('');
$('input:radio:first-child').attr('checked',true);
nContGets++;
nHeightDivGet = nHeightDivGet + 60;
IdSenderWhoAsk = Message.IdSenderWhoAsk;
}
function GetDataPositions(){
var cChanel = $('#room-id').val();
connection.getSocket().emit('MiEvento',{
Chanel: cChanel,
SubEvent: 'GetVar2',
IdSenderWhoAsk: IdSenderWhoAsk,
IdSenderWhoGet: $("input[name='radioget']:checked").val()
});
}
function UpdatePosiGet(Message){
MoveClickEvent(Message);
}