function sysConfirmacao(titulo, mensagem, callback) {
  BootstrapDialog.confirm({
    title: titulo,
    message: mensagem,
    type: BootstrapDialog.TYPE_PRIMARY,
    closable: true,
    draggable: true,
    btnCancelLabel: "Não",
    btnOKLabel: "Sim",
    btnOKClass: "btn-primary",
    callback: callback,
  });
}

function sysMsg(titulo, mensagem) {
  BootstrapDialog.show({
    title: titulo,
    message: mensagem,
    buttons: [
      {
        label: "OK",
        action: function (dialog) {
          dialog.close();
        },
      },
    ],
  });
}

function sysSucesso(titulo, mensagem) {
  BootstrapDialog.show({
    title: titulo,
    message: mensagem,
    type: BootstrapDialog.TYPE_SUCCESS,
    buttons: [
      {
        label: "OK",
        action: function (dialog) {
          dialog.close();
        },
      },
    ],
  });
}

function sysAlerta(titulo, mensagem) {
  BootstrapDialog.show({
    title: titulo,
    message: mensagem,
    type: BootstrapDialog.TYPE_WARNING,
    buttons: [
      {
        label: "OK",
        action: function (dialog) {
          dialog.close();
        },
      },
    ],
  });
}

function sysInformacao(titulo, mensagem) {
  BootstrapDialog.show({
    title: titulo,
    message: mensagem,
    buttons: [
      {
        label: "OK",
        action: function (dialog) {
          dialog.close();
        },
      },
    ],
  });
}

function sysErro(titulo, mensagem) {
  BootstrapDialog.show({
    title: titulo,
    message: mensagem,
    type: BootstrapDialog.TYPE_DANGER,
    buttons: [
      {
        label: "OK",
        action: function (dialog) {
          dialog.close();
        },
      },
    ],
  });
}

function sysMsgCallback(titulo, mensagem, type, callback) {
  BootstrapDialog.show({
    title: titulo,
    message: mensagem,
    type: type,
    buttons: [
      {
        label: "OK",
        action: function (dialog) {
          dialog.close();
          callback();
        },
      },
    ],
  });
}

var URLSYS = "https://" + window.location.hostname + "/";

function _atualizarSelect(
  eDom,
  vlrSelecao,
  url,
  campo_id,
  campo_descricao,
  padrao
) {
  $.ajax({
    url: url,
    dataType: "json",
    type: "POST",
    success: function (retorno) {
      if (retorno.dados) retorno = retorno.dados;

      if (retorno.length > 0) {
        var options = [];
        options.push('<option value="0">' + padrao + "</option>");
        $.map(retorno, function (val, i) {
          var selected = "";
          if (vlrSelecao == "" && i == 0) {
            selected = 'selected="selected"';
          } else {
            if (val[campo_id] == vlrSelecao || retorno.length == 1)
              selected = 'selected="selected"';
          }
          options.push(
            "<option " +
              selected +
              ' value="' +
              val[campo_id] +
              '">' +
              val[campo_descricao] +
              "</option>"
          );
        });

        $("#" + eDom).html(options.join(""));

        //Quando estiver utilizado o plugin chosen
        if (typeof $("#" + eDom).data("chosen") != "undefined")
          $("#" + eDom).trigger("chosen:updated");
      }
    },
    error: function (jqXHR, textStatus, errorThrown) {
      console.log(jqXHR, textStatus, errorThrown);
    },
  });
}

var urlShare = "";

function _localizarMusicaHome(limit) {
  var obj = {};
  obj.tipo_busca = $("#campo_tipo_busca_home").val();
  obj.string_busca = $("#campo_busca_home").val();
  obj.limit = "0,50";
  if (limit !== "") obj.limit = limit + ",50";

  $("#div-itens-localizados-home").html("Aguarde! Localizando...");

  $.ajax({
    url: URLSYS + "index/busca-home",
    data: obj,
    dataType: "json",
    type: "POST",
    success: function (retorno) {
      if (retorno && retorno[1] > 0) {
        var arrItens = [];
        if (obj.tipo_busca == "musica") {
          arrItens = montarListagemMusica(retorno, limit);
        } else if (obj.tipo_busca == "album") {
          arrItens = montarListagemAlbum(retorno);
        } else if (obj.tipo_busca == "autor") {
          arrItens = montarListagemAutor(retorno);
        } else if (obj.tipo_busca == "tema") {
          arrItens = montarListagemTema(retorno, limit);
        }

        if (retorno[1] > 50 && obj.tipo_busca == "musica") {
          if (limit == "") limit = 0;
          var newLimit = parseInt(limit) + 10;
          arrItens.push(
            "<div class='row' id='r-expandir-lista-" +
              newLimit +
              "' style='padding: 15px;'>" +
              "<div class='col-md-12'>" +
              "<a href='#r-expandir-lista-" +
              newLimit +
              "' onclick='_localizarMusicaHome(" +
              newLimit +
              ")' class='btn btn-info form-control'><i class='fa fa-list'></i> Expandir Lista</a>" +
              "</div>" +
              "</div><br/><br/>"
          );
        }

        if (limit == "" || limit == 0) {
          $("#div-itens-localizados-home").html(arrItens.join(""));
        } else {
          $("#r-expandir-lista-" + limit).html(arrItens.join(""));
          setTimeout(function () {
            $("#r-expandir-lista-" + limit).focus();
          }, 500);
        }
      } else {
        if (limit == "")
          $("#div-itens-localizados-home").html(
            '<div class="row"><div class="col-md-12"><p style="padding-left: 30px"><b>Fim da lista, pois não foi encontrado registros.</b></p></div></div>'
          );
        else
          $("#r-expandir-lista-" + limit).html(
            '<div class="row"><div class="col-md-12"><p style="padding-left: 30px"><b>Fim da lista, pois não foi encontrado registros.</b></p></div></div>'
          );
      }
    },
    error: function (jqXHR, textStatus, errorThrown) {
      console.log(jqXHR, textStatus, errorThrown);
    },
  });
}

function _sharedBusca(url) {
  $("#inputCopy").val(url);
  $("#inputCopy").select();
  setTimeout(function () {
    document.execCommand("copy");
    sysSucesso("Sucesso!", "Link copiado.");
  }, 300);
}

function montarListagemMusica(dados, limit) {
  var arrItens = [];

  //    urlShare = URLSYS+"index/shared/tipo_busca/"+obj.tipo_busca+"/string_busca/"+str_replace(" ","_",obj.string_busca)+"/l/"+((limit === '')?0:limit)+'#busca';
  urlShare = dados[2];

  if (limit === "") {
    arrItens.push(
      '<div class="col-md-12"><div class="col-md-6"><div class="col-md-12" style="font-size: 12px; color: #333">' +
        "A busca localizou <b>" +
        dados[1] +
        " registro(s)</b>.<br/>" +
        "Serão listados os 50 primeiros.<br/>" +
        "Utilize a opção <b>Expandir Lista</b> para visualizar os demais.</div><br/>&nbsp;</div>" +
        '<div class="col-md-6"><a href="javascript:_sharedBusca(\'' +
        urlShare +
        '\')" class="btn btn-info form-control"><i class="fa fa-share"></i> Clique aqui para compartilhar</a></div></div><br/>'
    );
  }
  arrItens.push('<div class="row">');
  var contCol = 0;
  $.map(dados[0], function (val, i) {
    var btnPlay =
      '<div class="btn btn-default" style="color: #ccc; width: 40px;"><i class="fa fa-play"></i></div>';
    var btnDownload = "";

    var albuns = "";
    var imgPrincipal = "";
    if (val["album"].length > 0) {
      albuns += "<b>Album:</b><br/>";
      var menorIdCifra = 99999999999;
      $.map(val["album"], function (vAl, aI) {
        if (vAl["codigo_audio"] < menorIdCifra) {
          menorIdCifra = vAl["codigo_audio"];
          imgPrincipal = vAl["img"];
          if (vAl["audio"] != "") {
            btnPlay =
              '<div id="iconBtnPlay' +
              vAl["codigo_audio"] +
              '" class="btn btn-default" style="width: 40px;" onclick="_playAudio(\'' +
              vAl["audio"] +
              "'," +
              vAl["codigo_audio"] +
              ')" title="Ouvir Música"><i class="fa fa-play"></i></div>';
            if (vAl["permitir_download"] == 1)
              btnDownload =
                '<a class="btn btn-default" style="width: 40px;" target="_blank" href="' +
                vAl["audio"] +
                '" title="Disponível para Download"><i class="fa fa-download"></i></a>';
          }
        }
        albuns +=
          '<div><a href="' +
          URLSYS +
          "cifra/album/id/" +
          vAl["codigo_album"] +
          "/nome/" +
          vAl["nome_album"].toLowerCase() +
          '" target="_blank" style="color: #000">' +
          vAl["nome_album"] +
          "</a></div>";
      });
    }

    var autores = "";
    if (val["autor"].length > 0) {
      autores += "<b>Autor:</b><br/>";
      $.map(val["autor"], function (vAl, aI) {
        autores += "<div>" + vAl["nome"] + "</div>";
      });
    }

    //Controle de nova linha
    if (contCol === 2) {
      contCol = 0;
      arrItens.push('</div><div class="row">');
    }

    var btnLink =
      '<a class="btn btn-default" style="width: 40px;" target="_blank" href="' +
      URLSYS +
      "cifra/musica/id/" +
      val["musica_id"] +
      "/nome/" +
      val["nome"].toLowerCase() +
      '" title="Acessar informações completas do registro"><i class="fa fa-info"></i></a>';

    var item =
      '<div class="col-md-6" style="font-size: 11px">' +
      '<div class="panel panel-default">' +
      '<div class="panel-body">' +
      '<div class="row">' +
      '<div class="col-md-4 text-center">' +
      '<img src="' +
      imgPrincipal +
      '" class="img-rounded img-thumbnail" style="width: 98% !important"/>' +
      "</div>" +
      '<div class="col-md-7">' +
      '<div class="col-md-12" style="font-size: 14px"><b><a style="color: #000" target="_blank" href="' +
      URLSYS +
      "cifra/musica/id/" +
      val["musica_id"] +
      "/nome/" +
      val["nome"].toLowerCase() +
      '">' +
      val["nome"] +
      "</a></b></div>" +
      '<div class="col-md-12"><br/>' +
      albuns +
      "<br/>" +
      autores +
      "<br/>" +
      "</div>" +
      "</div>" +
      '<div class="col-md-1">' +
      //btnPlay +
      btnLink +
      btnDownload +
      "</div>" +
      "</div>" +
      "</div>" +
      "</div>" +
      "</div>";
    arrItens.push(item);

    contCol++;
  });

  arrItens.push("</div>");
  return arrItens;
}
//function montarListagemMusica(dados,limit)
//{
//    var arrItens = [];
//
////    urlShare = URLSYS+"index/shared/tipo_busca/"+obj.tipo_busca+"/string_busca/"+str_replace(" ","_",obj.string_busca)+"/l/"+((limit === '')?0:limit)+'#busca';
//    urlShare = dados[2];
//
//    if(limit == "")
//        arrItens.push('<div class="col-md-12"><div class="col-md-6"><div class="col-md-12" style="font-size: 12px; color: #333">'+
//            'A busca localizou <b>'+dados[1]+' registro(s)</b>.<br/>'+
//            'Serão listados os 10 primeiros.<br/>'+
//            'Utilize a opção <b>Expandir Lista</b> para visualizar os demais.</div><br/>&nbsp;</div>'+
//
//            '<div class="col-md-6"><a href="javascript:_sharedBusca(\''+urlShare+'\')" class="btn btn-info form-control"><i class="fa fa-share"></i> Clique aqui para compartilhar</a></div></div><br/>');
//
//    $.map(dados[0], function(val,i){
//
//        var estilo = "Não informado";
//        if(val['estilo'] != null)
//            estilo = val['estilo'].substr(0,40);
//
//        var btnPlay = '<div class="btn btn-default" style="color: #ccc"><i class="fa fa-play"></i></div>';
//        if(val['audio'] != "")
//            btnPlay = '<div id="iconBtnPlay'+val['musica_cifra_id']+'" class="btn btn-default" onclick="_playAudio(\''+val['audio']+'\','+val['musica_cifra_id']+')" title="Ouvir Música"><i class="fa fa-play"></i></div>';
//
//
//        var musica = '';
//        if(val['musica'] != null)
//            musica = val['musica'].substr(0,35);
//
//        var album = '';
//        if(val['album'] != null)
//            album = val['album'].substr(0,35);
//
//        var autor = '';
//        if(val['autor'] != null)
//            autor = val['autor'].substr(0,35);
//
//        var item = '<div class="col-md-6">'+
//                        '<div class="panel panel-default">'+
//                            '<div class="panel-body">'+
//                                '<div class="col-md-3 text-center">'+
//                                    '<img class="img-rounded img-thumbnail" src="'+val['img_album']+'" style="width: 90px !important"/>'+
//                                '</div>'+
//                                '<div class="col-md-8">'+
//                                    '<p style="color: #000; font-size: 13px"><b>'+musica+'</b></p>'+
//                                    '<p style="font-size: 11px; color: #333"><b>Album:</b> '+album+'</p>'+
//                                    '<p style="font-size: 11px; color: #333"><b>Autor:</b> '+autor+'</p>'+
//                                    '<p style="font-size: 11px; color: #333"><b>Estilo:</b> '+estilo+'</p>'+
//                                '</div>'+
//                                '<div class="col-md-1">'+
//                                    '<a class="btn btn-default" href="'+URLSYS+'cifra/musica/id/'+val['musica_id']+'/nome/'+musica.toLowerCase()+'" title="Acessar informações completas do registro"><i class="fa fa-search"></i></a>'+
////                                                '<div class="btn btn-default" onclick="_visualizarVersoesCifra('+val['musica_id']+')" title="Visualizar Cifra"><i class="fa fa-music"></i></div>'+
//                                    btnPlay+
//                                '</div>'+
//                            '</div>'+
//                        '</div>'+
//                    '</div>';
//        arrItens.push(item);
//    });
//
//    return arrItens;
//}

function montarListagemAlbum(dados) {
  var arrItens = [];

  urlShare = dados[2];

  arrItens.push(
    '<div class="col-md-12"><div class="col-md-6"><div class="col-md-12" style="font-size: 12px; color: #333">' +
      "A busca localizou <b>" +
      dados[1] +
      " registro(s)</b>.<br/>" +
      "</div></div>" +
      '<div class="col-md-6"><a href="javascript:_sharedBusca(\'' +
      urlShare +
      '\')" class="btn btn-info form-control"><i class="fa fa-share"></i> Clique aqui para compartilhar</a></div></div><br/>'
  );

  arrItens.push('<br/><br/><div class="row">');
  $.map(dados[0], function (val, i) {
    var item =
      '<div class="col-md-6">' +
      '<div class="panel panel-default">' +
      '<div class="panel-body">' +
      '<div class="col-md-3 text-center">' +
      '<img class="img-rounded img-thumbnail" src="' +
      val["img_album"] +
      '" style="width: 90px !important"/>' +
      "</div>" +
      '<div class="col-md-8" style="font-size: 12px"><b>Album</b><br/>' +
      val["nome"] +
      "<br/><br/>" +
      '<a class="btn btn-default" target="_blank" href="' +
      URLSYS +
      "cifra/album/id/" +
      val["album_id"] +
      "/nome/" +
      val["nome"].toLowerCase() +
      '"><i class="fa fa-list"></i> Acessar Album</a>' +
      "</div>" +
      "</div>" +
      "</div>" +
      "</div>";
    arrItens.push(item);
  });
  arrItens.push("</div>");

  return arrItens;
}

function montarListagemAutor(dados) {
  var arrItens = [];

  urlShare = dados[2];

  arrItens.push(
    '<div class="col-md-12"><div class="col-md-6"><div class="col-md-12" style="font-size: 12px; color: #333">' +
      "A busca localizou <b>" +
      dados[1] +
      " registro(s)</b>.<br/>" +
      "</div></div>" +
      '<div class="col-md-6"><a href="javascript:_sharedBusca(\'' +
      urlShare +
      '\')" class="btn btn-info form-control"><i class="fa fa-share"></i> Clique aqui para compartilhar</a></div></div><br/>'
  );

  arrItens.push('<br/><br/><div class="row">');
  $.map(dados[0], function (val, i) {
    var item =
      '<div class="col-md-6">' +
      '<div class="panel panel-default">' +
      '<div class="panel-body">' +
      '<div class="col-md-3 text-center">' +
      '<img class="img-rounded img-thumbnail" src="' +
      val["img_autor"] +
      '" style="width: 90px !important"/>' +
      "</div>" +
      '<div class="col-md-8" style="font-size: 12px"><b>Autor</b><br/>' +
      val["nome"] +
      "<br/><br/>" +
      '<a class="btn btn-default" target="_blank" href="' +
      URLSYS +
      "cifra/autor/id/" +
      val["pessoa_id"] +
      "/nome/" +
      val["nome"].toLowerCase() +
      '"><i class="fa fa-list"></i> Acessar Autor</a>' +
      "</div>" +
      "</div>" +
      "</div>" +
      "</div>";
    arrItens.push(item);
  });
  arrItens.push("</div>");

  return arrItens;
}

function montarListagemTema(dados, limit) {
  var arrItens = [];

  //    urlShare = URLSYS+"index/shared/tipo_busca/"+obj.tipo_busca+"/string_busca/"+str_replace(" ","_",obj.string_busca)+"/l/"+((limit === '')?0:limit)+'#busca';
  urlShare = dados[2];

  if (limit === "") {
    arrItens.push(
      '<div class="col-md-12"><div class="col-md-6"><div class="col-md-12" style="font-size: 12px; color: #333">' +
        "A busca localizou <b>" +
        dados[1] +
        " registro(s)</b>.<br/>" +
        "Serão listados os 50 primeiros.<br/>" +
        "Utilize a opção <b>Expandir Lista</b> para visualizar os demais.</div><br/>&nbsp;</div>" +
        '<div class="col-md-6"><a href="javascript:_sharedBusca(\'' +
        urlShare +
        '\')" class="btn btn-info form-control"><i class="fa fa-share"></i> Clique aqui para compartilhar</a></div></div><br/>'
    );
  }
  arrItens.push('<div class="row">');
  var contCol = 0;
  $.map(dados[0], function (val, i) {
    var btnPlay =
      '<div class="btn btn-default" style="color: #ccc; width: 40px;"><i class="fa fa-play"></i></div>';
    var btnDownload = "";

    var albuns = "";
    var imgPrincipal = "";
    if (val["album"].length > 0) {
      albuns += "<b>Album:</b><br/>";
      var menorIdCifra = 99999999999;
      $.map(val["album"], function (vAl, aI) {
        if (vAl["codigo_audio"] < menorIdCifra) {
          menorIdCifra = vAl["codigo_audio"];
          imgPrincipal = vAl["img"];
          if (vAl["audio"] != "") {
            btnPlay =
              '<div id="iconBtnPlay' +
              vAl["codigo_audio"] +
              '" class="btn btn-default" style="width: 40px;" onclick="_playAudio(\'' +
              vAl["audio"] +
              "'," +
              vAl["codigo_audio"] +
              ')" title="Ouvir Música"><i class="fa fa-play"></i></div>';
            if (vAl["permitir_download"] == 1)
              btnDownload =
                '<a class="btn btn-default" style="width: 40px;" target="_blank" href="' +
                vAl["audio"] +
                '" title="Disponível para Download"><i class="fa fa-download"></i></a>';
          }
        }
        albuns +=
          '<div><a href="' +
          URLSYS +
          "cifra/album/id/" +
          vAl["codigo_album"] +
          "/nome/" +
          vAl["nome_album"].toLowerCase() +
          '" target="_blank" style="color: #000">' +
          vAl["nome_album"] +
          "</a></div>";
      });
    }

    var autores = "";
    if (val["autor"].length > 0) {
      autores += "<b>Autor:</b><br/>";
      $.map(val["autor"], function (vAl, aI) {
        autores += "<div>" + vAl["nome"] + "</div>";
      });
    }

    //Controle de nova linha
    if (contCol === 2) {
      contCol = 0;
      arrItens.push('</div><div class="row">');
    }

    var btnLink =
      '<a class="btn btn-default" style="width: 40px;" target="_blank" href="' +
      URLSYS +
      "cifra/musica/id/" +
      val["musica_id"] +
      "/nome/" +
      val["nome"].toLowerCase() +
      '" title="Acessar informações completas do registro"><i class="fa fa-info"></i></a>';

    var item =
      '<div class="col-md-6" style="font-size: 11px">' +
      '<div class="panel panel-default">' +
      '<div class="panel-body">' +
      '<div class="row">' +
      '<div class="col-md-4 text-center">' +
      '<img src="' +
      imgPrincipal +
      '" class="img-rounded img-thumbnail" style="width: 98% !important"/>' +
      "</div>" +
      '<div class="col-md-7">' +
      '<div class="col-md-12" style="font-size: 14px"><b><a style="color: #000" target="_blank" href="' +
      URLSYS +
      "cifra/musica/id/" +
      val["musica_id"] +
      "/nome/" +
      val["nome"].toLowerCase() +
      '">' +
      val["nome"] +
      "</a></b></div>" +
      '<div class="col-md-12"><br/>' +
      albuns +
      "<br/>" +
      autores +
      "<br/>" +
      "</div>" +
      "</div>" +
      '<div class="col-md-1">' +
      //btnPlay +
      btnLink +
      btnDownload +
      "</div>" +
      "</div>" +
      "</div>" +
      "</div>" +
      "</div>";
    arrItens.push(item);

    contCol++;
  });

  arrItens.push("</div>");
  return arrItens;
}

var objAudioPlay = null;
var ultimaPlayMusicaId = 0;

function _playVersoesMusica(musica_id, musica_cifra_id) {
  if (musica_id == "" || typeof musica_id === "undefined") {
    objAudioPlay = null;
    ultimaPlayMusicaId = 0;
    return false;
  }

  //Este tipo de operação é para casos onde o play é de dentro do modulo de cifras
  //Não se utiliza o id, porem a url do audio, então precisa deste id passado
  //para controle do icone e do play do áudio
  if (typeof musica_cifra_id != "undefined") {
    musica_id = musica_cifra_id;
  }
  //------------------------------------------------------------------------------

  if (objAudioPlay != null) {
    objAudioPlay.pause();
    objAudioPlay.currentTime = 0;
  }

  if (ultimaPlayMusicaId == musica_id) {
    $("#iconBtnPlay" + ultimaPlayMusicaId).html("<i class='fa fa-play'></i>");
    ultimaPlayMusicaId = 0;
    objAudioPlay = null;
    return false;
  } else {
    ultimaPlayMusicaId = musica_id;
  }

  $("#iconBtnPlay" + ultimaPlayMusicaId).html("<i class='fa fa-play'></i>");
  ultimaPlayMusicaId = musica_id;

  $("#iconBtnPlay" + ultimaPlayMusicaId).html("<i class='fa fa-pause'></i>");

  //Se for url so da o play
  if (typeof musica_id === "string") {
    objAudioPlay = new Audio(musica_id);
    objAudioPlay.play();
    tratamentoEndErrorPlayAudio();
  } else {
    $.ajax({
      url: URLSYS + "play/get-audios",
      data: { fk_musica_id: musica_id },
      dataType: "json",
      type: "POST",
      success: function (retorno) {
        if (retorno && retorno.length > 0) {
          if (retorno.length == 1) {
            objAudioPlay = new Audio(retorno);
            objAudioPlay.play();
            tratamentoEndErrorPlayAudio();
          } else {
            //Monta a lista de todas as versões
          }
        } else {
          //audio não encontrado
          sysAlerta("Atenção!", "Áudio não encontrado.");
          $("#iconBtnPlay" + ultimaPlayMusicaId).html(
            "<i class='fa fa-play'></i>"
          );
        }
      },
      error: function (jqXHR, textStatus, errorThrown) {
        console.log(jqXHR, textStatus, errorThrown);
        sysErro("Desculpe!", "Ocorreu algo inesperado.");
        $("#iconBtnPlay" + ultimaPlayMusicaId).html(
          "<i class='fa fa-play'></i>"
        );
      },
    });
  }
}

function _playAudio(url, musica_cifra_id) {
  if (url == "") {
    objAudioPlay = null;
    ultimaPlayMusicaId = 0;
    return false;
  }

  if (objAudioPlay != null) {
    objAudioPlay.pause();
    objAudioPlay.currentTime = 0;
  }

  if (ultimaPlayMusicaId == musica_cifra_id) {
    $("#iconBtnPlay" + ultimaPlayMusicaId).html("<i class='fa fa-play'></i>");
    ultimaPlayMusicaId = 0;
    objAudioPlay = null;
    return false;
  }

  //Se houve algum play ativo, altera o icon do botão para play e remove o paus
  $("#iconBtnPlay" + ultimaPlayMusicaId).html("<i class='fa fa-play'></i>");

  ultimaPlayMusicaId = musica_cifra_id;
  //Ativa o pause no novo audio que se inicia
  $("#iconBtnPlay" + ultimaPlayMusicaId).html("<i class='fa fa-pause'></i>");

  objAudioPlay = new Audio(url);
  objAudioPlay.play();
  tratamentoEndErrorPlayAudio();
}

function tratamentoEndErrorPlayAudio() {
  //Tratamento para erros e fim do play
  objAudioPlay.addEventListener("ended", function () {
    objAudioPlay.currentTime = 0;
    $("#iconBtnPlay" + ultimaPlayMusicaId).html("<i class='fa fa-play'></i>");
  });

  objAudioPlay.onerror = function () {
    $("#iconBtnPlay" + ultimaPlayMusicaId).html("<i class='fa fa-play'></i>");
  };
}

function expandirListaEstilos(limit) {
  var obj = {};
  obj.limit = limit;
  obj.estilo_id = $("#estilo_id").val();

  var newLimit = parseInt(obj.limit) + 10;
  $.ajax({
    url: URLSYS + "estilo-musical/expandir-lista",
    data: obj,
    dataType: "json",
    type: "POST",
    success: function (retorno) {
      if (retorno && retorno.length > 0) {
        var arrItens = [];
        arrItens.push('<div class="row">');
        var contCol = 0;
        $.map(retorno, function (val, i) {
          var btnPlay =
            '<div class="btn btn-default" style="color: #ccc" title="Ouvir Música" id="iconBtnPlay' +
            val["musica_cifra_id"] +
            '"><i class="fa fa-play"></i></div>';
          if (val["audio"] != "")
            btnPlay =
              '<div class="btn btn-default" onclick="_playAudio(\'' +
              val["audio"] +
              "'," +
              val["musica_cifra_id"] +
              ')" title="Ouvir Música" id="iconBtnPlay' +
              val["musica_cifra_id"] +
              '"><i class="fa fa-play"></i></div>';

          if (contCol == 2) {
            arrItens.push('</div><div class="row">');
            contCol = 0;
          }

          var urlAlbum =
            URLSYS +
            "cifra/album/id/" +
            val["album_id"] +
            "/nome/" +
            val["nome_album"].toLowerCase();
          var urlAutor = "#";
          //                    var urlAutor = URLSYS+'cifra/autor/id/'+val['autor_id']+'/nome/'+val['autor'].toLowerCase();

          arrItens.push(
            '<div class="col-md-6">' +
              '<div class="panel panel-default">' +
              '<div class="panel-body">' +
              '<div class="col-md-3">' +
              '<img class="img-rounded img-thumbnail text-center" src="' +
              val["img_album"] +
              '"/>' +
              "</div>" +
              '<div class="col-md-8">' +
              '<p style="color: #000; font-size: 13px"><b>' +
              val["nome"] +
              "</b></p>" +
              '<p style="font-size: 11px; color: #333"><a target="_blank" href="' +
              urlAlbum +
              '" style="color: #000; text-decoration: none; cursor: pointer"><b>Album:</b> ' +
              val["nome_album"] +
              "</a></p>" +
              '<p style="font-size: 11px; color: #333"><a target="_blank" href="' +
              urlAutor +
              '" style="color: #000; text-decoration: none; cursor: pointer"><b>Autor:</b> ' +
              val["autor"] +
              "</a></p>" +
              "</div>" +
              '<div class="col-md-1">' +
              '<a class="btn btn-default" href="' +
              URLSYS +
              "cifra/musica/id/" +
              val["musica_id"] +
              "/nome/" +
              val["nome"].toLowerCase() +
              '" title="Acessar informações completas do registro"><i class="fa fa-search"></i></a>' +
              btnPlay +
              "</div>" +
              "</div>" +
              "</div>" +
              "</div>"
          );

          contCol++;
        });
        arrItens.push("</div>");
        arrItens.push(
          "<div id='r-expandir-lista-" +
            newLimit +
            "'>" +
            "<a onclick='expandirListaEstilos(" +
            newLimit +
            ")' class='btn btn-info form-control'><i class='fa fa-list'></i> Expandir Lista</div>" +
            "</div>"
        );
        $("#r-expandir-lista-" + obj.limit).html(arrItens.join(""));
      } else {
        $("#r-expandir-lista-" + obj.limit).html(
          '<div class="row"><div class="col-md-12"><p style="padding-left: 30px"><b>Fim da lista, pois não foi encontrado registros.</b></p></div></div>'
        );
      }
    },
    error: function (jqXHR, textStatus, errorThrown) {
      console.log(jqXHR, textStatus, errorThrown);
    },
  });
}

function _adicionarEmPlaylist(id) {
  $("#cpIdCifraSelecionadoPlaylist").val(id);
  $("#cpDetalhesPlaylist").val("");
  $("#cpOrderPlaylist").val("001");
  _atualizarSelect(
    "cpSelecionarPlaylist",
    "",
    URLSYS + "perfil/playlist-get-lista",
    "playlist_id",
    "descricao",
    ""
  );
  $("#mFormularioSelecionarPlaylist").modal();
}

function _removerDaPlaylist(id) {
  sysConfirmacao(
    "Atenção!",
    "Deseja mesmo remover a versão da sua Playlist?",
    function (result) {
      if (result) {
        $.ajax({
          url: URLSYS + "perfil/playlist-remover-musica",
          data: { id: id },
          dataType: "json",
          type: "POST",
          success: function (retorno) {
            tratarMsgRetorno(retorno);
            window.location.reload();
          },
          error: function (jqXHR, textStatus, errorThrown) {
            console.log(jqXHR, textStatus, errorThrown);
            sysErro("Desculpe!", "Ocorreu algo inesperado.");
          },
        });
      }
    }
  );
}

function validarDadosFormNC(obj) {
  var retorno = true;

  if (obj.fk_estado_id == 0 && obj.estado == "") retorno = false;
  if (obj.fk_cidade_id == 0 && obj.cidade == "") retorno = false;

  $.map(obj, function (a, i) {
    //
    //                    console.log('a:'+a);
    //                    console.log('i:'+i);
    //
    if (
      i != "fk_estado_id" &&
      i != "fk_cidade_id" &&
      i != "estado" &&
      i != "cidade"
    ) {
      switch (a) {
        case "":
        case 0:
          retorno = false;
      }
    }
  });

  return retorno;
}

$(window).on("load", function () {
  //PRELOADER
  $("#preloader").delay(350).fadeOut("slow"); // will fade out the white DIV that covers the website.
  if ($(".isotope_items").length) {
    // PORTFOLIO ISOTOPE
    var $container = $(".isotope_items");
    $container.isotope();
    $(".portfolio_filter ul li").on("click", function () {
      $(".portfolio_filter ul li").removeClass("select-cat");
      $(this).addClass("select-cat");
      var selector = $(this).attr("data-filter");
      $(".isotope_items").isotope({
        filter: selector,
      });
      return false;
    });
  }
}); // window load end
$(document).on("ready", function () {
  // ONE PAGE SCROLL
  if ($(".home").length) {
    $(document).on("scroll", onScroll);
    //smoothscroll
    $('.backtop, .home-down, .nav-menu li a[href^="#"]').on(
      "click",
      function (e) {
        e.preventDefault();
        $(document).off("scroll");
        $(".nav-menu li a").each(function () {
          $(this).removeClass("selected");
          if ($(window).width() < 768) {
            $(".nav-menu").slideUp();
          }
        });
        $(this).addClass("selected");
        var target = this.hash, //  menu = target;
          $target = $(target);
        $("html, body")
          .stop()
          .animate(
            {
              scrollTop: $target.offset().top - 70,
            },
            500,
            "swing",
            function () {
              window.location.hash = target;
              $(document).on("scroll", onScroll);
            }
          );
      }
    );

    function onScroll(event) {
      //            var scrollPos = $(document).scrollTop();
      //            $('.nav-menu li a').each(function () {
      //                var currLink = $(this);
      //                var refElement = $(currLink.attr("href"));
      //                if (refElement.position().top - 73 <= scrollPos && refElement.position().top + refElement.height() > scrollPos) {
      //                    $('.nav-menu li a').removeClass("selected");
      //                    currLink.addClass("selected");
      //                }
      //                else {
      //                    currLink.removeClass("selected");
      //                }
      //            });
    }
  }
  //NAVBAR SHOW - HIDE
  if ($(".home").length) {
    $(window).scroll(function () {
      var scroll = $(window).scrollTop();
      var homeheight = $(".home").height() - 73;
      if (scroll > homeheight) {
        $("header").addClass("nav-fixed");
      } else {
        $("header").removeClass("nav-fixed");
      }
    });
  }
  // HOME PAGE HEIGHT
  if ($(".home").length) {
    function centerInit() {
      var hometext = $(".home");
      hometext.css({
        height: $(window).height() + "px",
      });
    }
    centerInit();
    $(window).resize(centerInit);
  }
  //SLIDE MENU
  if ($(".right-menu").length) {
    (function ($) {
      $(".right-menu").on("click", function () {
        $("body").hasClass("slidemenu-opened") ? k() : T();
      });
    })(jQuery);

    function T() {
      $("body").addClass("slidemenu-opened");
    }

    function k() {
      $("body").removeClass("slidemenu-opened");
    }
  }
  // RESPONSIVE MENU
  if ($(".responsive").length) {
    $(".responsive").on("click", function (e) {
      $(".nav-menu").slideToggle();
    });
  }
  // CUSTOM SCROLLBAR
  if ($(".scroll-out, .nav-scroll").length) {
    $(function () {
      $(".scroll-out, .nav-scroll").perfectScrollbar({
        suppressScrollX: true,
        wheelSpeed: 100,
      });
    });
  }
  // HOME TYPED JS
  if ($(".element").length) {
    $(".element").each(function () {
      $(this).typed({
        strings: [
          $(this).data("text1"),
          $(this).data("text2"),
          $(this).data("text3"),
          $(this).data("text4"),
          $(this).data("text5"),
          $(this).data("text6"),
        ],
        loop: $(this).data("loop") ? $(this).data("loop") : false,
        backDelay: $(this).data("backdelay") ? $(this).data("backdelay") : 2000,
        typeSpeed: 10,
      });
    });
  }
  // OWL CAROUSEL GENERAL JS
  if ($(".owl-carousel").length) {
    $(".owl-carousel").each(function () {
      $(this).owlCarousel({
        items: $(this).data("items") ? $(this).data("items") : 3,
        autoPlay: $(this).data("autoplay") ? $(this).data("autoplay") : 2500,
        pagination: $(this).data("pagination")
          ? $(this).data("pagination")
          : false,
        itemsDesktop: [1199, 3],
        itemsDesktopSmall: [979, 2],
      });
    });
  }
  // BLOG GALLERY
  if ($(".carousel").length) {
    $(".carousel").carousel({
      interval: 3000,
    });
  }
  // MAGNIFIC POPUP FOR PORTFOLIO PAGE
  if ($(".image-link").length) {
    $(".image-link").magnificPopup({
      type: "image",
    });
  }
  //TWITTER
  if ($(".widget-twitter .tweet").length) {
    $(".widget-twitter .tweet").twittie({
      username: "envato",
      list: null,
      dateFormat: "%B %d, %Y",
      template: '{{tweet}} <br/> <strong class="date">{{date}}</strong>',
      count: 3,
    });
  }
  // ACCORDION MENU
  $(".panel-heading a").on("click", function (e) {
    $(".panel-heading a i").addClass("fa-chevron-down");
    if ($(this).hasClass("collapsed") === true) {
      $(this)
        .children("i")
        .removeClass("fa-chevron-down")
        .addClass("fa-chevron-up");
    } else {
      $(this).children("i").removeClass("fa-chevron-up");
    }
  });

  $("#cp_nc_data_nascimento").mask("99/99/9999");

  $("#cp_nc_pais").change(function () {
    $("#cp_nc_estado_texto, #cp_nc_cidade_texto").hide();
    $("#cp_nc_estado, #cp_nc_cidade").show();

    if ($(this).val() != 33) {
      $("#cp_nc_estado_texto, #cp_nc_cidade_texto").show();
      $("#cp_nc_estado, #cp_nc_cidade").hide();
    }
  });

  $("#cp_nc_estado").change(function () {
    _atualizarSelect(
      "cp_nc_cidade",
      "",
      "uteis/get-cidades-pela-uf/uf/" + $(this).val(),
      "cidade_id",
      "descricao",
      ""
    );
  });

  $("#btn_nc_enviar").click(function () {
    $("#div-msg-nc").html("").hide();

    var obj = {};
    obj.nome = $.trim($("#cp_nc_nome_completo").val());
    obj.apelido = $.trim($("#cp_nc_apelido").val());
    obj.email = $.trim($("#cp_nc_email").val());
    obj.data_nascimento = $.trim($("#cp_nc_data_nascimento").val());
    obj.sexo = $("#cp_nc_sexo").val();
    obj.fk_pais_id = $("#cp_nc_pais").val();
    obj.fk_estado_id = 0;
    obj.fk_cidade_id = 0;
    obj.estado = "";
    obj.cidade = "";

    if (obj.fk_pais_id == 33) {
      obj.fk_estado_id = $("#cp_nc_estado option:selected").attr("id_estado");
      obj.fk_cidade_id = $("#cp_nc_cidade").val();
    } else {
      obj.estado = $.trim($("#cp_nc_estado_texto").val());
      obj.cidade = $.trim($("#cp_nc_cidade_texto").val());
    }

    if (!validarDadosFormNC(obj)) {
      $("#div-msg-nc")
        .html("Atenção! Todos os campos são obrigatórios.")
        .show();
      return false;
    }

    $.ajax({
      url: "nova-conta/solicitar",
      dataType: "json",
      type: "POST",
      data: obj,
      success: function (retorno) {
        if (retorno[0] === false) {
          $("#div-msg-nc").html(retorno[1]).show();
        } else {
          $("#div-msg-nc")
            .html(
              '<span style="color: green">Cadastro realizado com sucesso!<br/>Verifique instruções no seu email.</span>'
            )
            .show();
          $("#form_cp_cn")[0].reset();
        }
      },
      error: function (jqXHR, textStatus, errorThrown) {
        console.log(jqXHR, textStatus, errorThrown);
      },
    });
  });

  $("#campo_busca_home").keyup(function (evt) {
    if (evt.keyCode == 13) {
      _localizarMusicaHome("");
    }
  });

  $("#listaIndiceAlfabeticoMusica a").click(function () {
    $("#vidConteudoListaAlfabeticoMusica")
      .html("Aguarde! Carregando...")
      .css("textAlign", "center");
    $.ajax({
      url: URLSYS + "index/busca-indice",
      data: { indice: $(this).text(), tipo: "musica" },
      dataType: "json",
      type: "POST",
      success: function (retorno) {
        //var arrItens = montarListagemMusica(retorno,false);
        var arrItens = [];
        arrItens = montarListagemSimplesMusica(retorno);
        $("#vidConteudoListaAlfabeticoMusica")
          .html('<div class="row">' + arrItens.join("") + "</div>")
          .css("textAlign", "left");
      },
      error: function (jqXHR, textStatus, errorThrown) {
        console.log(jqXHR, textStatus, errorThrown);
      },
    });
    return false;
  });

  $("#listaIndiceAlfabeticoAutor a").click(function () {
    $("#vidConteudoListaAlfabeticoAutor")
      .html("Aguarde! Carregando...")
      .css("textAlign", "center");
    $.ajax({
      url: URLSYS + "index/busca-indice",
      data: { indice: $(this).text(), tipo: "autor" },
      dataType: "json",
      type: "POST",
      success: function (retorno) {
        //var arrItens = montarListagemMusica(retorno,false);
        var arrItens = [];
        arrItens = montarListagemSimplesAutor(retorno);
        $("#vidConteudoListaAlfabeticoAutor")
          .html('<div class="row">' + arrItens.join("") + "</div>")
          .css("textAlign", "left");
      },
      error: function (jqXHR, textStatus, errorThrown) {
        console.log(jqXHR, textStatus, errorThrown);
      },
    });
    return false;
  });

  $("#listaIndiceAlfabeticoAlbum a").click(function () {
    $("#vidConteudoListaAlfabeticoAlbum")
      .html("Aguarde! Carregando...")
      .css("textAlign", "center");
    $.ajax({
      url: URLSYS + "index/busca-indice",
      data: { indice: $(this).text(), tipo: "album" },
      dataType: "json",
      type: "POST",
      success: function (retorno) {
        var arrItens = [];
        arrItens = montarListagemSimplesAlbum(retorno);
        $("#vidConteudoListaAlfabeticoAlbum")
          .html('<div class="row">' + arrItens.join("") + "</div>")
          .css("textAlign", "left");
      },
      error: function (jqXHR, textStatus, errorThrown) {
        console.log(jqXHR, textStatus, errorThrown);
      },
    });
    return false;
  });

  $("#listaIndiceAlfabeticoTema a").click(function () {
    $("#vidConteudoListaAlfabeticoTema")
      .html("Aguarde! Carregando...")
      .css("textAlign", "center");
    $.ajax({
      url: URLSYS + "index/busca-indice",
      data: { indice: $(this).text(), tipo: "tema" },
      dataType: "json",
      type: "POST",
      success: function (retorno) {
        var arrItens = [];
        arrItens = montarListagemSimplesTema(retorno);
        $("#vidConteudoListaAlfabeticoTema")
          .html('<div class="row">' + arrItens.join("") + "</div>")
          .css("textAlign", "left");
      },
      error: function (jqXHR, textStatus, errorThrown) {
        console.log(jqXHR, textStatus, errorThrown);
      },
    });
    return false;
  });
}); // document ready end

function montarListagemSimplesMusica(dados) {
  var retorno = [];
  if (dados && dados[0].length > 0) {
    retorno.push(
      '<p style="color: #333; text-align: center"><b>' +
        dados[1] +
        " músicas encontradas.</b></p>"
    );

    var col1 = [];
    var col2 = [];
    var qtdeReg = Math.ceil(dados[0].length / 2);
    var cont = 0;

    $.map(dados[0], function (val, i) {
      var btnPlay =
        '<div class="btn btn-default" style="color: #ccc; width: 40px;"><i class="fa fa-play"></i></div>';

      if (val["album"].length > 0) {
        var menorIdCifra = 99999999999;
        $.map(val["album"], function (vAl, aI) {
          if (vAl["codigo_audio"] < menorIdCifra) {
            menorIdCifra = vAl["codigo_audio"];
            if (vAl["audio"] != "")
              btnPlay =
                '<div id="iconBtnPlay' +
                vAl["codigo_audio"] +
                '" class="btn btn-default" style="width: 40px;" onclick="_playAudio(\'' +
                vAl["audio"] +
                "'," +
                vAl["codigo_audio"] +
                ')" title="Ouvir Música"><i class="fa fa-play"></i></div>';
          }
        });
      }

      var autores = "";
      if (val["autor"].length > 0) {
        autores += "";
        $.map(val["autor"], function (vAl, aI) {
          autores += " - " + vAl["nome"] + " ";
        });
      }

      var btnLink =
        '<a class="btn btn-default" style="width: 40px;" target="_blank" href="' +
        URLSYS +
        "cifra/musica/id/" +
        val["musica_id"] +
        "/nome/" +
        val["nome"].toLowerCase() +
        '" title="Acessar informações completas do registro"><i class="fa fa-info"></i></a>';

      if (cont < qtdeReg) {
        col1.push(
          '<div class="col-md-12 item-indice" style="color: #333;">' +
            '<div class="col-md-9" style="font-size: 12px">' +
            '<span style="font-size: 14px">' +
            val["nome"] +
            "</span>" +
            '<br/><span class="text text-info" title="' +
            autores +
            '">' +
            autores.substr(0, 30) +
            "...</span>" +
            "</div>" +
            '<div class="col-md-3">' +
            btnPlay +
            "&nbsp;" +
            btnLink +
            "</div>" +
            "</div>"
        );
      } else {
        col2.push(
          '<div class="col-md-12 item-indice" style="color: #333;">' +
            '<div class="col-md-9" style="font-size: 12px">' +
            '<span style="font-size: 14px">' +
            val["nome"] +
            "</span>" +
            '<br/><span class="text text-info" title="' +
            autores +
            '">' +
            autores.substr(0, 30) +
            "...</span>" +
            "</div>" +
            '<div class="col-md-3">' +
            btnPlay +
            "&nbsp;" +
            btnLink +
            "</div>" +
            "</div>"
        );
      }
      cont++;
    });

    retorno.push(
      [
        '<div class="col-md-6">',
        col1.join(""),
        '</div><div class="col-md-6">',
        col2.join(""),
        "</div>",
      ].join("")
    );
  } else {
    retorno.push(
      '<p style="color: #333; text-align: center"><b>Nenhuma música encontrada</b></p>'
    );
  }
  return retorno;
}

function montarListagemSimplesAutor(dados) {
  var retorno = [];
  if (dados && dados[0].length > 0) {
    retorno.push(
      '<p style="color: #333; text-align: center"><b>' +
        dados[1] +
        " registro(s) encontrado(s).</b></p>"
    );
    var col1 = [];
    var col2 = [];
    var qtdeReg = Math.ceil(dados[0].length / 2);
    var cont = 0;
    $.map(dados[0], function (val, i) {
      //            var btnLink = '<a class="btn btn-default" style="width: 40px;" target="_blank" href="'+URLSYS+'cifra/autor/id/'+val['autor_id']+'/nome/'+val['nome'].toLowerCase()+'" title="Acessar informações completas do registro"><i class="fa fa-info"></i></a>';
      var btnLink =
        '<a class="btn btn-default form-control" style="cursor: pointer; text-align: left; border: none; border-bottom: 1px solid #ccc" target="_blank" href="' +
        URLSYS +
        "cifra/autor/id/" +
        val["autor_id"] +
        "/nome/" +
        val["nome"].toLowerCase() +
        '" title="Acessar informações completas do registro">' +
        val["nome"] +
        "</a>";
      if (cont < qtdeReg) {
        col1.push(
          '<div class="col-md-12" style="color: #333;">' +
            //                    '<div class="col-md-9" style="font-size: 12px">'+
            //                        '<span style="font-size: 14px">'+val['nome']+'</span>'+
            //                    '</div>'+
            '<div class="col-md-12">' +
            btnLink +
            "</div>" +
            "</div>"
        );
      } else {
        col2.push(
          '<div class="col-md-12" style="color: #333;">' +
            //                    '<div class="col-md-9" style="font-size: 12px">'+
            //                        '<span style="font-size: 14px">'+val['nome']+'</span>'+
            //                    '</div>'+
            '<div class="col-md-12">' +
            btnLink +
            "</div>" +
            "</div>"
        );
      }
      cont++;
    });

    retorno.push(
      [
        '<div class="col-md-6">',
        col1.join(""),
        '</div><div class="col-md-6">',
        col2.join(""),
        "</div>",
      ].join("")
    );
  } else {
    retorno.push(
      '<p style="color: #333; text-align: center"><b>Nenhum registro encontrado</b></p>'
    );
  }
  return retorno;
}

function montarListagemSimplesAlbum(dados) {
  var retorno = [];
  if (dados && dados[0].length > 0) {
    retorno.push(
      '<p style="color: #333; text-align: center"><b>' +
        dados[1] +
        " registro(s) encontrado(s).</b></p>"
    );

    var col1 = [];
    var col2 = [];
    var qtdeReg = Math.ceil(dados[0].length / 2);
    var cont = 0;

    $.map(dados[0], function (val, i) {
      var btnLink =
        '<a class="btn btn-default form-control" style="cursor: pointer; text-align: left; border: none; border-bottom: 1px solid #ccc" target="_blank" href="' +
        URLSYS +
        "cifra/album/id/" +
        val["album_id"] +
        "/nome/" +
        val["nome"].toLowerCase() +
        '" title="Acessar informações completas do registro">' +
        val["nome"] +
        "</a>";

      if (cont < qtdeReg) {
        col1.push(
          '<div class="col-md-12" style="color: #333;">' +
            //                    '<div class="col-md-9" style="font-size: 12px">'+
            //                        '<span style="font-size: 14px">'+val['nome']+'</span>'+
            //                    '</div>'+
            '<div class="col-md-12">' +
            btnLink +
            "</div>" +
            "</div>"
        );
      } else {
        col2.push(
          '<div class="col-md-12" style="color: #333;">' +
            //                    '<div class="col-md-9" style="font-size: 12px">'+
            //                        '<span style="font-size: 14px">'+val['nome']+'</span>'+
            //                    '</div>'+
            '<div class="col-md-12">' +
            btnLink +
            "</div>" +
            "</div>"
        );
      }
      cont++;
    });

    retorno.push(
      [
        '<div class="col-md-6">',
        col1.join(""),
        '</div><div class="col-md-6">',
        col2.join(""),
        "</div>",
      ].join("")
    );
  } else {
    retorno.push(
      '<p style="color: #333; text-align: center"><b>Nenhum registro encontrado</b></p>'
    );
  }
  return retorno;
}

function montarListagemSimplesTema(dados) {
  var retorno = [];
  if (dados && dados[0].length > 0) {
    retorno.push(
      '<p style="color: #333; text-align: center"><b>' +
        dados[1] +
        " músicas encontradas.</b></p>"
    );

    var col1 = [];
    var col2 = [];
    var qtdeReg = Math.ceil(dados[0].length / 2);
    var cont = 0;

    $.map(dados[0], function (val, i) {
      var btnPlay =
        '<div class="btn btn-default" style="color: #ccc; width: 40px;"><i class="fa fa-play"></i></div>';

      if (val["album"].length > 0) {
        var menorIdCifra = 99999999999;
        $.map(val["album"], function (vAl, aI) {
          if (vAl["codigo_audio"] < menorIdCifra) {
            menorIdCifra = vAl["codigo_audio"];
            if (vAl["audio"] != "")
              btnPlay =
                '<div id="iconBtnPlay' +
                vAl["codigo_audio"] +
                '" class="btn btn-default" style="width: 40px;" onclick="_playAudio(\'' +
                vAl["audio"] +
                "'," +
                vAl["codigo_audio"] +
                ')" title="Ouvir Música"><i class="fa fa-play"></i></div>';
          }
        });
      }

      var autores = "";
      if (val["autor"].length > 0) {
        autores += "";
        $.map(val["autor"], function (vAl, aI) {
          autores += " - " + vAl["nome"] + " ";
        });
      }

      var btnLink =
        '<a class="btn btn-default" style="width: 40px;" target="_blank" href="' +
        URLSYS +
        "cifra/musica/id/" +
        val["musica_id"] +
        "/nome/" +
        val["nome"].toLowerCase() +
        '" title="Acessar informações completas do registro"><i class="fa fa-info"></i></a>';

      if (cont < qtdeReg) {
        col1.push(
          '<div class="col-md-12 item-indice" style="color: #333;">' +
            '<div class="col-md-9" style="font-size: 12px">' +
            '<span style="font-size: 14px">' +
            val["nome"] +
            "</span>" +
            '<br/><span class="text text-info" title="' +
            autores +
            '">' +
            autores.substr(0, 30) +
            "...</span>" +
            "</div>" +
            '<div class="col-md-3">' +
            btnPlay +
            "&nbsp;" +
            btnLink +
            "</div>" +
            "</div>"
        );
      } else {
        col2.push(
          '<div class="col-md-12 item-indice" style="color: #333;">' +
            '<div class="col-md-9" style="font-size: 12px">' +
            '<span style="font-size: 14px">' +
            val["nome"] +
            "</span>" +
            '<br/><span class="text text-info" title="' +
            autores +
            '">' +
            autores.substr(0, 30) +
            "...</span>" +
            "</div>" +
            '<div class="col-md-3">' +
            btnPlay +
            "&nbsp;" +
            btnLink +
            "</div>" +
            "</div>"
        );
      }
      cont++;
    });

    retorno.push(
      [
        '<div class="col-md-6">',
        col1.join(""),
        '</div><div class="col-md-6">',
        col2.join(""),
        "</div>",
      ].join("")
    );
  } else {
    retorno.push(
      '<p style="color: #333; text-align: center"><b>Nenhuma música encontrada</b></p>'
    );
  }
  return retorno;
}

function substr(str, start, len) {
  // Returns part of a string
  //
  // version: 909.322
  // discuss at: http://phpjs.org/functions/substr
  // +     original by: Martijn Wieringa
  // +     bugfixed by: T.Wild
  // +      tweaked by: Onno Marsman
  // +      revised by: Theriault
  // +      improved by: Brett Zamir (http://brett-zamir.me)
  // %    note 1: Handles rare Unicode characters if 'unicode.semantics' ini (PHP6) is set to 'on'
  // *       example 1: substr('abcdef', 0, -1);
  // *       returns 1: 'abcde'
  // *       example 2: substr(2, 0, -6);
  // *       returns 2: false
  // *       example 3: ini_set('unicode.semantics',  'on');
  // *       example 3: substr('a\uD801\uDC00', 0, -1);
  // *       returns 3: 'a'
  // *       example 4: ini_set('unicode.semantics',  'on');
  // *       example 4: substr('a\uD801\uDC00', 0, 2);
  // *       returns 4: 'a\uD801\uDC00'
  // *       example 5: ini_set('unicode.semantics',  'on');
  // *       example 5: substr('a\uD801\uDC00', -1, 1);
  // *       returns 5: '\uD801\uDC00'
  // *       example 6: ini_set('unicode.semantics',  'on');
  // *       example 6: substr('a\uD801\uDC00z\uD801\uDC00', -3, 2);
  // *       returns 6: '\uD801\uDC00z'
  // *       example 7: ini_set('unicode.semantics',  'on');
  // *       example 7: substr('a\uD801\uDC00z\uD801\uDC00', -3, -1)
  // *       returns 7: '\uD801\uDC00z'
  // Add: (?) Use unicode.runtime_encoding (e.g., with string wrapped in "binary" or "Binary" class) to
  // allow access of binary (see file_get_contents()) by: charCodeAt(x) & 0xFF (see https://developer.mozilla.org/En/Using_XMLHttpRequest ) or require conversion first?
  var i = 0,
    allBMP = true,
    es = 0,
    el = 0,
    se = 0,
    ret = "";
  str += "";
  var end = str.length;

  // BEGIN REDUNDANT
  this.php_js = this.php_js || {};
  this.php_js.ini = this.php_js.ini || {};
  // END REDUNDANT
  switch (
    this.php_js.ini["unicode.semantics"] &&
    this.php_js.ini["unicode.semantics"].local_value.toLowerCase()
  ) {
    case "on":
      // Full-blown Unicode including non-Basic-Multilingual-Plane characters
      // strlen()
      for (i = 0; i < str.length; i++) {
        if (
          /[\uD800-\uDBFF]/.test(str.charAt(i)) &&
          /[\uDC00-\uDFFF]/.test(str.charAt(i + 1))
        ) {
          allBMP = false;
          break;
        }
      }

      if (!allBMP) {
        if (start < 0) {
          for (i = end - 1, es = start += end; i >= es; i--) {
            if (
              /[\uDC00-\uDFFF]/.test(str.charAt(i)) &&
              /[\uD800-\uDBFF]/.test(str.charAt(i - 1))
            ) {
              start--;
              es--;
            }
          }
        } else {
          var surrogatePairs = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
          while (surrogatePairs.exec(str) != null) {
            var li = surrogatePairs.lastIndex;
            if (li - 2 < start) {
              start++;
            } else {
              break;
            }
          }
        }

        if (start >= end || start < 0) {
          return false;
        }
        if (len < 0) {
          for (i = end - 1, el = end += len; i >= el; i--) {
            if (
              /[\uDC00-\uDFFF]/.test(str.charAt(i)) &&
              /[\uD800-\uDBFF]/.test(str.charAt(i - 1))
            ) {
              end--;
              el--;
            }
          }
          if (start > end) {
            return false;
          }
          return str.slice(start, end);
        } else {
          se = start + len;
          for (i = start; i < se; i++) {
            ret += str.charAt(i);
            if (
              /[\uD800-\uDBFF]/.test(str.charAt(i)) &&
              /[\uDC00-\uDFFF]/.test(str.charAt(i + 1))
            ) {
              se++; // Go one further, since one of the "characters" is part of a surrogate pair
            }
          }
          return ret;
        }
        break;
      }
    // Fall-through
    case "off":
    // assumes there are no non-BMP characters;
    //    if there may be such characters, then it is best to turn it on (critical in true XHTML/XML)
    default:
      if (start < 0) {
        start += end;
      }
      end =
        typeof len === "undefined" ? end : len < 0 ? len + end : len + start;
      // PHP returns false if start does not fall within the string.
      // PHP returns false if the calculated end comes before the calculated start.
      // PHP returns an empty string if start and end are the same.
      // Otherwise, PHP returns the portion of the string from start to end.
      return start >= str.length || start < 0 || start > end
        ? !1
        : str.slice(start, end);
  }
  return undefined; // Please Netbeans
}

function str_pad(input, padLength, padString, padType) {
  // eslint-disable-line camelcase
  //  discuss at: http://locutusjs.io/php/str_pad/
  // original by: Kevin van Zonneveld (http://kvz.io)
  // improved by: Michael White (http://getsprink.com)
  //    input by: Marco van Oort
  // bugfixed by: Brett Zamir (http://brett-zamir.me)
  //   example 1: str_pad('Kevin van Zonneveld', 30, '-=', 'STR_PAD_LEFT')
  //   returns 1: '-=-=-=-=-=-Kevin van Zonneveld'
  //   example 2: str_pad('Kevin van Zonneveld', 30, '-', 'STR_PAD_BOTH')
  //   returns 2: '------Kevin van Zonneveld-----'

  var half = "";
  var padToGo;

  var _strPadRepeater = function (s, len) {
    var collect = "";

    while (collect.length < len) {
      collect += s;
    }
    collect = collect.substr(0, len);

    return collect;
  };

  input += "";
  padString = padString !== undefined ? padString : " ";

  if (
    padType !== "STR_PAD_LEFT" &&
    padType !== "STR_PAD_RIGHT" &&
    padType !== "STR_PAD_BOTH"
  ) {
    padType = "STR_PAD_RIGHT";
  }
  if ((padToGo = padLength - input.length) > 0) {
    if (padType === "STR_PAD_LEFT") {
      input = _strPadRepeater(padString, padToGo) + input;
    } else if (padType === "STR_PAD_RIGHT") {
      input = input + _strPadRepeater(padString, padToGo);
    } else if (padType === "STR_PAD_BOTH") {
      half = _strPadRepeater(padString, Math.ceil(padToGo / 2));
      input = half + input + half;
      input = input.substr(0, padLength);
    }
  }

  return input;
}

function str_replace(search, replace, subject, count) {
  // From: http://phpjs.org/functions
  // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  // +   improved by: Gabriel Paderni
  // +   improved by: Philip Peterson
  // +   improved by: Simon Willison (http://simonwillison.net)
  // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
  // +   bugfixed by: Anton Ongson
  // +      input by: Onno Marsman
  // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  // +    tweaked by: Onno Marsman
  // +      input by: Brett Zamir (http://brett-zamir.me)
  // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  // +   input by: Oleg Eremeev
  // +   improved by: Brett Zamir (http://brett-zamir.me)
  // +   bugfixed by: Oleg Eremeev
  // %          note 1: The count parameter must be passed as a string in order
  // %          note 1:  to find a global variable in which the result will be given
  // *     example 1: str_replace(' ', '.', 'Kevin van Zonneveld');
  // *     returns 1: 'Kevin.van.Zonneveld'
  // *     example 2: str_replace(['{name}', 'l'], ['hello', 'm'], '{name}, lars');
  // *     returns 2: 'hemmo, mars'
  var i = 0,
    j = 0,
    temp = "",
    repl = "",
    sl = 0,
    fl = 0,
    f = [].concat(search),
    r = [].concat(replace),
    s = subject,
    ra = Object.prototype.toString.call(r) === "[object Array]",
    sa = Object.prototype.toString.call(s) === "[object Array]";
  s = [].concat(s);
  if (count) {
    this.window[count] = 0;
  }

  for (i = 0, sl = s.length; i < sl; i++) {
    if (s[i] === "") {
      continue;
    }
    for (j = 0, fl = f.length; j < fl; j++) {
      temp = s[i] + "";
      repl = ra ? (r[j] !== undefined ? r[j] : "") : r[0];
      s[i] = temp.split(f[j]).join(repl);
      if (count && s[i] !== temp) {
        this.window[count] += (temp.length - s[i].length) / f[j].length;
      }
    }
  }
  return sa ? s : s[0];
}

function secToStr(sec_num) {
  sec_num = Math.floor(sec_num);
  var horas = Math.floor(sec_num / 3600);
  var minutos = Math.floor((sec_num - horas * 3600) / 60);
  var segundos = sec_num - horas * 3600 - minutos * 60;

  if (horas < 10) {
    horas = "0" + horas;
  }
  if (minutos < 10) {
    minutos = "0" + minutos;
  }
  if (segundos < 10) {
    segundos = "0" + segundos;
  }
  var tempo = horas + ":" + minutos + ":" + segundos;
  if (tempo.substr(0, 3) == "00:") tempo = tempo.substr(3, 5);
  return tempo;
}

/**
 * Esta função tem como finalidade tratar as mensagens de retorno do back-end e mostrar ao usuário
 */
function tratarMsgRetorno(dados) {
  var arrMsgs = montarMsgRetorno(dados);

  sysMsg("Status Transação.", arrMsgs.join("<br/>"));
}

function tratarMsgRetornoCallback(dados, callback) {
  var arrMsgs = montarMsgRetorno(dados);

  sysMsgCallback(
    "Status da Transação!",
    arrMsgs.join("<br/>"),
    BootstrapDialog.TYPE_DEFAULT,
    callback
  );
}

function montarMsgRetorno(dados) {
  var arrMsgs = [];
  $.each(dados, function (key, obj) {
    if (
      key == "alerta" ||
      key == "sucesso" ||
      key == "erro" ||
      key == "informacao" ||
      key == "atencao"
    ) {
      $.map(obj, function (o) {
        if (key == "alerta" || key == "atencao") {
          arrMsgs.push(
            '<i class="fa fa-circle-o text-yellow">&nbsp;&nbsp;' + o + "</i>"
          );
        } else if (key == "sucesso") {
          arrMsgs.push(
            '<i class="fa fa-circle-o text-green">&nbsp;&nbsp;' + o + "</i>"
          );
        } else if (key == "erro") {
          arrMsgs.push(
            '<i class="fa fa-circle-o text-red">&nbsp;&nbsp;' + o + "</i>"
          );
        }
      });
    }
  });

  return arrMsgs;
}
