/////////////////////////////////////////////////// YOUTUBE API ////////////////////////////////////////////////////////
/*
var scriptUrl = 'https:\/\/www.youtube.com\/s\/player\/cfa9e7cb\/www-widgetapi.vflset\/www-widgetapi.js';window['yt_embedsEnableHouseBrandAndYtCoexistence'] =  true ;try{var ttPolicy=window.trustedTypes.createPolicy("youtube-widget-api",{createScriptURL:function(x){return x}});scriptUrl=ttPolicy.createScriptURL(scriptUrl)}catch(e){}var YT;if(!window["YT"])YT={loading:0,loaded:0};var YTConfig;if(!window["YTConfig"])YTConfig={"host":"https://www.youtube.com"};
if(!YT.loading){YT.loading=1;(function(){var l=[];YT.ready=function(f){if(YT.loaded)f();else l.push(f)};window.onYTReady=function(){YT.loaded=1;for(var i=0;i<l.length;i++)try{l[i]()}catch(e$0){}};YT.setConfig=function(c){for(var k in c)if(c.hasOwnProperty(k))YTConfig[k]=c[k]};var a=document.createElement("script");a.type="text/javascript";a.id="www-widgetapi-script";a.src=scriptUrl;a.async=true;var c=document.currentScript;if(c){var n=c.nonce||c.getAttribute("nonce");if(n)a.setAttribute("nonce",n)}var b=
  document.getElementsByTagName("script")[0];b.parentNode.insertBefore(a,b)})()};
*/

/////////////////////////////////////////////////// TOPO MOBILE ////////////////////////////////////////////////////////
function busca_produto_mobile()
{
  var nome_produto = jQuery('.inputMobileBusca').val();
  if(nome_produto.length) {
    var buscaProdutoUrl =  BASE_URL + 'busca-busca_produtos?';
    var obj = {
      nome_produto : nome_produto
    }

    buscaProdutoUrl += $.param(obj);
    location.href = buscaProdutoUrl;
  }
}
jQuery(document).ready(function()
{
  jQuery('.inputMobileBusca').on('keypress',function(e) {
    if(e.which == 13)
    {
      busca_produto_mobile()
    }
  });
  //jQuery('.iconeMobileBusca').click(function()
  jQuery('body').on('click', '.iconeMobileBusca', function()
  {
    busca_produto_mobile();
  });



  //jQuery('.mobileCategoria').click(function()
  jQuery('body').on('click', '.mobileCategoria', function()
  {
    jQuery('.mobileOverflowOutsideCategoria').addClass('mobileOverflowOutsideCategoriaAberto');
  });
  //jQuery('.mobileOverflowOutsideCategoria').click(function(event)
  jQuery('body').on('click', '.mobileOverflowOutsideCategoria', function(event)
  {
    if(jQuery(event.target).is('.mobileOverflowOutsideCategoria'))
    {
      jQuery('.mobileOverflowOutsideCategoria').removeClass('mobileOverflowOutsideCategoriaAberto');

    }
  });
  //jQuery('.mobileItemCategoriaSeta').click(function()
  jQuery('body').on('click', '.mobileItemCategoriaSeta', function()
  {
    var categoria_encontrar = jQuery(this).closest(".mobileItemOfCategoria");
    console.log(categoria_encontrar);
    if(categoria_encontrar.hasClass('mobileItemOfCategoriaAberta'))
    {
      categoria_encontrar.removeClass('mobileItemOfCategoriaAberta');
    }
    else {
      categoria_encontrar.addClass('mobileItemOfCategoriaAberta');
    }
  });
});


////////////////////////////////////////////////// TOPO CARRINHO ///////////////////////////////////////////////////////
/**
 * Created by BRUNO on 23/05/17.
 */

/*FUNCAO QUE REMOVE ITEM DO CARRINHO PELO TOPO*/

var topoCarrinhoModule = (function($){
  var _removeItemCarrinho = function (value)
  {
    var uniqid = value.item.uniqid;

    var confirmFunc = new confirmDialog(function(){
      $.ajax({
        url: BASE_URL + 'checkout-ajax_excluir_produto_carrinho',
        data: {uniqid : uniqid },

        success: function(resp) {
          console.log(resp);
          if(resp.sucesso) {
            topoCarrinho_config.vr_total_preco = resp.sucesso.dados_carrinho.total_produtos.vr_total_preco;
            topoCarrinho_config.qtd_produto = resp.sucesso.dados_carrinho.total_produtos.qtd_total_prod;
            topoCarrinho_arr_itens.splice(value.index, 1);
            if(typeof carrinhoScope !== "undefined")
            {
              carrinhoScope.checkout = resp.sucesso;
            }
            if($('#btnFrete').length > 0)
            {
              $('#btnFrete').click();
            }
            topoCarrinhoatualizaIndicadorQtdCarrinho();
            topoCarrinhoatualizaIndicadorPrecoCarrinho();
            if(typeof atualiza_resumo_carrinho !== "undefined")
            {
              atualiza_resumo_carrinho();
            }
          }
        },

        error: function(resp) {
          console.log(resp);
        }
      })
    });
    confirmFunc.create('Tem certeza que deseja remover este produto?');
  };
  var _tipoCarrinhoAlteraQuantidadeProduto = function(sucesso)
  {
    if(typeof topoCarrinho_config != "undefined" && topoCarrinho_arr_itens != "undefined") {
      topoCarrinho_config.qtd_produto = sucesso.dados_checkout.dados_carrinho.total_produtos.qtd_total_prod;
      topoCarrinho_config.vr_total_preco = sucesso.dados_checkout.dados_carrinho.total_produtos.vr_total_preco;

      //ATUALIZA CARRINHO
      //limpa array
      topoCarrinho_arr_itens.splice(0, topoCarrinho_arr_itens.length);
      //atualiza array
      for(var i=0; i < sucesso.dados_checkout.dados_carrinho.produtos_carrinho.length; i++)
      {
        topoCarrinho_arr_itens.push(sucesso.dados_checkout.dados_carrinho.produtos_carrinho[i]);
      }
    }

  };

  return {
    removeItemCarrinho: function(el, value) {
      _removeItemCarrinho(value);
    },
    tipoCarrinhoAlteraQuantidadeProduto : function (sucesso)
    {
      _tipoCarrinhoAlteraQuantidadeProduto(sucesso);
    }
  }

  function topoCarrinhoatualizaIndicadorQtdCarrinho()
  {
    if(typeof carrinhoModule !=="undefined")
    {
      carrinhoModule.atualizaIndicadorQtdCarrinho();
    }
  }

  function topoCarrinhoatualizaIndicadorPrecoCarrinho()
  {
    if(typeof carrinhoModule !== "undefined")
    {
      carrinhoModule.atualizaIndicadorPrecoCarrinho();
    }

  }
});

var triggaEventosCarrinho = function(resp)
{
  if (!resp.hasOwnProperty('sucesso')) return;

  var data = resp.sucesso;
  if (typeof fbq === 'function' && !data.produto_ja_adicionado) {
    fbq('track', 'AddToCart', {
      content_ids: [data.id_loja_produto],
      content_type: 'product',
      content_name: data.nome_produto,
      value: data.vr_preco,
      currency: 'BRL'
    });
  }
}

$(function() {
  topoCarrinhoModule = topoCarrinhoModule;
});

/////////////////////////////////////////////// LISTAGEM DE PRODUTOS ///////////////////////////////////////////////////
(function ($) {
  $(document).off('click');
  $(document).on('click', 'div.botaoComprarProduto', function (e) {
    e.preventDefault();
    e.stopPropagation();
    var id_loja_produto = $(this).closest('.boxItemListagem').attr('attr-id-loja-produto');
    var link_produto = $(this.closest('.boxItemListagem')).attr('attr-link-produto');
    var qtd_minima_venda = $(this).closest('.boxItemListagem').attr('attr-qtd-minima-venda');

    if (!(flg_desativa_venda_rapida_mobile == 1 && jQuery.browser.mobile) && qtd_minima_venda < 2 && flg_venda_rapida == 1) {
      compra_rapida = 1;
      $.ajax({
        url: BASE_URL + 'produto-ajax_retorna_partial_subprodutos',
        data: {
          id_loja_produto: id_loja_produto
        },
        dataType: 'json',
        // async: false,
        beforeSend: function () {
          processandoDialog.create();
        },
        success: function (resp) {
          if (resp.sucesso && resp.sucesso.partial) {
            $('#contentModalSubprodutos').css('display', 'none').html(resp.sucesso.partial).modal({
              fadeDuration: 250,
              fadeDelay: 0.3
            });
          }
          else {

            $.ajax({
              url: BASE_URL + 'checkout-ajax_adiciona_produto_checkout',
              data: {
                id_loja_produto: id_loja_produto,
                ids_subprodutos: {},
                qtd_prod: 1
              },
              beforeSend: function () {
                processandoDialog.create();
              },
              complete: function () {
                //processandoDialog.remove();
              },
              success: function (resp) {
                if (resp.sucesso) {
                  atualiza_resumo_carrinho();
                  if (typeof triggaEventosCarrinho === 'function') {
                    triggaEventosCarrinho(resp);
                  }
                  if (flg_venda_rapida_modal_sucesso == true) {
                    $("#contentModalFinalizarCompraRapida").css({ width: '600px', height: '150px', display: 'none' })
                      .load(BASE_URL + 'checkout-ajax_retorna_partial_compra_rapida_carrinho', function () {
                        $(this).modal();
                      });
                  }
                }
                else {
                  //processandoDialog.remove();
                  location.href = link_produto;
                }
              },
              error: function (resp) {
                console.log(resp);
              }
            });
          }
        },
        complete: function () {
          //processandoDialog.remove();
        }
      });
    }
    else {
      location.href = link_produto;
    }

  })
})(jQuery);

//LISTAGEM EM LINHA
//FUNÇÃO RESPONSAVEL POR:
// - Determinar a altura da listagem em linha de acordo com a altura do elemento da listagem
// - Inserir as respectivas ordens de cada elemento
// - Aplicar a distancia necessária para suavizar o efeito de transição
function verificaListagemLinha() {
  $('.elementoListagemLinha').each(function (i, obj) {
    $(this).children('.boxItemListagem:first-child').addClass('referencia');

    var alturaContainer = $(this).height();
    var qtdItensListagem = $(this).children('.boxItemListagem').length;
    var larguraItemListagem = $(this).children('.referencia').outerWidth(true);
    var larguraQtdItens = larguraItemListagem * qtdItensListagem;
    var larguraConteudoListagem = $(this).parent('.elementoListagem').width();

    $(this).parent('.elementoListagem').css('overflow', 'hidden');

    $(this).parent('.elementoListagem').css('height', alturaContainer + 2); // + 2, pois algumas listagens possuem bordas, outlines e/ou box-shadow

    $(this).children('.controlaListagem').remove();

    if (larguraQtdItens > larguraConteudoListagem) {
      $(this).children('.boxItemListagem:first-child').addClass('recebeEfeito');

      for (u = 1; u <= qtdItensListagem; u++) {
        $(this).children('.boxItemListagem').eq(u - 1).css('order', u);
      }

      $(this).css('left', -larguraItemListagem);

      if (qtdItensListagem <= 5) {
        $(this).parent('.elementoListagem').css('max-width', larguraItemListagem * 4);
      }

      // Move a listagem para a esquerda, uma vez, para exibir o primeiro item corretamente
      $(this).css("left", "+=" + larguraItemListagem);
      var numItemListagem = $(this).children('.boxItemListagem').length;
      var itemFocado = $(this).siblings('.setaEsquerdaListagemLinha');
      setTimeout(function () {
        setaEsquerda(itemFocado, larguraItemListagem, numItemListagem);
      }, 300);

      //$(this).parent('.elementoListagem').removeClass('tipoAlinhamentoElementoEsquerda tipoAlinhamentoElementoCentralizado tipoAlinhamentoElementoDireita');
    }
    else {
      $(this).css({ 'left': '0', 'width': '100%' });
      $(this).siblings('.setaListagemLinha').hide();
    }



    /* if ( qtdItensListagem < 5 > 3  )
     {
         $(this).parent('.elementoListagem ').css('width',larguraItemListagem * 2);
     }

     if ( qtdItensListagem < 4 > 2  )
     {
         $(this).parent('.elementoListagem ').css('width',larguraItemListagem);
     }

     if ( qtdItensListagem == 2  )
     {

     }

     if ( qtdItensListagem == 1  )
     {
         $(this).parent('.elementoListagem ').css('width',larguraItemListagem);
         $(this).css('left','0');
         $(this).siblings('.setaListagemLinha').hide();
     }*/
  });
}

//Função responsável pela rolagem para a direita da listagem de produtos em linha
function setaDireita(seta, distancia, qtd) {
  $(seta).siblings('.elementoListagemLinha').children('.boxItemListagem').each(function (i, obj) {
    var ordem = $(this).css('order');


    if (ordem <= qtd) {
      $(this).css('order', '-=1');
    }
    if (ordem == 1) {
      $(this).css('order', qtd);
    }
  });

  $(seta).siblings('.elementoListagemLinha').css('left', -distancia);
  $(seta).parent('.elementoListagem').removeClass('emProgresso');


  if ($(seta).siblings('.elementoListagemLinha').children('.recebeEfeito').next().length == 0) {
    $(seta).siblings('.elementoListagemLinha').children('.recebeEfeito').removeClass('recebeEfeito');
    $(seta).siblings('.elementoListagemLinha').children('.boxItemListagem:first-child').addClass('recebeEfeito');
  }
  else {
    $(seta).siblings('.elementoListagemLinha').children('.recebeEfeito').removeClass('recebeEfeito').next().addClass('recebeEfeito');
  }


}

//Função responsável pela rolagem para a esquerda da listagem de produtos em linha
function setaEsquerda(seta, distancia, qtd) {
  $(seta).siblings('.elementoListagemLinha').children('.boxItemListagem').each(function (i, obj) {
    var ordem = $(this).css('order');
    if (ordem <= qtd) {
      $(this).css('order', '+=1');
    }
    if (ordem == qtd) {
      $(this).css('order', '1');
    }
  });

  $(seta).siblings('.elementoListagemLinha').css('left', -distancia);
  $(seta).parent('.elementoListagem').removeClass('emProgresso');


  if ($(seta).siblings('.elementoListagemLinha').children('.recebeEfeito').prev().length == 0) {
    $(seta).siblings('.elementoListagemLinha').children('.recebeEfeito').removeClass('recebeEfeito');
    $(seta).siblings('.elementoListagemLinha').children('.boxItemListagem:last-child').addClass('recebeEfeito');
  }
  else {
    $(seta).siblings('.elementoListagemLinha').children('.recebeEfeito').removeClass('recebeEfeito').prev().addClass('recebeEfeito');
  }
}

//Função responsável pelo SLIDER para a direita da listagem de produtos em linha
function setaDireitaSlider(seta, distancia, qtd) {
  $(seta).children('.boxItemListagem').each(function (i, obj) {
    var ordem = $(this).css('order');
    if (ordem <= qtd) {
      $(this).css('order', '+=1');
    }
    if (ordem == qtd) {
      $(this).css('order', '1');
    }
  });

  $(seta).css('left', -distancia);
  $(seta).parent('.elementoListagem').removeClass('emProgresso');

  if ($(seta).children('.recebeEfeito').prev().length == 0) {
    $(seta).children('.recebeEfeito').removeClass('recebeEfeito');
    $(seta).children('.boxItemListagem:last-child').addClass('recebeEfeito');
  }
  else {
    $(seta).children('.recebeEfeito').removeClass('recebeEfeito').prev().addClass('recebeEfeito');
  }
}

//Função responsável pelo SLIDER para a esquerda da listagem de produtos em linha
function setaEsquerdaSlider(seta, distancia, qtd) {

  $(seta).children('.boxItemListagem').each(function (i, obj) {
    var ordem = $(this).css('order');
    if (ordem <= qtd) {
      $(this).css('order', '-=1');
    }
    if (ordem == 1) {
      $(this).css('order', qtd);
    }
  });

  $(seta).css('left', -distancia);
  $(seta).parent('.elementoListagem').removeClass('emProgresso');

  if ($(seta).children('.recebeEfeito').next().length == 0) {
    $(seta).children('.recebeEfeito').removeClass('recebeEfeito');
    $(seta).children('.boxItemListagem:first-child').addClass('recebeEfeito');
  }
  else {
    $(seta).children('.recebeEfeito').removeClass('recebeEfeito').next().addClass('recebeEfeito');
  }
}

// Função responsável por controlar a largura dos itens de cada listagem ( à direita e centralizada )
//
// Dependendo da quantidade de itens em uma listagem, haverão dois comportamentos diferentes
// 1ª Condição: Caso haja quebra de linha na listagem, ou seja, mais produtos que uma linha comporta:
// A largura do primeiro item da listagem será usada como referência para ser distribuida para os outros itens como largura máxima
//
// 2ª Condição: Caso não haja quebra de linha, ou seja, a quantidade de produtos é comportada pela linha:
// A largura do primeiro item será utilizada como referência, mas também receberá seu  próprio valor como largura máxima juntamente com os outros itens da listagem
function larguraItemAlinhadoDireitaCentro() {
  $('.elementoListagem.tipoAlinhamentoElementoDireita, .elementoListagem.tipoAlinhamentoElementoCentralizado').each(function () {
    var larguraReferencia = $(this).find('.boxItemListagem:first-child').outerWidth();
    var alturaReferencia = $(this).find('.boxItemListagem:first-child').outerHeight();
    var alturaContainer = $(this).children('.containerListagem').height();

    // Simula uma altura de itens da listagem com duas linhas
    var alturaDuplicada = alturaReferencia * 2;
    var elem = $(this);

    if (alturaContainer > alturaDuplicada) {
      $(this).find('.boxItemListagem:not(:first-child)').css('max-width', larguraReferencia);
      $(this).find('.boxItemListagem:first-child').removeAttr('style');
    }
    else {
      $(this).find('.boxItemListagem').css('max-width', larguraReferencia);
    }

    setTimeout(function () {
      elem.find('.controlaListagem').hide();
      elem.children('.containerListagem').css({ 'opacity': '1', 'transition': 'opacity 0.15s' });
    }, 150);
  });

  // Aplica o efeito de opacidade na div da tela de busca
  // Esta aplicação é necessária, pois, na tela de busca, foi necessário remover o efeito de opacidade da listagem que estava dificultando a exibição no momento que o ajax_filtra_produtos rodava
  setTimeout(function () {
    if ($('.conteudoListagemProdutosBusca.buscaLjvtV3').length != 0) {
      $('.conteudoListagemProdutosBusca.buscaLjvtV3 .elementoListagem').css('opacity', '1');
      $('.gifCarregandoListagem').css('opacity', '0');
    }
  }, 150);
}

$(function () {

  setTimeout(function () {
    larguraItemAlinhadoDireitaCentro();
  }, 50);

  //Função que verifica se o item da listagem NÃO é de compra rápida e redireciona para a tela do produto específico clicado
  $('#template').on('click', '.itemProdutoListagem', function () {
    var link_produto = $(this).children('.conteudoItemListagem').attr('attr-link-produto');
    if ($(this).children('.conteudoItemListagem').is(":last-child")) {
      location.href = link_produto;
    }
  });

  //LISTAGEM EM LINHA
  // Chama a função principal da listagem em linha
  setTimeout(function () {
    verificaListagemLinha();
  }, 300);

  //Seta Direita
  $('body').on('click', '.setaDireitaListagemLinha ', function () {
    $(this).parent('.elementoListagem').addClass('emProgresso');

    var larguraItemListagem = $(this).siblings('.elementoListagemLinha').children('.boxItemListagem').outerWidth(true);
    $(this).siblings('.elementoListagemLinha').animate({ "left": '-=' + larguraItemListagem }, 300);

    var numItemListagem = $(this).siblings('.elementoListagemLinha').children('.boxItemListagem').length;
    var itemFocado = $(this);
    setTimeout(function () {
      setaDireita(itemFocado, larguraItemListagem, numItemListagem);
    }, 400);
  });

  //Seta Esquerda
  $('body').on('click', '.setaEsquerdaListagemLinha ', function () {
    $(this).parent('.elementoListagem').addClass('emProgresso');

    var larguraItemListagem = $(this).siblings('.elementoListagemLinha').children('.boxItemListagem').outerWidth(true);
    $(this).siblings('.elementoListagemLinha').animate({ "left": '+=' + larguraItemListagem }, 300);

    var numItemListagem = $(this).siblings('.elementoListagemLinha').children('.boxItemListagem').length;
    var itemFocado = $(this);
    setTimeout(function () {
      setaEsquerda(itemFocado, larguraItemListagem, numItemListagem);
    }, 400);
  });

  // Deslizar para a Direita ( rolar para a esquerda )
  $('.elementoListagemLinha').on('swiperight', function () {
    $(this).parent('.elementoListagem').addClass('emProgresso');

    var numItemListagem = $(this).children('.boxItemListagem').length;
    var itemFocado = $(this);
    setTimeout(function () {
      setaDireitaSlider(itemFocado, larguraItemListagem, numItemListagem);
    }, 400);

    var larguraItemListagem = $(this).children('.boxItemListagem').outerWidth(true);
    $(this).animate({ "left": '+=' + larguraItemListagem }, 300);
    $(this).siblings('.indicadorSliderMobile').css('opacity', '0');
  });

  // Deslizar para a Esquerda ( rolar para a esquerda )
  $('.elementoListagemLinha').on('swipeleft', function () {
    $(this).parent('.elementoListagem').addClass('emProgresso');

    var numItemListagem = $(this).children('.boxItemListagem').length;
    var itemFocado = $(this);
    setTimeout(function () {
      setaEsquerdaSlider(itemFocado, larguraItemListagem, numItemListagem);
    }, 400);

    var larguraItemListagem = $(this).children('.boxItemListagem').outerWidth(true);
    $(this).animate({ "left": '-=' + larguraItemListagem }, 300);
    $(this).siblings('.indicadorSliderMobile').css('opacity', '0');
  });

  $('body').on('click', '.emProgresso ', function (e) {
    return false;
  });

});

$(window).resize(function () {
  larguraItemAlinhadoDireitaCentro();
});

// update resumo carrinho
var atualiza_resumo_carrinho = function () {

  $.ajax({
    url: BASE_URL + 'ajax/ajax_resumo_carrinho',
    dataType: 'json',
    type: 'get',
    beforeSend: function () {
      //processandoDialog.remove();
      //processandoDialog.create();
    },
    success: function (data) {
      console.log(data);
      /*     $('.boxItensCarrinho').html(data.html_traduzido);
          $('.carrinhoReduzidoQtd').text(data.total_qtd + ' ITENS');
          $('.contadorResumoCarrinho').text(data.total_qtd);
          $('.carrinhoReduzidoPreco').text('R$ ' + data.total_valor);*/
      if (typeof topoCarrinhoItens != "undefined") {
        topoCarrinhoItens.topoCarrinho_arr_itens = data.carrinho.produtos_carrinho;
      }
      if (typeof topoCarrinho_config != "undefined") {
        topoCarrinho_config.vr_total_preco = data.carrinho.total_produtos.vr_total_preco;
        topoCarrinho_config.qtd_produto = data.carrinho.total_produtos.qtd_total_prod;
        topoCarrinho_config.text_itens_carrinho = data.carrinho.total_produtos.qtd_total_prod > 1?' Itens':' Item';
      }

      if (typeof data.carrinho.dados_barra_frete_gratis != "undefined") {
          seta_progresso_frete_gratis(data.carrinho.dados_barra_frete_gratis.percentual_barra_frete_gratis);
          setTimeout(function(){
            $('.textosProgresso .valor').text('R$ '+data.carrinho.dados_barra_frete_gratis.diferenca_frete_manual_gratis_formatado);
          },300);
      }

      if (typeof data.carrinho.dados_aplicativo_cashback != "undefined") {
          $('.boxInfoCashback p').html(data.carrinho.dados_aplicativo_cashback.texto_cashback);
      }

      if (typeof data.carrinho.metas_ativas != "undefined") {
          console.log(data.carrinho.metas_ativas);
          $.each(data.carrinho.metas_ativas, function(key, value) {
            var id_meta = value.id_loja_meta_brinde;
            $('.boxItemMeta[attr-id_meta="'+id_meta+'"] p').html(value.texto_progresso_meta);
            if (value.flg_meta_conquistada) {
              $('.boxItemMeta[attr-id_meta="'+id_meta+'"]').addClass('metaConquistada vibrar');
            } else {
              $('.boxItemMeta[attr-id_meta="'+id_meta+'"]').removeClass('metaConquistada vibrar');
            }
          });
      }

      //Atualiza os itens na listagem de produtos
      if (typeof data.carrinho.produtos_carrinho != "undefined") {
          $('.boxItemListagem').removeClass('produtoInseridoCarrinho');
          $.each(data.carrinho.produtos_carrinho, function(key, value) {
              var id_produto = value.id_loja_produto;
              $('.boxItemListagem[attr-id-loja-produto="'+id_produto+'"]').addClass('produtoInseridoCarrinho');
          });
      }

      var qtd_carrinho = data.total_qtd;
      var texto_qtd = qtd_carrinho == '1' || qtd_carrinho == '0' ? ' Item' : ' Itens';
      $('.contadorResumoCarrinho').text(data.total_qtd);
      $('.carrinhoReduzidoPreco').text('R$ ' + data.total_valor);

      if( data.total_qtd > 1 ) {
        $('.cart-update-text-itens').text(' Itens');
      } else {
        $('.cart-update-text-itens').text(' Item');
      }

      $('.cart-update-topo-carrinho').attr('attr-qtd_carrinho', qtd_carrinho);
    }
  });
};



/////////////////////////////////////////// CACHE E CONTEÚDOS DINÂMICOS ////////////////////////////////////////////////
var UpdateCachedData = (function () {

  'use strict';

  /**
   * Create the Constructor object
   */
  var Constructor = function () {

    //
    // Variables
    //

    var publicAPIs = {};

    /**
     * Atualiza o box de afiliados
     *
     * @param affiliateData
     */
    var updateAffiliateData = function (affiliateData) {
      var $boxAfiliado = $('.cached-info-affiliate');
      if ($boxAfiliado.length === 0) return;

      if (affiliateData.length > 0) {
        $boxAfiliado.replaceWith(affiliateData);
      } else {
        $boxAfiliado.remove();
      }
    };


    var updateAcabouComprar = function (acabouComprar) {
      var $boxAcabouComprar = $('.boxVitrineFlutuante');
      if ($boxAcabouComprar.length === 1) return;

      jQuery('body').append(acabouComprar);
    };

    /**
     * Atualiza box de login do topo
     *
     * @param topLoginData
     */
    var updateTopLoginData = function (topLoginData) {

      if (!topLoginData) return;

      var $topoLoginElement = $('.cached-info-top-login');
      if ($topoLoginElement.length) {
        $topoLoginElement.replaceWith(topLoginData);
      }
    };

    var updateWelcomeData = function (clientName) {

      var $cacheBemVindo = $('.cache-bem-vindo');
      if ($cacheBemVindo.length) {
        if (clientName) {
          var html = $cacheBemVindo.data('logado');
          if (html.indexOf('{{ nome }}') > -1) {
            html = html.replace(new RegExp("{{ nome }}", 'g'), clientName);
          }

          if (html.indexOf('{{nome}}') > -1) {
            html = html.replace(new RegExp("{{nome}}", 'g'), clientName);
          }
          $cacheBemVindo.html(html);
        } else {
          $cacheBemVindo.html($cacheBemVindo.data('deslogado'));
        }
      }

      var $cacheBemVindoIcon = $('.cache-bem-vindo-icon');
      if ($cacheBemVindoIcon.length) {
        $cacheBemVindoIcon
            .removeClass($cacheBemVindoIcon.data('logado'))
            .removeClass($cacheBemVindoIcon.data('deslogado'));
        if (clientName) {
          $cacheBemVindoIcon.addClass($cacheBemVindoIcon.data('logado'));
        } else {
          $cacheBemVindoIcon.addClass($cacheBemVindoIcon.data('deslogado'));
        }
      }
    };

    var updateLoginArea = function (areaLoginData) {

      if (!areaLoginData) return;
      for (var areaLoginItem in areaLoginData) {
        var $areaLoginElement = $('[attr-id-loja-tema-conteudo="' + areaLoginItem + '"]');
        if ($areaLoginElement.length) {
          $areaLoginElement.replaceWith(areaLoginData[areaLoginItem]);
        }
      }
      // $areaLoginElement.replaceWith(areaLoginData);
    };

    /**
     * Atualiza o conteúdo do box de carrinho
     *
     * @param cartData
     */
    var updateCartData = function (cartData) {
      var textoItensCarrinho = cartData.total_qtd <= 1?' Item':' Itens';
      $('.cart-update-qtd').text(cartData.total_qtd + textoItensCarrinho);
      $('.cart-update-qtd-somente-qtd').text(cartData.total_qtd);
      $('.cart-update-preco').text('R$ ' + cartData.total_valor);
      if( cartData.total_qtd > 1 ) {
        $('.cart-update-text-itens').text(' Itens');
      } else {
        $('.cart-update-text-itens').text(' Item');
      }
    };

    /**
     * Atualiza os itens das listagens que estão no carrinho
     *
     * @param cartData
     */
    var updateCartProductsList = function (cartData) {
      $.each(cartData.carrinho.produtos_carrinho, function(key, value) {
          var id_produto = value.id_loja_produto;
          $('.boxItemListagem[attr-id-loja-produto="'+id_produto+'"]').addClass('produtoInseridoCarrinho');
      });
    };

    /**
     * Atualiza resumo do carrinho
     *
     * @param topResumeCartData
     * @param cartData
     */
    var updateTopResumeCartData = function (topResumeCartData, cartData) {
      if ($(".containerGenericoCarrinhoTopo").length === 0) return;
      if (typeof topoCarrinhoItens === 'undefined') return;
      if (typeof rivets === 'undefined') return;

      $('.cart-update-topo-carrinho').replaceWith(topResumeCartData);

      topoCarrinhoItens.topoCarrinho_arr_itens = cartData.carrinho.produtos_carrinho;
      topoCarrinho_config.qtd_produto = cartData.total_qtd;
      topoCarrinho_config.vr_total_preco = cartData.total_valor_raw;
      rivets.bind(
          $(".containerGenericoCarrinhoTopo"),
          {
            topoCarrinhoItens: topoCarrinhoItens,
            topoCarrinho_config: topoCarrinho_config,
            topoCarrinhoModule: topoCarrinhoModule
          }
      );
    };

    /**
     * Atualiza os conteúdos dinâmicos
     * @param data
     */
    var update = function (data, options) {
      if (data.hasOwnProperty('affiliate')) {
        updateAffiliateData(data.affiliate);
      }
      if (data.hasOwnProperty('acabou_comprar')) {
        updateAcabouComprar(data.acabou_comprar);
      }
      if (data.hasOwnProperty('flg_pagina_inicial')) {
        if (data.flg_pagina_inicial == '1') {
          var cookieName = "passouPrePagina";
          var cookieValue = document.cookie.match('(^|[^;]+)\\s*' + cookieName + '\\s*=\\s*([^;]+)');
          if (cookieValue) {
            cookieValue = cookieValue.pop();
          }

          if ((window.self === window.top)) {
            if (cookieValue) {

            } else {
              if( $('body').hasClass('home') ) {
                $('body, html').css('overflow', 'hidden');
                window.scrollTo({
                  top: 0
                });
                jQuery('.prePagina').hide().fadeIn(200);
              }
            }
          } else {
            console.log("Página está dentro de iframe, então nao carregar pre pagina");
          }
        }
      }

      if (data.hasOwnProperty('topLogin')) {
        updateTopLoginData(data.topLogin);
      }

      if (data.hasOwnProperty('clientName')) {
        updateWelcomeData(data.clientName);
      }

      if (data.hasOwnProperty('areaLogin') && options.areaLogin) {
        updateLoginArea(data.areaLogin);
      }

      if (data.hasOwnProperty('cartData')) {
        updateCartData(data.cartData);
        updateTopResumeCartData(data.topCartResume, data.cartData);
        updateCartProductsList(data.cartData);
      }

      $('.iframePopUp:not(.iframePopUpEsqueciMinhaSenha)').magnificPopup({
        type: 'iframe'
      });

      $('.iframePopUpDuvida, .iframePopUpEsqueciMinhaSenha').magnificPopup({
        type: 'iframe',
        callbacks: {
          open: function() {
            $('.mfp-content').addClass('modalDuvida');
            $('.mfp-iframe-holder .mfp-content').css('opacity','1');
          },
        },
      });
    };

    var show = function() {
      $('.boxSaudacaoDinamica, .carrinhoReduzidoQtd, .loginPedidosDinamico, .containerGenericoCarrinhoTopo, .contadorResumoCarrinho, .carrinhoReduzidoPreco, .iconeDinamicoLogin, .bem-vindo p:last-child, .bem-vindo span').css('opacity', '1');
      $('.cached-info-top-login, .cart-update-qtd, .cart-update-qtd-somente-qtd, .cart-update-topo-carrinho, .update-area-login-container, .cache-bem-vindo, .cache-bem-vindo-icon').css('opacity', '1');

      if ($('.cached-info-affiliate').length) {
        $('.cached-info-affiliate').fadeIn('fast');
      }
    };

    /**
     * Another public method
     */
    publicAPIs.init = function (options) {



      if (!options.hasCache) {
        // show();
        // return;
      }

      var $areaLogin = $('.update-area-login-container');
      options.areaLogin = $areaLogin.length > 0;
      this.options = options;

      if (typeof param_local_login !== 'undefined') {
        options.param_local_login = param_local_login;
      }

      options.origin = location.href;

          //coloca no options informações de processamento da loja
          var performanceData = null;
          try {
            if (window.performance && window.performance.getEntriesByType) {
              var performanceEntries = performance.getEntriesByType("navigation");
              if (performanceEntries && performanceEntries.length) {
                var currentUrl = window.location.href;
                var navigationTiming = performanceEntries[0];
                var pageLoadTime = navigationTiming.loadEventEnd - navigationTiming.fetchStart;
                var dnsLookupTime = navigationTiming.domainLookupEnd - navigationTiming.domainLookupStart;
                var tcpConnectionTime = navigationTiming.connectEnd - navigationTiming.connectStart;
                var serverProcessingTime = navigationTiming.responseEnd - navigationTiming.requestStart;
                var domLoadingTime = navigationTiming.domContentLoadedEventEnd - navigationTiming.fetchStart;
                var pageRenderingTime = navigationTiming.loadEventStart - navigationTiming.domContentLoadedEventEnd;

                performanceData = {
                  desc_performance_log_url: currentUrl,
                  desc_performance_log_page_load: pageLoadTime,
                  desc_performance_log_dns_lookup: dnsLookupTime,
                  desc_performance_log_tcp: tcpConnectionTime,
                  desc_performance_log_processing: serverProcessingTime,
                  desc_performance_log_dom_load: domLoadingTime,
                  desc_performance_log_rendering: pageRenderingTime,
                  desc_performance_log_apl:x_enviroment
                };
              }

            }

          } catch (error) {
            console.log(error);
          }
          options.loadInfo = performanceData;
          //testa se ta na tela de produto
          if (typeof id_loja_produto !== 'undefined' && id_loja_produto !== null && id_loja_produto !== '') {
            options.id_loja_produto = id_loja_produto;
          }
          else
          {
            options.id_loja_produto = 0;
          }

          if (typeof data_agora !== 'undefined')
          {
            options.data_agora = data_agora;
          }

          $.ajax({
            url: BASE_URL + '/ajax/ajax_cache',
            dataType: 'json',
            data: options,
            type: 'post',
            async: true,
            xhrFields: {
              withCredentials: true
            },
            beforeSend: function () {
              processandoDialog.remove();
            },
            success: function (data) {
              update(data, options);
              processandoDialog.remove();
            },
            complete: function () {
              show();
            }
          });


    };


    //
    // Return the Public APIs
    //

    return publicAPIs;

  };


  return Constructor;
})();


/////////////////////////////////////////// Google analytics 4 ////////////////////////////////////////////////
const LJVTGA4 = (function () {

  /**
   * Disparado quando usuário efetua o login
   *
   * @return void
   */
  function login() {
    if (typeof gtag4 !== 'undefined') {
      gtag4("event", "login", {
        method: "Formulário de Login"
      });
    }
  }

  /**
   * Disparado quando usuário efetua uma compra
   *
   * @param array data
   * @return void
   */
  function purchase(data) {
    // TODO
    if (typeof gtag4 !== 'undefined') {
      gtag4("event", "purchase", data);
    }
  }

  /**
   * Disparado quando usuário efetua uma busca
   *
   * @param array data
   * @return void
   */
  function search(search_term) {
    if (typeof gtag4 !== 'undefined') {
      gtag4("event", "search", {
        search_term: search_term
      });
    }
  }

  /**
   * Disparado quando usuário seleciona uma forma de pagamento
   *
   * @param array data
   * @return void
   */
  function addPaymentInfo(data) {
    if (typeof gtag4 !== 'undefined') {
      gtag4("event", "add_payment_info", data);
    }
  }

  /**
   * Disparado quando usuário seleciona uma forma de frete
   *
   * @param array data
   * @return void
   */
  function addShippingInfo(data) {
    if (typeof gtag4 !== 'undefined') {
      gtag4("event", "add_shipping_info", data);
    }
  }

  /**
   * Disparado quando usuário adiciona um item ao carrinho
   *
   * @param array data
   * @return void
   */
  function addToCart(data) {
    if (typeof gtag4 !== 'undefined') {
      gtag4("event", "add_to_cart", data);
    }
  }

  /**
   * Disparado quando usuário inicia o processo de checkout
   *
   * @param array data
   * @return void
   */
  function beginCheckout(data) {
    if (typeof gtag4 !== 'undefined') {
      gtag4("event", "begin_checkout", data);
    }
  }

  /**
   * Disparado quando usuário efetua o cadastro ou registra na newsletter
   *
   * @param array data
   * @return void
   */
  function generateLead() {
    if (typeof gtag4 !== 'undefined') {
      gtag4("event", "generate_lead");
    }
  }

  /**
   * Disparado quando usuário remove um item do carrinho
   *
   * @param array data
   * @return void
   */
  function removeFromCart(data) {
    if (typeof gtag4 !== 'undefined') {
      gtag4("event", "remove_from_cart", data);
    }
  }

  /**
   * Disparado quando usuário visualiza os itens no carrinho
   *
   * @param array data
   * @return void
   */
  function viewCart(data) {
    if (typeof gtag4 !== 'undefined') {
      gtag4("event", "view_cart", data);
    }
  }

  /**
   * Disparado quando usuário visualiza um produto
   *
   * @param array data
   * @return void
   */
  function viewItem(data) {
    if (typeof gtag4 !== 'undefined') {
      gtag4("event", "view_item", data);
    }
  }

  function formataProdutosCarrinhoGA4(produtos_carrinho)
  {
    produtos_carrinho = produtos_carrinho || [];
    var itemsGA4 = [];
    for (var i = 0; i < produtos_carrinho.length; i++) {
      var produto = produtos_carrinho[i];
      var codigo = produto.desc_codigo_manual.length > 0 ? produto.desc_codigo_manual : produto.id_loja_produto;
      var discount = 0.00;
      if (produto.vr_preco_de > 0) {
        discount = produto.vr_preco - produto.vr_preco_de;
      }

      var item = {
        item_id: codigo,
        item_name: produto.nome_produto,
        discount: discount,
        index: i,
        item_brand: produto.desc_marca,
        price: produto.vr_preco,
        quantity: produto.qtd_prod
      };
      itemsGA4.push(item);
    }

    return itemsGA4;
  }

  return {
    login,
    purchase,
    search,
    addPaymentInfo,
    addShippingInfo,
    addToCart,
    beginCheckout,
    generateLead,
    removeFromCart,
    viewCart,
    viewItem,
    formataProdutosCarrinhoGA4
  };
})();
