var visibilidade_jogo_pdf_jm = false;
var jogo_da_memoria_pdf_jm = document.querySelector(".jogo_da_memoria_pdf_jm");
var container_pdf_jm = document.getElementById("container_pdf_jm");
var som_ativado_pdf_jm = true;
var som_pdf_jm = document.querySelector(".som_pdf_jm");
var sucesso_pdf_jm = document.getElementById("sucesso_pdf_jm");
var erro_pdf_jm = document.getElementById("erro_pdf_jm");
var fim_de_jogo_pdf_jm = document.getElementById("fim_de_jogo_pdf_jm");
var tela_final_pdf_jm = document.querySelector(".tela_final_pdf_jm");
var virando_a_carta_pdf_jm = document.getElementById("virando_a_carta_pdf_jm");
var jogo_pdf_jm = "";
var vez_pdf_jm = null;
var proximo_pdf_jm = null;
var tentativa_pdf_jm = 0;
let carta_anterior_pdf_jm;
var jg1_pdf_jm = null;
var jg2_pdf_jm = null;
var cor_de_acerto_pdf_jm = {"1":"#4CAF50","-1":"#03A9F4"};
var cor_padrao_pdf_jm = "antiquewhite";
var pontuacoes_pdf_jm = {"1":0,"-1":0};
var jogador_el_pdf_jm = {

    "1": document.querySelector("#jogador1_pdf_jm"),
    "-1": document.querySelector("#jogador2_pdf_jm")

}
var pontuacao_el_pdf_jm = { 
    
    "1": document.querySelector("#jogador1_pdf_jm .pontuacao_pdf_jm"),

    "-1": document.querySelector("#jogador2_pdf_jm .pontuacao_pdf_jm") //"-1" é o segundo jogador, usei para facilitar a troca na seleção dos jogadores

};
var nome_el_pdf_jm = {

    "1": document.querySelector("#jogador1_pdf_jm .nome_pdf_jm:first-child"),

    "-1": document.querySelector("#jogador2_pdf_jm .nome_pdf_jm:first-child")

}



let questoes_pdf_jm = [

    {"enunciado" : "O dobro de um número",
        "par" : 1
    },

    {"enunciado": "\\(2x\\)",
        "par" : 1
    },

    {"enunciado": "A diferença entre dois números",
        "par" : 2
    },

    {"enunciado": "\\(a-b\\)",
        "par" : 2
    },

    {"enunciado": "Metade de um número",
        "par" : 3
    },
    
    {"enunciado": "\\(\\frac{x}{2}\\)",
        "par" : 3
    },

    {"enunciado" : "A diferença entre um número e 2",
        "par" : 4
    },

    {"enunciado": "\\(z-2\\)",
        "par" : 4
    },

    {"enunciado": "A soma de dois números diferentes",
        "par" : 5
    },

    {"enunciado": "\\(g+y\\)",
        "par" : 5
    },

    {"enunciado": "A quinta parte de um número",
        "par" : 6
    },
    
    {"enunciado": "\\(\\frac{x}{5}\\)",
        "par" : 6
    },

    {"enunciado" : "Um número mais 1",
        "par" : 7
    },

    {"enunciado": "\\(x+1\\)",
        "par" : 7
    },

    {"enunciado": "Um número mais ele mesmo",
        "par" : 8
    },

    {"enunciado": "\\(x+x = 2x\\)",
        "par" : 8
    },

    {"enunciado": "O triplo de um número",
        "par" : 9
    },
    
    {"enunciado": "\\(3x\\)",
        "par" : 9
    },

    {"enunciado" : "Um número menos ele mesmo",
        "par" : 10
    },

    {"enunciado": "\\(x-x = 0\\)",
        "par" : 10
    },

    {"enunciado" : "Um número somado com o dobro de outro número",
        "par" : 11
    },

    {"enunciado": "\\(c+2d\\)",
        "par" : 11
    },

    {"enunciado": "Um número multiplicado por ele mesmo três vezes",
        "par" : 12
    },

    {"enunciado": "\\(x \\cdot x \\cdot x = x^3\\)",
        "par" : 12
    },

    {"enunciado": "A soma de três números consecutivos",
        "par" : 13
    },
    
    {"enunciado": "\\(x + (x + 1) + (x + 2)\\)",
        "par" : 13
    },

]

let embaralhado_pdf_jm = [];

let interior_cartas_pdf_jm = [];

function abrir_jogo_da_memoria_pdf_jm(){

    pegarnumJogadores_pdf_jm();

    atualizarCamponomeJogador2_pdf_jm();


    if(visibilidade_jogo_pdf_jm){

        jogo_da_memoria_pdf_jm.classList.remove("fechar_pdf_jm");

        jogo_da_memoria_pdf_jm.innerHTML = "Abrir Jogo da Memória";

        container_pdf_jm.style.display = "none";

        visibilidade_jogo_pdf_jm = false;

    } else {

        jogo_da_memoria_pdf_jm.classList.add("fechar_pdf_jm");

        jogo_da_memoria_pdf_jm.innerHTML = "Fechar Jogo da Memória";

        container_pdf_jm.style.display = "block";

        visibilidade_jogo_pdf_jm = true;

    }
    
}

function voltar_tela_inicial_pdf_jm(){

    document.querySelector("#info_pdf_jm").style.visibility = "hidden";
    document.querySelector("#info_pdf_jm").style.opacity = "0";
    document.querySelector("#container_cartas_pdf_jm").style.visibility = "hidden";
    document.querySelector("#container_cartas_pdf_jm").style.opacity = "0";
    document.querySelector(".tela_inicial_pdf_jm").style.display = "flex";

}

function toggle_som_pdf_jm() {
    
    if(som_ativado_pdf_jm){

        som_pdf_jm.classList.toggle("som_desativado_pdf_jm");

        som_ativado_pdf_jm = false;

    } else {

        som_pdf_jm.classList.toggle("som_desativado_pdf_jm");

        som_ativado_pdf_jm = true;

    }

}

var listeners_pdf_jm = {}

for(i = 0; i < questoes_pdf_jm.length; i++){

    listeners_pdf_jm[i] = null;

}



function gerenciar_apos_erro(param_pdf_jm, x_pdf_jm, carta) {

let id_pdf_jm = parseInt(carta.parentNode.id);
listeners_pdf_jm[id_pdf_jm] = (event) => {
    desvirar_apos_erro(event, param_pdf_jm, x_pdf_jm, carta, listeners_pdf_jm[id_pdf_jm]);
  };
  x_pdf_jm.addEventListener("click", listeners_pdf_jm[id_pdf_jm]);
}

function desvirar_apos_erro(event, param_pdf_jm, x_pdf_jm, carta, desvirar_apos_erro_callback) {
  event.stopPropagation();
  carta_anterior_pdf_jm.classList.toggle('virada_pdf_jm');
  carta_anterior_pdf_jm.classList.add('disponivel_pdf_jm');
  carta.classList.toggle('virada_pdf_jm'); 
  carta.classList.add('disponivel_pdf_jm');
  tentativa_pdf_jm = 1;
  x_pdf_jm.style.display = "none";
  disponibilizar_pdf_jm();
  x_pdf_jm.removeEventListener("click", desvirar_apos_erro_callback);
  if(param_pdf_jm == "com_2_jogadores"){ 
    jogador_el_pdf_jm[vez_pdf_jm].classList.remove('pulsar');
    jogador_el_pdf_jm[proximo_pdf_jm].classList.add('pulsar');
    vez_pdf_jm = proximo_pdf_jm;
    proximo_pdf_jm = (parseInt(vez_pdf_jm, 10)*(-1)).toString(); 
  }
}




function fechar_tela_final_pdf_jm() {
    tela_final_pdf_jm.style.display = "none";
}

function sanitizeInput(input) {
  return input.replace(/[^a-zA-Z0-9\sçáâéêíóôúãõ]/g, '');
}

function disponibilizar_pdf_jm(){

    for(i=0; i<embaralhado_pdf_jm.length; i++) {

        if (!interior_cartas_pdf_jm[i].classList.contains('finalizado_pdf_jm')) {

            interior_cartas_pdf_jm[i].classList.add('disponivel_pdf_jm');
            
        }
       
    }

}

function indisponibilizar_pdf_jm() {
    
    for(i=0; i<embaralhado_pdf_jm.length; i++) {
    
        interior_cartas_pdf_jm[i].classList.remove('disponivel_pdf_jm');
    
    }
    
}


// Função para pegar o número de jogadores selecionado
function pegarnumJogadores_pdf_jm() {

	let numJogadores_pdf_jm = document.querySelector('input[name="numJogadores_pdf_jm"]:checked').value;

	return parseInt(numJogadores_pdf_jm);

}


// Função para exibir ou ocultar o campo de nome do jogador 2, dependendo do número de jogadores selecionado
function atualizarCamponomeJogador2_pdf_jm() {
	
    var numJogadores_pdf_jm = pegarnumJogadores_pdf_jm();

	var nomeJogador2_pdf_jmContainer_pdf_jm = document.querySelector('#nomeJogador2_pdf_jmContainer_pdf_jm');

	if (numJogadores_pdf_jm === 2) {

				nomeJogador2_pdf_jmContainer_pdf_jm.style.display = 'block';

			} else {

				nomeJogador2_pdf_jmContainer_pdf_jm.style.display = 'none';

			}

}

// Adiciona um listener para atualizar o campo de nome do jogador 2 sempre que o número de jogadores selecionado mudar

	var radioInputs_pdf_jm = document.querySelectorAll('input[name="numJogadores_pdf_jm"]');

	for (var i = 0; i < radioInputs_pdf_jm.length; i++) {

		radioInputs_pdf_jm[i].addEventListener('change', atualizarCamponomeJogador2_pdf_jm);

	}


function chacoalharCarta(carta_pdf_jm){

// Define a quantidade de deslocamento em pixels
let deslocamento_pdf_jm = 5;

// Define o intervalo de tempo entre as mudanças de posição em milissegundos
let intervalo_pdf_jm = 50;

// Define o número de vezes que a div deve ser cacoalhada
let numVezes_pdf_jm = 10;

// Define uma variável para controlar o número de vezes que a div já foi cacoalhada
let contador_pdf_jm = 0;

carta_pdf_jm.style.left = "0";

// Define uma função para mover a div
function moverDiv_pdf_jm() {
  // Alterna a posição da div entre sua posição atual e uma posição deslocada
  if (contador_pdf_jm % 2 === 0) {
    carta_pdf_jm.style.left = (parseInt(carta_pdf_jm.style.left) - deslocamento_pdf_jm) + 'px';
  } else {
    carta_pdf_jm.style.left = (parseInt(carta_pdf_jm.style.left) + deslocamento_pdf_jm) + 'px';
  }
  
  // Incrementa o contador
  contador_pdf_jm++;
  
  // Se a div já foi cacoalhada o número de vezes desejado, para o intervalo
  if (contador_pdf_jm >= numVezes_pdf_jm) {
    clearInterval(intervaloID_pdf_jm);
    carta_pdf_jm.style.left = '0px'; // Restaura a posição original da div
  }
}

// Inicia o intervalo para cacoalhar a div
let intervaloID_pdf_jm = setInterval(moverDiv_pdf_jm, intervalo_pdf_jm);

}


const finalizar_jogada_pdf_jm = {

    "com_1_jogador": function(carta){

        if(embaralhado_pdf_jm[carta_anterior_pdf_jm.parentNode.id]["par"] == embaralhado_pdf_jm[carta.parentNode.id]["par"]){

            pontuacoes_pdf_jm[vez_pdf_jm] += 1;

            pontuacao_el_pdf_jm[vez_pdf_jm].innerHTML = " = "+pontuacoes_pdf_jm[vez_pdf_jm];

            console.log("Acertou!");

            setTimeout(() => {
                
                som_ativado_pdf_jm? sucesso_pdf_jm.play():null;

            }, 500);

            setTimeout(() => {

                if(pontuacoes_pdf_jm["1"] < (questoes_pdf_jm.length/2)){

                    carta_anterior_pdf_jm.classList.add("finalizado_pdf_jm");
                    carta.classList.add("finalizado_pdf_jm");
                    carta_anterior_pdf_jm.querySelector('.verso_pdf_jm').style.backgroundColor = cor_de_acerto_pdf_jm[vez_pdf_jm];
                    carta.querySelector('.verso_pdf_jm').style.backgroundColor = cor_de_acerto_pdf_jm[vez_pdf_jm];
                    tentativa_pdf_jm = 1;
                    disponibilizar_pdf_jm();

                } else {

                    carta_anterior_pdf_jm.classList.add("finalizado_pdf_jm");
                    carta.classList.add("finalizado_pdf_jm");
                    carta_anterior_pdf_jm.querySelector('.verso_pdf_jm').style.backgroundColor = cor_de_acerto_pdf_jm[vez_pdf_jm];
                    carta.querySelector('.verso_pdf_jm').style.backgroundColor = cor_de_acerto_pdf_jm[vez_pdf_jm];

                    setTimeout(() => {
                
                        som_ativado_pdf_jm? fim_de_jogo_pdf_jm.play():null;
                
                        let txt_pdf_jm = `Você conseguiu, <strong> ${jg1_pdf_jm}!</strong> Parabéns!`;

                        tela_final_pdf_jm.children[0].innerHTML = txt_pdf_jm;

                        tela_final_pdf_jm.style.display = "flex";
                                

                    }, 1200);

                }

            }, 800);


        } else {

            console.log("Errou!");

            setTimeout(() => {
                
                som_ativado_pdf_jm? erro_pdf_jm.play():null;

                chacoalharCarta(carta_anterior_pdf_jm);

                chacoalharCarta(carta);

                let x_pdf_jm = carta.querySelector(".fechar_pdf_jm");

                x_pdf_jm.style.display = "block";

                gerenciar_apos_erro("com_1_jogador", x_pdf_jm, carta);

            }, 500);


        }

    },

    "com_2_jogadores": function(carta){



        if(embaralhado_pdf_jm[carta_anterior_pdf_jm.parentNode.id]["par"] == embaralhado_pdf_jm[carta.parentNode.id]["par"]){

            pontuacoes_pdf_jm[vez_pdf_jm] += 1;

            pontuacao_el_pdf_jm[vez_pdf_jm].innerHTML = " = "+pontuacoes_pdf_jm[vez_pdf_jm];
            
            console.log("Acertou!");

            setTimeout(() => {
                
                som_ativado_pdf_jm? sucesso_pdf_jm.play():null;

            }, 500);

            


            setTimeout(() => {

                if(pontuacoes_pdf_jm["1"]+pontuacoes_pdf_jm["-1"] < (questoes_pdf_jm.length/2)){

                    carta_anterior_pdf_jm.classList.add("finalizado_pdf_jm");
                    carta.classList.add("finalizado_pdf_jm");
                    carta_anterior_pdf_jm.querySelector('.verso_pdf_jm').style.backgroundColor = cor_de_acerto_pdf_jm[vez_pdf_jm];
                    carta.querySelector('.verso_pdf_jm').style.backgroundColor = cor_de_acerto_pdf_jm[vez_pdf_jm];
                    tentativa_pdf_jm = 1;
                    disponibilizar_pdf_jm();

                } else {

                    carta_anterior_pdf_jm.classList.add("finalizado_pdf_jm");
                    carta.classList.add("finalizado_pdf_jm");
                    carta_anterior_pdf_jm.querySelector('.verso_pdf_jm').style.backgroundColor = cor_de_acerto_pdf_jm[vez_pdf_jm];
                    carta.querySelector('.verso_pdf_jm').style.backgroundColor = cor_de_acerto_pdf_jm[vez_pdf_jm];
                    jogador_el_pdf_jm[vez_pdf_jm].classList.remove('pulsar');

                    

                    setTimeout(() => {
                
                        som_ativado_pdf_jm? fim_de_jogo_pdf_jm.play():null;

                        if(pontuacoes_pdf_jm["1"] > pontuacoes_pdf_jm["-1"]){
                        
                            let txt_pdf_jm = `<strong>${jg1_pdf_jm} ganhou!</strong> <br /><br />
                                        ${jg1_pdf_jm} = ${pontuacoes_pdf_jm["1"]} <strong>ponto(s)</strong> <br />
                                        ${jg2_pdf_jm} = ${pontuacoes_pdf_jm["-1"]} <strong>ponto(s)</strong>`;

                                        tela_final_pdf_jm.children[0].innerHTML = txt_pdf_jm;

                            tela_final_pdf_jm.style.display = "flex";
                                        
                    
                        } else if(pontuacoes_pdf_jm["1"] == pontuacoes_pdf_jm["-1"]){

                            let txt_pdf_jm = `<strong>O jogo empatou!</strong> <br /><br />
                                        ${jg1_pdf_jm} = ${pontuacoes_pdf_jm["1"]} <strong>ponto(s)</strong> <br />
                                        ${jg2_pdf_jm} = ${pontuacoes_pdf_jm["-1"]} <strong>ponto(s)</strong>`;

                                        tela_final_pdf_jm.children[0].innerHTML = txt_pdf_jm;

                            tela_final_pdf_jm.style.display = "flex";

                        } else {

                            let txt_pdf_jm = `<strong>${jg2_pdf_jm} ganhou!</strong> <br /><br />
                                        ${jg1_pdf_jm} = ${pontuacoes_pdf_jm["1"]} <strong>ponto(s)</strong> <br />
                                        ${jg2_pdf_jm} = ${pontuacoes_pdf_jm["-1"]} <strong>ponto(s)</strong>`;

                                        tela_final_pdf_jm.children[0].innerHTML = txt_pdf_jm;

                            tela_final_pdf_jm.style.display = "flex";

                        }

                    }, 1200);
                    

                }

            }, 800);


        } else {

            console.log("Errou!");

            setTimeout(() => {
                
                som_ativado_pdf_jm? erro_pdf_jm.play():null;

                chacoalharCarta(carta_anterior_pdf_jm);

                chacoalharCarta(carta);

                let x_pdf_jm = carta.querySelector(".fechar_pdf_jm");

                x_pdf_jm.style.display = "block";

                gerenciar_apos_erro("com_2_jogadores", x_pdf_jm, carta);


            }, 500);


        }



    }

}

function virarCarta(carta) {

    if(carta.classList.contains('disponivel_pdf_jm')){

        carta.classList.toggle('virada_pdf_jm');

        som_ativado_pdf_jm? virando_a_carta_pdf_jm.play():null;

        processar_jogada(carta);

    }
}


function embaralhar_pdf_jm(array) {
    for (let i = array.length - 1; i > 0; i--) {
    const j = Math.floor(Math.random() * (i + 1));
    [array[i], array[j]] = [array[j], array[i]];
  }
  return array;
}

function processar_jogada(carta){
    
    carta.classList.remove('disponivel_pdf_jm');


    if(tentativa_pdf_jm == 1){

        carta_anterior_pdf_jm = carta;
        tentativa_pdf_jm = 2;

    } else if (tentativa_pdf_jm == 2){

        indisponibilizar_pdf_jm();

        finalizar_jogada_pdf_jm[jogo_pdf_jm](carta);

    } else {
        alert("O Jogo Já Acabou!");
    }

}

function iniciar_pdf_jm(){

    jogo_pdf_jm = "";
    vez_pdf_jm = null;
    proximo_pdf_jm = null;
    tentativa_pdf_jm = 0;
    jg1_pdf_jm = null;
    jg2_pdf_jm = null;
    pontuacoes_pdf_jm = {"1":0,"-1":0};
    nome_el_pdf_jm["1"].innerHTML = "";
    nome_el_pdf_jm["-1"].innerHTML = "";
    pontuacao_el_pdf_jm["1"].innerHTML = "";
    pontuacao_el_pdf_jm["-1"].innerHTML = "";

    tela_final_pdf_jm.style.display = "none";

    atualizarCamponomeJogador2_pdf_jm()

    embaralhado_pdf_jm = embaralhar_pdf_jm(questoes_pdf_jm);

    let numJogadores_pdf_jm = pegarnumJogadores_pdf_jm();

    for(i=0; i<embaralhado_pdf_jm.length; i++){

        let div = document.getElementById(i);

        let interior = div.querySelector('.carta_interior_pdf_jm');

        interior_cartas_pdf_jm.push(interior);

        let enunciado = interior.querySelector('.verso_pdf_jm span');

        enunciado.innerHTML = embaralhado_pdf_jm[i].enunciado;

        interior.classList.add('disponivel_pdf_jm');

        interior.classList.remove("finalizado_pdf_jm");

        interior.classList.remove("virada_pdf_jm");

        interior.querySelector('.verso_pdf_jm').style.backgroundColor = cor_padrao_pdf_jm;

        //apagar x de erro e remover os event listeners

        let xi_pdf_jm = interior.querySelector(".fechar_pdf_jm");

        xi_pdf_jm.style.display == "block"? xi_pdf_jm.style.display = "none":null;

        xi_pdf_jm.removeEventListener('click', listeners_pdf_jm[i]);

    }

    MathJax.typesetClear();
    MathJax.typeset();

    document.querySelector("#info_pdf_jm").style.visibility = "visible";
    document.querySelector("#info_pdf_jm").style.opacity = "1";
    document.querySelector("#container_cartas_pdf_jm").style.visibility = "visible";
    document.querySelector("#container_cartas_pdf_jm").style.opacity = "1";
    document.querySelector(".tela_inicial_pdf_jm").style.display = "none";

    jg1_pdf_jm = document.querySelector('#nomeJogador1_pdf_jm').value.trim() || null;
	jg2_pdf_jm = document.querySelector('#nomeJogador2_pdf_jm').value.trim() || null;
   
    if(numJogadores_pdf_jm == 1){

        jogo_pdf_jm = "com_1_jogador";

        if(jg1_pdf_jm){

            jg1_pdf_jm = sanitizeInput(jg1_pdf_jm);
            nome_el_pdf_jm["1"].innerHTML = jg1_pdf_jm;
            pontuacao_el_pdf_jm["1"].innerHTML = " = "+pontuacoes_pdf_jm["1"];

        } else {

            nome_el_pdf_jm["1"].innerHTML = "Pontuação";
            pontuacao_el_pdf_jm["1"].innerHTML = " = "+pontuacoes_pdf_jm["1"];
            jg1_pdf_jm = "Jogador";

        }

    } else {

        jogo_pdf_jm = "com_2_jogadores";

        if (jg1_pdf_jm && jg2_pdf_jm) {

            jg1_pdf_jm = sanitizeInput(jg1_pdf_jm);
            nome_el_pdf_jm["1"].innerHTML = jg1_pdf_jm;
            jg2_pdf_jm = sanitizeInput(jg2_pdf_jm);
            nome_el_pdf_jm["-1"].innerHTML = jg2_pdf_jm;
            pontuacao_el_pdf_jm["1"].innerHTML = " = "+pontuacoes_pdf_jm["1"];
            pontuacao_el_pdf_jm["-1"].innerHTML = " = "+pontuacoes_pdf_jm["-1"];

        } else if(jg1_pdf_jm) {

            jg1_pdf_jm = sanitizeInput(jg1_pdf_jm);
            nome_el_pdf_jm["1"].innerHTML = jg1_pdf_jm;
            pontuacao_el_pdf_jm["1"].innerHTML = " = "+pontuacoes_pdf_jm["1"];
            nome_el_pdf_jm["-1"].innerHTML = "Jogador 2";
            jg2_pdf_jm = "Jogador 2";
            pontuacao_el_pdf_jm["-1"].innerHTML = " = "+pontuacoes_pdf_jm["-1"];

        }else if(jg2_pdf_jm) {

            jg2_pdf_jm = sanitizeInput(jg2_pdf_jm);
            nome_el_pdf_jm["-1"].innerHTML = jg2_pdf_jm;
            pontuacao_el_pdf_jm["-1"].innerHTML = " = "+pontuacoes_pdf_jm["-1"];
            nome_el_pdf_jm["1"].innerHTML = "Jogador 1";
            jg1_pdf_jm = "Jogador 1";
            pontuacao_el_pdf_jm["1"].innerHTML = " = "+pontuacoes_pdf_jm["1"];

        } else {

            nome_el_pdf_jm["1"].innerHTML =  "Jogador 1";
            jg1_pdf_jm  =  "Jogador 1";
            pontuacao_el_pdf_jm["1"].innerHTML = " = "+pontuacoes_pdf_jm["1"];
            nome_el_pdf_jm["-1"].innerHTML = "Jogador 2";
            jg2_pdf_jm  =  "Jogador 2";
            pontuacao_el_pdf_jm["-1"].innerHTML = " = "+pontuacoes_pdf_jm["-1"];

        }


    }


    vez_pdf_jm = "1";
    proximo_pdf_jm = (parseInt(vez_pdf_jm, 10)*(-1)).toString();
    tentativa_pdf_jm = 1;
    jogo_pdf_jm == "com_2_jogadores"? jogador_el_pdf_jm["1"].classList.add('pulsar'):jogador_el_pdf_jm["1"].classList.remove('pulsar');

}