let grecaptchaKeyMeta = document.querySelector("meta[name='grecaptcha-key']");
let grecaptchaKey = grecaptchaKeyMeta.getAttribute("content");

grecaptcha.ready(function() {
    let forms = document.querySelectorAll('form[data-grecaptcha-action]');

    Array.from(forms).forEach(function (form) {
        form.onsubmit = (e) => {
            e.preventDefault();

            let grecaptchaAction = form.getAttribute('data-grecaptcha-action');

            grecaptcha.execute(grecaptchaKey, {action: grecaptchaAction})
                .then((token) => {
                    let input = document.createElement('input');
                    input.type = 'hidden';
                    input.name = 'grecaptcha';
                    input.value = token;

                    form.append(input);

                    form.submit();
                });
        }
    });
});

let route = location.pathname;

$(document).ready(function () {
    const routesToIgnore = [
        '/meus-anuncios',
        '/',
        '/meus-anuncios/novo'
    ];

    if(routesToIgnore.includes(route) || getLocalStorage('banner-closed')) {
        $('.plan-info').addClass('d-none');
    }
})

$('.plan-info-close').click(function (e) {
    e.stopPropagation();
    $('.plan-info').addClass('d-none');
    setLocalStorage('banner-closed', 'banner-closed', 15);
});

function localStorageExpires()
{
    var toRemove = [],                      //Itens para serem removidos
        currentDate = new Date().getTime(); //Data atual em milissegundos

    for (var i = 0, j = localStorage.length; i < j; i++) {
       var key = localStorage.key(i),
           itemValue = localStorage.getItem(key);

       //Verifica se o formato do item para evitar conflitar com outras aplicações
       if (itemValue && /^\{(.*?)\}$/.test(itemValue)) {

            //Decodifica de volta para JSON
            var current = JSON.parse(itemValue);

            //Checa a chave expires do item especifico se for mais antigo que a data atual ele salva no array
            if (current.expires && current.expires <= currentDate) {
                toRemove.push(key);
            }
       }
    }

    // Remove itens que já passaram do tempo
    // Se remover no primeiro loop isto poderia afetar a ordem,
    // pois quando se remove um item geralmente o objeto ou array são reordenados
    for (var i = toRemove.length - 1; i >= 0; i--) {
        localStorage.removeItem(toRemove[i]);
    }
}


/**
 * Função para adicionar itens no localStorage
 * @param {string} chave Chave que será usada para obter o valor posteriormente
 * @param {*} valor Quase qualquer tipo de valor pode ser adicionado, desde que não falhe no JSON.stringify
 * @param {number} minutos Tempo de vida do item
 */
 function setLocalStorage(chave, valor, minutos)
 {
     var expirarem = new Date().getTime() + (60000 * minutos);

     localStorage.setItem(chave, JSON.stringify({
         "value": valor,
         "expires": expirarem
     }));
 }

 /**
  * Função para obter itens do localStorage que ainda não expiraram
  * @param {string} chave Chave para obter o valor associado
  * @return {*} Retorna qualquer valor, se o item tiver expirado irá retorna undefined
  */
 function getLocalStorage(chave)
 {
     localStorageExpires();//Limpa itens

     var itemValue = localStorage.getItem(chave);

     if (itemValue && /^\{(.*?)\}$/.test(itemValue)) {

         //Decodifica de volta para JSON
         var current = JSON.parse(itemValue);

         return current.value;
     }
 }
