﻿
var divItens;
var divRodape;
var config;

$(document).ready(function () {
  translate();

  $(".modalWindow2, .modalBack").hide();

  $(".modalBack").click(function () { $(".modalWindow2, .modalBack").fadeOut('fast'); });

  //SaldoUser();

  VerificaLogin();

  config = PegaConfig();

  $("#hpyTab").hide();
  $("#hpyCaixa").hide();
  $("#hpyAdm").hide();
  $("#hpyApp").hide();

  if (loginmodel.ID > 0) {
    $("#hpyTab").show();
    $("#hpyCaixa").show();
    if (loginmodel.NIVEL > 0) {
      $("#hpyAdm").show();
    }
    if (loginmodel.NIVEL >= 0) {
      $("#hpyApp").show();
    }
  }

  divItens = $("#divItens");
  divRodape = $("#divRodape");

  //if ((loginmodel.NIVEL == -1) || (document.domain.indexOf("betsvip.bet") >= 0) || (document.domain.indexOf("bolaodasortevip") >= 0) || (document.domain.indexOf("lucksports") >= 0) || (document.domain.indexOf("bestgame1") >= 0) || (document.domain.indexOf("localhost2") >= 0))
  //  $("#hpyCaixa").prop("href", "./adm/caixa.aspx");

  $("#txtCodigo").focus();

  $('#txtCodigo').keypress(function () {
    var key = (event.keyCode ? event.keyCode : event.which);
    if (key == 13) {
      Pesquisar();
    }
  });

});


function Pesquisar() {
  divItens.html("");
  divRodape.html("");

  avisoAguarde();

  VerificaLogin();

  let apostId = $("#txtCodigo").val();

  $.ajax({
    url: urlApi + "/api/Caixa/DetalheAposta/0",
    type: "GET",
    contentType: "application/json; charset=utf-8",
    headers: { 'AUTHTOKEN': loginmodel.AUTHTOKEN, 'ID': loginmodel.ID, 'COD': apostId },
    dataType: "json",
    processdata: true,
    success: function (data) {
      MontarDetalhes(data);
      retirarAguarde();
    },
    error: function (xhr) {
      if (xhr.status == 404)
        PesquisarBolao();
      else
        retirarAguarde();
      return null;
    }
  });
}


function PesquisarBolao() {
  divItens.html("");
  divRodape.html("");

  avisoAguarde();

  VerificaLogin();

  let apostId = $("#txtCodigo").val();

  $.ajax({
    url: urlApi + "/api/CaixaBolao/DetalheAposta/0",
    type: "GET",
    contentType: "application/json; charset=utf-8",
    headers: { 'AUTHTOKEN': loginmodel.AUTHTOKEN, 'ID': loginmodel.ID, 'COD': apostId },
    dataType: "json",
    processdata: true,
    success: function (data) {
      MontarDetalhesBolao(data);
      retirarAguarde();
    },
    error: function (xhr) {
      retirarAguarde();
      return null;
    }
  });
}

function MontarDetalhesBolao(dados) {
  if (dados != undefined) {
    let resultado = "<table border='0' cellpadding='1' cellspacing='0' width='100%'>{0}</table><br />";
    let linha = "<tr{css}><td>{jogo}</td><td>{botao}</td><td align='center'>{sit}</td><td align='center' class='hit' title='{tip}'>{result}</td></tr>";

    let txt = linha.replace("{css}", " style='color:White;background-color:#5D7B9D;font-weight:bold;'");
    txt = txt.replace("{jogo}", currentLang['lb_matches']);
    txt = txt.replace("{botao}", "&nbsp;");
    txt = txt.replace("{sit}", currentLang['lb_status']);
    txt = txt.replace("{result}", currentLang['lb_result']);

    let registros = txt;

    for (i = 0; i < dados.itens.length; i++) {
      if (i % 2 == 0)
        txt = linha.replace("{css}", " class='tabelaLinhaImpar4'");
      else
        txt = linha.replace("{css}", "");

      let dtHrIni = JsonStrToDate(dados.itens[i].dt_hr_ini);

      dtHrIni.setHours(dtHrIni.getHours() + config.Fuso);

      var descricao = "";

      if (dados.itens[i].camp_nome)
        descricao += "<span class='fonte7'>" + dados.itens[i].camp_nome + "</span><br />";

      descricao += "<span class='fonte12'>" + dados.itens[i].casa_time;

      if (dados.itens[i].visit_time)
        descricao += " x " + dados.itens[i].visit_time;
      descricao += "</span>";

      descricao += "<br />";

      let vencedorDesc = '';

      if ((dados.itens[i].placar_c != undefined) && (dados.itens[i].placar_f != undefined)) {
        vencedorDesc = currentLang['lb_exact_result'] + ' ' + dados.itens[i].placar_c + ' x ' + dados.itens[i].placar_f;
      } else {
        if (dados.itens[i].resultado === '1') {
          vencedorDesc = currentLang['lb_match_winner'] + ' ' + currentLang['lb_home'];
        }
        else
          if (dados.itens[i].resultado === 'X') {
            vencedorDesc = currentLang['lb_match_winner'] + ' ' + currentLang['lb_draw'];
          }
          else
            if (dados.itens[i].resultado === '2') {
              vencedorDesc = currentLang['lb_match_winner'] + ' ' + currentLang['Away'];
            }
      }

      descricao += "<span class='fonte12'>" + vencedorDesc + "</span><br />";

      descricao += "<span class='fonte12'>" + "Data: " + dtHrIni.toLocaleDateString("pt-BR", { day: '2-digit', month: '2-digit', year: '2-digit', hour: '2-digit', minute: '2-digit' }) + "</span><br />";

      var placar = "";
      var toolTip = "";

      txt = txt.replace("{jogo}", descricao);
      txt = txt.replace("{botao}", "&nbsp;");
      txt = txt.replace("{sit}", dados.itens[i].status_item_desc);
      txt = txt.replace("{result}", placar);
      txt = txt.replace("{tip}", toolTip);

      registros += txt;
    }

    resultado = resultado.replace("{0}", registros);

    divItens.append(resultado + "<br /><br />");


    ///////////////////

    resultado = "<table border='0' cellpadding='4' cellspacing='2' width='100%'>{0}</table><br />";
    linha = "<tr><td align='right'>{1}</td><td align='right'>{2}</td><td align='right'>{3}</td><td align='right'>{4}</td></tr>";

    registros = "";

    txt = linha;
    txt = txt.replace("{1}", currentLang['lb_code']);
    txt = txt.replace("{2}", dados.aposta.codigo);
    txt = txt.replace("{3}", "");
    txt = txt.replace("{4}", "");

    registros += txt;

    txt = linha;
    txt = txt.replace("{1}", currentLang['lb_customer'] + ": ");
    txt = txt.replace("{2}", dados.aposta.cliente);
    txt = txt.replace("{3}", currentLang['lb_user'] + ": ");
    txt = txt.replace("{4}", dados.aposta.login);

    registros += txt;

    txt = linha;
    txt = txt.replace("{1}", currentLang['lb_bet_value'] + ": ");
    txt = txt.replace("{2}", dados.aposta.vl_aposta.toLocaleString('pt-BR', { minimumFractionDigits: '2', maximumFractionDigits: '2' }));
    txt = txt.replace("{3}", "&nbsp;");
    txt = txt.replace("{4}", "&nbsp;");

    registros += txt;

    let dtCad = JsonStrToDate(dados.aposta.dt_cad);

    dtCad.setHours(dtCad.getHours() + config.Fuso);

    txt = linha;
    txt = txt.replace("{1}", currentLang['lb_date_time']);
    txt = txt.replace("{2}", dtCad.toLocaleDateString("pt-BR", { day: '2-digit', month: '2-digit', year: '2-digit', hour: '2-digit', minute: '2-digit' }));
    txt = txt.replace("{3}", "&nbsp;");
    txt = txt.replace("{4}", "&nbsp;");

    registros += txt;

    txt = linha;
    txt = txt.replace("{1}", currentLang['lb_number_hits']);
    txt = txt.replace("{2}", (dados.aposta.qtd_acertos != null ? dados.aposta.qtd_acertos : ""));
    txt = txt.replace("{3}", currentLang['lb_status']);
    txt = txt.replace("{4}", dados.aposta.status_desc);

    registros += txt;

    var dtCanc = JsonStrToDate(dados.aposta.dt_canc);

    txt = linha;
    txt = txt.replace("{1}", currentLang['lb_canceled_by']);
    txt = txt.replace("{2}", (dados.aposta.us_canc_nome != null ? dados.aposta.us_canc_nome : "") + (dtCanc != null ? " - " + dtCanc.toLocaleDateString("pt-BR", { day: '2-digit', month: '2-digit', year: '2-digit', hour: '2-digit', minute: '2-digit' }) : ""));
    txt = txt.replace("{3}", currentLang['lb_paid_value'] + ": ");
    txt = txt.replace("{4}", (dados.aposta.vl_pago != null ? dados.aposta.vl_pago.toLocaleString('pt-BR', { minimumFractionDigits: '2', maximumFractionDigits: '2' }) : ""));

    registros += txt;

    if (dados.aposta.solic_cancel == 1) {
      var dtSolicCanc = JsonStrToDate(dados.aposta.solic_cancel_data);

      txt = linha;
      txt = txt.replace("{1}", currentLang['lb_request_cancel_date']);
      txt = txt.replace("{2}", (dtSolicCanc != null ? dtSolicCanc.toLocaleDateString("pt-BR", { day: '2-digit', month: '2-digit', year: '2-digit', hour: '2-digit', minute: '2-digit' }) : ""));
      txt = txt.replace("{3}", "&nbsp;");
      txt = txt.replace("{4}", "&nbsp;");

      registros += txt;

    }

    var IP = "";

    if (loginmodel.NIVEL == 5) {
      if ((dados.aposta.versao != null) && (dados.aposta.versao != ""))
        IP = "* " + dados.aposta.ip;
      else
        IP = dados.aposta.ip;
    }

    txt = "<tr><td align='right'>{1}</td><td align='right' colspan='2'>{2}</td><td align='right'>{4}</td></tr>";
    txt = txt.replace("{1}", IP);

    var podeIr = false;
    var btReimp = "";
    if (loginmodel.NIVEL == 5) {
      if (dados.aposta.status != 2) podeIr = true;
    } else
      if (loginmodel.NIVEL == 1) {
        if (dados.aposta.status != 2)
          if (config.Permite_Reimp) podeIr = true;
      } else {
        if (dados.aposta.status != 2)
          if (config.Permite_Reimp_Camb) podeIr = true;
      }
    if (podeIr == true) btReimp = "<button type='button' onclick=\"javascript: ReimprimirBolao('" + dados.aposta.codigo + "');\" style='width: 120px;' >" + currentLang['bt_reprit'] + "</button>";

    var btCancelar = "";
    podeIr = false;
    if (loginmodel.NIVEL == 5) {
      if (dados.aposta.status != 2) podeIr = true;
    } else if (loginmodel.NIVEL == 1) {
      if ((dados.aposta.status == 0))
        if (config.Permite_Superv_Cancel_Jogo) podeIr = true;
    }
    else if (loginmodel.NIVEL == 4) {
      if ((dados.aposta.status == 0))
        podeIr = true;
    }
    if (podeIr == true) btCancelar = "<button type='button' onclick=\"javascript: CancelarBolao('" + dados.aposta.bolao_id + "');\" style='width: 120px;'>" + currentLang['bt_cancel'] + "</button>";

    if (loginmodel.NIVEL == 5) {
      if (dados.aposta.status == 2)
        if ((document.domain.indexOf("betgol777") < 0) && (document.domain.indexOf("futebolbets.com") < 0)
          && (document.domain.indexOf("showdabola.com.br") < 0) && (document.domain.indexOf("reidabola.com.br") < 0))
          btCancelar = "<button type='button' onclick=\"javascript: DescancelarBolao('" + dados.aposta.bolao_id + "');\" style='width: 120px;'>" + currentLang['bt_uncancel'] + "</button>";
    }

    txt = txt.replace("{2}", btReimp + btCancelar);

    txt = txt.replace("{4}", "<input id='btSair' type='button' value='" + currentLang['bt_close'] + "' style='width: 120px;' />");

    registros += txt;


    resultado = resultado.replace("{0}", registros);

    divRodape.append(resultado);

    //$(".modalWindow2, .modalBack").fadeIn();
    //$("#btSair").click(function () { $(".modalWindow2, .modalBack").fadeOut(); });

  }
}

var lastData;

function MontarDetalhes(dados) {
  if (dados != undefined) {
    lastData = dados;

    let resultado = "<table border='0' cellpadding='1' cellspacing='0' width='100%'>{0}</table><br />";
    let linha = "<tr{css}><td>{jogo}</td><td>{botao}</td><td align='center'>{sit}</td><td align='center' class='hit' title='{tip}'>{result}</td></tr>";

    let txt = linha.replace("{css}", " style='color:White;background-color:#5D7B9D;font-weight:bold;'");
    txt = txt.replace("{jogo}", currentLang['lb_matches']);
    txt = txt.replace("{botao}", "&nbsp;");
    txt = txt.replace("{sit}", currentLang['lb_status']);
    txt = txt.replace("{result}", currentLang['lb_result']);

    let registros = txt;

    let vlPremio = 0;
    let vlTaxa = 1;

    if (dados.itens) {
      for (i = 0; i < dados.itens.length; i++) {
        if (i % 2 == 0)
          txt = linha.replace("{css}", " class='tabelaLinhaImpar4'");
        else
          txt = linha.replace("{css}", "");

        var d = JsonStrToDate(dados.itens[i].dt_jogo);

        d.setHours(d.getHours() + config.Fuso);

        var descricao = "";

        if (dados.itens[i].esporte)
          descricao += "<span class='fonte7'>" + dados.itens[i].esporte + "</span>";

        if (loginmodel.ID === 2 || loginmodel.ID > 444440) {
          descricao += "<span class='fonte7'> - " + dados.itens[i].camp_jog_id + (dados.itens[i].evento_id ? " - " + dados.itens[i].evento_id : "") + "</span>";
        }

        descricao += "<br />";

        if (dados.itens[i].camp_nome)
          descricao += "<span class='fonte7'>" + dados.itens[i].camp_nome + "</span><br />";

        descricao += "<span class='fonte12'>" + dados.itens[i].casa_nome;

        if (dados.itens[i].visit_nome)
          descricao += " x " + dados.itens[i].visit_nome;
        descricao += "</span>";

        if (dados.itens[i].vivo && dados.itens[i].vivo === 1)
          descricao += "<span class='fonte7'> (vivo)</span>";

        descricao += "<br />";

        if ((dados.itens[i].sit == 0) || (dados.itens[i].sit == 1) || (dados.itens[i].sit == 2))
          vlTaxa *= dados.itens[i].taxa;

        descricao += "<span class='fonte12'>" + currentLang['lb_winner'] + " " + dados.itens[i].odd_desc + " - " + currentLang['lb_odd'] + " " + dados.itens[i].taxa.toLocaleString('pt-BR', { minimumFractionDigits: '2', maximumFractionDigits: '2' }) + "</span><br />";

        descricao += "<span class='fonte12'>" + "Data: " + d.toLocaleDateString("pt-BR", { day: '2-digit', month: '2-digit', year: '2-digit', hour: '2-digit', minute: '2-digit' }) + "</span><br />";

        var botao = "&nbsp;";

        if (dados.aposta.status == -2) {
          botao = "<button type='button' onclick=\"javascript: removerItem('" + dados.itens[i].camp_jog_id + "');\" style='width: 120px;'>Remover jogo</button>";
        } else {
          if (loginmodel.ID > 0) {
            if (loginmodel.NIVEL == 5) {
              if (dados.itens[i].sit != 3) {
                botao = "<button type='button' onclick=\"javascript: CancelarItem('" + dados.itens[i].apost_det_id + "');\" style='width: 120px;'>" + currentLang['bt_cancel_game'] + "</button>";
              } else {
                botao = "<button type='button' onclick=\"javascript: DesCancelarItem('" + dados.itens[i].apost_det_id + "');\" style='width: 120px;'>" + currentLang['bt_uncancel_game'] + "</button>";
              }
            }
          }
        }

        var placar = "";
        var toolTip = "";

        if ((dados.itens[i].sit == 1) || (dados.itens[i].sit == 2) || (dados.itens[i].sit == 7)) {
          var resultados = JSON.parse(dados.itens[i].resultados);

          if (resultados) {
            toolTip += "Resultados: ";
            if (resultados.Result) {
              if (resultados.Result.FirstHalf) {
                toolTip += "\n1º Tempo: " + resultados.Result.FirstHalf.Home + " x " + resultados.Result.FirstHalf.Away;

                if (!NumeroValido(dados.itens[i].placar_c_tempo1)) {
                  dados.itens[i].placar_c_tempo1 = resultados.Result.FirstHalf.Home;
                }
                if (!NumeroValido(dados.itens[i].placar_f_tempo1)) {
                  dados.itens[i].placar_f_tempo1 = resultados.Result.FirstHalf.Away;
                }
              }

              if (resultados.Result.SecondHalf) {
                toolTip += "\n2º Tempo: " + resultados.Result.SecondHalf.Home + " x " + resultados.Result.SecondHalf.Away;
              }

              if (resultados.Result.Q1 && resultados.Result.Q2) {
                toolTip += "\n1º Quarto: " + resultados.Result.Q1.Home + " x " + resultados.Result.Q1.Away + " - 2º Quarto: " + +resultados.Result.Q2.Home + " x " + resultados.Result.Q2.Away;
              }

              if (resultados.Result.Q3 && resultados.Result.Q4) {
                toolTip += "\n3º Quarto: " + resultados.Result.Q3.Home + " x " + resultados.Result.Q3.Away + " - 4º Quarto: " + +resultados.Result.Q4.Home + " x " + resultados.Result.Q4.Away;
              }

              if (resultados.Result.Final) {
                toolTip += "\nFinal: " + resultados.Result.Final.Home + " x " + resultados.Result.Final.Away;

                if (!NumeroValido(dados.itens[i].placar_c)) {
                  dados.itens[i].placar_c = resultados.Result.Final.Home;
                }
                if (!NumeroValido(dados.itens[i].placar_f)) {
                  dados.itens[i].placar_f = resultados.Result.Final.Away;
                }
              }

              if (resultados.Result.OverTime) {
                toolTip += "\nProrrogação: " + resultados.Result.OverTime.Home + " x " + resultados.Result.OverTime.Away;
              }
              if (resultados.Result.Penaltis) {
                toolTip += "\nPênaltis: " + resultados.Result.Penaltis.Home + " x " + resultados.Result.Penaltis.Away;
              }
            }

            if (resultados.Corners) {
              toolTip += "\n\nEscanteios: ";
              if (resultados.Corners.FirstHalf) {
                toolTip += "\n1º Tempo: " + resultados.Corners.FirstHalf.Home + " x " + resultados.Corners.FirstHalf.Away;
              }
              if (resultados.Corners.SecondHalf) {
                toolTip += "\n2º Tempo: " + resultados.Corners.SecondHalf.Home + " x " + resultados.Corners.SecondHalf.Away;
              }
              if (resultados.Corners.Final) {
                toolTip += "\nFinal: " + resultados.Corners.Final.Home + " x " + resultados.Corners.Final.Away;
              }
              if (resultados.Corners.OverTime) {
                toolTip += "\nProrrogação: " + resultados.Corners.OverTime.Home + " x " + resultados.Corners.OverTime.Away;
              }
            }

            if (resultados.YellowCards) {
              toolTip += "\n\nCartões amarelos: " + resultados.YellowCards.Home + " x " + resultados.YellowCards.Away;
            }

            if (resultados.RedCards) {
              toolTip += "\n\nCartões vermelhos: " + resultados.RedCards.Home + " x " + resultados.RedCards.Away;
            }

            if (resultados.PenaltisInMatch) {
              toolTip += "\n\nPênaltis na partida: " + resultados.PenaltisInMatch.Home + " x " + resultados.PenaltisInMatch.Away;
            }
          }

          if (NumeroValido(dados.itens[i].placar_c_tempo1) && NumeroValido(dados.itens[i].placar_f_tempo1)) {
            placar += "1º Tempo: " + dados.itens[i].placar_c_tempo1 + " x " + dados.itens[i].placar_f_tempo1;
          }

          if (NumeroValido(dados.itens[i].placar_c_tempo1) && NumeroValido(dados.itens[i].placar_f_tempo1) && NumeroValido(dados.itens[i].placar_c) && NumeroValido(dados.itens[i].placar_f)) {
            placar += "<br />2º Tempo: " + (dados.itens[i].placar_c - dados.itens[i].placar_c_tempo1) + " x " + (dados.itens[i].placar_f - dados.itens[i].placar_f_tempo1);
          }

          if (NumeroValido(dados.itens[i].placar_c) && NumeroValido(dados.itens[i].placar_f)) {
            if (dados.itens[i].esporte === 'Futebol')
              placar += "<br />90'': " + dados.itens[i].placar_c + " x " + dados.itens[i].placar_f;
            else
              placar += "<br />Final: " + dados.itens[i].placar_c + " x " + dados.itens[i].placar_f;
          }


        }//sit

        txt = txt.replace("{jogo}", descricao);
        txt = txt.replace("{botao}", botao);
        txt = txt.replace("{sit}", dados.itens[i].sit_desc);
        txt = txt.replace("{result}", placar);
        txt = txt.replace("{tip}", toolTip);

        registros += txt;
      }

      //vlTaxa = parseFloat(vlTaxa.toFixed(2));
      vlTaxa = Math.round(vlTaxa * 100) / 100;

      if (vlTaxa == 1) vlTaxa = 0;

      vlPremio = vlTaxa * dados.aposta.vl_aposta;

      //vlPremio = parseFloat(vlPremio.toFixed(2));
      vlPremio = Math.round(vlPremio * 100) / 100;

      if (dados.aposta.tx_banca > 0) {
        let vlLucro = vlPremio - dados.aposta.vl_aposta;

        let vlComissaoBanca = (vlLucro * dados.aposta.tx_banca) / 100;
        //vlComissaoBanca = parseFloat(vlComissaoBanca.toFixed(2));
        vlComissaoBanca = Math.round(vlComissaoBanca * 100) / 100;

        let vlLiq = vlPremio - vlComissaoBanca;

        vlPremio = vlLiq;
      }
    }

    else if (dados.itensBolao) {
      for (i = 0; i < dados.itensBolao.length; i++) {
        if (i % 2 == 0)
          txt = linha.replace("{css}", " class='tabelaLinhaImpar4'");
        else
          txt = linha.replace("{css}", "");

        let dtHrIni = JsonStrToDate(dados.itensBolao[i].dt_jogo);

        dtHrIni.setHours(dtHrIni.getHours() + config.Fuso);

        var descricao = "";

        if (dados.itensBolao[i].camp_nome)
          descricao += "<span class='fonte7'>" + dados.itensBolao[i].camp_nome + "</span><br />";

        descricao += "<span class='fonte12'>" + dados.itensBolao[i].casa_nome;

        if (dados.itensBolao[i].visit_nome)
          descricao += " x " + dados.itensBolao[i].visit_nome;
        descricao += "</span>";

        descricao += "<br />";

        let vencedorDesc = '';

        if ((dados.itensBolao[i].placar_c != undefined) && (dados.itensBolao[i].placar_f != undefined)) {
          vencedorDesc = currentLang['lb_exact_result'] + ' ' + dados.itensBolao[i].placar_c + ' x ' + dados.itensBolao[i].placar_f;
        } else {
          if (dados.itensBolao[i].resultado === '1') {
            vencedorDesc = currentLang['lb_match_winner'] + ' ' + currentLang['lb_home'];
          }
          else
            if (dados.itensBolao[i].resultado === 'X') {
              vencedorDesc = currentLang['lb_match_winner'] + ' ' + currentLang['lb_draw'];
            }
            else
              if (dados.itensBolao[i].resultado === '2') {
                vencedorDesc = currentLang['lb_match_winner'] + ' ' + currentLang['lb_away'];
              }
        }

        descricao += "<span class='fonte12'>" + vencedorDesc + "</span><br />";

        descricao += "<span class='fonte12'>" + "Data: " + dtHrIni.toLocaleDateString("pt-BR", { day: '2-digit', month: '2-digit', year: '2-digit', hour: '2-digit', minute: '2-digit' }) + "</span><br />";

        var placar = "";
        var toolTip = "";

        txt = txt.replace("{jogo}", descricao);
        txt = txt.replace("{botao}", "&nbsp;");
        txt = txt.replace("{sit}", dados.itensBolao[i].sit_desc);
        txt = txt.replace("{result}", placar);
        txt = txt.replace("{tip}", toolTip);

        registros += txt;
      }
    }

    resultado = resultado.replace("{0}", registros);

    divItens.append(resultado + "<br /><br />");


    ///////////////////

    resultado = "<table border='0' cellpadding='4' cellspacing='2' width='100%'>{0}</table><br />";
    linha = "<tr><td align='right'>{1}</td><td align='right'>{2}</td><td align='right'>{3}</td><td align='right'>{4}</td></tr>";

    registros = "";

    txt = linha;
    txt = txt.replace("{1}", currentLang['lb_code']);
    txt = txt.replace("{2}", dados.aposta.codigo);
    txt = txt.replace("{3}", "");
    txt = txt.replace("{4}", "");

    registros += txt;

    txt = linha;
    txt = txt.replace("{1}", currentLang['lb_customer'] + ": ");
    txt = txt.replace("{2}", dados.aposta.cliente);
    txt = txt.replace("{3}", currentLang['lb_user'] + ": ");
    txt = txt.replace("{4}", dados.aposta.login);

    registros += txt;

    txt = linha;
    txt = txt.replace("{1}", currentLang['lb_bet_value'] + ": ");
    txt = txt.replace("{2}", dados.aposta.vl_aposta.toLocaleString('pt-BR', { minimumFractionDigits: '2', maximumFractionDigits: '2' }));
    txt = txt.replace("{3}", currentLang['lb_n_games'] + ": ");
    //txt = txt.replace("{4}", dados.aposta.n_jogos);
    txt = txt.replace("{4}", (dados.itens ? dados.itens.length : dados.itensBolao.length));

    registros += txt;

    var d = JsonStrToDate(dados.aposta.dt_cad);

    d.setHours(d.getHours() + config.Fuso);

    txt = linha;
    txt = txt.replace("{1}", currentLang['lb_date_time']);
    txt = txt.replace("{2}", d.toLocaleDateString("pt-BR", { day: '2-digit', month: '2-digit', year: '2-digit', hour: '2-digit', minute: '2-digit' }));
    txt = txt.replace("{3}", currentLang['lb_prize_amount'] + ": ");

    config = PegaConfig();

    if (config.Vl_Max_Premio_Fut > 0) {
      if (vlPremio > config.Vl_Max_Premio_Fut) {
        if (config.Acao_Prem_Max === 1) {
          vlPremio = config.Vl_Max_Premio_Fut;
        }
      }
    }

    if (config.Multiplic_Max_Premio > 0) {
      var vlMultiplicado = dados.aposta.vl_aposta * config.Multiplic_Max_Premio;

      //vlMultiplicado = parseFloat(vlMultiplicado.toFixed(2));
      vlMultiplicado = Math.round(vlMultiplicado * 100) / 100;

      if (vlPremio > vlMultiplicado) {
        if (config.Acao_Prem_Max === 1) {
          vlPremio = vlMultiplicado;
        }
      }
    }

    if (vlPremio)
      txt = txt.replace("{4}", vlPremio.toLocaleString('pt-BR', { minimumFractionDigits: '2', maximumFractionDigits: '2' }));
    else
      txt = txt.replace("{4}", dados.aposta.vl_premio.toLocaleString('pt-BR', { minimumFractionDigits: '2', maximumFractionDigits: '2' }));

    registros += txt;

    txt = linha;
    txt = txt.replace("{1}", currentLang['lb_number_hits']);
    txt = txt.replace("{2}", (dados.aposta.qtd_acertos != null ? dados.aposta.qtd_acertos : ""));
    txt = txt.replace("{3}", currentLang['lb_status']);
    txt = txt.replace("{4}", dados.aposta.status_desc);

    registros += txt;

    var dtCanc = JsonStrToDate(dados.aposta.dt_canc);

    txt = linha;
    txt = txt.replace("{1}", currentLang['lb_canceled_by']);
    txt = txt.replace("{2}", (dados.aposta.us_canc_nome != null ? dados.aposta.us_canc_nome : "") + (dtCanc != null ? " - " + dtCanc.toLocaleDateString("pt-BR", { day: '2-digit', month: '2-digit', year: '2-digit', hour: '2-digit', minute: '2-digit' }) : ""));
    txt = txt.replace("{3}", currentLang['lb_paid_value'] + ": ");
    txt = txt.replace("{4}", (dados.aposta.vl_pago != null ? dados.aposta.vl_pago.toLocaleString('pt-BR', { minimumFractionDigits: '2', maximumFractionDigits: '2' }) : ""));

    registros += txt;

    if (dados.aposta.solic_cancel == 1) {
      var dtSolicCanc = JsonStrToDate(dados.aposta.solic_cancel_data);

      txt = linha;
      txt = txt.replace("{1}", currentLang['lb_request_cancel_date']);
      txt = txt.replace("{2}", (dtSolicCanc != null ? dtSolicCanc.toLocaleDateString("pt-BR", { day: '2-digit', month: '2-digit', year: '2-digit', hour: '2-digit', minute: '2-digit' }) : ""));
      txt = txt.replace("{3}", "&nbsp;");
      txt = txt.replace("{4}", "&nbsp;");

      registros += txt;

    }

    var IP = "";

    if (loginmodel.NIVEL == 5) {
      if ((dados.aposta.versao != null) && (dados.aposta.versao != ""))
        IP = "* " + dados.aposta.ip;
      else
        IP = dados.aposta.ip;
    }

    txt = "<tr><td align='right'>{1}</td><td align='right' colspan='2'>{2}</td><td align='right'>{4}</td></tr>";
    txt = txt.replace("{1}", IP);

    var podeIr = false;

    var btPreBilhete = "";
    var btReimp = "";

    var btCashout = "";

    if (dados.cashout?.value > 0) {
      btCashout = "<button type='button' onclick=\"javascript: SolicCashout('" + dados.aposta.apost_id + "');\" style='width: 120px;' >Encerrar por " + dados.cashout.value.toLocaleString('pt-BR', { minimumFractionDigits: '2', maximumFractionDigits: '2' }) + "</button>";
    }

    if (loginmodel.ID > 0) {
      if (dados.aposta.status == -2) {
        if (dados.itens)
          btPreBilhete = "<button type='button' onclick=\"javascript: ConfirmarPreBilhete();\" style='width: 160px;' >" + currentLang['bt_confirm_pre_ticket'] + "</button>";
        if (dados.itensBolao)
          btPreBilhete = "<button type='button' onclick=\"javascript: ConfirmarPreBilheteBolao();\" style='width: 160px;' >" + currentLang['bt_confirm_pre_ticket'] + "</button>";
      }
      else {
        if (loginmodel.NIVEL == 5) {
          //if (dados.aposta.status != 2) podeIr = true;
          if ((dados.aposta.status == 0) || (dados.aposta.status == 3)) podeIr = true;
        } else
          if (loginmodel.NIVEL == 1) {
            if ((dados.aposta.status == 0) || (dados.aposta.status == 3))
              if (config.Permite_Reimp) podeIr = true;
          } else {
            if ((dados.aposta.status == 0) || (dados.aposta.status == 3))
              if (config.Permite_Reimp_Camb) podeIr = true;
          }
        if (podeIr == true) btReimp = "<button type='button' onclick=\"javascript: Reimprimir('" + dados.aposta.codigo + "');\" style='width: 120px;' >" + currentLang['bt_reprit'] + "</button>";
      }
    }

    var btSolicCancel = "";
    podeIr = false;
    if (dados.aposta.solic_cancel != 1)
      if ((dados.aposta.status == 0) || (dados.aposta.status == 3)) {
        if (config.Permite_Solic_Cancel) {
          if (loginmodel.NIVEL >= 0) {
            if ((loginmodel.NIVEL == 1) || (loginmodel.NIVEL == 3) || (loginmodel.NIVEL == 5) || (dados.aposta.us_cad == loginmodel.ID)) {

              let dtAgora = new Date();
              let dtBilhete = JsonStrToDate(dados.aposta.dt_cad);
              let tempoLimite = config.Temp_Limite_Cancel_Fut;

              dtBilhete.setTime(dtBilhete.getTime() + tempoLimite * 60 * 1000);

              let timeZoneOffSet = dtBilhete.getTimezoneOffset() / 60;
              if (timeZoneOffSet === 2) {//bug do chrome que muda o timeZoneOffSet, mesmo sem o windows está programado para alterar automaticamente
                dtBilhete.setHours(dtBilhete.getHours() + 1);
              }

              dtAgora = dtAgora.getTime();
              dtBilhete = dtBilhete.getTime();

              if (dtAgora < dtBilhete)
                podeIr = true;
            }
          }
        }
      }
    if (podeIr == true) btSolicCancel = "<button type='button' onclick=\"javascript: SolicCancel('" + dados.aposta.apost_id + "');\" style='width: 120px;' >" + currentLang['bt_solic_cancel'] + "</button>";

    var btCancelar = "";
    if (loginmodel.ID > 0) {
      if (dados.aposta.status != -2) {
        podeIr = false;
        if (loginmodel.NIVEL == 5) {
          if (dados.aposta.status != 2) podeIr = true;
        } else if (loginmodel.NIVEL == 1) {
          if ((dados.aposta.status == 0))
            if (config.Permite_Superv_Cancel_Jogo) podeIr = true;
        }
        else if (loginmodel.NIVEL == 4) {
          if ((dados.aposta.status == 0))
            podeIr = true;
        }
        if (podeIr == true) btCancelar = "<button type='button' onclick=\"javascript: Cancelar('" + dados.aposta.apost_id + "');\" style='width: 120px;'>" + currentLang['bt_cancel'] + "</button>";


        if (loginmodel.NIVEL == 5) {
          if (dados.aposta.status == 2)
            if ((document.domain.indexOf("betgol777") < 0) && (document.domain.indexOf("futebolbets.com") < 0)
              && (document.domain.indexOf("showdabola.com.br") < 0) && (document.domain.indexOf("reidabola.com.br") < 0))
              btCancelar = "<button type='button' onclick=\"javascript: Descancelar('" + dados.aposta.apost_id + "');\" style='width: 120px;'>" + currentLang['bt_uncancel'] + "</button>";
        }
      }
    }

    var btPagar = "";
    if (loginmodel.ID > 0) {
      if (dados.aposta.status == 4) {
        if (loginmodel.NIVEL == 5) {
          let vlPago = (dados.aposta.vl_pago != null ? dados.aposta.vl_pago : 0);
          let vlAPagar = dados.aposta.vl_premio - vlPago;

          btPagar = "Valor a pagar<input id='EditVlAPagar' type='text' class='campValor' value='" + vlAPagar + "' />" + "<button type='button' onclick=\"javascript: Pagar('" + dados.aposta.apost_id + "');\" style='width: 120px;'>" + currentLang['bt_pay'] + "</button>";
        } else if (loginmodel.NIVEL == 1) {
          if (document.domain.indexOf("aliancaesportes") >= 0) {
            let vlPago = (dados.aposta.vl_pago != null ? dados.aposta.vl_pago : 0);
            let vlAPagar = dados.aposta.vl_premio - vlPago;

            btPagar = "Valor a pagar<input id='EditVlAPagar' type='text' class='campValor' value='" + vlAPagar + "' />" + "<button type='button' onclick=\"javascript: Pagar('" + dados.aposta.apost_id + "');\" style='width: 120px;'>" + currentLang['bt_pay'] + "</button>";
          }
        }
      }
    }

    txt = txt.replace("{2}", btCashout + btPagar + btPreBilhete + btReimp + btSolicCancel + btCancelar);

    txt = txt.replace("{4}", "&nbsp;");

    registros += txt;


    resultado = resultado.replace("{0}", registros);

    divRodape.append(resultado);

    $(".modalWindow22").show();

    /*$(".modalWindow2, .modalBack").fadeIn();
    $("#btSair").click(function () { $(".modalWindow2, .modalBack").fadeOut(); });*/

  }
}

function ConfirmarPreBilheteBolao() {
  VerificaLogin();
  if (loginmodel.ID) {
    var codTmp = $("#txtCodigo").val();

    if (codTmp.length > 0) {
      var perguntaTxt = currentLang['ask_confirm_confirm_pre_bet'];

      if (confirm(perguntaTxt)) {
        var DadosPreBilheteModel = {
          ID: 0,
          Codigo: codTmp,
          Origem: 5
        };

        var dadosStr = JSON.stringify(DadosPreBilheteModel);

        avisoAguarde();
        VerificaLogin();

        $.ajax({
          type: "POST",
          url: urlApi + "/api/bolao/ConfirmaPreBilhete/",
          headers: { 'AUTHTOKEN': loginmodel.AUTHTOKEN, 'ID': loginmodel.ID, 'IP': loginmodel.IP, 'RTOKEN': loginmodel.RTOKEN, 'DTOKEN': (loginmodel.DTOKEN ? loginmodel.DTOKEN : "") },
          contentType: "application/json; charset=utf-8",
          dataType: "json",
          processdata: true,
          data: dadosStr,
          statusCode: {
            200: function (xhr) {
              //SaldoUser();
              retirarAguarde();
              window.open("./jogos/impbol.aspx?cod=" + xhr.Codigo, "popup_window", "height = 450 , width = 350, resizable = no, scrollbars = yes, location = no");
              Pesquisar();
              //location.reload();
            }
          },
          error: function (xhr) {
            retirarAguarde();
            tratarErro("Salvar bilhete:", xhr);
          }
        });

      }//confirm

    }
    else
      alert(currentLang['alert_inform_pre_bet_code']);
  }
  else
    alert(currentLang['alert_need_login']);
}


function Reimprimir(cod) {
  if (confirm(currentLang['ask_confirm_re_print'])) {
    window.open("./jogos/imp.aspx?cod=" + cod, "popup_window", "height = 650 , width = 850, resizable = no, scrollbars = yes, location = no");
  }
}

function ReimprimirBolao(cod) {
  if (confirm(currentLang['ask_confirm_re_print'])) {
    window.open("./jogos/impbol.aspx?cod=" + cod, "popup_window", "height = 450 , width = 350, resizable = no, scrollbars = yes, location = no");
  }
}

function CancelarBolao(apostId) {
  if (confirm(currentLang['ask_confirm_cancel_ticket'])) {
    avisoAguarde();

    VerificaLogin();

    $.ajax({
      url: urlApi + "/api/CaixaBolao/Cancelar/" + apostId,
      type: "GET",
      contentType: "application/json; charset=utf-8",
      headers: { 'AUTHTOKEN': loginmodel.AUTHTOKEN, 'ID': loginmodel.ID, 'IP': loginmodel.IP, 'RTOKEN': loginmodel.RTOKEN },
      dataType: "json",
      processdata: true,
      statusCode: {
        200: function (xhr) {
          PesquisarBolao();
          $(".modalWindow2, .modalBack").fadeOut();
        }
      },
      error: function (xhr) {
        retirarAguarde();
        tratarErro("Caixa:", xhr);
        return null;
      }
    });
  }
}

function SolicCancel(apostId) {
  if (confirm(currentLang['ask_confirm_request_cancel'])) {

    VerificaLogin();

    $.ajax({
      url: urlApi + "/api/Caixa/SolicCancel/" + apostId,
      type: "GET",
      contentType: "application/json; charset=utf-8",
      headers: { 'AUTHTOKEN': loginmodel.AUTHTOKEN, 'ID': loginmodel.ID, 'IP': loginmodel.IP, 'RTOKEN': loginmodel.RTOKEN },
      dataType: "json",
      processdata: true,
      statusCode: {
        200: function (xhr) {
          Pesquisar();
          $(".modalWindow2, .modalBack").fadeOut();
        }
      },
      error: function (xhr) {
        retirarAguarde();
        tratarErro("Caixa:", xhr);
        return null;
      }
    });
  }
}

function SolicCashout(apostId) {
  if (confirm('Tem certeza que deseja solicitar o encerramento da aposta?')) {

    VerificaLogin();

    $.ajax({
      url: urlApi + "/api/Caixa/SolicCashout/" + apostId,
      type: "GET",
      contentType: "application/json; charset=utf-8",
      headers: { 'AUTHTOKEN': loginmodel.AUTHTOKEN, 'ID': loginmodel.ID, 'IP': loginmodel.IP, 'RTOKEN': loginmodel.RTOKEN },
      dataType: "json",
      processdata: true,
      statusCode: {
        200: function (xhr) {
          Pesquisar();
          $(".modalWindow2, .modalBack").fadeOut();
        }
      },
      error: function (xhr) {
        retirarAguarde();
        tratarErro("Caixa:", xhr);
        return null;
      }
    });
  }
}

function Cancelar(apostId) {
  if (confirm(currentLang['ask_confirm_cancel_ticket'])) {
    avisoAguarde();

    VerificaLogin();

    $.ajax({
      url: urlApi + "/api/Caixa/Cancelar/" + apostId,
      type: "GET",
      contentType: "application/json; charset=utf-8",
      headers: { 'AUTHTOKEN': loginmodel.AUTHTOKEN, 'ID': loginmodel.ID, 'IP': loginmodel.IP, 'RTOKEN': loginmodel.RTOKEN },
      dataType: "json",
      processdata: true,
      statusCode: {
        200: function (xhr) {
          Pesquisar();
          $(".modalWindow2, .modalBack").fadeOut();
        }
      },
      error: function (xhr) {
        retirarAguarde();
        tratarErro("Caixa:", xhr);
        return null;
      }
    });
  }
}

function Descancelar(apostId) {
  if (confirm(currentLang['ask_confirm_un_cancel_ticket'])) {
    avisoAguarde();

    VerificaLogin();

    $.ajax({
      url: urlApi + "/api/Caixa/Descancelar/" + apostId,
      type: "GET",
      contentType: "application/json; charset=utf-8",
      headers: { 'AUTHTOKEN': loginmodel.AUTHTOKEN, 'ID': loginmodel.ID, 'IP': loginmodel.IP, 'RTOKEN': loginmodel.RTOKEN },
      dataType: "json",
      processdata: true,
      statusCode: {
        200: function (xhr) {
          Pesquisar();
          $(".modalWindow2, .modalBack").fadeOut();
        }
      },
      error: function (xhr) {
        retirarAguarde();
        tratarErro("Caixa:", xhr);
        return null;
      }
    });
  }
}

function Pagar(apostId) {
  if (confirm(currentLang['ask_confirm_pay_ticket'])) {

    avisoAguarde();
    VerificaLogin();

    var vlAposta = 0;
    try {
      vlAposta = parseFloat($("#EditVlAPagar").val().replace(",", "."));
    }
    catch (ex) { }


    var DadosBilhete = {
      ID: apostId,
      VlAposta: vlAposta
    };

    var dadosStr = JSON.stringify(DadosBilhete);

    $.ajax({
      type: "POST",
      url: urlApi + "/api/Caixa/PagarBilhete/",
      headers: { 'AUTHTOKEN': loginmodel.AUTHTOKEN, 'ID': loginmodel.ID, 'IP': loginmodel.IP, 'RTOKEN': loginmodel.RTOKEN },
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      processdata: true,
      data: dadosStr,
      statusCode: {
        200: function (xhr) {
          Pesquisar();
          $(".modalWindow2, .modalBack").fadeOut();
        }
      },
      error: function (xhr) {
        retirarAguarde();
        tratarErro("Caixa:", xhr);
        return null;
      }
    });
  }
}

function CancelarItem(apostDetId) {
  if (confirm(currentLang['ask_confirm_cancel_item'])) {
    avisoAguarde();

    VerificaLogin();

    $.ajax({
      url: urlApi + "/api/Caixa/CancelarItem/" + apostDetId,
      type: "GET",
      contentType: "application/json; charset=utf-8",
      headers: { 'AUTHTOKEN': loginmodel.AUTHTOKEN, 'ID': loginmodel.ID, 'IP': loginmodel.IP, 'RTOKEN': loginmodel.RTOKEN },
      dataType: "json",
      processdata: true,
      statusCode: {
        200: function (xhr) {
          Pesquisar();
          $(".modalWindow2, .modalBack").fadeOut();
        }
      },
      error: function (xhr) {
        retirarAguarde();
        tratarErro("Caixa:", xhr);
        return null;
      }
    });
  }
}

function DesCancelarItem(apostDetId) {
  if (confirm(currentLang['ask_confirm_un_cancel_item'])) {
    avisoAguarde();

    VerificaLogin();

    $.ajax({
      url: urlApi + "/api/Caixa/DesCancelarItem/" + apostDetId,
      type: "GET",
      contentType: "application/json; charset=utf-8",
      headers: { 'AUTHTOKEN': loginmodel.AUTHTOKEN, 'ID': loginmodel.ID, 'IP': loginmodel.IP, 'RTOKEN': loginmodel.RTOKEN },
      dataType: "json",
      processdata: true,
      statusCode: {
        200: function (xhr) {
          Pesquisar();
          $(".modalWindow2, .modalBack").fadeOut();
        }
      },
      error: function (xhr) {
        retirarAguarde();
        tratarErro("Caixa:", xhr);
        return null;
      }
    });
  }
}

function removerItem(campJogId) {
  if (lastData && lastData.itens && lastData.itens.length > 0) {
    let idx = -1;

    for (let i = 0; i < lastData.itens.length; i++) {
      if (lastData.itens[i].camp_jog_id == campJogId) {
        idx = i;
        break;
      }
    }

    if (idx >= 0) {
      lastData.itens.splice(idx, 1);
    }

    divItens.html("");
    divRodape.html("");
    MontarDetalhes(lastData);

  }
}