/**
* Template Name: BizLand - v3.2.0
* Template URL: https://bootstrapmade.com/bizland-bootstrap-business-template/
* Author: BootstrapMade.com
* License: https://bootstrapmade.com/license/
*/
(function () {
  "use strict";

  /**
   * Easy selector helper function
   */
  const select = (el, all = false) => {
    el = el.trim()
    if (all) {
      return [...document.querySelectorAll(el)]
    } else {
      return document.querySelector(el)
    }
  }

  /**
   * Easy event listener function
   */
  const on = (type, el, listener, all = false) => {
    let selectEl = select(el, all)
    if (selectEl) {
      if (all) {
        selectEl.forEach(e => e.addEventListener(type, listener))
      } else {
        selectEl.addEventListener(type, listener)
      }
    }
  }

  /**
   * Easy on scroll event listener 
   */
  const onscroll = (el, listener) => {
    el.addEventListener('scroll', listener)
  }

  /**
   * Navbar links active state on scroll
   */
  let navbarlinks = select('#navbar .scrollto', true)
  const navbarlinksActive = () => {
    let position = window.scrollY + 200
    navbarlinks.forEach(navbarlink => {
      if (!navbarlink.hash) return
      let section = select(navbarlink.hash)
      if (!section) return
      if (position >= section.offsetTop && position <= (section.offsetTop + section.offsetHeight)) {
        navbarlink.classList.add('active')
      } else {
        navbarlink.classList.remove('active')
      }
    })
  }
  window.addEventListener('load', navbarlinksActive)
  onscroll(document, navbarlinksActive)

  /**
   * Scrolls to an element with header offset
   */
  const scrollto = (el) => {
    let header = select('#header')
    let offset = header.offsetHeight

    if (!header.classList.contains('header-scrolled')) {
      offset -= 16
    }

    let elementPos = select(el).offsetTop
    window.scrollTo({
      top: elementPos - offset,
      behavior: 'smooth'
    })
  }

  /**
   * Header fixed top on scroll
   */
  let selectHeader = select('#header')
  if (selectHeader) {
    let headerOffset = selectHeader.offsetTop
    let nextElement = selectHeader.nextElementSibling
    const headerFixed = () => {
      if ((headerOffset - window.scrollY) <= 0) {
        selectHeader.classList.add('fixed-top')
        nextElement.classList.add('scrolled-offset')
      } else {
        selectHeader.classList.remove('fixed-top')
        nextElement.classList.remove('scrolled-offset')
      }
    }
    window.addEventListener('load', headerFixed)
    onscroll(document, headerFixed)
  }

  /**
   * Back to top button
   */
  let backtotop = select('.back-to-top')
  if (backtotop) {
    const toggleBacktotop = () => {
      if (window.scrollY > 100) {
        backtotop.classList.add('active')
      } else {
        backtotop.classList.remove('active')
      }
    }
    window.addEventListener('load', toggleBacktotop)
    onscroll(document, toggleBacktotop)
  }

  /**
   * Mobile nav toggle
   */
  on('click', '.mobile-nav-toggle', function (e) {
    select('#navbar').classList.toggle('navbar-mobile')
    this.classList.toggle('bi-list')
    this.classList.toggle('bi-x')
  })

  /**
   * Mobile nav dropdowns activate
   */
  on('click', '.navbar .dropdown > a', function (e) {
    if (select('#navbar').classList.contains('navbar-mobile')) {
      e.preventDefault()
      this.nextElementSibling.classList.toggle('dropdown-active')
    }
  }, true)

  /**
   * Scrool with ofset on links with a class name .scrollto
   */
  on('click', '.scrollto', function (e) {
    if (select(this.hash)) {
      e.preventDefault()

      let navbar = select('#navbar')
      if (navbar.classList.contains('navbar-mobile')) {
        navbar.classList.remove('navbar-mobile')
        let navbarToggle = select('.mobile-nav-toggle')
        navbarToggle.classList.toggle('bi-list')
        navbarToggle.classList.toggle('bi-x')
      }
      scrollto(this.hash)
    }
  }, true)

  /**
   * Scroll with ofset on page load with hash links in the url
   */
  window.addEventListener('load', () => {
    if (window.location.hash) {
      if (select(window.location.hash)) {
        scrollto(window.location.hash)
      }
    }
  });

  /**
   * Preloader
   */
  let preloader = select('#preloader');
  if (preloader) {
    window.addEventListener('load', () => {
      preloader.remove()
    });
  }

  /**
   * Initiate glightbox
   */
  const glightbox = GLightbox({
    selector: '.glightbox'
  });

  /**
   * Skills animation
   */
  let skilsContent = select('.skills-content');
  if (skilsContent) {
    new Waypoint({
      element: skilsContent,
      offset: '80%',
      handler: function (direction) {
        let progress = select('.progress .progress-bar', true);
        progress.forEach((el) => {
          el.style.width = el.getAttribute('aria-valuenow') + '%'
        });
      }
    })
  }

  /**
   * Testimonials slider
   */
  new Swiper('.testimonials-slider', {
    speed: 600,
    loop: true,
    autoplay: {
      delay: 5000,
      disableOnInteraction: false
    },
    slidesPerView: 'auto',
    pagination: {
      el: '.swiper-pagination',
      type: 'bullets',
      clickable: true
    }
  });

  /**
   * Porfolio isotope and filter
   */
  window.addEventListener('load', () => {
    let portfolioContainer = select('.portfolio-container');
    if (portfolioContainer) {
      let portfolioIsotope = new Isotope(portfolioContainer, {
        itemSelector: '.portfolio-item'
      });

      let portfolioFilters = select('#portfolio-flters li', true);

      on('click', '#portfolio-flters li', function (e) {
        e.preventDefault();
        portfolioFilters.forEach(function (el) {
          el.classList.remove('filter-active');
        });
        this.classList.add('filter-active');

        portfolioIsotope.arrange({
          filter: this.getAttribute('data-filter')
        });
        portfolioIsotope.on('arrangeComplete', function () {
          AOS.refresh()
        });
      }, true);
    }

  });

  /**
   * Initiate portfolio lightbox 
   */
  const portfolioLightbox = GLightbox({
    selector: '.portfolio-lightbox'
  });

  /**
   * Portfolio details slider
   */
  new Swiper('.portfolio-details-slider', {
    speed: 400,
    loop: true,
    autoplay: {
      delay: 5000,
      disableOnInteraction: false
    },
    pagination: {
      el: '.swiper-pagination',
      type: 'bullets',
      clickable: true
    }
  });

  /**
   * Animation on scroll
   */
  window.addEventListener('load', () => {
    AOS.init({
      duration: 1000,
      easing: 'ease-in-out',
      once: true,
      mirror: false
    })
  });

})()


/***************************************************************************
 *  Scrips customizados
 ***************************************************************************/

/**
 * Constants
 */
const KEY_PACKAGE_EMPRESA = 'br.com.eurides.model.Empresa'
const KEY_PACKAGE_CONSULTORES = 'br.com.eurides.model.wms.Consultor'
const EMAIL_EMPRESA_DEFAULT = 'sac@eurides.com'
const FACEBOOK_EMPRESA_DEFAULT = 'http://facebook.com/bikeshop'
const INSTAGRAM_EMPRESA_BIKE = 'https://www.instagram.com/euridesbikemossoro/'
const INSTAGRAM_EMPRESA_MOTO = 'https://www.instagram.com/eurides_moto/'
const ENDERECO1_EMPRESA = 'Av. Cunha da Mota, 445'
const ENDERECO2_EMPRESA = 'Mossoró, RN'
const DEFAULT_POST_MESSAGE = 'Armazenar dados'
const KEY_PACKAGE_CLIENTE = 'br.com.eurides.model.Cliente'
const KEY_PACKAGE_PRODUTO = 'br.com.eurides.model.ViewProdutoVarejo'
const KEY_PACKAGE_VENDA = 'br.com.eurides.model.PedidoItem'
const TIMEOUT_MESSAGE = 2000

/**
 * Pages
 */
const LOGIN_PAGE = './login.html'
const ERROR_PAGE = './error.html'

/**
 * Routes
 */
const GET_EMPRESA = 'Empresa/Tag/BIKESHOP'
const POST_CONTATO = 'Contato?repository=default'
const POST_NEWS_LETTER = 'NewsLetter?repository=default'
const ORIGEM_SITE = 'SITE'
const GET_CONSULTORES = 'Consultor/Ativo'
const GET_LOJAS = 'Empresa?repository=default&sort=Pessoa.Nome&includes=Pessoa'
const GET_CLIENTE = 'Cliente/CPFCNPJ/{cpfcnpj}?repository={repository}'
const GET_PRODUTO = 'ViewProdutoVarejo/{id}?repository={repository}'
const GET_VENDA = 'PedidoItem/Cliente/{cpfcnpj}/{idProduto}?repository={repository}'

/**
 * Show message
 * @param {string} text 
 */
function showMessage(element, text, type = 'alert-success') {
  const message = document.querySelector(element)

  message.innerHTML = text
  message.classList.add('alert')
  message.classList.add(type)

  setTimeout(() => {
    message.innerHTML = ''
    message.classList.remove('alert')
    message.classList.remove(type)
  }, TIMEOUT_MESSAGE);
}
/**
 * Format fone number
 * @param {string} fone 
 * @returns string
 */
function formatFone(fone) {
  const foneFormatado = ('' + fone).replace(/\D/g, '')
  const match = foneFormatado.match(/^(\d{2})(\d{4})(\d{4})$/)
  if (match) {
    return '(' + match[1] + ') ' + match[2] + '-' + match[3]
  }
  return fone
}

function addFormatFoneListener() {
  const elements = document.querySelectorAll('.telefone')

  for (let element of elements) {
    element.addEventListener('keypress', (event) => formatTelefone(event.target.value))
    element.addEventListener('change', (event) => formatTelefone(event.target.value))

    const formatTelefone = (numero) => {
      numero = numero.replace(/\D/g, "")
      numero = numero.replace(/^(\d{2})(\d)/g, "($1) $2")
      numero = numero.replace(/(\d)(\d{4})$/, "$1-$2")
      element.value = numero
    }
  }
}

/**
 * Set user data to page
 * @param {Object} user 
 */
function setNavLogin(user) {
  let menu = user.toLowerCase()
  menu = menu.charAt(0).toUpperCase() + menu.slice(1)
  document.querySelector('#nav-login').innerHTML = `${menu} | Sair`
}

/**
 * Checa se o objeto estar nulo
 */
function isNull(obj) {

  if (!obj) {
    return true
  }

  const json = JSON.stringify(obj)

  if (!json || json === "{}") {
    return true
  }

  return false

}

/**
 * Set data company to page
 * @returns void
 */
async function setContatoEmpresa() {
  let empresa = getSession('empresa')

  if (isNull(empresa)) {
    const response = await get(GET_EMPRESA)

    if (!response || response.Success === false) {
      location.href = ERROR_PAGE
      return
    }

    empresa = response.Data[0]
    setSession('empresa', empresa)
  }

  let elements = document.querySelectorAll('.email-empresa')
  const email = empresa.Pessoa.email || EMAIL_EMPRESA_DEFAULT
  for (let element of elements) {
    element.href = `mailto:${email}`
    element.innerHTML = email
  }

  elements = document.querySelectorAll('.fone-empresa')
  for (let element of elements) {
    element.innerHTML = formatFone(empresa.Pessoa.Telefone)
  }

  elements = document.querySelectorAll('.facebook')
  for (let element of elements) {
    element.href = empresa.Pessoa.Facebook || FACEBOOK_EMPRESA_DEFAULT
  }

  elements = document.querySelectorAll('.instagram-bike')
  for (let element of elements) {
    element.href = empresa.Pessoa.RedeSocial1 || INSTAGRAM_EMPRESA_BIKE
  }

  elements = document.querySelectorAll('.instagram-moto')
  for (let element of elements) {
    element.href = empresa.Pessoa.RedeSocial2 || INSTAGRAM_EMPRESA_MOTO
  }


  elements = document.querySelectorAll('.endereco1-empresa')
  for (let element of elements) {
    element.innerHTML = `${empresa.Pessoa.Logradouro}, ${empresa.Pessoa.Numero}` || ENDERECO1_EMPRESA
  }

  elements = document.querySelectorAll('.endereco2-empresa')
  for (let element of elements) {
    element.innerHTML = `${empresa.Pessoa.Cidade}, ${empresa.Pessoa.UF}` || ENDERECO2_EMPRESA
  }
}


function addEnviarContatoListener() {
  document.querySelector('#enviar-mensagem').addEventListener('click', async (event) => {
    event.preventDefault()

    const nome = document.querySelector('#nome-contato')
    const telefone = document.querySelector('#telefone-contato')
    const email = document.querySelector('#email-contato')
    const assunto = document.querySelector('#assunto-contato')
    const mensagem = document.querySelector('#mensagem-contato')

    if (!verificaDados('texto', nome.value)) {
      showMessage('#alert-contato', 'Nome inválido', 'alert-warning')
      return
    }

    if (!verificaDados('telefone', telefone.value)) {
      showMessage('#alert-contato', 'Telefone inválido', 'alert-warning')
      return
    }

    if (!verificaDados('email', email.value)) {
      showMessage('#alert-contato', 'E-Mail inválido', 'alert-warning')
      return
    }

    if (!verificaDados('texto', assunto.value)) {
      showMessage('#alert-contato', 'Assunto inválido', 'alert-warning')
      return
    }

    if (!verificaDados('texto', mensagem.value)) {
      showMessage('#alert-contato', 'É preciso informar mensagem', 'alert-warning')
      return
    }

    const response = await post(POST_CONTATO, {
      Message: DEFAULT_POST_MESSAGE,
      Data: [{
        Nome: nome.value,
        Telefone: telefone.value,
        Email: email.value,
        Assunto: assunto.value,
        Mensagem: mensagem.value
      }]
    })

    if (!response || response.Success === false) {
      showMessage('#alert-contato', response.Message, 'alert-danger')
      return
    }

    nome.value = null
    telefone.value = null
    email.value = null
    assunto.value = null
    mensagem.value = null

    showMessage('#alert-contato', response.Message, 'alert-success')
  })
}

/**
 * Máscara para CPF e/ou CNPJ e verificação se é um documento válido
 * @param {*} valor 
 */
function ValidaCPFCNPJ(valor, campo) {

  valor = valor.replace(/[^\d]+/g, '')

  // CPF ou CNPJ é válido
  if (!CPF(valor) && !CNPJ(valor)) {
    showMessage('#alert-CPFCNPJ', 'CPF ou CNPJ inválido...', 'alert-warning')
    return
  }

  // Mascara o campo
  if (valor.length === 11) {
    document.getElementById(id).value = valor.substr(0, 3) + '.' +
      valor.substr(3, 3) + '.' +
      valor.substr(6, 3) + '.' +
      valor.substr(9, 2)

  }

  if (valor.length === 14) {
    document.getElementById(id).value = valor.substr(0, 2) + '.' +
      valor.substr(2, 3) + '.' +
      valor.substr(5, 3) + '/' +
      valor.substr(8, 4) + '-' +
      valor.substr(12, 2);
  }

}



/**
 * Verificar se o CPF é válido....
 * @param {*} strCPF 
 * @returns 
 */
function CPF(strCPF) {
  var Soma;
  var Resto;
  Soma = 0;
  if (strCPF == "00000000000") return false;

  for (i = 1; i <= 9; i++) Soma = Soma + parseInt(strCPF.substring(i - 1, i)) * (11 - i);
  Resto = (Soma * 10) % 11;

  if ((Resto == 10) || (Resto == 11)) Resto = 0;
  if (Resto != parseInt(strCPF.substring(9, 10))) return false;

  Soma = 0;
  for (i = 1; i <= 10; i++) Soma = Soma + parseInt(strCPF.substring(i - 1, i)) * (12 - i);
  Resto = (Soma * 10) % 11;

  if ((Resto == 10) || (Resto == 11)) Resto = 0;
  if (Resto != parseInt(strCPF.substring(10, 11))) return false;
  return true;
}

/**
 * Função para validar CNPJ
 * @param {*} cnpj 
 * @returns 
 */
function CNPJ(cnpj) {

  cnpj = cnpj.replace(/[^\d]+/g, '');

  if (cnpj == '') return false;

  if (cnpj.length != 14)
    return false;

  // Elimina CNPJs invalidos conhecidos
  if (cnpj == "00000000000000" ||
    cnpj == "11111111111111" ||
    cnpj == "22222222222222" ||
    cnpj == "33333333333333" ||
    cnpj == "44444444444444" ||
    cnpj == "55555555555555" ||
    cnpj == "66666666666666" ||
    cnpj == "77777777777777" ||
    cnpj == "88888888888888" ||
    cnpj == "99999999999999")
    return false;

  // Valida DVs
  tamanho = cnpj.length - 2
  numeros = cnpj.substring(0, tamanho);
  digitos = cnpj.substring(tamanho);
  soma = 0;
  pos = tamanho - 7;
  for (i = tamanho; i >= 1; i--) {
    soma += numeros.charAt(tamanho - i) * pos--;
    if (pos < 2)
      pos = 9;
  }
  resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
  if (resultado != digitos.charAt(0))
    return false;

  tamanho = tamanho + 1;
  numeros = cnpj.substring(0, tamanho);
  soma = 0;
  pos = tamanho - 7;
  for (i = tamanho; i >= 1; i--) {
    soma += numeros.charAt(tamanho - i) * pos--;
    if (pos < 2)
      pos = 9;
  }
  resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
  if (resultado != digitos.charAt(1))
    return false;

  return true;

}

/**
 * Função para verificação de dados
 * @param {*} tipo 
 * @param {*} valor 
 */
function verificaDados(tipo, valor) {

  // alert(tipo + '      -      ' + valor)

  if (tipo === 'texto') {
    if (valor.empty || !valor) {
      return false
    }
  }

  if (tipo === 'email') {
    if (valor.empty || !valor || valor.indexOf('@') == -1 || valor.indexOf('.') == -1 || valor.indexOf('.') == valor.length - 1) {
      return false
    }
  }

  if (tipo === 'telefone') {
    if (valor.empty || !valor || valor.length != 15) {
      return false
    }
  }

  return true
}

function addEscolherLoja() {
  document.querySelector('#lojaPedido-garantia').addEventListener('click', async (event) => {
    event.preventDefault()

    if (document.querySelector('#cpfcnpj-garantia').length > 0) {
      limparCamposGarantia()
    }

  })
}

/**
 * Localizar o cliente pelo cpf ou cnpj
 */
function addLocalizarClienteListener() {
  document.querySelector('#cpfcnpj-garantia')
    .addEventListener('blur', async (event) => {
      event.preventDefault() // Para o evento padrão e pode reescrever o evento 

      const documento = document.querySelector('#cpfcnpj-garantia').value
      const lojas = document.querySelector('#lojaPedido-garantia')
      const cd = lojas.options[lojas.selectedIndex].value

      const response = await get(GET_CLIENTE.replace('{cpfcnpj}', documento)
        .replace('{repository}', cd))

      cliente = response.Data[KEY_PACKAGE_CLIENTE]
      console.log(cliente)

      if (!cliente) {
        limparCamposGarantia()

        showMessage('#alert-CPFCNPJ', 'Cliente não encontrado na loja selecionada...', 'alert-warning')
        return false
      }

      document.getElementById('nomeCliente-garantia').value = cliente[0].Nome
      document.getElementById('telefoneCliente-garantia').value = cliente[0].Telefone1
      document.getElementById('emailCliente-garantia').value = cliente[0].Email

      return true
    })
}

/**
 * Localizar o produto pelo código
 */
function addLocalizarProdutoListener() {
  document.querySelector('#codigoProduto-garantia')
    .addEventListener('blur', async (event) => {
      event.preventDefault() // Para o evento padrão e pode reescrever o evento 

      const codigo = document.querySelector('#codigoProduto-garantia').value
      const lojas = document.querySelector('#lojaPedido-garantia')
      const cd = lojas.options[lojas.selectedIndex].value

      const response = await get(GET_PRODUTO.replace('{id}', codigo)
        .replace('{repository}', cd))

      produto = response.Data[KEY_PACKAGE_PRODUTO]

      if (!produto) {
        limparCamposGarantia()

        showMessage('#alert-CodigoProduto', 'Produto não encontrado na loja selecionada...', 'alert-warning')
        return false
      }

      document.getElementById('nomeProduto-garantia').value = produto[0].Descricao
      document.getElementById('fabricanteProduto-garantia').value = produto[0].Fabricante
      document.getElementById('classeProduto-garantia').value = produto[0].Classe


      

      // Verificando se há pedido feito com esse cliente e esse produto
      const documento = document.querySelector('#cpfcnpj-garantia').value
      const pedido = document.querySelector('#numeroPedido-garantia').value      

      const responseVendas = await get(GET_VENDA
        .replace('{cpfcnpj}', documento)
        .replace('{idProduto}', codigo)
        .replace('{repository}', cd))
      
      if (!responseVendas) {
        showMessage('#alert-CodigoProduto', 'Não há vendas para esse produto desse cliente', 'alert-warning')
        return false        
      } 



      // jogar no select de vendas os pedidos feitos 

      return true
    })
}

/**
 * Localizar o produto pelo cliente, produto e cd
*/
function addLocalizarVendaListener() {
  document.querySelector('#numeroPedido-garantia')
    .addEventListener('blur', async (event) => {
      event.preventDefault() // Para o evento padrão e pode reescrever o evento 

      const documento = document.querySelector('#cpfcnpj-garantia').value
      const pedido = document.querySelector('#numeroPedido-garantia')
      const lojas = document.querySelector('#lojaPedido-garantia')
      const cd = lojas.options[lojas.selectedIndex].value

      const response = await get(GET_CLIENTE.replace('{cpfcnpj}', documento)
        .replace('{repository}', cd))

      cliente = response.Data[KEY_PACKAGE_CLIENTE]
      console.log(cliente)

      if (!cliente) {
        limparCamposGarantia()

        showMessage('#alert-CPFCNPJ', 'Cliente não encontrado na loja selecionada...', 'alert-warning')
        return false
      }

      document.getElementById('nomeCliente-garantia').value = cliente[0].Nome
      document.getElementById('telefoneCliente-garantia').value = cliente[0].Telefone1
      document.getElementById('emailCliente-garantia').value = cliente[0].Email

      return true
    })
}



/**
 * Limpar campos da garantia
 */
function limparCamposGarantia() {
  // Campos de Clientes
  document.getElementById('cpfcnpj-garantia').value = ''
  document.getElementById('nomeCliente-garantia').value = ''
  document.getElementById('telefoneCliente-garantia').value = ''
  document.getElementById('emailCliente-garantia').value = ''

  // Campos de Produtos
  document.getElementById('nomeProduto-garantia').value = ''
  document.getElementById('fabricanteProduto-garantia').value = ''
  document.getElementById('classeProduto-garantia').value = ''

  // Campos de Vendas
  document.getElementById('numeroPedido-garantia').value = ''
  document.getElementById('dataVenda-garantia').value = ''
  document.getElementById('dfeProduto-garantia').value = ''
  document.getElementById('nnfeModelo-garantia').value = ''

  // Descrição do Problema
  document.getElementById('descricaoProblema-garantia').value = ''
}

/**
 * Enviar o email do News Letter
 * @returns void
 */
function addEnviarNewsLetterListener() {
  document.querySelector('#enviar-newsletter').addEventListener('click', async (event) => {
    event.preventDefault()

    const email = document.querySelector('#email-newsletter')

    if (!verificaDados('email', email.value)) {
      showMessage('#alert-newsletter', 'E-Mail inválido', 'alert-warning')
      return
    }


    const response = await post(POST_NEWS_LETTER, {
      Message: DEFAULT_POST_MESSAGE,
      Data: [{
        Email: email.value,
        Origem: ORIGEM_SITE
      }]
    })

    if (!response || response.Success === false) {
      showMessage('#alert-newsletter', response.Message, 'alert-danger')
      return
    }

    email.value = null

    showMessage('#alert-newsletter', response.Message, 'alert-success')
  })
}

/**
 * Consulta de postar consultores
 * @returns void
 */
async function setConsultores() {

  let consultores = getSession('consultores')

  if (isNull(consultores) || consultores.length === 0) {
    const response = await get(GET_CONSULTORES)

    if (!response || response.Success === false) {
      location.href = ERROR_PAGE
      return
    }

    consultores = response.Data[KEY_PACKAGE_CONSULTORES]

    setSession('consultores', consultores)
  }

  const container = document.querySelector('#container-consultores')
  const template = document.querySelector('#template-consultor')

  let content = ""
  let delay = 100

  for (let consultor of consultores) {
    content += template.innerHTML
      .replace('{{delay}}', delay)
      .replace('{{id}}', consultor.Id)
      .replace('{{whatsapp}}', consultor.Whatsapp)
      .replace('{{nome}}', consultor.Nome)
      .replace('{{titulo}}', consultor.Titulo)

    delay += 100
  }

  container.innerHTML = content
}

/**
 * Carrega e seta lojas no select de garantias de lojas
 * @returns 
 */
async function setLojas() {
  let lojas = getSession('lojas')

  if (isNull(lojas) || lojas.length === 0) {
    const response = await get(GET_LOJAS)

    if (!response || response.Success === false) {
      location.href = ERROR_PAGE
      return
    }

    lojas = response.Data[KEY_PACKAGE_EMPRESA]

    setSession('lojas', lojas)
  }

  for (let loja of lojas) {

    if (loja.Pessoa.Ativo === 'S') {
      const item = document.createElement('option')

      item.appendChild(document.createTextNode(loja.Pessoa.Nome + '  |  ' + loja.Tag))
      item.value = loja.Tag.toLowerCase()

      document.querySelector('#lojaPedido-garantia').appendChild(item)
    }
  }
}


/**
 * Add listeners from main page
 * @returns void
 */
function addMainListener() {
  setContatoEmpresa()
  setConsultores()
  addFormatFoneListener()
  addEnviarContatoListener()
  addEnviarNewsLetterListener()
  setLojas()
  addLocalizarClienteListener()
  addEscolherLoja()
  addLocalizarProdutoListener()
  addLocalizarVendaListener()
  // aqui vai todos os escutadores com chamados a api

  const usuario = getSession('user')
  if (!isNull(usuario)) {
    setNavLogin(usuario.Nome)
    return
  }

  document.querySelector('#garantia').remove()
  document.querySelector('#dashboard').remove()
  const elements = document.querySelectorAll('.nav-garantia')
  for (let element of elements) {
    element.addEventListener('click', (event) => {
      event.preventDefault()
      location.href = LOGIN_PAGE
    })
  }
}

/**
 * Inicialização da aplicação
 */
document.addEventListener("DOMContentLoaded", () => {
  addMainListener()
})