// VARIÁVEIS PREDEFINIDAS
var carrinhoVazio = 0;
var subtotalAVista = 0;
var debug = false;

// ELEMENTOS
var e_respostaCodigoPromocional = '#resposta-codigo';
var e_formularioCodigo = '#formulario-codigo';
var e_submitFrete = '#form-frete button';
var classeCodigoPromocional = '';

// FUNÇÕES FACILITADORAS
function log(a){
	if(debug === true){
		if(typeof console != 'undefined') console.log(a);
	}
}

function converteBrEn(valor){
	if(valor !="" && valor !="0"){
		return valor.replace(",", ".");
	}
}
function converteEnBR(valor){
	if(valor !="" && valor !="0"){
		return valor.replace(".", ",");
	}
}


// DAQUI PRA BAIXO É FESTA! ----------------------------------------------------------------------------


// SOMENTE NÚMEROS NO CAMPO DE CEP
$("#numeroCep").keydown(function(){
	$t = $(this);
	$t.val($t.val().replace(/[^0-9]/,""));
});

function esvaziaCarrinho(){
	$('#carrinho').css('padding-bottom', '161px');
	$("#box-total-carrinho").remove();
	
	$("#box-frete").remove();
	$("#box-total-compra").remove();
	$("#box-codigo-desconto").remove();
	$(".box-acoes").remove();
	
	$("table tbody").append('<tr><td colspan="5">N&atilde;o h&aacute; itens no seu carrinho.</td></tr>');
	carrinhoVazio = 1;
}

function recalcular(){
	log('recalcular()');

	var subtotal = 0;
	var milhasAdicionais = 0;
	var totalPontosCarrinho = 0;
	var desconto = 0;
	var total = 0;
	var i = 1;



	if(carrinhoVazio == 1){
		$("#box-usuario > p:last").html('<a href="./carrinho">Seu carrinho</a> de compras está vazio.');
		$('#box-usuario > a:last').remove();
	}else{

		$("#lista-carrinho>tbody>tr").each(function (){
			i++;
			var valor = $("td:eq(1) input.Valor",this).val();
			var pontos = $("td:eq(1) span.Pontos",this).html();
			var quant = $("td:eq(2)>input[name='quantidade']",this).val();
			if(quant == ''){
				$("td:eq(2)>input[name='quantidade']",this).val('1');
				quant = 1;
			}
			var subtotalValor = eval(converteBrEn(valor)) * eval(quant);
			var subtotalPontos = pontos * quant;
			$("td:eq(3) .SubtotalValor",this).html(converteEnBR(subtotalValor.toFixed(2)));
			$("td:eq(3) .SubtotalPontos",this).html(subtotalPontos.toFixed(3));
			subtotal += subtotalValor;
			totalPontosCarrinho += subtotalPontos;
		});

		desconto = parseFloat($("span.Desconto").html());
		subtotal -= desconto;

		var itemNumero = (i == '1') ? 'o' : 'os';
		var msg = i + " produt" + itemNumero;

		// CALCULA O TOTAL DO CARRINHO
		// total = carrinho.frete_valor + subtotal;

		$(".TotalPontosCarrinho").html(totalPontosCarrinho.toFixed(3));

		atualizaSubtotal(subtotal);
		atualizaTotal();

		if($("#desconto-a-vista").length > 0){
		    totalAVista = eval($("#valorEntrega").val()) + eval($("#subtotalAVista").val());
			$("#desconto-a-vista > strong > ins").html('R$ '+totalAVista.toFixed(2).replace('.',','));
		}
	}
}


// MOSTRA A BARRA VERDE DE DESCONTO COM O VALOR E O TÍTULO PASSADOS COMO PARÂMETRO
function mostraBarraDesconto(desconto, titulo){
	if(desconto > 0){
		var elemento = 'div#barra-desconto';
		titulo_txt = (titulo == undefined) ? 'Desconto Promocional' : titulo;
		$(elemento+' strong').html(titulo_txt);
		$(elemento+' ins').html('R$ -' + converteEnBR(desconto));
		$(elemento).show();
		log('mostraBarraDesconto()');
	}
}

function escondeBarraDesconto(){
	$('div#barra-desconto').hide();
	log('escondeBarraDesconto()');
}

function atualizaTotal(){
	if(typeof alma_carrinho.subtotal == 'undefined') return;
	var valor = alma_carrinho.subtotal;
	if(typeof alma_carrinho.promocao != 'undefined') valor -= alma_carrinho.promocao.desconto_total;
	if(typeof alma_carrinho.frete_valor != 'undefined') valor += (alma_carrinho.frete_valor - alma_carrinho.promocao.desconto_frete);
	valor = valor.toFixed(2);
	// FIX: ALGUM BUG DO JAVASCRIPT RETORNA ZERO NEGATIVO
	valor = valor.replace('-','');

	$('div#box-total-compra p ins').html('R$ ' + converteEnBR(valor));
	log('atualizaTotal() valor: '+valor);
}

function atualizaSubtotal(valor){
//	carrinho.subtotal = parseFloat(valor).toFixed(2);
	$('.TotalValorCarrinho').html('R$ ' + converteEnBR(alma_carrinho.subtotal));

	log('atualizaSubtotal() valor: '+alma_carrinho.subtotal);
}

function mostraCodigoPromocional(){
	if(typeof alma_carrinho.codigo_promocional != "undefined"){
		$(e_respostaCodigoPromocional + ' h3').html('Código Promocional em uso:');
		$(e_respostaCodigoPromocional + ' a[rel="fechar"]').html('(cancelar)');
		$(e_respostaCodigoPromocional + ' h4').html(alma_carrinho.codigo_promocional.nome);
		$(e_respostaCodigoPromocional + ' p.msg').html(alma_carrinho.codigo_promocional.descricao);

		// SE A PROMOÇÃO TEM DESCONTO EM REAIS, MOSTRA A BARRA DE DESCONTO
		if((desconto = alma_carrinho.codigo_promocional["desconto-reais"]) > 0){
			mostraBarraDesconto(desconto);
		}

		log('mostraCodigoPromocional()');
	}
	$(e_respostaCodigoPromocional).show();
}

function escondeCodigoPromocional(){
	$(e_respostaCodigoPromocional).hide();
}

function atualizaValorFrete(){
	if(typeof alma_carrinho.frete_valor == 'undefined') return;

	var v = alma_carrinho.frete_valor - alma_carrinho.promocao.desconto_frete;
	v = v.toFixed(2);

	var valor = (v == '0.00') ? 'GRÁTIS' : 'R$ '+ converteEnBR(v);
	$("#box-frete-escolhido p ins").html(valor);
	log('atualizaValorFrete(): '+valor);
}

function temCodigoPromocional(){
	return (typeof(codigo_promocional) != "undefined");
}

function valorFreteCodigoPromocional(){
	var r = false;
	if(temCodigoPromocional() && typeof(codigo_promocional["valor-frete"]) != "undefined"){
		r = codigo_promocional["valor-frete"];
	}
	return r;
}

function mostraFormularioCodigoPromocional(){
	$(e_formularioCodigo).show();
}

function escondeFormularioCodigoPromocional(){
	$(e_formularioCodigo).hide();
}

function atualizaFreteEscolhido(){
	var fretes = {"pac":["PAC Enc. Normal","10 a 15 dias"],"sedex":["Sedex","3 a 5 dias"]};
	var n = fretes[alma_carrinho.frete_url][0];

	// ESPERO QUE NÃO SEJA MAIS NECESSÁRIO ARMAZENAR OS VALORES EM CAMPOS ESCONDIDOS NO FORMULÁRIO
	// $("#tipoEntrega").val(n);
	// $("#valorEntrega").val(v);
	
	$("#form-frete div").hide();
	$('#box-frete-escolhido p').html('<span>'+n+'</span><ins></ins>');

	atualizaValorFrete();
	
	$("#box-frete-escolhido").slideToggle(function(){
		if($("#pac-a-vista").length > 0){
			$('#pac-a-vista').slideDown();
		}
	});
	log('atualizaFreteEscolhido()');
}















// DAQUI PRA BAIXO É TUDO EXECUTADO AO CARREGAR A PÁGINA ------------------------------

$().ready(function() {
	 $('.nyroModal').nyroModal();

	if(typeof alma_carrinho == 'undefined'){
		alma_carrinho = new Object();
	}


	// SE TEM CÓDIGO PROMOCIONAL, ATUALIZA O BOX
	if(typeof alma_carrinho.codigo_promocional != 'undefined'){
		mostraCodigoPromocional();
		escondeFormularioCodigoPromocional();
	}else{		
		mostraFormularioCodigoPromocional();
	}

	atualizaValorFrete();
	atualizaTotal();


	// DEFINE A QUANTIDADE
	$("input[name='quantidade']").blur(function(){
		var objeto = $(this);
		if(objeto.val() == '' || objeto.val() == '0'){
			objeto.val('1');
		}

		// VERIFICA SE A QUANTIDADE É MAIOR QUE 0
		if(objeto.val() > 0){
			$.post('http'+ siteHTTPSAtivo +'://'+ siteRaiz + "ajax/", {
				acao:"carrinho-quantidade",
				url:objeto.attr("rel"),
				quantidade:objeto.val()
				},function(data){
				objeto.parent().children('img').slideToggle('slow', function(){
					$(this).remove();
				});
				if(data.resposta = "concluido"){
					objeto.val(data.quantidade);
					recalcular();
					window.location.reload();
				}
			}, "json");
		// SE NAO FOR REMOVE DO CARRINHO
		}else{
			$.post('http'+ siteHTTPSAtivo +'://'+ siteRaiz + "ajax/", {
				acao:"carrinho-remover",
				url:objeto.attr("rel"),
				quantidade:objeto.val()
				},function(data){
				//console.log(data);
				if(data.resposta = "concluido"){
					objeto.parent("td").parent("tr").fadeOut(1000, function() {
						objeto.remove();
						var contagem = $("#lista-carrinho tbody tr").length;
						if(contagem == 0){
							esvaziaCarrinho();
						}
						recalcular();
						window.location.reload();
					});
				}
			}, "json");
		}
	});

	// REMOVE O PRODUTO
	$('a.LnkRemover').click(function(){
		var objeto = $(this);
		
		objeto.html(carregando);
		objeto.css({
			'background-image': 'none',
			'text-indent': '0px',
			'margin-top':'3px'
		});
		
		$.post('http'+ siteHTTPSAtivo +'://'+ siteRaiz + "ajax/carrinho-remover",{
			url:objeto.attr("rel"),
			quantidade:objeto.val()
			},function(data){
			if(data.resposta = "concluido"){
				// SE TEM PRODUTO EM PROMOÇÃO RECARREGA A PÁGINA INTEIRA
				if(temProdutoEmPromocao){
					window.location.reload();
					exit;
				}else{
					objeto.parent("td").parent("tr").children().fadeOut('slow', function() {
						objeto.parent("td").parent("tr").remove();
						//objeto.remove();
						var contagem = $("#lista-carrinho>tbody>tr").length;
						if(contagem == 0){
							esvaziaCarrinho();
						}
						recalcular();
						window.location.reload();
					});
				}
			}
			recalcular();
		}, "json");
		recalcular();
		// SE ESTE ITEM REQUER ATUALIZAÇÃO DO CARRINHO
		if($(this).attr('class').indexOf('atualizaCarrinho') != '-1'){
			// ATUALIZA A PÁGINA
			window.location.reload();
		}
	});


	// CÓDIGO PROMOCIONAL --------------------------------------------------------------------

	var formCodigoDesconto = '#form-codigo-desconto';
	var botaoValidarCodigo = '.LnkValidarCodigo';
	var botaoLimparCodigo = '#resposta-codigo a[rel="fechar"]';

	$(formCodigoDesconto).submit(function(e){
		e.preventDefault();
		var form = $(this);

		// SE O CÓDIGO ESTÁ VAZIO NÃO FAZ NADA
		if($('#codigo').val() == '') return;

		var dadosForm = form.serialize();
		mostraCarregandoFora($(botaoValidarCodigo));

		$.post('http'+ siteHTTPSAtivo +'://'+ siteRaiz + "ajax/codigo-promocional/validar", dadosForm,
			function(data){
//				var data = JSON.parse(d);
				escondeCarregandoFora($(botaoValidarCodigo));
				$(e_formularioCodigo).hide();
				$(e_respostaCodigoPromocional).show();

				if(data.status == 'sucesso'){
					// SE RETORNOU A ALMA DO CARRINHO, ATUALIZA
					if(typeof data.alma_carrinho != 'undefined'){
						alma_carrinho = data.alma_carrinho;
					}

					mostraCodigoPromocional();
					atualizaTotal();
					atualizaValorFrete();
				}else{
					$(e_respostaCodigoPromocional + ' a[rel="fechar"]').html('(fechar)');
					$(e_respostaCodigoPromocional).parent().addClass('box_'+data.status);
					$(e_respostaCodigoPromocional + ' h4').html(data.titulo);
					$(e_respostaCodigoPromocional + ' p.msg').html(data.descricao);
				}

				classeCodigoPromocional = data.status;
			
		},'json');
/*
		$.ajax({
			type: "post",
			url: siteURL + "ajax/codigo-promocional/validar",
			dataType:'text',
			cache:false,
			data: dadosForm,
			beforeSend: function(){
				mostraCarregandoFora($(botaoValidarCodigo));
			},
			success: function(d) {
				var data = JSON.parse(d);
				escondeCarregandoFora($(botaoValidarCodigo));
				$(e_formularioCodigo).hide();
				$(e_respostaCodigoPromocional).show();

				if(data.status == 'sucesso'){
					// SE RETORNOU A ALMA DO CARRINHO, ATUALIZA
					if(typeof data.alma_carrinho != 'undefined'){
						alma_carrinho = data.alma_carrinho;
					}

					mostraCodigoPromocional();
					atualizaTotal();
					atualizaValorFrete();
				}else{
					$(e_respostaCodigoPromocional + ' a[rel="fechar"]').html('(fechar)');
					$(e_respostaCodigoPromocional).parent().addClass('box_'+data.status);
					$(e_respostaCodigoPromocional + ' h4').html(data.titulo);
					$(e_respostaCodigoPromocional + ' p.msg').html(data.descricao);
				}

				classeCodigoPromocional = data.status;
			}
		});
*/
	});

	$(botaoLimparCodigo).click(function(e){
		e.preventDefault();

		if(typeof alma_carrinho.codigo_promocional != "undefined"){
			
			$.ajax({
				type: "post",
				url: siteURL + "ajax/codigo-promocional/limpar",
				dataType:'json',
				cache:false,
				success: function(data) {

					if(data.resposta !="erro"){

						// SE RETORNOU A ALMA DO CARRINHO, ATUALIZA
						if(typeof data.alma_carrinho != 'undefined'){
							alma_carrinho = data.alma_carrinho;
						}

						escondeBarraDesconto();
						atualizaValorFrete();
						atualizaTotal();
					}
				}
			});
		}

		escondeCodigoPromocional();
		mostraFormularioCodigoPromocional();
		$(e_respostaCodigoPromocional).parent().removeClass('box_'+classeCodigoPromocional);
		$('#codigo').val('');
	});

	// FIM DO CÓDIGO PROMOCIONAL -------------------------------------------------------------


	$('#form-frete').submit(function(e){
		e.preventDefault();
	});




	//CALCULA O FRETE
	$(e_submitFrete).click(function(){
		var cep = $("input[name='numeroCep']");
		var numero = cep.val().replace(/[^0-9]/,'');
		var botao = $(e_submitFrete);

		if (numero.length == 8){
			// ADICIONA O LOADING
			mostraCarregandoFora(botao);
			// DESABILITA O BOTAO
			botao.attr('disabled', true);


			$('#form-frete').ajaxSubmit({
				dataType: 'json',
				success: function(data){
					// REMOVE O LOADING
					escondeCarregandoFora(botao);
					// HABILITA O BOTAO
					botao.attr('disabled', false);

					$('#entrega').html(data.resposta).slideToggle();

					if($("#pac-a-vista").length > 0){
						$("#pac-a-vista > strong > ins").html('R$ '+data.total_a_vista);
					}

					// ACAO AO SELECIONAR O FRETE
					$(".usarFrete").click(function(){
						var frete = $(this).attr("rel").split("|");
						//mostraCarregandoFrete();
						mostraCarregandoFora(botao);
						$.post('http'+ siteHTTPSAtivo +'://'+ siteRaiz + "ajax/carrinho-define-frete", {
							valorFrete:frete[1],
							tipoFrete:frete[0],
							urlFrete:frete[2]
						},function(data){
							if(data.resposta == "concluido"){
								escondeCarregandoFora(botao);
								
								// SE RETORNOU A ALMA DO CARRINHO, ATUALIZA
								if(typeof data.alma_carrinho != 'undefined'){
									alma_carrinho = data.alma_carrinho;
								}

								$('#box-frete > div:first').slideToggle();
								atualizaFreteEscolhido();
								atualizaTotal();
							}
						},'json');
					});

				}
			});

		}
	});

	// EXIBE O BOX DE CEP
	$(".alterarFrete").click(function(e){
		e.preventDefault();
		$("#box-frete > div:first").slideToggle();
		$("#box-frete-escolhido").slideToggle();
	});

	// SE TEM PELO MENOS UM PRODUTO NO CARRINHO, MANDA RECALCULAR
	if($("#lista-carrinho>tbody>tr").length > 1){
		recalcular();
	}

	$('#entrega').hide();
});

