﻿String.prototype.format = function () {
    var formatted = this;
    for (var i = 0; i < arguments.length; i++) {
        var regexp = new RegExp('\\{' + i + '\\}', 'gi');
        formatted = formatted.replace(regexp, arguments[i]);
    }
    return formatted;
};


var balaoMensagem = null;
var balaoErro = null;
var ItemsCarrinho = null;
var QuantidadeReservada = 0;
var ValorTotal = 0;
var ValorTotalExibicao = "";

var MensagemErro = "";
var MensagemExibicao = "";
var paises = "";
var ItemAtribuirDados = null;
var indice = 0;
var estados = "";
var abrirCarrinho = true;
var redirecionarCarrinho = false;
var cadastrando = false;
var sPath = window.location.pathname;
var sPage = sPath.substring(sPath.lastIndexOf('/') + 1).toLowerCase();


function decimal2moeda(num) {
    x = 0;
    if (num < 0) {
        num = Math.abs(num);
        x = 1;
    }
    if (isNaN(num)) num = "0";
    cents = Math.floor((num * 100 + 0.5) % 100);
    num = Math.floor((num * 100 + 0.5) / 100).toString();
    if (cents < 10) cents = "0" + cents;
    for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++)
        num = num.substring(0, num.length - (4 * i + 3)) + '.' + num.substring(num.length - (4 * i + 3));
    ret = num + ',' + cents;
    if (x == 1) ret = ' - ' + ret; return ret;
}

function TrocarLinguagem(Cultura) {
    $.ajax({
        type: "POST",
        url: "carrinho.aspx/TrocarLinguagem",
        contentType: "application/json; charset=utf-8",
        data: "{ 'Cultura' : '" + Cultura + "' }",
        dataType: "json",
        success: function (result) {
            var resultado = eval("(" + result.d + ")");

            if (resultado.Ret > 0) {

                var url = window.location.href;
                if (url.indexOf("?") > -1) {
                    url = url.substr(0, url.indexOf("?")).toLowerCase();
                }
                window.location = url;
            }
            else
                ExibirErroBalaoPosicional(resultado.Erro, "Carrinho");
        }
    });
}

function ExibirErroBalaoPosicional(Mensagem, tipo) {

    //Encontrar aqui a posicao do objeto escolhido (carrinho, login, valor....);
    switch (tipo) {
        case "Carrinho":
            ExibirErroBalao(Mensagem, 400);
            break;
        case "Timer":
            ExibirErroBalao(Mensagem, 580);
            break;
    }
}

function ExibirErroBalao(Erro, Padding) {
    EsconderBalaoMensagem();
    $("#balaoErroMsg").text("").append(Erro);
    $(balaoErro).css("padding-left", Padding + "px").stop(true, true).show().fadeOut(5000);
    $("#baloes").stop(true, true).show().fadeOut(5000);
}

function ExibirMensagemBalaoPosicional(Mensagem, tipo) {

    switch (tipo) {
        case "Chat":
            ExibirMensagemBalao(Mensagem, 30);
            break;
        case "Carrinho":
            ExibirMensagemBalao(Mensagem, 400);
            break;
        case "Timer":
            ExibirMensagemBalao(Mensagem, 580);
            break;
    }
}

function ExibirMensagemBalao(Mensagem, Padding) {
    EsconderBalaoErro();
    $("#balaoMensagemMsg").text("").append(Mensagem);
    $(balaoMensagem).css("padding-left", Padding + "px").stop(true, true).show().fadeOut(5000);
    $("#baloes").stop(true, true).show().fadeOut(5000);
}

function EsconderBalaoMensagem() {
    $(balaoMensagem).hide();
}

function EsconderBalaoErro() {
    $(balaoErro).hide();
}

function MontarNotificacoes() {
    if (QuantidadeReservada > 8)
        qtd = "Plus";
    else
        qtd = QuantidadeReservada;
    $("#imgNotificacao").attr('src', '/Images/BarraInferior/Notificacao/Notificacao' + qtd + '.png');

    if (QuantidadeReservada > 0 && abrirCarrinho) {
        $(".FecharPedido li").text("").append("<a id=\"fecharPedido\" class=\"Link\"> <img src=\"" + di_btnFecharPedido + "\" alt=\"" + di_AltFecharPedido + "\" /></a>");
    } else {
        $(".FecharPedido li").text("")
    }

}

function LimparTexto(texto) {
    if (texto == null || texto == "null" || texto == "undefied")
        return "";
    else
        return texto;
}

function MontarValorTotal() {
    $("#valorTotalExibicao").text("R$ " + decimal2moeda(ValorTotal));
}

function LimparEBuscarInformacoesIniciais() {
    ItemsCarrinho = null;
    FecharCarrinho();
    FecharCadastros();
    BuscarInformacoesIniciais();
    IniciarTimer();
}

function BuscarInformacoesIniciais() {
    $.ajax({
        type: "POST",
        url: "carrinho.aspx/CarregarInfosIniciais",
        contentType: "application/json; charset=utf-8",
        data: "{ }",
        dataType: "json",
        success: function (result) {
            var resultado = eval("(" + result.d + ")");

            if (resultado.Ret > 0) {
                ValorTotal = resultado.ValorTotal;
                QuantidadeReservada = resultado.Quantidade,
                ValorTotalExibicao = resultado.ValorExibicao;
                MontarValorTotal();
                MontarNotificacoes();
                if (resultado.Logado) {
                    $("#login").attr('href', "Logout.aspx");
                    $("#login img").attr('src', "Images/BarraInferior/Logout.png");
                }
            }
            else
                ExibirMensagemBalaoPosicional(resultado.Erro);
        }
    });
}

function AlterarValordoSeguro() {
    $.ajax({
        type: "POST",
        url: "carrinho.aspx/AlterarValordoSeguro",
        contentType: "application/json; charset=utf-8",
        data: "{ }",
        dataType: "json",
        success: function (result) {
            var resultado = eval("(" + result.d + ")");

            if (resultado.Ret > 0) {
                $(".ValorTotalSeguro").text("R$ " + decimal2moeda(resultado.ValorTotal));
            }
            else
                ExibirMensagemBalaoPosicional(resultado.Erro);
        }
    });
}


function CarregarCarrinhoCompleto(source) {
    //Source neste caso significa - Carrinho ou Master
    $.ajax({
        type: "POST",
        url: "carrinho.aspx/Carregar",
        contentType: "application/json; charset=utf-8",
        data: "{ }",
        dataType: "json",
        async: false,
        complete: function () {
            EsconderBalaoMensagem();
        },
        success: function (result) {
            resultado = eval("(" + result.d + ")");
            if (resultado.Ret == -1) {
                ExibirErroBalaoPosicional(resultado.Msg);
                return false;
            }
            ItemsCarrinho = resultado;
            MontarCarrinho(source);
            if (source == "Master") {
                ExpandirCarrinho();
            }
        }
    });
}

function ExpandirCarrinho() {
    $("#bottomHelperCarrinho").stop(false, false).animate({
        'height': '200px',
        'opacity': '100'
    });

    $("#bottomCarrinho").stop(false, false).animate({
        'height': '230px'
    });

    $("#bottomCarrinho").show();
    //$("#bottomCarrinho").show('slow');
    $("#bottomHelperCarrinho").addClass("Ativo");
    $("#dadosPromocionais").hide();
}

function FecharCarrinho() {
    $("#bottomHelperCarrinho").stop().animate({
        'height': '0px',
        'opacity': '0'
    });

    $("#bottomCarrinho").stop().animate({
        'height': '0px'
    });

    $("#bottomCarrinho").stop(true, false).fadeOut();
    $("#bottomHelperCarrinho").removeClass("Ativo");
    $("#dadosPromocionais").hide();
}

function RemoverMesaFechada(lugarID, apresentacaoID, source) {
    var mesa = null;
    indice = 0;
    $(ItemsCarrinho).each(function (index, value) {
        if (value.LugarID == lugarID && value.ApresentacaoID == apresentacaoID) {
            mesa = value;
            indice = index;
            return;
        }
    });

    if (mesa != null)
        RemoverItem(mesa, source, indice);
}

function Remover(carrinhoID, source) {
    var ingresso = null;
    indice = 0;
    $(ItemsCarrinho).each(function (index, value) {
        if (value.CarrinhoID == carrinhoID) {
            ingresso = value;
            indice = index;
            return;
        }
    });

    if (ingresso != null)
        RemoverItem(ingresso, source, indice);
}

function RemoverPacote(pacoteGrupo, source) {
    var pacote = null;
    indice = 0;
    $(ItemsCarrinho).each(function (index, value) {
        if (value.PacoteGrupo == pacoteGrupo) {
            pacote = value;
            indice = index;
            return;
        }
    });

    if (pacote != null)
        RemoverItem(pacote, source, indice);
}

function RemoverValeIngresso(ValeIngressoID, source) {
    var vir = null;
    indice = 0;
    $(ItemsCarrinho).each(function (index, value) {
        if (value.ValeIngressoID == ValeIngressoID) {
            vir = value;
            return;
        }
    });

    if (vir != null)
        RemoverItem(vir, source, indice);
}


function RemoverItem(item, source, indice) {
    var data = "";
    var url = "";
    var valor = item.TotalM;
    ItemsCarrinho.splice(indice, 1);
    var items = "";

    switch (source) {
        case "Master":
            items = "#itensCarrinhoBottom ";
            break;
        case "Carrinho":
            items = "#itensCarrinho ";
            break;
    }

    switch (item.Tipo) {
        case "A":
        case "P":
        case "C":
            data = "'CarrinhoID' : " + item.CarrinhoID;
            url = "carrinho.aspx/LiberarReserva";
            $(items + "div.Item" + item.CarrinhoID).hide();
            break;
        case "M":
            data = "'LugarID' : " + item.LugarID + ", 'ApresentacaoID' : " + item.ApresentacaoID;
            url = "carrinho.aspx/LiberarMesaFechada";
            $(items + "div.Lugar" + item.LugarID + "Apresentacao" + item.ApresentacaoID).hide();
            break;
        case "N":
        case "T":
            data = "'PacoteGrupo' : '" + item.PacoteGrupo + "'";
            url = "carrinho.aspx/LiberarPacote";
            $(items + "div.Grupo" + item.PacoteGrupo).hide();
            break;
        case "V":
            data = "'ValeIngressoID' : " + item.ValeIngressoID;
            url = "carrinho.aspx/LiberarVIR";
            $(items + "div.Vir" + item.ValeIngressoID).hide();
            break;
    }

    $.ajax({
        type: "POST",
        url: url,
        contentType: "application/json; charset=utf-8",
        data: "{" + data + "}",
        dataType: "json",
        beforeSend: function () {
            ExibirMensagemBalaoPosicional(di_MsgRemovendoItem, "Carrinho");
            $("#dadosPromocionais").hide();
        },
        complete: function () {
            IniciarTimer();
        },
        success: function (result) {
            var resultado = eval('(' + result.d + ')');
            if (resultado.Ret == "L") {
                QuantidadeReservada--;
                ValorTotal -= valor;
                switch (item.Tipo) {
                    case "A":
                    case "P":
                    case "C":
                        $(items + "div.Item" + item.CarrinhoID).remove();
                        ExibirMensagemBalaoPosicional(di_MsgIngressoRemovido, "Carrinho");
                        QuantidadeReservada = resultado.QuantidadeReservada;
                        break;
                    case "M":
                        $(items + "div.Lugar" + item.LugarID + "Apresentacao" + item.ApresentacaoID).remove();
                        ExibirMensagemBalaoPosicional(di_MsgMesaRemovida, "Carrinho");
                        break;
                    case "N":
                    case "T":
                        $(items + "div.Grupo" + item.PacoteGrupo).remove();
                        ExibirMensagemBalaoPosicional(di_MsgPacoteRemovido, "Carrinho");
                        break;
                    case "V":
                        $(items + "div.Vir" + item.ValeIngressoID).remove();
                        ExibirMensagemBalaoPosicional(di_MsgVIRRemovido, "Carrinho");
                        break;
                }

                if (QuantidadeReservada == 0) {
                    FecharCarrinho();
                    if (source = "Carrinho") {
                        $("#carrinhoVazio").show();
                        $("#mondialVazio").show();
                        $("#carrinho").hide();
                        $("#mondial").hide();
                    }
                }

                MontarValorTotal();
                MontarNotificacoes();
                AlterarValordoSeguro();
            }
            else {
                ExibirErroBalaoPosicional(resultado.Msg, "Carrinho");
            }
        }
    });
}

function MudarPrecoMesaFechada(lugarID, apresentacaoID, source) {
    var mesa = null;
    $(ItemsCarrinho).each(function () {
        if (this.LugarID == lugarID && this.ApresentacaoID == apresentacaoID) {
            mesa = this;
            return;
        }
    });

    if (mesa != null)
        MudarPreco(mesa, source);

}

function MudarPrecoCarrinho(carrinhoID, source) {
    var ingresso = null;
    $(ItemsCarrinho).each(function () {
        if (this.CarrinhoID == carrinhoID) {
            ingresso = this;
            return;
        }
    });

    if (ingresso != null)
        MudarPreco(ingresso, source);
}

function MudarPreco(Item, source) {
    var data = "";
    var url = "";
    var valor = Item.TotalM;

    var combo = null;
    var precoID = 0;
    var linha = null;

    switch (Item.Tipo) {
        case "A":
        case "P":
        case "C":
            linha = $(".Item" + Item.CarrinhoID)[0];
            combo = $(linha).children(".Preco").children(".Informacoes").children(".Preco").children(".SelectIngressos")[0];
            precoID = $(combo).children("option:selected").val();
            data = "{'CarrinhoID' : " + Item.CarrinhoID + ", 'PrecoID' : " + precoID + "}";
            url = "carrinho.aspx/MudarPreco";
            break;
        case "M":
            linha = $(".Lugar" + Item.LugarID + "Apresentacao" + Item.ApresentacaoID)[0];
            combo = $(linha).children(".Preco").children(".Informacoes").children(".Preco").children(".SelectIngressos")[0];
            precoID = $(combo).children("option:selected").val();
            data = "{'LugarID':" + Item.LugarID + ",'PrecoID':" + precoID + ",'ApresentacaoID':" + Item.ApresentacaoID + "}";
            url = "carrinho.aspx/MudarPrecoFechada";
            break;
        default:
            return false;
    }

    $.ajax({
        type: "POST",
        url: url,
        contentType: "application/json; charset=utf-8",
        data: data,
        dataType: "json",
        beforeSend: function () {
            ExibirMensagemBalaoPosicional("Alterando preço, por favor aguarde.", "Carrinho");
            $("#dadosPromocionais").hide();
        },
        complete: function () {
            IniciarTimer();
        },
        success: function (result) {
            var retorno = eval('(' + result.d + ')');
            if (retorno.Ret == 1) {
                ValorTotal -= Item.TotalM;
                SubstituirItemArray(Item, retorno);
                MontarCarrinho(source);
                MontarValorTotal();
                AlterarValordoSeguro();
                ExibirMensagemBalaoPosicional("Preço alterado com sucesso!", "Carrinho");
            }
            else if (retorno.Ret == -1) {
                ExibirErroBalaoPosicional("Não foi possível alterar o preço.", "Carrinho");
            }
        }
    });
}


function MontarCarrinho(source) {

    var html = "";
    var lugarID = 0;
    var pacoteGrupo = "";
    ValorTotal = 0;
    QuantidadeReservada = 0;

    var owner = "";
    switch (source) {
        case "Master":
            owner = "itensCarrinhoBottom";
            break;
        case "Carrinho":
            owner = "itensCarrinho";
            break;
    }
    $(ItemsCarrinho).each(function () {
        switch (this.Tipo) {
            case "P":
            case "C":
            case "A":
                html += "<div class=\"Item Item" + this.CarrinhoID + "\">";
                html += "<div class=\"Evento\">";
                html += "<ul class=\"Exibicao\">";
                html += "<li>" + di_Local + ":</li>";
                html += "<li>" + di_Evento + ":</li>";
                html += "<li>" + di_Apresentacao + ":</li>";
                html += "<li>" + di_Setor + ":</li>";
                if (source == "Carrinho")
                    html += "<li>" + di_Ingresso + ":</li>";
                html += "</ul>";
                html += "<ul class=\"Informacoes\">";
                html += "<li>" + this.Local + "</li>";
                html += "<li>" + this.Evento + "</li>";
                html += "<li>" + this.Apresentacao + "</li>";
                html += "<li>" + this.Setor + "</li>";
                if (source == "Carrinho")
                    html += "<li>" + this.Codigo + "</li>";
                html += "</ul>";
                html += "</div>";
                html += "<div class=\"Preco\">";
                var id = this.PrecoID;
                var status = this.Status;
                var serieID = this.SerieID;
                var speciaEvent = this.SpecialEvent;
                html += "<ul class=\"Exibicao\">";
                html += "<li>" + di_Preco + ":</li>";

                if (status.length == 0 && this.TemCota && this.ExibirDados)
                    html += "<li>" + di_Dados + ":</li>";

                html += "</ul>";
                html += "<ul class=\"Informacoes\">";
                html += " <li class=\"Preco\">";

                if (status.length == 0 && speciaEvent == 0) {
                    html += "<select class=\"SelectIngressos ColorCinza\" onchange=\"javascript:MudarPrecoCarrinho(" + this.CarrinhoID + ", '" + source + "'); void(0);\">";
                    $.each(this.Precos, function () {
                        if (this.ID == id)
                            html += "<option selected=\"selected\" value=\"" + this.ID + "\">" + this.Nome + "</option>";
                        else
                            html += "<option value=\"" + this.ID + "\">" + this.Nome + "</option>";
                    });
                    html += "</select>";
                }
                else {
                    html += this.Preco;
                }

                if (status.length > 0)
                    html += "<br />" + status;

                if (this.TemCota && this.ExibirDados && status.length == 0)
                    html += "<li class=\"DadosCota\"><a class='Link' onclick=\"javascript:AbrirDadosPromocionaisCarrinho(" + this.CarrinhoID + ", '" + source + "'); void(0);\"><img src='/Images/CarrinhoInferior/DadosPromocionais.gif' alt='Dados Promocionais'/><a></li>";

                html += "</ul>";
                html += "</div>";
                html += "<div class=\"Valor\">";
                html += "<ul class=\"Exibicao\">";
                html += "<li>" + di_Ingresso + ": </li>";
                html += "<li>" + di_Conveniencia + ": </li>";
                html += "<li>" + di_Subtotal + ": </li>";
                html += "</ul>";
                html += "<ul class=\"Informacoes\">";
                html += "<li>" + this.Valor + "</li>";
                html += "<li>" + this.Conveniencia + "</li>";
                html += "<li>" + this.Total + "</li>";
                html += "</ul>";
                html += "<ul class=\"Remover\">";
                html += " <li><a class=\"RemoverCarrinho\" onclick=\"javascript:Remover(" + this.CarrinhoID + ", '" + source + "'); void(0);\" style=\"cursor: pointer\"><img src=\"Images/remove.gif\" alt=\"Remover\" /></a></li>";
                html += "</ul>";
                html += "</div>";
                html += "</div>";

                break;

            case "M":
                html += "<div class=\"Item Lugar" + this.LugarID + "Apresentacao" + this.ApresentacaoID + "\">";
                html += "<div class=\"Evento\">";
                html += "<ul class=\"Exibicao\">";
                html += "<li>Local:</li>";
                html += "<li>" + di_Evento + ":</li>";
                html += "<li>" + di_Apresentacao + ":</li>";
                html += "<li>" + di_Setor + ":</li>";
                if (source == "Carrinho")
                    html += "<li>" + di_Ingresso + ":</li>";

                html += "</ul>";
                html += "<ul class=\"Informacoes\">";
                html += "<li>" + this.Local + "</li>";
                html += "<li>" + this.Evento + "</li>";
                html += "<li>" + this.Apresentacao + "</li>";
                html += "<li>" + this.Setor + "</li>";
                if (source == "Carrinho")
                    html += "<li>" + this.Codigo + "</li>";
                html += "</ul>";
                html += "</div>";

                html += "<div class=\"Preco\">";
                var id = this.PrecoID;
                var status = this.Status;

                html += "<ul class=\"Exibicao\">";
                html += "<li>" + di_Preco + ":</li>";

                if (status.length == 0 && this.TemCota && this.ExibirDados)
                    html += "<li class=\"DadosCota\">" + di_Dados + ":</li>";

                html += "</ul>";
                html += "<ul class=\"Informacoes\">";
                html += " <li class=\"Preco\">";

                if (status.length == 0) {
                    html += "<select class=\"SelectIngressos ColorCinza\" onchange=\"javascript:MudarPrecoMesaFechada(" + this.LugarID + ", " + this.ApresentacaoID + ", '" + source + "'); void(0);\">";
                    $.each(this.Precos, function () {
                        if (this.ID == id)
                            html += "<option selected=\"selected\" value=\"" + this.ID + "\">" + this.Nome + "</option>";
                        else
                            html += "<option value=\"" + this.ID + "\">" + this.Nome + "</option>";
                    });
                    html += "</select>";
                }
                else {
                    html += this.Preco;
                    html += "<br />" + this.Status;
                }

                if (this.TemCota > 0 && status.length == 0)
                    html += "<li><a class='Link' onclick=\"javascript:AbrirDadosPromocionaisMesaFechada(" + this.LugarID + ", " + this.ApresentacaoID + ", '" + source + "'); void(0);\"><img src='/Images/CarrinhoInferior/DadosPromocionais.gif' alt='Dados Promocionais'/></li>";

                html += "</ul>";
                html += "</div>";
                html += "<div class=\"Valor\">";
                html += "<ul class=\"Exibicao\">";
                html += "<li>" + di_Ingressos + ": </li>";
                html += "<li>" + di_Conveniencia + ": </li>";
                html += "<li>" + di_Subtotal + ": </li>";
                html += "</ul>";
                html += "<ul class=\"Informacoes\">";
                html += "<li>" + this.Valor + "</li>";
                html += "<li>" + this.Conveniencia + "</li>";
                html += "<li>" + this.Total + "</li>";
                html += "</ul>";

                html += "<ul class=\"Remover\">";
                html += " <li><a class=\"RemoverCarrinho\" onclick=\"javascript:RemoverMesaFechada(" + this.LugarID + ", " + this.ApresentacaoID + ", '" + source + "'); void(0);\" style=\"cursor: pointer\"><img src=\"Images/remove.gif\" alt=\"Remover\" /></a></li>";
                html += "</ul>";
                html += "</div>";
                html += "</div>";


                break;
            case "T":
            case "N":
                html += "<div class=\"Item Grupo" + this.PacoteGrupo + "\">";
                html += "<div class=\"Evento\">";
                html += "<ul class=\"Exibicao\">";
                html += "<li>" + di_Pacote + ":</li>";
                html += "</ul>";
                html += "<ul class=\"Informacoes\">";
                html += "<li>" + this.PacoteNome + "</li>";
                html += "</ul>";
                html += "</div>";

                html += "<div class=\"Preco\">";

                html += "<ul class=\"Exibicao\">";
                html += "<li>" + di_Preco + ":</li>";

                if (this.TemCota && this.ExibirDados && this.Status.length == 0)
                    html += "<li class=\"DadosCota\">Dados:</li>";

                html += "</ul>";
                html += "<ul class=\"Informacoes\">";
                html += " <li>";
                html += " - ";
                if (this.Status.length > 0) {
                    html += "<br /> " + this.Status;
                }

                if (this.TemCota && this.ExibirDados && this.Status.length == 0)
                    html += "<li><a class='Link' onclick=\"javascript:AbrirDadosPromocionaisPacote(" + this.PacoteGrupo + ", '" + source + "'); void(0);\"><img src='/Images/CarrinhoInferior/DadosPromocionais.gif' alt='Dados Promocionais'/></a></li>";

                html += "</ul>";
                html += "</div>";
                html += "<div class=\"Valor\">";
                html += "<ul class=\"Exibicao\">";
                html += "<li>" + di_Ingressos + ": </li>";
                html += "<li>" + di_Conveniencia + ": </li>";
                html += "<li>" + di_Subtotal + ": </li>";
                html += "</ul>";
                html += "<ul class=\"Informacoes\">";
                html += "<li>" + this.Valor + "</li>";
                html += "<li>" + this.Conveniencia + "</li>";
                html += "<li>" + this.Total + "</li>";
                html += "</ul>";
                html += "<ul class=\"Remover\">";
                html += " <li><a class=\"RemoverCarrinho\" onclick=\"javascript:RemoverPacote(" + this.PacoteGrupo + ", '" + source + "'); void(0);\" style=\"cursor: pointer\"><img src=\"Images/remove.gif\" alt=\"Remover\" /></a></li>";
                html += "</ul>";
                html += "</div>";
                html += "</div>";
                break;
            case "V":
                html += "<div class=\"Item Vir" + this.ValeIngressoID + "\">";
                html += "<div class=\"Evento\">";
                html += "<ul class=\"Exibicao\">";
                html += "<li>" + di_ValeIngresso + ":</li>";
                html += "<li>&nbsp;</li>";
                html += "</ul>";
                html += "<ul class=\"Informacoes\">";
                html += "<li>" + this.Nome + "</li>";
                html += "<li>" + this.Validade + "</li>";
                html += "</ul>";
                html += "</div>";

                html += "<div class=\"Preco\">";

                html += "<ul class=\"Exibicao\">";
                html += "<li>" + di_Preco + ":</li>";

                html += "</ul>";
                html += "<ul class=\"Informacoes\">";
                html += " <li>";
                html += " - ";
                if (this.Status.length > 0)
                    html += "<br /> " + this.Status;

                html += "</ul>";
                html += "</div>";
                html += "<div class=\"Valor\">";
                html += "<ul class=\"Exibicao\">";
                html += "<li>" + di_Subtotal + ": </li>";
                html += "</ul>";
                html += "<ul class=\"Informacoes\">";
                html += "<li>" + this.Valor + "</li>";
                html += "</ul>";
                html += "<ul class=\"Remover\">";
                html += " <li><a class=\"RemoverCarrinho\" onclick=\"javascript:RemoverValeIngresso(" + this.ValeIngressoID + "); void(0);\" style=\"cursor: pointer\"><img src=\"Images/remove.gif\" alt=\"Remover\" /></a></li>";
                html += "</ul>";
                html += "</div>";
                html += "</div>";
                break;
        };
        ValorTotal += this.TotalM;
        QuantidadeReservada++;
    });
    $("#" + owner).text("").append(html);

    if (source == "Carrinho" && QuantidadeReservada > 0) {
        $("#finalizarCarrinho").text("").append("<a id=\"ContinuarComprando\" style=\'cursor: pointer;'><img src=\"" + di_btnContinuarComprando + "\" alt=\"" + di_AltContinuarComprando + "\" /></a><a class=\"Finalizar\" style=\'cursor: pointer;'><img src=\"" + di_btnFinalizarPedido + "\" alt=\"" + di_AltFinalizar + "\" /></a>");
    }
}

function AbrirDadosPromocionaisMesaFechada(lugarID, apresentacaoID, source) {
    var mesa = null;
    indice = 0;
    $(ItemsCarrinho).each(function (index, value) {
        if (value.LugarID == lugarID && value.ApresentacaoID == apresentacaoID) {
            mesa = value;
            indice = index;
            return;
        }
    });

    if (mesa != null) {
        AbrirDadosPromocionais(mesa, source, "");
    }
}

function AbrirDadosPromocionaisCarrinho(carrinhoID, source) {
    var ingresso = null;
    indice = 0;
    $(ItemsCarrinho).each(function (index, value) {
        if (value.CarrinhoID == carrinhoID) {
            ingresso = value;
            return;
        }
    });

    if (ingresso != null) {
        AbrirDadosPromocionais(ingresso, source, "");
    }
}

function AbrirDadosPromocionaisPacote(pacoteGrupo, source) {
    var pacote = null;
    indice = 0;
    $(ItemsCarrinho).each(function (index, value) {
        if (value.PacoteGrupo == pacoteGrupo) {
            pacote = value;
            indice = index;
            return;
        }
    });

    if (pacote != null) {
        AbrirDadosPromocionais(pacote, source, "");
    }
}

function AbrirDadosPromocionais(item, source, mensagem) {
    ItemAtribuirDados = item;

    var html = "";
    if (mensagem.length > 0) {
        html += "<div id=\"MensagemErroDados\"> <div class=\"msgError\">" + mensagem + "</div></div> ";
    }

    if (item.ExibirTermos) {
        $("#termoAceitacao").show();
        $("#aceitoTermosCota").attr('checked', false);
    }
    else {
        $("#aceitoTermosCota").attr('checked', true).hide();
        $("#termoAceitacao").hide();
    }

    $(item.ListaCotaItem).each(function () {

        if (!this.ExibirDados)
            return true;

        html += "<div id=\"Ingresso" + this.IngressoID + "\" class=\"Item " + (this.Verificado ? "Verificado" : "") + "\">";

        html += "<div class=\"Alertas AlertaTopo" + this.IngressoID + "\"></div>";
        if (this.Nominal) {
            html += "<div class='Destaque Identificacao'>Identificação - País e CPF</div>";
            if (this.DonoID > 0 && this.Verificado) {
                html += "<div class='Dados Cliente" + this.IngressoID + "'>" + this.DonoCPF;
                html += "</div>";

                html + "<div class=\"Alertas AlertaCliente" + this.IngressoID + "\"></div>";
            }
            else {
                html += "<div class=\"Dados Input Cliente" + this.IngressoID + "\"><select id=\"Pais" + this.IngressoID + "\">" + paises + "</select><input id=\"Identificacao" + this.IngressoID + "\" class=\"DonoCPF\" type=\"text\" maxlength=\"30\"/></div>";
                html += "<div class=\"Alertas AlertaCliente" + this.IngressoID + "\"><div class='msgAlert'>Informe o País e o CPF do dono deste ingresso.</div></div>";
            }
        }

        if (this.ParceiroID > 0 && !this.ValidaBin) {
            if (this.TextoValidacao.length > 0)
                html += "<div class=\"Destaque Codigo\">Código Promocional</div>";
            else
                html += "<div class=\"Destaque Codigo\">" + this.TextoValidacao + "</div>";

            if (this.CodigoPromocional.length > 0 && this.Verificado) {
                html += "<div class=\"Dados Codigo" + this.IngressoID + "\">" + this.CodigoPromocional + "</div>";
                html + "<div class=\"Alertas AlertaCodigo" + this.IngressoID + "\"></div>";
            }
            else {
                html += "<div class=\"Dados Input Codigo" + this.IngressoID + "\"><input id=\"Codigo" + this.IngressoID + "\" type=\"text\" value=\"" + this.CodigoPromocional + "\" maxlength=\"100\"/></div>";
                html += "<div class=\"Alertas AlertaCodigo" + this.IngressoID + "\"><div class='msgAlert'>Informe o Código Promocional deste ingresso.</div></div>";
            }
        }

        html += "</div>";
    });
    $("#itemsDadosPromocionais").text("").append(html);

    var left = (screen.width - 447) / 2;
    var top = (screen.height - 461) / 2;

    $("#dadosPromocionais").stop(false, false).animate({
        'left': left + 'px',
        'top': top + 'px'
    }).show();
}

function AdicionarItemCarrinhoArray(Item, ehLista) {

    if (ehLista) {
        $(Item).each(function () {
            AdicionarItem(this);
        });
    }
    else
        AdicionarItem(Item);

    FecharCarrinho();
    IniciarTimer();
}

function AdicionarItem(Item) {
    ValorTotal += Item.TotalM;
    MontarValorTotal();
    QuantidadeReservada++;
    MontarNotificacoes();
    if (ItemsCarrinho != null) {
        ItemsCarrinho.splice(0, 0, Item);
    }
}

function SubstituirItemArray(ItemAntigo, ItemNovo) {
    indice = 0;
    switch (ItemAntigo.Tipo) {
        case "M":
            $(ItemsCarrinho).each(function (index, value) {
                if (value.LugarID == ItemAntigo.LugarID && value.ApresentacaoID == ItemAntigo.LugarID) {
                    indice = index;
                }
            });
            break;
        case "N":
        case "T":
            $(ItemsCarrinho).each(function (index, value) {
                if (value.PacoteGrupo == ItemAntigo.PacoteGrupo) {
                    indice = index;
                }
            });
            break;
        default:
            $(ItemsCarrinho).each(function (index, value) {
                if (value.CarrinhoID == ItemAntigo.CarrinhoID) {
                    indice = index;
                }
            });
            break;
    }
    ItemsCarrinho.splice(indice, 1, ItemNovo);
}

function RemoverItemArray(ItemAntigo) {
    indice = 0;
    switch (ItemAntigo.Tipo) {
        case "M":
            $(ItemsCarrinho).each(function (index, value) {
                if (value.LugarID == ItemAntigo.LugarID && value.ApresentacaoID == ItemAntigo.LugarID) {
                    indice = index;
                }
            });
            break;
        case "N":
        case "T":
            $(ItemsCarrinho).each(function (index, value) {
                if (value.PacoteGrupo == ItemAntigo.PacoteGrupo) {
                    indice = index;
                }
            });
            break;
        default:
            $(ItemsCarrinho).each(function (index, value) {
                if (value.CarrinhoID == ItemAntigo.CarrinhoID) {
                    indice = index;
                }
            });
            break;
    }
    ItemsCarrinho.splice(indice, 1);
    MontarNotificacoes();
}

function Cadastro(clienteid, ordem) {
    this.ClienteID = clienteid;
    this.Ordem = ordem;
}

var quantidadeCadastros = 0;
var cadastroAtual = 0;
var cadastros = null;

function AdicionarCadastro(clienteID, ordem) {
    var cadastro = new Cadastro(clienteID, ordem);
    cadastros.splice(cadastros.length, 0, cadastro);
}

function BuscarCadastro(ordem) {
    var id = 0;
    $.each(cadastros, function (index, value) {
        if (value.Ordem != ordem)
            return true;

        id = value.ClienteID;
        return false;
    });
    return id;
}

function MontarDadosCliente(clienteID, cliente, obrigatoriedade, mensagem, novo) {
    quantidadeCadastros++;
    AdicionarCadastro(clienteID, quantidadeCadastros);

    var html = "<div class=\"" + (novo ? "Novo" : "Antigo") + " Item Ordem" + quantidadeCadastros + "\">";

    if (mensagem.length > 0)
        html += "<div class=\"Alertas\"><div class=\"msgAlert\">" + mensagem + "</div></div>";

    if (obrigatoriedade.Nome)
        html += "<div><div class=\"Destaque\">" + di_NomeCompleto + ":</div><div class=\"Dados\"><input type=\"text\" id=\"cleNome\" value=\"" + LimparTexto(cliente.Nome) + "\" maxlength=\"50\" /> </div></div>";

    if (obrigatoriedade.RG)
        html += "<div><div class=\"Destaque\">" + di_RG + ":</div><div class=\"Dados\"><input type=\"text\"id=\"cleRG\" value=\"" + LimparTexto(cliente.RG) + "\"  maxlength=\"30\"/> </div></div>";

    if (obrigatoriedade.CPF) {
        html += "<div><div class=\"Destaque\">" + di_Pais + ":</div><div class=\"Dados\"><select id=\"clePais\">" + paises + "</select></div></div>";
        html += "<div><div class=\"Destaque\">" + di_CPF + ":</div><div class=\"Dados\"><input type=\"text\" id=\"cleCPF\" value=\"" + LimparTexto(cliente.CPF) + "\"  maxlength=\"30\" /> </div></div>";
    }

    if (obrigatoriedade.CPFResponsavel)
        html += "<div><div class=\"Destaque\">" + di_CPFResponsavel + ":</div><div class=\"Dados\"><input type=\"text\" id=\"cleCPFResponsavel\" value=\"" + LimparTexto(cliente.CPFResponsavel) + "\"  maxlength=\"30\"/> </div></div>";

    if (obrigatoriedade.Telefone)
        html += "<div><div class=\"Destaque\">" + di_Telefone + ":</div><div class=\"Dados\"><input type=\"text\" id=\"cleTelefoneResidencialDDD\" style=\"width: 20px;\" value=\"" + LimparTexto(cliente.TelefoneResidencialDDD) + "\"  maxlength=\"2\"/> - <input type=\"text\" id=\"cleTelefoneResidencial\" value=\"" + LimparTexto(cliente.TelefoneResidencial) + "\"  maxlength=\"80\"/> </div></div>";

    if (obrigatoriedade.Celular)
        html += "<div><div class=\"Destaque\">" + di_Celular + ":</div><div class=\"Dados\"><input type=\"text\" id=\"cleTelefoneCelularDDD\" style=\"width: 20px;\" value=\"" + LimparTexto(cliente.TelefoneCelularDDD) + "\"  maxlength=\"2\" /> - <input type=\"text\" id=\"clienteTelefoneCelular\"  value=\"" + LimparTexto(cliente.TelefoneCelular) + "\"  maxlength=\"8\"/> </div></div>";

    if (obrigatoriedade.DataNascimento)
        html += "<div><div class=\"Destaque\">" + di_DataNascimento + ":</div><div class=\"Dados\"><input type=\"text\" id=\"cleDataNascimentoDia\" style=\"width: 20px;\"  value=\"" + LimparTexto(cliente.DataNascimentoDia) + "\"  maxlength=\"2\"/>/<input type=\"text\" style=\"width: 20px;\" id=\"cleDataNascimentoMes\" value=\"" + LimparTexto(cliente.DataNascimentoMes) + "\"  maxlength=\"2\" />/<input type=\"text\" id=\"cleDataNascimentoAno\" style=\"width: 40px;\" value=\"" + LimparTexto(cliente.DataNascimentoAno) + "\" maxlength=\"4\"/> </div></div>";

    if (obrigatoriedade.Email)
        html += "<div><div class=\"Destaque\">" + di_Email + ":</div><div class=\"Dados\"><input type=\"text\" id=\"cleEmail\" value=\"" + LimparTexto(cliente.Email) + "\" maxlength=\"100\"/> </div></div>";

    if (obrigatoriedade.CEPCliente)
        html += "<div><div class=\"Destaque\">" + di_Cep + ":</div><div class=\"Dados\"><input type=\"text\" id=\"cleCEPCliente\" value=\"" + LimparTexto(cliente.CEPCliente) + "\" maxlength=\"8\"/> </div></div>";

    if (obrigatoriedade.EnderecoCliente) {
        html += "<div><div class=\"Destaque\">" + di_Endereco + ":</div><div class=\"Dados\"><input type=\"text\" id=\"cleEnderecoCliente\" value=\"" + LimparTexto(cliente.EnderecoCliente) + "\" maxlength=\"60\"/> </div></div>";
        html += "<div><div class=\"Destaque\">" + di_Numero + ":</div><div class=\"Dados\"><input type=\"text\" id=\"cleEnderecoNumeroCliente\" value=\"" + LimparTexto(cliente.EnderecoNumeroCliente) + "\" maxlength=\"10\"/> </div></div>";
        html += "<div><div class=\"Destaque\">" + di_Complemento + ":</div><div class=\"Dados\"><input type=\"text\" id=\"cleEnderecoComplementoCliente\" value=\"" + LimparTexto(cliente.EnderecoComplementoCliente) + "\" maxlength=\"50\"/> </div></div>";
    }

    if (obrigatoriedade.BairroCliente)
        html += "<div><div class=\"Destaque\">" + di_Bairro + ":</div><div class=\"Dados\"><input type=\"text\" id=\"cleBairroCliente\" value=\"" + LimparTexto(cliente.BairroCliente) + "\" maxlength=\"100\"/> </div></div>";

    if (obrigatoriedade.CidadeCliente)
        html += "<div><div class=\"Destaque\">" + di_Cidade + ":</div><div class=\"Dados\"><input type=\"text\" id=\"cleCidadeCliente\" value=\"" + LimparTexto(cliente.CidadeCliente) + "\" maxlength=\"50\"/> </div></div>";

    if (obrigatoriedade.EstadoCliente)
        html += "<div><div class=\"Destaque\">" + di_Estado + ":</div><div class=\"Dados\"><select id=\"cleEstadoCliente\"> " + estados + " </select> </div></div>";

    html += "<div class=\"Erros\"></div>";
    html += "</div>";
    $("#itemsDadosCadastrais").append(html);
}

function AbrirPedirLogin() {
    var left = (screen.width - 447) / 2;
    var top = (screen.height - 461) / 2;

    $("#fazerLogin").stop().animate({
        'left': left + 'px',
        'top': top + 'px'
    }).show('fast');
    $("#dadosPromocionais").hide('fast');
}

function AbrirCadastros() {
    //cadastroAtual = 1;

    var left = (screen.width - 447) / 2;
    var top = (screen.height - 461) / 2;

    $("#dadosCadastrais").stop(false, false).animate({
        'left': left + 'px',
        'top': top + 'px'
    }).show('fast');


    $("#cadastroAtual").text("Cadastro: " + cadastroAtual + " de " + quantidadeCadastros);

    $(".Ordem" + cadastroAtual).show();
    $("#dadosPromocionais").hide('fast');
}

function FecharCadastros() {
    $(".Errado").remove();
    $(".Incluido").remove();

    $("#dadosCadastrais").fadeOut('fast');
    $("#dadosPromocionais").fadeIn('fast');
    $("#itemsDadosCadastrais").text("");
    cadastrando = false;
}

function ProximoCadastro() {
    if (cadastroAtual > 0)
        $(".Ordem" + cadastroAtual).hide();

    cadastroAtual++;
    if (cadastroAtual > quantidadeCadastros)
        FecharCadastros();
    else
        AbrirCadastros();
}

function ajaxCall(url, data, call, async)
{
    ajaxCallComplete(url, data, call, async, null, null, null, null)
}

function ajaxCallComplete(url, data, call, async, before, beforeParams, complete, completeParams)
{
    $.ajax({
        type: 'POST',
        url: url,
        data: JSON.stringify(data),
        async: async,
        dataType: 'json',
        contentType: 'application/json',
        beforeSend: function ()
        {
            if (before != null)
                if (beforeParams == null)
                    before();
                else
                    before(beforeParams);
        },
        success: function (retorno)
        {
            if (call != null)
                call(eval("(" + retorno.d + ")"));
        },
        complete: function ()
        {
            if (complete != null)
                if (completeParams != null)
                    complete(completeParams)
                else
                    complete();
        }
    });

}

$(function () {

    balaoMensagem = $("#balaoMensagem");
    balaoErro = $("#balaoErro");

    $(".Link, #chat").hover(function (e) {

        var id = $(this).attr("id");
        var mensagem = "";
        switch (id) {
            case "chat":
                mensagem = di_MsgAtendimentoOnline;
                ExibirMensagemBalaoPosicional(mensagem, "Chat");
                break;
            case "notificacao":
                if (!abrirCarrinho)
                    return false;

                mensagem = di_MsgReferenteCarrinho;
                ExibirMensagemBalaoPosicional(mensagem, "Carrinho");
                break;
            case "timer":
                mensagem = di_MsgReferenteSite;
                ExibirMensagemBalaoPosicional(mensagem, "Timer");
                break;
            default:
                return false;
        }

    });

    $("#bottomHelper .Link").click(function (e) {
        var id = $(this).attr("id");
        switch (id) {
            case "notificacao":
            case "visualizarCarrinho":
                if (QuantidadeReservada == 0) {
                    ExibirErroBalaoPosicional(di_MsgNaoExisteReserva, "Carrinho");
                    return;
                }
                else if (!abrirCarrinho && !redirecionarCarrinho)
                    return;
                else if (redirecionarCarrinho) {
                    document.location = "carrinho.aspx";
                    return;
                }

                if ($("#bottomHelperCarrinho").hasClass("Ativo"))
                    FecharCarrinho();
                else {
                    if (ItemsCarrinho == null) {
                        ExibirMensagemBalaoPosicional(di_AguardeCarregarCarrinho, "Carrinho");
                        CarregarCarrinhoCompleto("Master");
                    }
                    else {
                        MontarCarrinho('Master');
                        ExpandirCarrinho();
                    }
                }

                break;
            default:
                return false;
        }
    });

    $("#cancelarDados").click(function () {
        $("#dadosPromocionais").hide();
    });

    $("#cancelarCadastro").click(function () {
        FecharCadastros();
    });

    $("#loginCancelar").click(function () {
        $("#fazerLogin").hide();
    });

    $("#continuarCadastro").click(function () {
        if (cadastrando) {
            ExibirErroBalaoPosicional(di_MsgAguardeCadastroAnterior, "Carrinho");
            return false;
        }

        var clienteID = BuscarCadastro(cadastroAtual);

        var cliente = "{";
        var temErro = false;
        $.each($(".Ordem" + cadastroAtual + " :input"), function () {
            if ($(this).val().length == 0) {
                if (!$(this).hasClass("InvalidField"))
                    $(this).addClass("InvalidField")
                temErro = true;
            }
            else
                $(this).removeClass("InvalidField")

            if (cliente.length > 1)
                cliente += ", ";
            cliente += "'" + $(this).attr("Id").replace("cle", "") + "' : '" + $(this).val() + "'";
        });
        cliente += "}";

        if (temErro)
            return false;

        //var encoded = Sys.Serialization.JavaScriptSerializer.serialize(cliente);

        $.ajax({
            type: "POST",
            url: "Cadastro.aspx/Cadastrar",
            contentType: "application/json; charset=utf-8",
            data: "{ 'clienteID' : '" + clienteID + "', 'cliente': \"" + cliente + "\"}",
            dataType: "json",
            beforeSend: function () {
                ExibirMensagemBalaoPosicional(di_MsgEfetuandoCadastro.format(cadastroAtual, quantidadeCadastros), "Carrinho");
            },
            complete: function () {
                EsconderBalaoMensagem();
                cadastrando = false;
            },
            success: function (result) {
                var retorno = eval("(" + result.d + ")");
                switch (retorno.Ret) {
                    case 1:
                        //Cadastro OK
                        ProximoCadastro();
                        break;
                    case -2:
                    case -1:
                        $(".Ordem" + cadastroAtual).children(".Erros").text("");
                        $("#itemsDadosCadastrais").animate({ scrollTop: $("#itemsDadosCadastrais").attr("scrollHeight") }, 1000);
                        $.each(retorno.Mensagens, function () {
                            $(".Ordem" + cadastroAtual).children(".Erros").append("<div>" + this + "</div>");
                        });
                        break;
                }
            }
        });


    });

    var verificando = false;

    $("#continuarDados").click(function () {

        if (verificando) {
            ExibirErroBalaoPosicional(di_MsgAguardeVerificados, "Carrinho");
            return false;
        }


        if (!$("#aceitoTermosCota").attr('checked')) {
            ExibirErroBalaoPosicional(di_MsgAceitarTermos, "Carrinho");
            return false;
        }

        var temErro = false;
        var Items = "[";
        $.each($("#dadosPromocionais div.Item"), function () {
            if ($(this).hasClass("Verificado"))
                return true; //É um "Continue" pq não precisa verificar denovo

            var owner = $(this).attr("id");
            var ingressoID = owner.substring(8, owner.length);

            var temParceiro = false;
            var codigo = "";
            var nominal = false;
            var identificacao = "";
            var pais = "";


            if ($(this).children(".Identificacao").length > 0) {
                identificacao = $("#Identificacao" + ingressoID).val();

                pais = $("#Pais" + ingressoID).val();

                if (identificacao.length == 0 || isNaN(identificacao) || identificacao.length > 30) {
                    if (!$("#Identificacao" + ingressoID).hasClass("InvalidField"))
                        $("#Identificacao" + ingressoID).addClass("InvalidField");

                    if (identificacao.length > 30)
                        ExibirErroBalaoPosicional(di_MsgIdenticacaoConterMaximo, "Carrinho");
                    temErro = true;
                }
                else {
                    $("#Identificacao" + ingressoID).removeClass("InvalidField");
                }


                if (pais.length == 0) {
                    if (!$("#Pais" + ingressoID).hasClass("InvalidField"))
                        $("#Pais" + ingressoID).addClass("InvalidField");
                    temErro = true;
                }
                else
                    $("#Pais" + ingressoID).removeClass("InvalidField");

                //Validar a porra do CPF X Pais
                nominal = true;
            }

            if ($(this).children(".Codigo").length > 0) {
                codigo = $("#Codigo" + ingressoID).val();
                if (codigo.length == 0 || codigo.length > 50) {
                    if (!$("#Codigo" + ingressoID).hasClass("InvalidField"))
                        $("#Codigo" + ingressoID).addClass("InvalidField");

                    if (codigo.length > 50)
                        ExibirErroBalaoPosicional(di_MsgCodigoPromocionaolConterMaximo, "Carrinho");

                    temErro = true;
                }
                else
                    $("#Codigo" + ingressoID).removeClass("InvalidField");

                temParceiro = true;
            }
            if (Items.length > 1)
                Items += ", ";

            Items += "{ 'IngressoID' : " + ingressoID + ", ";
            Items += "'Nominal' : " + nominal + ", ";
            Items += "'Identificacao' : '" + identificacao + "', ";
            Items += "'Pais' : '" + pais + "', ";
            Items += "'TemParceiro' : " + temParceiro + ", ";
            Items += "'Codigo' : '" + codigo + "' }";
        });
        Items += "]";

        if (temErro)
            return false;



        //var encoded = Sys.Serialization.JavaScriptSerializer.serialize(Items);
        var todosOK = true;

        cadastros = new Array();
        quantidadeCadastros = 0;
        cadastroAtual = 0;
        var podeCadastrar = false;
        verificando = true;
        $.ajax({
            type: "POST",
            url: "carrinho.aspx/VerificarCota",
            contentType: "application/json; charset=utf-8",
            data: "{ 'cotas' : \"" + Items + "\" }",
            dataType: "json",
            beforeSend: function () {
                ExibirMensagemBalaoPosicional(di_MsgVerficando, "Carrinho");
            },
            complete: function () {
                verificando = false;
                if (todosOK) {
                    $("#dadosPromocionais").hide();
                    ExibirMensagemBalaoPosicional(di_MsgDadosVerificadosSucesso, "Carrinho");
                }
                else if (quantidadeCadastros > 0 && !podeCadastrar)
                    AbrirPedirLogin();
                else if (quantidadeCadastros > 0)
                    ProximoCadastro();
            },
            success: function (result) {
                var retorno = eval("(" + result.d + ")");
                if (retorno.Ret == -1) {
                    ExibirErroBalaoPosicional(retorno.Msg, "Carrinho");
                    todosOK = false;
                    return false;
                }

                podeCadastrar = retorno.PodeCadastrar;

                $.each(retorno.Dados, function () {
                    switch (this.TipoRetorno) {
                        //OK                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
                        case 0:
                            if (this.Nominal) {
                                $(".AlertaCliente" + this.IngressoID).text("").append("<div class=\"msgConfirm Incluido\">" + di_MsgClienteIncluidoSucesso + "</div>");
                                $(".Cliente" + this.IngressoID).text("").append("<div class='Dados Cliente" + this.IngressoID + "'>" + this.Identificacao + "</div>");
                            }

                            if (this.ParceiroID > 0 && !this.ValidaBin) {
                                $(".AlertaCodigo" + this.IngressoID).text("").append("<div class=\"msgConfirm Incluido\">" + di_CodigoIncluidoSucesso + "</div>");
                                $(".Codigo" + this.IngressoID).text("").append("<div class=\"Dados Codigo" + this.IngressoID + "\">" + this.Codigo + "</div>");
                            }

                            var clienteID = this.ClienteID;
                            var clienteCPF = this.Identificacao;
                            var codigoPromocinal = this.Codigo;

                            $.each(ItemAtribuirDados.ListaCotaItem, function (index, value) {
                                if (value.IngressoID != this.IngressoID)
                                    return true;

                                value.DonoID = clienteID;
                                value.DonoCPF = clienteCPF;
                                value.CodigoPromocional = codigoPromocinal;
                                value.Verificado = true;
                            });

                            break;
                        //Cliente                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
                        case 1:
                            $(".AlertaCliente" + this.IngressoID).text("").append("<div class=\"msgError Errado\">" + this.Mensagem + "</div>");
                            todosOK = false;
                            break;
                        //Cliente Não Existe                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
                        case 2:
                            //Aqui ignora mensagem e abre a nova janela
                            MontarDadosCliente(0, this.Cliente, this.Obrigatoriedade, this.Mensagem, true);
                            todosOK = false;
                            break;
                        //Cliente Invalido                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
                        case 3:
                            if (this.EncClienteID != "0") {
                                //Aqui abre a nova janela falando q tem campo inválido
                                MontarDadosCliente(this.EncClienteID, this.Cliente, this.Obrigatoriedade, this.Mensagem, false);
                            }
                            else
                                $(".AlertaCliente" + this.IngressoID).text("").append("<div class=\"msgError Errado\">" + this.Mensagem + "</div>");
                            todosOK = false;
                            break;
                        //QuantidadeCliente                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                        case 5:
                            $(".AlertaCliente" + this.IngressoID).text("").append("<div class=\"msgError Errado\">" + this.Mensagem + "</div>");
                            todosOK = false;
                            break;
                        //Codigo                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
                        case 6:
                            $(".AlertaCodigo" + this.IngressoID).text("").append("<div class=\"msgError Errado\">" + this.Mensagem + "</div>");
                            todosOK = false;
                            break;
                        //Quantidade //Ingresso                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
                        case 4:
                        case 7:
                            $(".AlertaTopo" + this.IngressoID).text("").append("<div class=\"msgError\">" + this.Mensagem + "</div>");
                            todosOK = false;
                            break;
                        case 8:
                            $(".AlertaCliente" + this.IngressoID).text("").append("<div class=\"msgError Errado\">" + this.Mensagem + "</div>");
                            todosOK = false;
                            break;
                    }
                });
            }
        });
    });

    $("#finalizarCarrinho a.Finalizar, #fecharPedido").live('click', function () {

        var Assistencia = false;
        var verificados = true;
        var itemNaoVerificado = null;

        if (ItemsCarrinho == null)
            CarregarCarrinhoCompleto("Carrinho");

        $.each(ItemsCarrinho, function (index, value) {
            //Esta expirado ou não tem cota ou não precisa adicionar dados (é só quantidade)
            if (this.Status.length > 0 || !this.TemCota || !this.ExibirDados)
                return true;

            $.each(value.ListaCotaItem, function () {
                if (!this.Verificado) {
                    verificados = false;
                    return false;
                }
            });

            if (!verificados) {
                itemNaoVerificado = value;
                return false;
            }
        });

        if (!verificados) {
            AbrirDadosPromocionais(itemNaoVerificado, "Carrinho", di_MsgPromoNaoVerificado);
            return false;
        }

        var redirecionar = false;
        var pagina = "";
        var paginaAtual = sPage;


        if (paginaAtual == "carrinho.aspx") {
            if (!$(".rdAceito").attr('checked') && !$(".rdNaoAceito").attr('checked')) {
                ExibirErroBalaoPosicional("Selecione uma opção de Assistência", "Carrinho");
                return false;
            }
            else if ($(".rdAceito").attr('checked'))
                Assistencia = true;
            else if ($(".rdNaoAceito").attr('checked'))
                Assistencia = false;
        }

        if (paginaAtual == "serie.aspx" || paginaAtual == "css.aspx")
            VerificarAntesDeAbrir(true);
        else {
            $.ajax({
                type: "POST",
                url: "carrinho.aspx/VerificarCarrinho",
                contentType: "application/json; charset=utf-8",
                data: "{ 'Pagina' : '" + paginaAtual + "' , 'Assistencia' :" + Assistencia + "}",
                dataType: "json",
                beforeSend: function () {
                    ExibirMensagemBalaoPosicional(di_MsgVerificandoItens, "Carrinho");
                },
                complete: function () {
                    if (redirecionar)
                        document.location = pagina; ;
                },
                success: function (result) {
                    var retorno = eval('(' + result.d + ')');

                    redirecionar = (retorno.Ret == 1);

                    if (retorno.Ret < 0)
                        ExibirErroBalaoPosicional(retorno.Msg, "Carrinho");
                    else
                        pagina = retorno.Pagina;
                }
            });
        }
    });

    $("#ContinuarComprando").live('click', function () {

        document.location = "Default.aspx";

    });

    $("#topoBalaoMensagem").click(function () {
        EsconderBalaoMensagem();
    });

    $("#topoBalaoErro").click(function () {
        EsconderBalaoErro();
    });


    switch (sPage) {
        case "carrinho.aspx":
        case "confirmacaotef.aspx":
        case "confirmacaohsbc.aspx":
        case "confirmacao.aspx":
        case "itaupagamento.aspx":
        case "taxaentrega.aspx":
        case "checkout.aspx":
            abrirCarrinho = false;
            $("#visualizarCarrinho").removeClass("Link");
            $("#visualizarCarrinho").css('cursor', 'default');
            $("#notificacao").removeClass("Link");
            $("#notificacao").css('cursor', 'default');
            break;
        case "formadepagamento.aspx":
            abrirCarrinho = false;
            redirecionarCarrinho = true;
            break;
    }


    //Aqui busca Quantidade Reservada e Valor Total
    BuscarInformacoesIniciais();


    paises += "<option value=\"África do Sul\">África do Sul</option>";
    paises += "<option value=\"Albânia\">Albânia</option>";
    paises += "<option value=\"Alemanha\">Alemanha</option>";
    paises += "<option value=\"Andorra\">Andorra</option>";
    paises += "<option value=\"Angola\">Angola</option>";
    paises += "<option value=\"Anguilla\">Anguilla</option>";
    paises += "<option value=\"Antigua\">Antigua</option>";
    paises += "<option value=\"Arábia Saudita\">Arábia Saudita</option>";
    paises += "<option value=\"Argentina\">Argentina</option>";
    paises += "<option value=\"Armênia\">Armênia</option>";
    paises += "<option value=\"Aruba\">Aruba</option>";
    paises += "<option value=\"Austrália\">Austrália</option>";
    paises += "<option value=\"Áustria\">Áustria</option>";
    paises += "<option value=\"Azerbaijão\">Azerbaijão</option>";
    paises += "<option value=\"Bahamas\">Bahamas</option>";
    paises += "<option value=\"Bahrein\">Bahrein</option>";
    paises += "<option value=\"Bangladesh\">Bangladesh</option>";
    paises += "<option value=\"Barbados\">Barbados</option>";
    paises += "<option value=\"Bélgica\">Bélgica</option>";
    paises += "<option value=\"Benin\">Benin</option>";
    paises += "<option value=\"Bermudas\">Bermudas</option>";
    paises += "<option value=\"Botsuana\">Botsuana</option>";
    paises += "<option value=\"Brasil\" selected=\"selected\">Brasil</option>";
    paises += "<option value=\"Brunei\">Brunei</option>";
    paises += "<option value=\"Bulgária\">Bulgária</option>";
    paises += "<option value=\"Burkina Fasso\">Burkina Fasso</option>";
    paises += "<option value=\"Cabo Verde\">Cabo Verde</option>";
    paises += "<option value=\"Camarões\">Camarões</option>";
    paises += "<option value=\"Camboja\">Camboja</option>";
    paises += "<option value=\"Canadá\">Canadá</option>";
    paises += "<option value=\"Cazaquistão\">Cazaquistão</option>";
    paises += "<option value=\"Chade\">Chade</option>";
    paises += "<option value=\"Chile\">Chile</option>";
    paises += "<option value=\"China\">China</option>";
    paises += "<option value=\"Cidade do Vaticano\">Cidade do Vaticano</option>";
    paises += "<option value=\"Colômbia\">Colômbia</option>";
    paises += "<option value=\"Congo\">Congo</option>";
    paises += "<option value=\"Coréia do Sul\">Coréia do Sul</option>";
    paises += "<option value=\"Costa do Marfim\">Costa do Marfim</option>";
    paises += "<option value=\"Costa Rica\">Costa Rica</option>";
    paises += "<option value=\"Croácia\">Croácia</option>";
    paises += "<option value=\"Dinamarca\">Dinamarca</option>";
    paises += "<option value=\"Djibuti\">Djibuti</option>";
    paises += "<option value=\"Dominica\">Dominica</option>";
    paises += "<option value=\"EUA\">EUA</option>";
    paises += "<option value=\"Egito\">Egito</option>";
    paises += "<option value=\"El Salvador\">El Salvador</option>";
    paises += "<option value=\"Emirados Árabes\">Emirados Árabes</option>";
    paises += "<option value=\"Equador\">Equador</option>";
    paises += "<option value=\"Eritréia\">Eritréia</option>";
    paises += "<option value=\"Escócia\">Escócia</option>";
    paises += "<option value=\"Eslováquia\">Eslováquia</option>";
    paises += "<option value=\"Eslovênia\">Eslovênia</option>";
    paises += "<option value=\"Espanha\">Espanha</option>";
    paises += "<option value=\"Estônia\">Estônia</option>";
    paises += "<option value=\"Etiópia\">Etiópia</option>";
    paises += "<option value=\"Fiji\">Fiji</option>";
    paises += "<option value=\"Filipinas\">Filipinas</option>";
    paises += "<option value=\"Finlândia\">Finlândia</option>";
    paises += "<option value=\"França\">França</option>";
    paises += "<option value=\"Gabão\">Gabão</option>";
    paises += "<option value=\"Gâmbia\">Gâmbia</option>";
    paises += "<option value=\"Gana\">Gana</option>";
    paises += "<option value=\"Geórgia\">Geórgia</option>";
    paises += "<option value=\"Gibraltar\">Gibraltar</option>";
    paises += "<option value=\"Granada\">Granada</option>";
    paises += "<option value=\"Grécia\">Grécia</option>";
    paises += "<option value=\"Guadalupe\">Guadalupe</option>";
    paises += "<option value=\"Guam\">Guam</option>";
    paises += "<option value=\"Guatemala\">Guatemala</option>";
    paises += "<option value=\"Guiana\">Guiana</option>";
    paises += "<option value=\"Guiana Francesa\">Guiana Francesa</option>";
    paises += "<option value=\"Guiné-bissau\">Guiné-bissau</option>";
    paises += "<option value=\"Haiti\">Haiti</option>";
    paises += "<option value=\"Holanda\">Holanda</option>";
    paises += "<option value=\"Honduras\">Honduras</option>";
    paises += "<option value=\"Hong Kong\">Hong Kong</option>";
    paises += "<option value=\"Hungria\">Hungria</option>";
    paises += "<option value=\"Iêmen\">Iêmen</option>";
    paises += "<option value=\"Ilhas Cayman\">Ilhas Cayman</option>";
    paises += "<option value=\"Ilhas Cook\">Ilhas Cook</option>";
    paises += "<option value=\"Ilhas Curaçao\">Ilhas Curaçao</option>";
    paises += "<option value=\"Ilhas Marshall\">Ilhas Marshall</option>";
    paises += "<option value=\"Ilhas Turks & Caicos\">Ilhas Turks & Caicos</option>";
    paises += "<option value=\"Ilhas Virgens (brit.)\">Ilhas Virgens (brit.)</option>";
    paises += "<option value=\"Ilhas Virgens(amer.)\">Ilhas Virgens(amer.)</option>";
    paises += "<option value=\"Ilhas Wallis e Futuna\">Ilhas Wallis e Futuna</option>";
    paises += "<option value=\"Índia\">Índia</option>";
    paises += "<option value=\"Indonésia\">Indonésia</option>";
    paises += "<option value=\"Inglaterra\">Inglaterra</option>";
    paises += "<option value=\"Irlanda\">Irlanda</option>";
    paises += "<option value=\"Islândia\">Islândia</option>";
    paises += "<option value=\"Israel\">Israel</option>";
    paises += "<option value=\"Itália\">Itália</option>";
    paises += "<option value=\"Jamaica\">Jamaica</option>";
    paises += "<option value=\"Japão\">Japão</option>";
    paises += "<option value=\"Jordânia\">Jordânia</option>";
    paises += "<option value=\"Kuwait\">Kuwait</option>";
    paises += "<option value=\"Latvia\">Latvia</option>";
    paises += "<option value=\"Líbano\">Líbano</option>";
    paises += "<option value=\"Liechtenstein\">Liechtenstein</option>";
    paises += "<option value=\"Lituânia\">Lituânia</option>";
    paises += "<option value=\"Luxemburgo\">Luxemburgo</option>";
    paises += "<option value=\"Macau\">Macau</option>";
    paises += "<option value=\"Macedônia\">Macedônia</option>";
    paises += "<option value=\"Madagascar\">Madagascar</option>";
    paises += "<option value=\"Malásia\">Malásia</option>";
    paises += "<option value=\"Malaui\">Malaui</option>";
    paises += "<option value=\"Mali\">Mali</option>";
    paises += "<option value=\"Malta\">Malta</option>";
    paises += "<option value=\"Marrocos\">Marrocos</option>";
    paises += "<option value=\"Martinica\">Martinica</option>";
    paises += "<option value=\"Mauritânia\">Mauritânia</option>";
    paises += "<option value=\"Mauritius\">Mauritius</option>";
    paises += "<option value=\"México\">México</option>";
    paises += "<option value=\"Moldova\">Moldova</option>";
    paises += "<option value=\"Mônaco\">Mônaco</option>";
    paises += "<option value=\"Montserrat\">Montserrat</option>";
    paises += "<option value=\"Nepal\">Nepal</option>";
    paises += "<option value=\"Nicarágua\">Nicarágua</option>";
    paises += "<option value=\"Niger\">Niger</option>";
    paises += "<option value=\"Nigéria\">Nigéria</option>";
    paises += "<option value=\"Noruega\">Noruega</option>";
    paises += "<option value=\"Nova Caledônia\">Nova Caledônia</option>";
    paises += "<option value=\"Nova Zelândia\">Nova Zelândia</option>";
    paises += "<option value=\"Omã\">Omã</option>";
    paises += "<option value=\"Palau\">Palau</option>";
    paises += "<option value=\"Panamá\">Panamá</option>";
    paises += "<option value=\"Papua-nova Guiné\">Papua-nova Guiné</option>";
    paises += "<option value=\"Paquistão\">Paquistão</option>";
    paises += "<option value=\"Peru\">Peru</option>";
    paises += "<option value=\"Polinésia Francesa\">Polinésia Francesa</option>";
    paises += "<option value=\"Polônia\">Polônia</option>";
    paises += "<option value=\"Porto Rico\">Porto Rico</option>";
    paises += "<option value=\"Portugal\">Portugal</option>";
    paises += "<option value=\"Qatar\">Qatar</option>";
    paises += "<option value=\"Quênia\">Quênia</option>";
    paises += "<option value=\"Rep. Dominicana\">Rep. Dominicana</option>";
    paises += "<option value=\"Rep. Tcheca\">Rep. Tcheca</option>";
    paises += "<option value=\"Reunion\">Reunion</option>";
    paises += "<option value=\"Romênia\">Romênia</option>";
    paises += "<option value=\"Ruanda\">Ruanda</option>";
    paises += "<option value=\"Rússia\">Rússia</option>";
    paises += "<option value=\"Saipan\">Saipan</option>";
    paises += "<option value=\"Samoa Americana\">Samoa Americana</option>";
    paises += "<option value=\"Senegal\">Senegal</option>";
    paises += "<option value=\"Serra Leone\">Serra Leone</option>";
    paises += "<option value=\"Seychelles\">Seychelles</option>";
    paises += "<option value=\"Singapura\">Singapura</option>";
    paises += "<option value=\"Síria\">Síria</option>";
    paises += "<option value=\"Sri Lanka\">Sri Lanka</option>";
    paises += "<option value=\"St. Kitts & Nevis\">St. Kitts & Nevis</option>";
    paises += "<option value=\"St. Lúcia\">St. Lúcia</option>";
    paises += "<option value=\"St. Vincent\">St. Vincent</option>";
    paises += "<option value=\"Sudão\">Sudão</option>";
    paises += "<option value=\"Suécia\">Suécia</option>";
    paises += "<option value=\"Suiça\">Suiça</option>";
    paises += "<option value=\"Suriname\">Suriname</option>";
    paises += "<option value=\"Tailândia\">Tailândia</option>";
    paises += "<option value=\"Taiwan\">Taiwan</option>";
    paises += "<option value=\"Tanzânia\">Tanzânia</option>";
    paises += "<option value=\"Togo\">Togo</option>";
    paises += "<option value=\"Trinidad & Tobago\">Trinidad & Tobago</option>";
    paises += "<option value=\"Tunísia\">Tunísia</option>";
    paises += "<option value=\"Turquia\">Turquia</option>";
    paises += "<option value=\"Ucrânia\">Ucrânia</option>";
    paises += "<option value=\"Uganda\">Uganda</option>";
    paises += "<option value=\"Uruguai\">Uruguai</option>";
    paises += "<option value=\"Venezuela\">Venezuela</option>";
    paises += "<option value=\"Vietnã\">Vietnã</option>";
    paises += "<option value=\"Zaire\">Zaire</option>";
    paises += "<option value=\"Zâmbia\">Zâmbia</option>";
    paises += "<option value=\"Zimbábue\">Zimbábue</option>";

    //estados += "<option selected="selected" value=""></option>";
    estados += "<option value=\"AC\">AC</option>";
    estados += "<option value=\"AL\">AL</option>";
    estados += "<option value=\"AM\">AM</option>";
    estados += "<option value=\"AP\">AP</option>";
    estados += "<option value=\"BA\">BA</option>";
    estados += "<option value=\"CE\">CE</option>";
    estados += "<option value=\"DF\">DF</option>";
    estados += "<option value=\"ES\">ES</option>";
    estados += "<option value=\"GO\">GO</option>";
    estados += "<option value=\"MA\">MA</option>";
    estados += "<option value=\"MG\">MG</option>";
    estados += "<option value=\"MS\">MS</option>";
    estados += "<option value=\"MT\">MT</option>";
    estados += "<option value=\"PA\">PA</option>";
    estados += "<option value=\"PB\">PB</option>";
    estados += "<option value=\"PE\">PE</option>";
    estados += "<option value=\"PI\">PI</option>";
    estados += "<option value=\"PR\">PR</option>";
    estados += "<option value=\"RJ\">RJ</option>";
    estados += "<option value=\"RN\">RN</option>";
    estados += "<option value=\"RO\">RO</option>";
    estados += "<option value=\"RR\">RR</option>";
    estados += "<option value=\"RS\">RS</option>";
    estados += "<option value=\"SP\" selected=\"selected\">SP</option>";
    estados += "<option value=\"SC\">SC</option>";
    estados += "<option value=\"SE\">SE</option>";
    estados += "<option value=\"TO\">TO</option>";

});



