
$(document).ready(function(){
	function palavras_relacionadas(key, cont){ 
		   var script_name = '/produtos/rel/'+key+'/';
		   var params = {}
		   $.get(script_name,params,
		         function(obj){ 
		           var res = [];
		           for(var i=0;i<obj.length;i++){
		             res.push({ id:i , value:obj[i]});
		           }
		           cont(res); 
		         },
		         'json');
		}
	$('#id_palavra_chave').autocomplete({ajax_get:palavras_relacionadas, delay:0, minchars:3});
	$('#id_palavra_chave').keypress(function(e){
		if(e.which == 13){
			$("#frm_busca").submit();
		}
	});
	
	
	get_qtd = function(obj){
		qtd = obj.find("input").val();
		if(qtd.length==0){
			alert('Por favor digite a quantidade desejada');
			obj.find("input").focus();
			return false;
		}
		
		if(!is_numeric(qtd)){
			alert('Por favor digite uma quantidade válida');
			return false;
		}
		
		return qtd;
	}
	
	// adicionar ao carrinho
	function adicionar_ao_carrinho(produto_id, qtd, forcar_qtd, redir_carrinho){
		if(forcar_qtd===undefined) forcar_qtd = false; 
		if(redir_carrinho===undefined) redir_carrinho = false; 
		
		$.getJSON('/carrinho/incluir-produto/'+ produto_id +'/'+ qtd +'/?forcar_qtd='+forcar_qtd+'&prevent_cache='+Math.random(), function(data){
			if(data.erro){
				if(data.cod_erro==1){
					// produto não encontrado / desativado
					alert('O produto não se encontra disponível no momento');
				}else if(data.cod_erro==2){
					// qtd solicitada não disponível
					mensagem = 'Você solicitou ao todo '+ data.qtd_solicitada +' unidade(s) do produto mas possuimos apenas ' +
						   data.qtd_disponivel +' unidade(s) disponíveis para pronta entrega\nDeseja adicionar estas disponíveis?';
					//mostrar_mensagem(mensagem);
					if(confirm(mensagem)){
						adicionar_ao_carrinho(produto_id, data.qtd_disponivel, true);
					}
				}
				return;
			}else{
				if(redir_carrinho){
					document.location.href = '/carrinho/';
					return;
				}
				
				if(qtd>1) qtd_t = qtd + ' unidades'
				else qtd_t = '1 unidade';
				
				alert('Produto incluído no carrinho ('+ qtd_t +')');
				
				// atualiza o carrinho no header do site
				$('#carrinho_subtotal').text(data.subtotal);
				if(data.qtd_unidades>1) {
					carrinho_qtd_unidades = data.qtd_unidades + ' unidades'
				}else{
					carrinho_qtd_unidades = '1 unidade';	
				}
				$('#compra-atual').fadeOut().fadeIn();
				$('#carrinho_qtd_unidades').text(carrinho_qtd_unidades);
			}
		});
	}
	
	/* HANDLERS */
	// adicionar produto ao carrinho (listagem)
	$('.adicionar-ao-carrinho').click(function(){
		produto_id = $(this).attr('id').split('_')[1];
		qtd = get_qtd($(this).parent());
		
		if(!qtd) return false;
		
		if($(this).hasClass("detalhes"))
			redir_carrinho = true;
		else
			redir_carrinho = false;
		
		adicionar_ao_carrinho(produto_id, qtd, false, redir_carrinho);
	});
	
	// colorir bg de itens com qtd alterada no carrinho
	$('.qtd_carrinho').keydown(function(){
		$(this).addClass("alterado");
	});
	
	// atualizar carrinho
	$('#bt_atualizar_carrinho').click(function(){
		$('#carrinho').submit();
	});
	
	// finalizar pedido: selecionar endereço
	$("#pedido-endereco-entrega input").click(function(){
		$("#id_incluir_endereco").attr("checked", true);
	});
	
	// mensagens do sistema
	if($('#mensagens_sistema div p').length>0){
		/* se ja existir alguma mensagem no carregando da página */
		$('#mensagens_sistema').fadeTo("fast", 0.90);
		$('#mensagens_sistema').slideDown();
	}
		
	$('#mensagens_sistema h2').click(function(){
		$(this).parent().slideUp(function(){
			$('.mensagem_cont p').remove();	
		});	
	});
	
	function mostrar_mensagem(mensagem){
		$('#mensagens_sistema div').append("<p class=\"mensagem_cont\">"+mensagem+"</p>");
		$('#mensagens_sistema').fadeTo("fast", 0.90);
		$('#mensagens_sistema').slideDown();
	}
	
	
});


function is_numeric(sText){
	var ValidChars = "0123456789.";
	var IsNumber = true;
	var Char;
	for (i = 0; i < sText.length && IsNumber == true; i++) { 
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) {
			IsNumber = false;
		}
	}
	return IsNumber;
}