var Carrinho = { init: function() { $('.prato a.info').bind('click', Carrinho.abre_info); $('#carrinho').on('click', 'a.desc', Carrinho.abre_info); $('#popup_produto .foto').bind('load', function() {$(this).slideDown();}); // opção de entrega/retirada $('input[name=opt_entrega]').bind('click', Carrinho.verifica_delivery); $('input[name=opt_entrega]').bind('click', Carrinho.refresh); // adiciona/remove item ao carrinho $('.prato a.mais').bind('click', Carrinho.abre_opcionais); //$('.prato a.mais').bind('click', Carrinho.add); $('#popup_opcionais').on('click', 'button.add', Carrinho.add); $('#carrinho').on('click', 'a.mais', Carrinho.add); $('#carrinho').on('click', 'a.menos', Carrinho.add); // tags para accordion $('.tags a').bind('click', Carrinho.clica_accordion); // fechar pedido $('#conta').on('click', 'a.btn.fechar', Carrinho.rejeita); }, abre_opcionais: function(e) {//console.log($(this)); e.preventDefault(); var id_produto = $(this).attr('data-id'); //alert(id_produto); var parametros = "classe=Produto"; parametros += "&metodo=ajaxGetOpcoes"; parametros += "&id_produto=" + id_produto; //parametros += bool_html!==undefined ? "&bool_html=" + bool_html : "&bool_html=true"; //console.log(parametros); window.qtd_complemento = 0; $.ajax({type:"GET", datatype:'json', url:ajax_path, data:parametros, success:function(retorno) { if(retorno!='null') { //console.log(retorno); var vetor = limpa_retorno_ajax(retorno); console.log(vetor); //Loading.hide(); if(vetor.erro==0) { $('#popup_opcionais button.add').attr('data-id', id_produto); $('#popup_opcionais .modal-title').text(vetor.dados.nome); $('#popup_opcionais .modal-body .extras').html(vetor.dados.extras); // $('#popup_opcionais .modal-body .opcionais').html(vetor.dados.opcionais); $('#popup_opcionais #prod_preco').val(vetor.dados.preco); // if (vetor.dados.opcionais) { // // rodrigo // console.log('há opção!'); // // 1 para obrigatório // $('button.add').attr('data-valicacao-opcao', 0); // } // else { // console.log('há não opção!'); // $('button.add').attr('data-valicacao-opcao', 0); // } if (vetor.dados.qtd_complemento) { window.qtd_complemento = vetor.dados.qtd_complemento; console.log(vetor.dados.qtd_complemento); $('button.add').attr('data-validacao-opcao', vetor.dados.qtd_complemento); } else { $('button.add').attr('data-validacao-opcao', ''); } } else { alert(vetor.msg); } } }}); Lightbox.abre('#popup_opcionais'); }, abre_info: function(e) {//console.log($(this)); e.preventDefault(); var id_produto = $(this).attr('data-id'); //alert(id_produto); $('#popup_produto .foto').hide(); // atualiza os dados //Loading.show('#field_cidade span'); var parametros = "classe=Produto"; parametros += "&metodo=ajaxGetInfo"; parametros += "&id_produto=" + id_produto; //parametros += bool_html!==undefined ? "&bool_html=" + bool_html : "&bool_html=true"; //console.log(parametros); $.ajax({type:"GET", datatype:'json', url:ajax_path, data:parametros, success:function(retorno) { if(retorno!='null') { //console.log(retorno); var vetor = limpa_retorno_ajax(retorno); console.log(vetor); //Loading.hide(); if(vetor.erro==0) { $('#popup_produto .modal-title').text(vetor.dados.nome); $('#popup_produto .modal-body h5').text(vetor.dados.descricao); $('#popup_produto #prod_preco').val(vetor.dados.preco); $('#popup_produto .modal-body p.preco').text(vetor.dados.preco_fmt); if(vetor.dados.foto!==null) { $('#popup_produto .foto').attr('src', vetor.dados.foto); } } else { alert(vetor.msg); } } }}); // abre o popup Lightbox.abre('#popup_produto'); }, add: function(e) { //console.log($(this).attr('data-id')); e.preventDefault(); // Lightbox.fecha(); var id_produto = $(this).attr('data-id'); //alert(id_produto); var bool_retirada = $('#opt_entrega2').is(':checked'); if(bool_fora && !bool_retirada) { alert("Este estabelecimento não entrega no endereço apontado. \n\nVocê pode fazer um pedido para retirar no local."); return false; } var id_registro = typeof $(this).attr('data-reg') =='undefined' ? 0 : parseInt($(this).attr('data-reg')); // verificando os adicionais assinalados // var adicionais = ''; // $('#popup_opcionais .extras input:checked').each(function() { // adicionais += $(this).attr('data-id') + ','; // }); // adicionais = adicionais.substr(0, adicionais.length - 1); var complemento = ''; $('#popup_opcionais .extras input:checked').each(function() { complemento += $(this).attr('data-id') + ','; }); // var opcoes = ''; // $('#popup_opcionais .opcionais input:checked').each(function() { // opcoes += $(this).attr('data-id') + ','; // }); // opcoes = opcoes.substr(0, opcoes.length-1); // Resposta à opção var id_resposta = parseInt($('input[name=opcao]:checked').val()) || 0; //alert(id_resposta); // atualiza os dados //Loading.show('#field_cidade span'); var parametros = "classe=Carrinho"; parametros += "&metodo=ajaxAdd"; parametros += "&id_registro=" + id_registro; parametros += "&id_produto=" + id_produto; // parametros += "&id_resposta=" + id_resposta; parametros += "&adicionais=" + complemento; // parametros += "&opcoes=" + opcoes; parametros += "&observacao=" + $('#popup_opcionais #observacao').val(); if ($(this).hasClass('menos')) { parametros += "&subtrai=1"; } validacao_opcao = $(this).attr('data-validacao-opcao'); complemento = complemento.split(','); if ((complemento.length == 1) && (complemento[0] === '')) { qtd_add = 0; console.log('01'); console.log(complemento); } else { qtd_add = complemento.length; console.log('02'); console.log(qtd_add); } if (validacao_opcao > qtd_add) { alert("Fill the dish complements."); console.log('03'); } else { console.log('04'); Lightbox.fecha(); $.ajax({ type:"GET", datatype:'json', url:ajax_path, data:parametros, success:function(retorno) { if (retorno != 'null') { //console.log(retorno); var vetor = limpa_retorno_ajax(retorno); //console.log(vetor); //Loading.hide(); if (vetor.erro == 0) { Carrinho.refresh(); $('#observacao').val(''); } else { alert(vetor.msg); } } } }); } }, verifica_delivery: function() { var bool_retirada = $('#opt_entrega2').is(':checked'); if(bool_fora && !bool_retirada) { alert("Este estabelecimento não entrega no endereço apontado. \n\nVocê pode fazer um pedido para retirar no local."); return false; } }, refresh: function() { //console.log('refresh: ' + id_estabelecimento); $('#carrinho table').remove(); var opt_entrega = $('input[name=opt_entrega]:checked').val(); if(opt_entrega==1) { $('#conta .tr_entrega, #conta .tempo_entrega').show(); } else { $('#conta .tr_entrega, #conta .tempo_entrega').hide(); } var parametros = "classe=Carrinho"; parametros += "&metodo=ajaxRefresh"; parametros += "&id_estabelecimento=" + id_estabelecimento; parametros += "&opt_entrega=" + opt_entrega; parametros += "&distancia=" + ""; parametros += "&bool_fora=" + bool_fora; //parametros += bool_html!==undefined ? "&bool_html=" + bool_html : "&bool_html=true"; //console.log(parametros); $.ajax({type:"GET", datatype:'json', url:ajax_path, data:parametros, success:function(retorno) { if(retorno!='null') { //console.log(retorno); var vetor = limpa_retorno_ajax(retorno); //console.log(vetor); //Loading.hide(); if (vetor.erro == 0) { //console.log(vetor.dados); $('#carrinho').append(vetor.dados.tabela); $('#carrinho .msg_vazio, #carrinho .msg_nao_vazio').hide(); $('#conta .total_produtos').text(vetor.dados.total_produtos); $('#conta .taxa_entrega').text(vetor.dados.taxa_entrega); $('#conta .total').text(vetor.dados.total); $('#total_float').val(vetor.dados.total_float); // aqui } else { if(vetor.erro==1) { // carrinho com itens de outro restaurante $('#carrinho .msg_nao_vazio').show(); $('#conta .total_produtos').text('---'); $('#conta .taxa_entrega').text('---'); $('#conta .total').text('---'); } else if(vetor.erro==2) { // carrinho vazio $('#carrinho .msg_vazio').show(); $('#conta .total_produtos').text('---'); $('#conta .taxa_entrega').text('---'); $('#conta .total').text('---'); } else { alert(vetor.msg); } } // botão "fechar pedido" if(vetor.erro==2) { // carrinho vazio $('#conta a.btn').addClass('off'); } else { $('#conta a.btn').removeClass('off'); } } }}); }, clica_accordion: function(e) { e.preventDefault(); var id = $(this).attr('data-id'); //alert('clica_accordion: ' + id); var item = '.sanfona h4 a[data-id="'+id+'"]'; //console.log('.sanfona h4 a[data-id="'+id+'"]'); if($(item).parent().next().is(':hidden') ) { $(item).click(); } $('html, body').animate({scrollTop: $(item).offset().top}, 2000); }, rejeita: function(e) { e.preventDefault(); if($(this).hasClass('off')) { alert("Your cart is empty."); } else if (parseFloat($('#total_float').val()) < parseFloat($('#pedido_minimo').val())) { console.log("total do pedido:"); console.log($('#total_float').val()); console.log("valor mínimo"); console.log($('#pedido_minimo').val()); alert("This establishment requires a minimum order value of" + $('#pedido_minimo').val()); } else { $('#form_pedido').submit(); } return false; } }; var Adicionais = { init: function() { // adicionais $('#popup_opcionais .extras').on('click', 'input', Adicionais.refresh) } , refresh: function() { var total = 0; $('#popup_opcionais .extras input').each(function() { if($(this).is(':checked')) { var preco = parseFloat($(this).attr('data-preco')); total += preco; } }); $('#popup_opcionais .extras td.total').text(total); //TODO MELHORAR } } var Store = { init: function() { $('#header_cardapio a.mais_detalhes').bind('click', Store.abre_detalhes); }, abre_detalhes: function(e) { //alert('abre_detalhes'); e.preventDefault(); Lightbox.abre('#popup_loja'); } } var temporizador=null; var BuscaProd = { tempo: 200, init: function() { $('#busca_cardapio').bind('keyup', BuscaProd.verifica); }, verifica: function() { if(temporizador!=null) clearTimeout(temporizador); temporizador = setTimeout(BuscaProd.busca, BuscaProd.tempo); }, fechaTodos: function() { $('.sanfona_item.categorias .sanfona_content').slideUp(function() { $('.sanfona_item.categorias h4 a').removeClass('on'); }); }, busca: function() {//console.log('busca'); var palavra = $('#busca_cardapio').val().toLowerCase(); if(palavra.length<3) { BuscaProd.fechaTodos(); } else { var achou = false; var divs = $('#content_cardapio .prato h6, #content_cardapio .prato p'); for (var i=0; i < divs.length; i++) { if(new RegExp( '\\b' + palavra + '\\b', 'i').test($(divs[i]).text() )) { achou = true; var pai = $(divs[i]).parents('.sanfona_item.categorias'); $(pai).find('.sanfona_content').slideDown(); $(pai).find('h4 a').addClass('on'); $('html, body').animate({scrollTop: $(pai).offset().top}, 2000); break; } } if(!achou) { BuscaProd.fechaTodos(); } } } } var Favorito = { init: function() { $('.btn-favorito').bind('click', Favorito.alterna); }, alterna: function(e) { e.preventDefault(); var alvo = $(this).find('i'); var id_consumidor = $(this).attr('data-id_consumidor'); if(id_consumidor=='') { alert("Only registered users can mark favorites. Log in to have this option."); return false; } var parametros = "classe=Favorito"; parametros += "&metodo=ajaxAlterna"; parametros += "&id_estabelecimento=" + $(this).attr('data-id_estabelecimento'); parametros += "&id_consumidor=" + $(this).attr('data-id_consumidor'); console.log(parametros); $.ajax({type:"GET", datatype:'json', url:ajax_path, data:parametros, success:function(retorno) { if(retorno!='null') { //console.log(retorno); var vetor = limpa_retorno_ajax(retorno); console.log(vetor); //Loading.hide(); if(vetor.erro==0) { $(alvo).removeClass('fa-heart-o fa-heart'); if(vetor.dados==1) { var classe = 'fa-heart'; var titulo = "clear favorite"; } else { var classe = 'fa-heart-o'; var titulo = "Save as favorite"; } $(alvo).addClass(classe); $(alvo).attr('title', titulo); } else { alert(vetor.msg); } } }}); } } // iniciando $(document).ready(function() { Carrinho.init(); Adicionais.init(); Store.init(); BuscaProd.init(); Favorito.init(); });