//$.include(JS_URL_BASE + 'jquery/jquery.history_remote.js');
$.include(JS_URL_BASE + 'jquery/jquery.loading.js');
$.include(JS_URL_BASE + 'jquery/jquery.alert.js');
$.include(JS_URL_BASE + 'jquery/jquery.color.js');
$.include(JS_URL_BASE + 'jquery/jquery.fade.js');
//$.include(JS_URL_BASE + 'app.form.js');
//$.include(JS_URL_BASE + 'produtos/busca.js');

if (!App.Carrinho) {
	App.Carrinho = {};
}

jQuery.extend(App.Carrinho, {
	itens: {},
	_frete: 0,
	_fretes: {},
	_total: 0,
	_fadeColor: '#FFD555',

	init: function () {
		//$('#itensCarrinho p.btnEmbrulhar a').each(App.Carrinho.events.presente.init);

		$('#itensCarrinho p.btnExcluir a').each(App.Carrinho.events.remover.init);
		$('#dadosFrete tr.dados input').livequery(App.Carrinho.events.fretes.init);

		var timer = null;
		$('input.CarrinhoQuantidade').keyup(App.Carrinho.events.quantidade).change(App.Carrinho.events.quantidade);	
		$('#PedidoCep').bind('keypress', function(e) {
			var k = e.charCode || e.keyCode || e.which;
	
			if (k === 13) {
				$('#MostrarFretes').click();
				e.preventDefault();
			}
		});		

		$('#MostrarFretes').bind('click', App.Carrinho.events.fretes.mostrar);		
		
		$('#CupomPromocionalCodigo').keypress(function (e) {
			var k = e.charCode || e.keyCode || e.which;
	
			if (k === 13) {
				$('#ativarCupomPromocional').click();
				e.preventDefault();
			}
		});
		
		$('#PedidoCep').keypress(function (e) {
			var k = e.charCode || e.keyCode || e.which;
	
			if (k === 13) {
				$('#MostrarFretes').triggerHandler('click');
				this.focus();
				e.preventDefault();
			}
		});
	   
	},

	produtos: {
		adicionar: function (produtoId, data) {
			App.Carrinho.produtos.atualizar(produtoId, data);
		},

		atualizar: function (produtoId, data) {
			data.produtoId = produtoId;

			if (App.Carrinho.itens['p' + produtoId]) {
				data = $.extend(App.Carrinho.itens['p' + produtoId], data);
			}

			App.Carrinho.itens['p' + produtoId] = data;
			App.Carrinho.total(true);
			App.Carrinho.mostrar();
		}
	},

	limpar: function () {
		App.Carrinho.itens = [];
		App.Carrinho.valor = 0;
	},

	quantidade: function () {
		var quantidade = 0;
		for (var i in App.Carrinho.itens) {
			if (App.Carrinho.itens[i].produtoId) {
				quantidade++;
			}
		}

		return quantidade;
	},

	frete: function (valor) {
		App.Carrinho._frete = valor;
		App.Carrinho.mostrar();
		try {
			$('#totalCompra').fade(App.Carrinho._fadeColor);
		} catch (e) {}
	},

	total: function (update) {
		if (update === true) {
			var total = 0;

			for (var i in App.Carrinho.itens) {
				if (App.Carrinho.itens[i].produtoId) {
					var item = App.Carrinho.itens[i];
					var totalUnitario = item.preco;
	
					if (item.precoDesconto) {
						totalUnitario = item.precoDesconto;
					}
	
					total += (totalUnitario * item.quantidade);
				}
			}
			App.Carrinho._total = total;
		}

		return App.Carrinho._total;
	},

	mostrar: function () {
		var total = 0;

		var mensagem = '<strong>Nenhum item no carrinho</strong>';
		var quantidade = App.Carrinho.quantidade();
		if (quantidade === 1) {
			mensagem = 'Há <strong>1 item</strong> no carrinho';
		} else if (quantidade > 1) {
			mensagem = 'Há <strong>' + quantidade + ' itens</strong> no carrinho';
		}

		$('#controleItens p.quantidade').html(mensagem);

		for (var i in App.Carrinho.itens) {
			if (App.Carrinho.itens[i].produtoId) {
				var item = App.Carrinho.itens[i];
				var $produtoCarrinho = $('#produtoCarrinho' + item.produtoId);
	
				$('#Carrinho' + item.produtoId + 'Quantidade').val(item.quantidade);
				//$('#Carrinho' + item.produtoId + 'Presente').parent().removeClass('status-' + (Boolean(item.presente) === true ? 0 : 1)).addClass('status-' + item.presente);

				var totalUnitario = item.preco;
				var preco = null;
				var precoDesconto = 'Por: R$ ' + item.preco.toMoney();
				var economize = null;
	
				if (item.precoDesconto > 0) {
					preco = 'De: R$ ' + item.preco.toMoney();
					precoDesconto = 'Por: R$ ' + item.precoDesconto.toMoney();
					if (item.descontoAVista) {
						precoDesconto += ' <strong class="aVista">à Vista</strong>';
					}
					economize = item.preco - item.precoDesconto;
					economize = 'R$ ' + economize.toMoney();
					totalUnitario = item.precoDesconto;
				}
	
				total += (totalUnitario * item.quantidade);
				totalUnitario = 'R$ ' + (totalUnitario * item.quantidade).toMoney();
	
				var precoHtml = '';
				if (preco) {
					precoHtml += '<p class="de">' + preco + '</p>';
				}
				if (precoDesconto) {
					precoHtml += '<p class="por">' + precoDesconto + '</p>';
				}			
				
				$produtoCarrinho.find('.precoProduto').html(precoHtml);
				$produtoCarrinho.find('#somaProduto h2').html(totalUnitario);
			}
		}

		$('#SubProduto').html('R$ ' + total.toMoney());
		$('span.totalLoja').html(total);
		total += App.Carrinho._frete;
		$('#totalCompra').html('R$ ' + total.toMoney());
	},
	
	Fretes: {
		limpar: function () {
			App.Carrinho._fretes = {};
		},

		atualizar: function (id, data) {
			data.id = id;			

			if (App.Carrinho._fretes['f' + id]) {
				data = $.extend(App.Carrinho._fretes['f' + id], data);
			}
			
			App.Carrinho._fretes['f' + id] = data;
		},
		
		mostrar: function () {
			var cep = $('#PedidoCep').val();

			var params = {
				'action[MostrarFretes]': 1,
				'data[Pedido][cep]': cep
			};
			$('#formaEntrega')
				.addClass('carregando')
				.find('input')
					.attr('disabled', true)
				.end()
				.find('div.opcoesFrete')
					.load(App.url('/pedidos/dados-fretes.ajax'), params, function () {
						$('#formaEntrega').removeClass('carregando').find('input').attr('disabled', false);
					});
		}
	},

	events: {
		ajaxQuantidade: null,
		quantidade: function (e) {
			var $this = $(this);
			var params = {};
			var name = $this.attr('name');
			var val = $this.val();
			var produtoId = /\[(\d+)\]/.exec(name);
			produtoId = produtoId[1];
			var quantidade = App.Carrinho.itens['p' + produtoId].quantidade;
			
			if (val && parseInt(val) != parseInt(quantidade)) {
				App.Carrinho.itens['p' + produtoId].quantidade = val;
				params[name] = val;
				params['action[atualizarCarrinho]'] = 1;
	
				if (App.Carrinho.events.ajaxQuantidade) {
					App.Carrinho.events.ajaxQuantidade.abort();
				}
				
				$this.parent().addClass('carregando');
				
				$.ajax({
					'url': App.url('/carrinho.js'),
					type: 'POST',
					data: params,
					dataType: 'script',
					beforeSend: function (XMLHttpRequest) {
						App.Carrinho.events.ajaxQuantidade = XMLHttpRequest;						
					},
					success: function (data) {
						
						App.Carrinho.Fretes.mostrar();						
						$('#produtoCarrinho' + produtoId + ' #somaProduto h2').fade(App.Carrinho._fadeColor);						
						$('#SubProduto').fade('#CC3300', 'color');
						$('#totalCompra').fade(App.Carrinho._fadeColor);						
						$this.parent().removeClass('carregando');
					}
				});
			}
		},

		presente: {
			init: function () {
				var link = $(this);

				var url = link.attr('href');
				var produtoId = /\/presente\/([0-9]+)/.exec(url);
				produtoId = produtoId[1];

				$(this).click(App.Carrinho.events.presente.alterar(link, produtoId));
			},

			alterar: function (link, produtoId) {
				return function (e) {
					$.get(App.url('/carrinho/presente/' + produtoId + '.js'), null, function () {}, 'script');

					$('#Carrinho' + produtoId + 'Presente').parent().toggleClass('status-0').toggleClass('status-1');

					e.preventDefault();
				};
			}
		},
		
		remover: {
			init: function () {
				var $link = $(this);
				var url = $link.attr('href');
				
				$link.click(function (e) {
					e.preventDefault();
					$.confirm('Confirma remover o produto do carrinho?', {
						buttons: {
							'remover': 'Remover',
							'cancel': 'Cancelar'
						},
						onConfirm: function (e, name, label) {
							if (name == 'remover') {
								window.location.href = url;
							}
							
							return true;
						}
					});
				});
			}
		},

		fretes: {
			init: function () {
				var input = $(this);
				var tr = $(this).parents('tr').eq(0);
				//var metadata = tr.find('td.dados').metadata();
				input.bind('change', App.Carrinho.events.fretes.alterar(input)).bind('click', function () {
					$(this).trigger('change');
				});
				//input.bind('click', App.Carrinho.events.fretes.alterar(input));
			},

			alterar: function (input) {
				return function (e) {
					var id = input.val();
					if (App.Carrinho._fretes['f' + id]) {
						var data = App.Carrinho._fretes['f' + id];
						var $blocoFormaEntrega = $('#formaEntrega .blocodefinicaoEscolha');
						if ($blocoFormaEntrega.size() > 0) {
							$blocoFormaEntrega.find('p.nome span').html(data.nome).fade(App.Carrinho._fadeColor);
							$blocoFormaEntrega.find('p.prazo span').html(data.prazo).fade(App.Carrinho._fadeColor);							
							if(data.valor == 0){							
								$blocoFormaEntrega.find('p.valor span').html('--').fade(App.Carrinho._fadeColor);
							}else{
								$blocoFormaEntrega.find('p.valor span').html('R$ ' + data.valor.toMoney()).fade(App.Carrinho._fadeColor);
							}						
						}
						App.Carrinho.frete(data.valor);
					}

					$.get(App.url('/pedidos/forma-entrega/' + id));
				};
			},

			mostrar: function (e) {
				e.preventDefault();				
				App.Carrinho.Fretes.mostrar();
			}
		}
	}
});

jQuery(App.Carrinho.init);