﻿var Frete = {
    get: function (cep) {
        var serviceCarrinho = new ServiceCarrinho();

        var list = serviceCarrinho.CalcularFrete(cep);

        return list;
    },

    valid: function () {
       /* if (!Carrinho.validGiftPromocional())
            return false;*/


        var countJogoAmericano = Carrinho.validJogoAmericano();

        if (countJogoAmericano > 0 && countJogoAmericano < 4) {
            exibirDialogo("ui-custom-bad", "Alerta!", "Não é possível comprar uma quantidade menor que 4 JA's.");
            return false;
        }


        if (!Carrinho.isGiftCard()) {
            if (isNaN($('#ctl00_ContentPlaceHolder1_txtCEP1').val()) && retirarnaloja === false) {
                exibirDialogo("ui-custom-bad", "Alerta!", "Verifique o CEP informado.");
                $('#ctl00_ContentPlaceHolder1_txtCEP1').focus();
                return false;
            }

            if (isNaN($('#ctl00_ContentPlaceHolder1_txtCEP2').val()) && retirarnaloja === false) {
                exibirDialogo("ui-custom-bad", "Alerta!", "Verifique o CEP informado.");
                $('#ctl00_ContentPlaceHolder1_txtCEP2').focus();
                return false;
            }

            if ($('#ctl00_ContentPlaceHolder1_txtCEP1').val() == '' && retirarnaloja === false) {
                exibirDialogo("ui-custom-bad", "Alerta!", "Verifique o CEP informado.");
                $('#ctl00_ContentPlaceHolder1_txtCEP1').focus();
                return false;
            }

            if ($('#ctl00_ContentPlaceHolder1_txtCEP2').val() == '' && retirarnaloja === false) {
                exibirDialogo("ui-custom-bad", "Alerta!", "Verifique o CEP informado.");
                $('#ctl00_ContentPlaceHolder1_txtCEP2').focus();
                return false;
            }
        }
        /* GOOGLE ANALYTICS */
        pageTracker._trackPageview('Carrinho/CalcularFrete');
        return true;
    }
}

var Carrinho = {
    add: function (item) {

        //var jsonItem = '{"id":1,"nome":"Produto Genial","imagem":"imagem.jpg","descricao":"Esse produto contém muitas informações relevantes para o Mandela.","especificacao":"especificacao","quantidade":10,"valorReal":10,"valorFinal":1,"extras":"extras"}';
        var object = JSON.parse(item);
        var serviceCarrinho = new ServiceCarrinho();


        var ret = serviceCarrinho.Add(object);


        if (ret != -1) {
            exibirDialogoCarrinho("ui-custom-bad", "Produto Adicionado", "Produto adicionado ao carrinho.");
        }
        else {
            exibirDialogoCarrinho("ui-custom-bad", "Erro!", "Falha ao adicionar o produto no carrinho.");
        }

        Carrinho.updateTotal('itemCarrinho');

        /* GOOGLE ANALYTICS */
        pageTracker._trackPageview('Carrinho/Adicionar');

        viewFinalizarCompra();

        serviceCarrinho = null;
    },

    addList: function (itens) {


        var object = [];

        for (var i = 0; i < itens.length; i++) {

            var obj = JSON.parse(itens[i]);
            object.push(obj);
        }

        var serviceCarrinho = new ServiceCarrinho();
        var ret = serviceCarrinho.AddList(object);

        Carrinho.updateTotal('itemCarrinho');

        /* GOOGLE ANALYTICS */
        pageTracker._trackPageview('Carrinho/AdicionarPelaComposicao');

        viewFinalizarCompra();

        serviceCarrinho = null;

        if (ret != -1) {
            window.location = ROOT_PATH +"carrinho.aspx";
        }
        else {
            exibirDialogoCarrinho("ui-custom-bad", "Erro!", "Falha ao adicionar o produto no carrinho.");
        }
    },

    update: function (id, quantidade, especificacao) {
        var serviceCarrinho = new ServiceCarrinho();
        serviceCarrinho.Update(id, quantidade, especificacao);
        serviceCarrinho = null;

        /* GOOGLE ANALYTICS */
        pageTracker._trackPageview('Carrinho/Atualizar');

        window.location = "/carrinho.aspx";
    },

    containsGiftCard: function () {
        var serviceCarrinho = new ServiceCarrinho();
        var ret = serviceCarrinho.ContainsGiftCard();
        serviceCarrinho = null;

        return ret;

    },

    isGiftCard: function () {
        var serviceCarrinho = new ServiceCarrinho();
        var ret = serviceCarrinho.IsGiftCard();
        serviceCarrinho = null;

        return ret;

    },

    setGiftCard: function (values) {
        var serviceCarrinho = new ServiceCarrinho();
        var ret = serviceCarrinho.SetGiftCard(values);
        serviceCarrinho = null;

        /* GOOGLE ANALYTICS */
        pageTracker._trackPageview('Carrinho/SetGiftCard');

        window.location = ROOT_PATH +"carrinho.aspx";

        return ret;
    },

    remove: function (id, especificacao) {

        $("#dialogFeedback").html('<p><span class="dialog-error"></span>Deseja realmente remover o item ?</p>');

        $("#dialogFeedback").dialog({
            modal: true,
            resizable: false,
            dialogClass: typeof (classe) != "undefined" ? classe : "",
            width: 300,
            height: "auto",
            title: "Alerta!",
            buttons: {
                'SIM': function () {
                    var serviceCarrinho = new ServiceCarrinho();
                    var ret = serviceCarrinho.Remove(id, especificacao);

                    if (ret != -1) {
                        /* GOOGLE ANALYTICS */
                        pageTracker._trackPageview('Carrinho/Remover');
                        window.location = ROOT_PATH +"carrinho.aspx";
                    }
                    else {

                    }
                    serviceCarrinho = null;
                },
                'NÃO': function () {
                    $(this).dialog('close');
                }
            }
        });


        return false;
    },

    removeAll: function () {
        var serviceCarrinho = new ServiceCarrinho();
        serviceCarrinho.RemoveAll();

        Carrinho.updateTotal('itemCarrinho');

        serviceCarrinho = null;
    },

    getTotal: function () {
        var serviceCarrinho = new ServiceCarrinho();
        var total = serviceCarrinho.GetTotal();
        serviceCarrinho = null;

        return total;
    },

    getValor: function () {
        var serviceCarrinho = new ServiceCarrinho();
        var total = serviceCarrinho.GetValor();
        serviceCarrinho = null;

        return total;
    },

    get: function () {
        var serviceCarrinho = new ServiceCarrinho();
        var list = serviceCarrinho.Get();
        serviceCarrinho = null;

        return list;
    },

    updateTotal: function (elementName) {
        var total = Carrinho.getTotal();
        // console.log($("#" + elementName + " a"));
        $("#" + elementName).html('<a href="' + ROOT_PATH + 'carrinho.aspx">(' + total + ')' + ' Itens no Carrinho</a>');
        //('(559599) testes').match(/^(\([0-9]+\)) (\w+)/)[1]
    },

    applyDiscount: function () {
        var serviceCarrinho = new ServiceCarrinho();
        serviceCarrinho.ApplyDiscount(true);
    },

    validJogoAmericano: function () {
        var serviceCarrinho = new ServiceCarrinho();
        var ret = serviceCarrinho.ValidJogoAmericano();

        return ret;
    },

    validGiftPromocional: function () {
        var serviceCarrinho = new ServiceCarrinho();
        var ret = serviceCarrinho.ValidGiftPromo();
        if (!ret) {
            $("#dialogFeedback").html('<p><span class="dialog-error"></span>É necessário existir ao menos 01(um) produto com a tag NOKIA para utilizar o seu GiftCard Promocional!</p>');

            $("#dialogFeedback").dialog({
                modal: true,
                resizable: false,
                dialogClass: typeof (classe) != "undefined" ? classe : "",
                width: 300,
                height: "auto",
                title: "Erro!",
                buttons: {
                    'OK': function () {
                        $(this).dialog('close');
                    }
                }
            });
        }

        return ret;
    }



}





function enviarComprador() {
    var url = null;

    var transacao = true;


    //if ($("#ctl00_ContentPlaceHolder1_txtSeuEmail").val() != '') {
    //    url = "/Util/Services/registrarCompra.aspx";
    //}
    //else {
        url = ROOT_PATH +"Util/Services/inserirClienteTransacao.aspx";
    //    transacao = false;
    //}

    //if (parseFloat($('#ctl00_ContentPlaceHolder1_valorTotal').html().replace("R$", "")) < 0) {
    //    url = "/Util/Services/registrarCompra.aspx";
    //}

    $.post(url,
    {
        nome: encodeURIComponent($("#ctl00_ContentPlaceHolder1_txtNomeC").val()),
        email: $("#ctl00_ContentPlaceHolder1_txtEmailC").val(),
        endereco: encodeURIComponent($("#ctl00_ContentPlaceHolder1_txtEndC").val()),
        numero: $("#ctl00_ContentPlaceHolder1_txtNumC").val(),
        complemento: encodeURIComponent($("#ctl00_ContentPlaceHolder1_txtComC").val()),
        cep: $("#ctl00_ContentPlaceHolder1_txtCEPC").val(),
        vTotal: $("#ctl00_ContentPlaceHolder1_valorTotal").html(),
        emailSenderGiftCard: $("#ctl00_ContentPlaceHolder1_txtSeuEmail").val(),
        nomeSenderGiftCard: $("#ctl00_ContentPlaceHolder1_txtSeuNome").val(),
        emailgiftCard: $("#ctl00_ContentPlaceHolder1_txtEmailAmigo").val(),
        nomegiftCard: $("#ctl00_ContentPlaceHolder1_txtNomeAmigo").val(),
        cpf: $("#ctl00_ContentPlaceHolder1_txtCPFC").val(),
        cidade: encodeURIComponent($("#ctl00_ContentPlaceHolder1_txtCidadeC").val()),
        estado: encodeURIComponent($("#ctl00_ContentPlaceHolder1_txtEstadoC").val()),
        ddd: $("#ctl00_ContentPlaceHolder1_txtDDDC").val(),
        telefone: $("#ctl00_ContentPlaceHolder1_txtTelefoneC").val(),
        bairro: encodeURIComponent($("#ctl00_ContentPlaceHolder1_txtBairroC").val())
    },
    function (ret) {
        if (ret != "0") {
            pageTracker._trackPageview('Carrinho/FinalizarCompra');

            $("#ctl00_ContentPlaceHolder1_cpf").val($("#ctl00_ContentPlaceHolder1_txtCPFC").val());

            //if (transacao) {
                //For GA 
                //var transacaoId = ret;
                //var totalTransacao = Carrinho.getValor();

                //Contabiliza vendas com Google Analytics
                //gaCallTrans(transacaoId, totalTransacao);
            //}

            document.forms['aspnetForm'].method = 'POST';
            document.forms['aspnetForm'].submit();
            $('#dialog').dialog('close');
        }
        else {
            exibirDialogo("ui-custom-bad", "Erro", ret);
        }

    });
}




function validarCPF(cpf) {
    if (cpf.length < 11)
        return false;

    var numeros, digitos, soma, i, resultado, digitos_iguais;
    digitos_iguais = 1;

    for (i = 0; i < cpf.length - 1; i++) {
        if (cpf.charAt(i) != cpf.charAt(i + 1)) {
            digitos_iguais = 0;
            break;
        }
    }

    if (!digitos_iguais) {
        numeros = cpf.substring(0, 9);
        digitos = cpf.substring(9);
        soma = 0;

        for (i = 10; i > 1; i--)
            soma += numeros.charAt(10 - i) * i;

        resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
        if (resultado != digitos.charAt(0))
            return false;

        numeros = cpf.substring(0, 10);
        soma = 0;

        for (i = 11; i > 1; i--)
            soma += numeros.charAt(11 - i) * i;

        resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
        if (resultado != digitos.charAt(1))
            return false;
        return true;
    }
    else
        return false;
}

function validarGiftCard() {
    if ($("#ctl00_ContentPlaceHolder1_txtGifts").val() == '') {
        exibirDialogo("ui-custom-bad", "Alerta!", "Informe o código do GIFT CARD.");
        $('#ctl00_ContentPlaceHolder1_txtGifts').focus();
        return false;
    }    
    
    return true;
}


function promptCPF() {

    $("#dialogFeedback").html('<p><span class="dialog-error"></span>Para concluir a compra é necessário que você informe o seu CPF.</p><input type="text" id="txtCPFCompra" />');

    $("#dialogFeedback").dialog({
        modal: true,
        resizable: false,
        dialogClass: typeof (classe) != "undefined" ? classe : "",
        width: 300,
        height: "auto",
        title: "Atenção!",
        buttons: {
            'OK': function () {
                var cpf = $("#txtCPFCompra").val();
                if (!validarCPF(cpf)) {
                    exibirDialogo("ui-custom-bad", "Alerta!", "O CPF informado é inválido.");
                    return false;
                }

                if (parseFloat($('#ctl00_ContentPlaceHolder1_valorTotal').innerHTML.replace("R$", "")) < 0) {
                    $("#ctl00_ContentPlaceHolder1_hiddenTipoCompra").val() = "gift";
                    $('#dialog').dialog('open');
                    $('#dialog').parent().appendTo("form");
                    return false;
                }

                pageTracker._trackPageview('Carrinho/FinalizarCompra');
            },
            'CANCELAR': function () {
                $(this).dialog('close');
            }
        }
    });

}

function enviarGiftCard() {

    if ($('#ctl00_ContentPlaceHolder1_txtSeuNome').val() == '') {
        exibirDialogo("ui-custom-bad", "Alerta!", "Informe o seu nome.");
        $('#ctl00_ContentPlaceHolder1_txtSeuNome').focus();
        return false;
    }

    if ($('#ctl00_ContentPlaceHolder1_txtSeuEmail').val() == '') {
        exibirDialogo("ui-custom-bad", "Alerta!", "Informe o seu e-mail.");
        $('#ctl00_ContentPlaceHolder1_txtSeuEmail').focus();
        return false;
    }

    if ($('#ctl00_ContentPlaceHolder1_txtNomeAmigo').val() == '') {
        exibirDialogo("ui-custom-bad", "Alerta!", "Informe o nome do seu amigo.");
        $('#ctl00_ContentPlaceHolder1_txtNomeAmigo').focus();
        return false;
    }

    if ($('#ctl00_ContentPlaceHolder1_txtEmailAmigo').val() == '') {
        exibirDialogo("ui-custom-bad", "Alerta!", "Informe o e-mail do seu amigo.");
        $('#ctl00_ContentPlaceHolder1_txtEmailAmigo').focus();
        return false;
    }

    $('#ctl00_ContentPlaceHolder1_hiddenSeuNome').val($('#ctl00_ContentPlaceHolder1_txtSeuNome').val());
    $('#ctl00_ContentPlaceHolder1_hiddenSeuEmail').val($('#ctl00_ContentPlaceHolder1_txtSeuEmail').val());
    $('#ctl00_ContentPlaceHolder1_hiddenNomeAmigo').val($('#ctl00_ContentPlaceHolder1_txtNomeAmigo').val());
    $('#ctl00_ContentPlaceHolder1_hiddenEmailAmigo').val($('#ctl00_ContentPlaceHolder1_txtEmailAmigo').val());

    $('#ctl00_ContentPlaceHolder1_txtNomeC').val($('#ctl00_ContentPlaceHolder1_txtSeuNome').val());
    $('#ctl00_ContentPlaceHolder1_txtEmailC').val($('#ctl00_ContentPlaceHolder1_txtSeuEmail').val());

    $('#giftCard').dialog('close');

    $('#dialog').dialog('open');

    return $('#dialog').parent().appendTo("form");
}
var retirarnaloja = false;

function validarFrete() {

	if (Carrinho.isGiftCard()) {
		retirarnaloja = true;
		$('#ctl00_ContentPlaceHolder1_hiddenSessao').val("retirarNaLoja");
		$('#ctl00_ContentPlaceHolder1_hiddenTipoEnvio').val("Fixo");
		$('#ctl00_ContentPlaceHolder1_hiddenValorFrete').val(0);
		$('#giftCard').dialog('open');
		return false;
	}

    if ($("input[name=freteTipo]:checked").length == 0 && retirarnaloja === false) {
        exibirDialogo("ui-custom-bad", "Alerta!", "Selecione uma forma de envio!");
        return false;
    }


    if (Carrinho.get().length == 0) {
        exibirDialogo("ui-custom-bad", "Alerta!", "Seu Carrinho está vazio! Selecione algum produto.");
        return false;
    }
    else {
        if (Frete.valid()) {
            var value = $('#ctl00_ContentPlaceHolder1_hiddenValorFrete').val().replace('R$', '');
            if (!Carrinho.isGiftCard()) {
                if (value == '' || parseFloat(value) <= 0) {
                    if (retirarnaloja === false) {
                        exibirDialogo("ui-custom-bad", "Alerta!", "É necessário que calcule o frete para finalizar a compra.");
                        return false;
                    }
                   
                }
            }
            if (Carrinho.containsGiftCard()) {
                $('#giftCard').dialog('open');
            }
            else {                
                $('#dialog').dialog('open');
                $('#dialog').parent().appendTo("form");


            }
        }
    }
    /* GOOGLE ANALYTICS */
    pageTracker._trackPageview('Carrinho/FinalizarCompra');


    return false;
}

function S4() {
    return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
}

function guid() {
    return (S4() + S4());
}

function removeClassValidator() {
    $("#ctl00_ContentPlaceHolder1_txtNomeC").removeClass("validate[required]");
    $("#ctl00_ContentPlaceHolder1_txtEmailC").removeClass("validate[required,custom[email]]");
    $("#ctl00_ContentPlaceHolder1_txtEndC").removeClass("validate[required]");
    $("#ctl00_ContentPlaceHolder1_txtNumC").removeClass("validate[required]");

    $("#ctl00_ContentPlaceHolder1_txtCEPC").removeClass("validate[required]");

    $("#ctl00_ContentPlaceHolder1_txtCPFC").removeClass("validate[required,custom[cpf]]");
    $("#ctl00_ContentPlaceHolder1_txtCidadeC").removeClass("validate[required]");
    $("#ctl00_ContentPlaceHolder1_txtEstadoC").removeClass("validate[required]");
    $("#ctl00_ContentPlaceHolder1_txtDDDC").removeClass("validate[required,custom[onlyNumber]]");
    $("#ctl00_ContentPlaceHolder1_txtTelefoneC").removeClass("validate[required]");
    $("#ctl00_ContentPlaceHolder1_txtBairroC").removeClass("validate[required]");

    $(".formError").remove();
}


$(function () {
	$(".btRetirar").click(function (e) {
		e.preventDefault();
		$(".fEnvio").remove();
		$("input.cep1").val("");
		$("input.cep2").val("");
		retirarnaloja = true;
		$('#ctl00_ContentPlaceHolder1_hiddenSessao').val("retirarNaLoja")
		$('#ctl00_ContentPlaceHolder1_hiddenTipoEnvio').val("Fixo");
		$('#ctl00_ContentPlaceHolder1_hiddenValorFrete').val(0);
		$("#precoRetirarnaLoja").show();
	});

	$(".btFrete").click(function (e) {
		e.preventDefault();
		if (!Frete.valid()) return;
		retirarnaloja = false;
		$('#ctl00_ContentPlaceHolder1_hiddenSessao').val("")
		$("#precoRetirarnaLoja").hide();
		var fretes = Frete.get($("input.cep1").val() + $("input.cep2").val());

		var parent = $(this).parents("li").next();
		var index = -1;


		$("li.formasEnvio").show();
		$("li.fEnvio").remove();

		if (fretes) {
			for (var i = 0; i < fretes.length; i++) {

				if (fretes[i].valor == "0,00")
					return;


				if (fretes[i].tipo == "CARGO" && fretes.length > 1) {
					var index = i;
					continue;
				}


				var input = $("<input />")
                            .attr("type", "radio")
                            .val(fretes[i].tipo)
                            .attr("id", "freteTipo_" + i)
                            .attr("name", "freteTipo");

				var spanL = $("<span />")
                                .addClass("left");

				spanL.append(input);


				var spanR = $("<span />")
                                .addClass("right")
                                .append((fretes[i].tipo + (index != -1 ? (" / " + fretes[index].tipo) : "")) + " - R$ " + (parseFloat(fretes[i].valor.replace(",", ".")) + (index != -1 ? parseFloat(fretes[index].valor.replace(",", ".")) : 0)).toFixed(2))
                                .css("text-align", "left")
                                .css("margin", "0 10px 0 0");

				var li = $("<li />")
                        .addClass("fEnvio")
                        .append(spanR)
                        .append(spanL);



				li.insertAfter(parent);
			}
		}



		$("input[name=freteTipo]").unbind("click").bind("click", function (e) {
			//e.preventDefault();

			var value = $(this).val();
			if (value === undefined) {
				value == "Entrega própria";
			}
			if (value == "Entrega própria")
				value = "Fixo";

			$("#ctl00_ContentPlaceHolder1_hiddenTipoEnvio").val(value);
			$("#ctl00_ContentPlaceHolder1_hiddenValorFrete").val(value);

		});

		var serviceCarrinho = new ServiceCarrinho();

		var valor = serviceCarrinho.GetDiscount();

		$(".valorDescontos").html("R$ " + valor);

		$.post(ROOT_PATH +"Util/Services/verificaStatusFrete.aspx", function (data) {

			if (data != "ok")
				alert(data);
		});



	});

	$("#ctl00_ContentPlaceHolder1_txtCPFC").mask("999.999.999-99");
	$("#ctl00_ContentPlaceHolder1_txtTelefoneC").mask("9999-9999");
	$("#ctl00_ContentPlaceHolder1_txtCEPC").mask("99999-999");


	$("#dialog").dialog({
		bgiframe: true,
		autoOpen: false,
		height: 624,
		modal: true,
		minHeight: 624,
		resizable: false,
		width: 385,
		beforeClose: function () {
			removeClassValidator();
		},
		open: function () {

		},
		buttons: {
			'CANCELAR': function () {
				$(this).dialog('close');
				removeClassValidator();
			},
			'ENVIAR': function () {
				$("#ctl00_ContentPlaceHolder1_txtNomeC").addClass("validate[required]");
				$("#ctl00_ContentPlaceHolder1_txtEmailC").addClass("validate[required,custom[email]]");
				$("#ctl00_ContentPlaceHolder1_txtEndC").addClass("validate[required]");
				$("#ctl00_ContentPlaceHolder1_txtNumC").addClass("validate[required]");

				$("#ctl00_ContentPlaceHolder1_txtCEPC").addClass("validate[required]");

				$("#ctl00_ContentPlaceHolder1_txtCPFC").addClass("validate[required,cpf]");
				$("#ctl00_ContentPlaceHolder1_txtCidadeC").addClass("validate[required]");
				$("#ctl00_ContentPlaceHolder1_txtEstadoC").addClass("validate[required]");
				$("#ctl00_ContentPlaceHolder1_txtDDDC").addClass("validate[required,custom[onlyNumber]]");
				$("#ctl00_ContentPlaceHolder1_txtTelefoneC").addClass("validate[required]");
				$("#ctl00_ContentPlaceHolder1_txtBairroC").addClass("validate[required]");

				if ($("#aspnetForm").validationEngine({ returnIsValid: true })) {
					removeClassValidator();
					$(this).dialog('close');

					enviarComprador();
				}
			}
		}
	});


	$("#giftCard").dialog({
		bgiframe: true, autoOpen: false, height: 424, modal: true, minHeight: 424, resizable: false, width: 385
	});

});


