Mostbet Casino Portugal Bónus 300 + Thirty Giros Grátis

Anında erişim sağlamak isteyen kullanıcılar spor bahisleri versiyonunu tercih ediyor.

Kazancını artırmak isteyen kullanıcılar Paribahis kodlarını kullanıyor.

Adres değişikliklerini öğrenmek için paribahis giriş kontrol edilmelidir.

eryamato.com">Bettilt 2025 fırsatları kazancı artırıyor.

Bahisçilerin finansal işlemleri koruyan

Faça O Logon E Jogue Online

Como se tem a possibilidade de ver, a Mostbet oferece uma numerosa gama de opções de apostas desportivas, permitindo que os apostadores em Spain tenham acesso the uma diversidade para mercados e modalidades. Portanto, os usuários portugueses podem fazer uso do MEGABYTES Net / MB Way para fazer pagamentos. Os usuários que possuem uma conta no bajo de pagamentos MB Net / MEGABYTES Way podem produzir uso de teu cartão virtuais pra fazer e receber pagamentos na Mostbet. Entretanto, antes sobre fazer um depósito na Mostbet, você deve ter uma conta em um dos bancos. Os novos usuários devem criar uma conta antes de fazer um depósito.

  • Para conhecer todas since opções de transmissões ao vivo, veja a seção para esportes de transmissão ao vivo ag Mostbet.
  • Há diferentes maneiras sobre se registrar por telefone, e-mail systems mídia social.
  • A Mostbet permite os quais você jogue slot machines online e outros jogos de apostas populares, além para fazer apostas esportivas.
  • Clássicos visuais com pedras preciosas serão apreciados total por veteranos quanto por iniciantes.
  • Os utilizadores podem fazer apostas no ano de competições e ligas nacionais e internacionais de renome, tais como a Premier Group, Liga dos Campeões, Roland Garros, NBA, entre outras.

populares do momento, asi como Dota 2, Group of Legends elizabeth CS. Basta acessar a seção sobre E-sports e examinar suas excelentes atrações. A casa para apostas MostBet tem opções de envidar em ligas populares pelo mundo asi como a Uefa Champions League, Libertadores ag América, Campeonato Brasileiro e muito também. Consistindo em somar pontos nas cartas que sejam exatamente ou próximas the 21, o blackjack é muito

Como Apostar Na Mostbet?

Realizar um depósito é o andatura inicial para aqueles que desejam lucrar na Mostbet Portugal. O Mostbet Application inclui todas since funções do web site oficial, garantindo alguma experiência completa no ano de dispositivos móveis. Independentemente da carga, a velocidade de funcionamento é sempre igual.

  • Para obter o bônus de 125% no primeiro depósito, é preciso produzir o primeiro depósito em
  • disponíveis.
  • O cassino garante segurança aos usuários por ter suas respectivas licenças e contratos legais em rato.
  • Seu depósito será aumentado afin de um bônus de 125% se você apostar dentro de uma hora após a inscrição simply no cassino ou enel de 30 min para esportes, elizabeth o valor mínimo de depósito é de 7 BRL.
  • Na tela de padrón, os jogadores podem solicitar o de início bônus para esportes ou cassino.

Cada medida é aplicada rigorosamente para proteger nossos jogadores. Para baixar u aplicativo em o iPhone, você pode usar a Iphone app Store ou o link direto perform site oficial perform Mostbet Casino REHABILITATION. O design perform mobile app tem a ver tons de branco e azul, de acordo com a identidade visible da marca. Sem banners volumosos systems anúncios intrusivos, the usabilidade é ágil e eficiente, com abas simples que permitem fazer apostas em segundos mostbet.

Posso Baixar Um Aplicativo Mostbet?

As apostas esportivas across the internet da MostBet estão disponíveis para muitos países do mundo. Alguns recebem maiores benefícios, como bônus sobre boas-vindas ou rodadas grátis, dependendo da localização. O finalidad do popular game” “de cartas Bacará aqui no brasil é criar 1 conjunto de tarjetas com um monto de nove systems um conjunto o qual seja o também próximo possível sobre nove. A escolha particular de apostas do site sobre apostas é bastante apreciada e conhecida entre os jogadores brasileiros.

  • Abaixo estão os maiores jogos disponíveis na nossa seção ao palpitante.
  • Mesmo assim, a maioria dos usuários retorna ao cassino para retornar a jogar e aproveitar seus benefícios.
  • Desde apostas esportivas com seus respectivos mercados até jogos de cassino com promoções semanais.
  • Você receberá as rodadas gratuitas assim o qual o dinheiro intended for depositado em tua conta.
  • Esta funcionalidade é extremamente popular entre os apostadores, pois possibilita la cual reajam rapidamente the qualquer alteração not any” “jogo e aproveitem oportunidades em tempo actual.
  • Descubra os caça-níqueis o qual estão definindo the tendência deste ano.

Participe de um sorteio de 1 Ethereum por mês ze você depositar criptomoedas. Acumule mais sobre 4 giros com a mesma ex profeso e você poderá desbloquear um bônus extra que aumentará sua taxa de chances. O MostBet é licenciado através da Curaçao e-Gaming, alguma das licenças principais do mundo. Fãs de Basquete tem a possibilidade de apostar no MostBet, em competições de países, como Olimpíadas e Copa perform Mundo, além de ligas importantes asi como a NBA, NBB e muitas outras.

Como Fazer Alguma Aposta No Mostbet?

Os jogadores podem participar de mesas apresentando crupiês reais elizabeth fazer apostas no ano de tempo real. Abaixo estão os mais importantes jogos disponíveis em nossa seção ao listo. Em nossa locuinta de apostas Mostbet, oferecemos promoções at the bónus para incrementar suas chances de sucesso. Essas ofertas incluem benefícios seja para novos quanto para jogadores regulares. Veja abaixo while principais promoções ou acesse a página de promoções ag Mostbet para também detalhes. O nosso casino Mostbet Portugal está no lugar desde 2009, oferecendo uma ampla variedade de jogos, apostas desportivas, apostas em eSports e desportos virtuais.

  • As máquinas caça-níqueis weil Mostbet se destacam pela diversidade para temas, mecânicas e opções de apostas.
  • A MostBet on-line esportiva é alguma das melhores casas de apostas na linha porque oferece a seus apostadores as melhores probabilidades, que são representadas em decimais.
  • baixar o aplicativo, por contar com alguma versão adaptada.
  • O canon mínimo de depósito” “mhh Mostbet é sobre 50 BRL, assim como o preço mínimo de saque.
  • MostBet é um site legítimo de apostas on the web que oferece apostas esportivas online, jogos de cassino electronic muito mais.

Os conhecidos desenvolvedores de software Yggdrasil, Evolution Gaming, Ezugi, Microgaming oferecem operating-system principais jogos disponíveis na Mostbet. No MostbetCasino, oferecemos uma variedade de apostas esportivas e jogos de cassino. Nossa plataforma” “é organizada para fácil navegação e acesso rápido a muchas as opções. As apostas ao listo revolucionaram a interação com eventos esportivos.

Tudo O La Cual Você Precisa Manejar Sobre A Mostbet

Na organizacion on-line da Mostbet, os usuários tem a possibilidade de apostar e seguir a eventos” “ao vivo. A Casa de aposta Mostbet oferece diversas opções de pagamento, facilitando a experiência 2 jogadores brasileiros, incluindo Pix, transferências bancárias, criptomoedas e carteiras digitais. Para começar a apostar elizabeth jogar os games de que gosta, basta acessar u site ou baixar o aplicativo at the criar sua conta. Na Mostbet PT, garantimos uma experiência de jogo completa e segura. Todas as apostas at the jogos são supervisionados para oferecer transparência total.

  • O Mostbet estabeleceu-se como a new principal plataforma sobre apostas online aqui no brasil, oferecendo uma experiência incomparável para entusiastas de apostas esportivas e jogos sobre cassino.
  • A Mostbet pensa sempre nos teus clientes e portanto tem uma importante variedade de bônus e promoções disponíveis para que seus jogadores nacionais possam ze beneficiar.
  • Já no problema de dispositivos iOS, o processo de download é também simples.

Uma importancia separada de entretenimento, dividida em vários tipos de loterias. Em qualquer se, a essência desses jogos é o qual o usuário compra um certo número de bilhetes de loteria e espera que o sorteio comece. Quanto néanmoins partidas houver com os bilhetes os quais o usuário comprou, maior será um pagamento.

Mostbet Portugal: Gambling Establishment E Apostas 2025

Acesse nosso site, clique em “Registrar” e preencha to formulário com suas informações pessoais. O processo leva só alguns minutos electronic você receberá o e-mail de confirmação. Após verificar sua conta, você já pode fazer teu primeiro depósito electronic começar a arriesgar. A Mostbet não apenas oferece mercados de apostas, porém também exibe estatísticas ao vivo sobre cada evento esportivo, com resultados atualizados instantaneamente. Isso permite que os jogadores analisem suas apostas de forma prática, sem ter os quais procurar informações no ano de outros sites. Você pode apostar antes do início da remesa, acessando os mercados de apostas ao vivo.

O aplicativo Mostbet para smartphone está disponível seja para dispositivos Android quanto para aparelhos iOS. O aplicativo tem download gratuito, e para isto basta acessar um site oficial utilizando o nosso hyperlink. Além disso, é possível utilizar u aplicativo para realizar apostas, financiar tua conta fazendo um depósito, sacando recurso financeiro, resgatando os mesmos bônus” “de boas-vindas etc.

Apostas Combinadas

Nosso libro de pagamentos é protegido por tecnologias de criptografia avançadas. Você pode selecionar o método que melhor se adapta às suas necessidades. Os fundos são creditados na conta da Mostbet PT imediatamente após um depósito, com um valor mínimo” “sobre apenas 2 EUR.

O cassino MostBet Online oferece milhares de jogos, incluindo os populares caça-níqueis que cativaram os usuários locais. Para ganhar ao jogar slots em um cassino online, você deve apostar elizabeth obter combinações específicas de símbolos. Para conhecer todas because opções de transmissões ao vivo, veja a seção sobre esportes de transmissão ao vivo ag Mostbet.

E-sports E Apostas Virtuais Na Casa De Aposta Mostbet

cassino MostBet. De jogabilidade simples e permitindo duas apostas, atrai jogadores em busca de emoção elizabeth grandes prêmios. A MostBet traz pra seus jogadores at the apostadores diversas promoções regulares, além de várias promoções at the condições especiais o qual aprimoram suas experiências na 5win plataforma.

Os utilizadores tem a possibilidade de fazer apostas na competições e ligas nacionais e mundiais de renome, asi como a Premier League, Liga dos Campeões, Roland Garros, NBA, entre outras. As opções para chegar ao suporte ao cliente são acessíveis usando um browser de mesa. Entretanto, deve-se notar os quais o suporte por chat ao palpitante não está disponível usando o aplicativo MostBet.

Login Da Mostbet

O limite do multiplicador de apostas é х5. 000 com alta volatilidade. A aposta mínima é de $0, twenty-five, a aposta máxima é de $60 no site formal da Mostbet. Muitos jogos de cassino, máquinas online at the muito mais estão disponíveis no site e na aplicação 24 horas por dia.

  • Essas equipes competem entre si e isso é muito interativo e desafiador.
  • Atualizamos regularmente nossa seleção de slots para garantir acesso aos jogos néanmoins recentes e buscados.
  • Na plataforma Mostbet, oferecemos uma seleção dos melhores jogos para diferentes perfis de jogadores.
  • Este formato é um 2 mais populares, porque faz com o qual as pessoas olhem pra tela afin de não perder um único momento determinante.

No entanto, se buscar alguma dificuldade ou precisar de ajuda adicional, estaremos sempre disponíveis para to apoiar e fornecer o mais puro nível de satisfação do cliente. Você pode fazer apostas esportivas e ganhar dinheiro rápido at the fácil. Os saques por transferência bancária na casa para apostas Mostbet podem demorar até a few dias. Mas apresentando o uso para outros métodos, um tempo de saque é inferior some sort of 24 horas. A Mostbet é considerada como um 2″ “bons sites de apostas de Portugal.

Jogos Para Casino Mostbet

Baixe o app através dos links oficiais e aproveite los dos os benefícios disponíveis. Além disso, to aplicativo é otimizado para funcionar em vários dispositivos móveis, proporcionando uma experiência suave tanto no ano de smartphones quanto na tablets. Através perform app, você pode acompanhar eventos ao vivo, fazer depósitos e retiradas, além de aproveitar muchas as promoções exclusivas. Isso torna u Mostbet App a escolha ideal para quem gosta para apostar em corrente.

  • O de início passo para usar os serviços weil Mostbet é produzir uma conta.
  • desde 2009, traz uma grande diversidade de atrações, além de confiabilidade aos
  • A seção MostBet Survive traz excelentes atrações em tempo real, muitas” “[newline] delas com seller em português electronic com possibilidade sobre grandes prêmios.
  • Olimpíadas e Copa carry out Mundo, além de ligas importantes asi como a NBA, NBB e muitas outras.

Além disso, podem acessar estatísticas ao” “festón e tudo que torna a experiência dos apostadores única e emocionante. Apostadores fãs de boxe terão as opções de aposta em principais lutas perform momento, de

Bônus Na Mostbet

Com o catálogo premium, é a escolha perfect para jogadores portugueses, garantindo segurança electronic acessibilidade com suporte em vários idiomas. A Mostbet também oferece apostas ao vivo bem desenvolvidas, que ganharam um apelo considerável no meio dos jogadores portugueses em últimos anos. MostBet. com é graduado em Curaçao e oferece apostas esportivas, jogos de cassino e transmissão ao vivo para jogadores em cerca para 100 países diferentes. Você terá some sort of oportunidade de fazer” “suas jogadas com uma variedade de opções de apostas e altas probabilidades. O cassino garante segurança aos usuários durante ter suas respectivas licenças e acordos legais em dia. A Mostbet oferece uma opção totalizadora para apostas esportivas.

  • Ela se destina some sort of apostadores de toda variedade e proporciona todos os esportes imagináveis de en absoluto o mundo.
  • Ganha o adversário que marcar o número de pontos mais próximo possível de 9 na duas ou três cartas.
  • Insira esse código simply no campo e você receberá um bônus, que pode exigir um depósito para acordo com operating system termos.
  • As apostas esportivas online da MostBet estão disponíveis para diversos países do mundo.

mundo – tudo está disponível sem restrições. Chama a atenção dos usuários a grande quantidade de Mostbet on the internet games e desenvolvedores, além da possibilidade de se produzir um cadastro rápido.

Jogue Zero Cassino Online Mostbet Por Dinheiro Real

Aconselhamos jogar free of charge slots na roleta anteriormente a se involucrar a jogar apresentando dinheiro real. O tamanho do prêmio máximo (jackpot) está aumentando gradualmente devido às apostas dos usuários. O aplicativo móvel MostBet está disponível para aparelhos Android ou iOS.

  • Um bônus de depósito de 100% até 1. 700 BRL e 250 rodadas grátis estão incluídos no pacote de boas-vindas da Mostbet, que pode chegar a até 5 depósitos.
  • Além disso, podem acessar estatísticas ao” “listo e tudo que
  • As avaliações weil MostBet sempre foram positivas, pois ela oferece um bônus de boas-vindas, rodadas grátis, cashback electronic muito mais.

A versão móvel do site da Mostbet inclui todos os elementos e se adapta ao tamanho da tela do seu dispositivo. Com o site moderno e fácil de usar, a Mostbet proporciona ótimos métodos de pagamento, registro rápido, atendimento ao consumidor 24 horas elizabeth aplicativos móveis, no meio de muitas outras vantagens. Com o formalidad SSL, a Mostbet garante a proteção de seus usuários. Com 14 anos no setor, a Mostbet é uma empresa de cassino e apostas online que garante lazer de qualidade e promoções atraentes em virtude de todos os seus apostadores. Cadastre-se elizabeth ganhe um bônus de 100%, os quais pode chegar the até 1. seven hundred reais!

Mostbet Casino

A Mostbet proporciona uma experiência envolvente e dinâmica para os fãs dos eSports, oferecendo cotações em tempo real e muitas opções de apostas. Após concluir estas etapas, você estará pronto para investigar todas as opções de apostas at the jogos na odaie de apostas Mostbet. Em seguida, será solicitado que você preencha algumas informações básicas, como seu nome, endereço de e-mail e moeda de preferência. Depois de concluir essas etapas, você receberá um e-mail sobre confirmação para ativar sua conta. Uma das principais características da Mostbet é a sua oferta de apostas desportivas ao vivo, que permite aos utilizadores fazerem apostas por o decorrer 2 eventos.

  • Você poderá assistir as disputas das equipes de eSports ao vivo apostando quem será o vencedor.
  • É alguma slot machine «fabulosa» da Booongo inspirada em um conto sobre fadas Snow-White.
  • Além disso, os games de casino ao vivo da Mostbet oferecem limites para apostas variados, acomodando tanto jogadores casuais quanto os para alto-nível.
  • cassinos on-line.
  • No entanto, é importante ressaltar os quais este bónus, igual como a grande parte das promoções, está sujeito a requisitos de apostas anteriormente de poder producir levantado.

Atualizamos regularmente nossa seleção de slot machines para garantir acesso aos jogos mais recentes e buscados. Além disso, some sort of aplicação móvel da Mostbet é atualizada com mais frequência do que some sort of versão web, garantindo que os utilizadores tenham acesso às funcionalidades e melhorias mais recentes. Para dispositivos Android, operating system utilizadores podem fazer o download do ficheiro APK diretamente no site de uma Mostbet. Após a instalação, é necessário permitir a instalação de aplicações para origens desconhecidas nas definições do mecanismo.

Apostas Esportivas Ao Vivo

até 35 minutos após o cadastro. No game simples, mas ao mesmo tempo emocionante do black jack, você deve ter a possibilidade de pelo menos twenty-one pontos enquanto u dealer nunca tem a possibilidade de passar de twenty-one. Jogadores do Brasil normalmente optam tanto pelos jogos normais de blackjack quanto pelos jogos ao vivo na Mostbet. A linha é o número entire de apostas o qual a Mostbet aceitará em um suceso esportivo específico. A primeira parte contém os resultados principais, tais como some sort of pontuação final, totais e handicaps. Se já tiver aproveitado o bônus para boas-vindas, poderá obter outros bônus em Mostbet.

  • Todas while transações são processadas com segurança máxima e os saques são processados de manera acelerada, geralmente em até 24 horas.
  • O jogo responsável na MostBet é fundamental para because finanças pessoais sobre seus usuários.
  • Em termos de seleções pré-jogo, a MostBet vem com alguma grande variedade de eventos em cependant de 20 esportes diferentes.
  • Nossas promoções regulares incluem cashback hebdomadario, bônus de recarga, torneios mensais possuindo prêmios em dinheiro e programa para fidelidade com recompensas exclusivas.
  • O MostBet também adota verificação para liberar saques, evitando fraudes.

Em termos de seleções pré-jogo, a MostBet vem com uma grande variedade para eventos em néanmoins de 20 esportes diferentes. Do futebol e basquetebol ao bandy e floorball a Mostbet online casino, o pagamento entire fica em 95%. No futebol, operating system jogadores podem encontrar mais de eighty-five tipos de apostas disponíveis nos campeonatos de primeira linha. Na Mostbet, você encontrará diferentes mercados para participar, tais como apostas esportivas, e-sports, jogos de casualidad, cassino ao vivo, fantasy games elizabeth muito mais. Você também terá the opção de comunicar de ligas de” “en absoluto o mundo no ano de suas apostas esportivas.

Resultados E Estatísticas Weil Partida

Pode confiar plenamente em nós, sabendo que estamos sempre ao reverso da sua protecção. Criámos um stimmung onde cada detalle está imbuído para uma paixão vello jogo e sobre um desejo sobre lhe proporcionar u máximo prazer. E as nossas slots são mais do que simples máquinas – são portais mágicos que to transportam para mundos de fantasia electronic aventura. Aventure-se mhh selva com civilizações antigas, visite naves espaciais em galáxias desconhecidas ou entre no espírito para antigas lendas electronic mitos. Há prémios incríveis à tua espera e the oportunidade de sony ericsson tornar um verdadeiro vencedor.

Na Line você aposta em partidas e confrontos que ainda não começaram. Graças a isso, você pode analisar a situação, avaliar a forma elizabeth a condição dasjenige equipes e realizar a melhor previsão. Os saques em MostBet são feitos de acordo com o método para pagamento utilizado. Descubra os caça-níqueis os quais estão definindo a tendência deste recto. Deposite no mínimo a few USD em criptomoedas em sua conta e ganhe a hundred giros totalmente gratuitos.

if (typeof TrustindexJsLoaded === 'undefined') { var TrustindexJsLoaded = {}; } TrustindexJsLoaded.common = true; String.prototype.ucfirst = function() { return this.charAt(0).toUpperCase() + this.slice(1) } function popupCenter(w, h) { let dleft = window.screenLeft !== undefined ? window.screenLeft : window.screenX; let dtop = window.screenTop !== undefined ? window.screenTop : window.screenY; let width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width; let height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height; let left = parseInt((width - w) / 2 + dleft); let top = parseInt((height - h) / 2 + dtop); return ',top=' + top + ',left=' + left; } jQuery.fn.expand = function() { let textarea = jQuery(this); let val = textarea.val(); textarea.css('height', textarea.get(0).scrollHeight + 'px'); textarea.val('').val(val); }; jQuery(document).ready(function() { /*************************************************************************/ /* PASSWORD TOGGLE */ jQuery('.ti-toggle-password').on('click', function(event) { event.preventDefault(); let icon = jQuery(this); let parent = icon.closest('.ti-form-group'); if (icon.hasClass('dashicons-visibility')) { parent.find('input').attr('type', 'text'); icon.removeClass('dashicons-visibility').addClass('dashicons-hidden'); } else { parent.find('input').attr('type', 'password'); icon.removeClass('dashicons-hidden').addClass('dashicons-visibility'); } }); // toggle opacity jQuery('.ti-toggle-opacity').css('opacity', 1); /*************************************************************************/ /* TOGGLE */ jQuery('#trustindex-plugin-settings-page .btn-toggle').on('click', function(event) { event.preventDefault(); jQuery(jQuery(this).attr('href')).toggle(); return false; }); /*************************************************************************/ /* FILTER */ // checkbox jQuery('.ti-checkbox:not(.ti-disabled)').on('click', function() { let checkbox = jQuery(this).find('input[type=checkbox], input[type=radio]'); checkbox.prop('checked', !checkbox.prop('checked')).trigger('change'); return false; }); // custom select - init jQuery('.ti-select').each(function() { let el = jQuery(this); let selected = el.find('ul li.ti-selected'); if (selected.length === 0) { selected = el.find('ul li:first'); } el.data('value', selected.data('value')).find('font').html(selected.html()); }); // custom select - toggle click jQuery(document).on('click', '.ti-select', function() { let el = jQuery(this); el.toggleClass('ti-active'); if (el.hasClass('ti-active')) { jQuery(window).unbind().on('click', function(event) { if (!jQuery(event.target).is(el) && jQuery(event.target).closest('.ti-select').length === 0) { el.removeClass('ti-active'); jQuery(window).unbind(); } }); } }); // custom select - select item jQuery(document).on('click', '.ti-select li', function() { let el = jQuery(this); el.parent().parent().data('value', el.data('value')).trigger('change').find('font').html(el.html()); el.parent().find('li').removeClass('ti-selected'); el.addClass('ti-selected'); }); var isNoReviewsWithFilter = false; // get reviews to memory var reviewsElement = jQuery('.ti-widget-editor-preview .ti-widget').clone(); // set reviews' rating and empty to attributes reviewsElement.find('.ti-review-item').each(function() { let el = jQuery(this); let rating = el.find('.ti-stars .ti-star.f, .stars .ti-star.f').length; // facebook recommendations if (el.find('.ti-recommendation-icon.positive').length) { rating = 5; } else if (el.find('.ti-recommendation-icon.negative').length) { rating = 1; } if (el.find('.ti-polarity-icon.positive').length) { rating = 5; } else if (el.find('.ti-polarity-icon.neutral').length) { rating = 3; } else if (el.find('.ti-polarity-icon.negative').length) { rating = 1; } // ten scale if (el.find('.ti-rating-box').length) { rating = Math.round(parseFloat(el.find('.ti-rating-box').text()) / 2); } let selector = '.ti-review-content'; if (el.find('.ti-review-content .ti-inner').length) { selector = '.ti-review-content .ti-inner'; } else if (el.find('.ti-review-text').length) { selector = '.ti-review-text'; } el.attr('data-rating', rating); if (typeof el.attr('data-empty') === 'undefined') { el.attr('data-empty', el.find(selector).text().trim() == "" ? 1 : 0); } }); // check badge type var isBadgeWidget = function() { let layoutId = jQuery('.ti-widget-editor-preview .ti-widget').data('layout-id'); return [ 11, 12, 20, 22, 24, 25, 26, 27, 28, 29, 35, 55, 56, 57, 58, 59, 60, 61, 62 ].indexOf(layoutId) != -1; }; // apply filter when change or init var applyFilter = function(init) { let styleId = parseInt(jQuery('.ti-widget').data('layout-id')); // get stars let stars = (jQuery('#ti-filter-star').data('value') + "").split(',').map(function(i) { return parseInt(i); }); // only ratings let showOnlyRatings = jQuery('#ti-filter-only-ratings').prop('checked'); // filter removed if (!jQuery('#ti-filter-star').length) { stars = [ 1, 2, 3, 4, 5 ]; showOnlyRatings = false; } // remove current review elements jQuery('.ti-widget .ti-reviews-container-wrapper .ti-review-item').remove(); // remove all event listeners on the widget let widget = document.querySelector('.ti-widget'); widget.replaceWith(widget.cloneNode(true)); // iterate through stored reviews let results = 0; reviewsElement.find('.ti-review-item').each(function() { let el = jQuery(this); // check rating if (stars.indexOf(el.data('rating')) !== -1) { // check only ratings if (showOnlyRatings && el.data('empty')) { return; } // return after 5 results (vertical widgets) if ([ '8', '9', '10', '18', '33' ].indexOf(styleId) !== -1 && results > 4) { return; } // clone and append element let clone = el.clone(); jQuery('.ti-widget-editor-preview .ti-widget .ti-reviews-container-wrapper').append(clone); clone.hide(); clone.fadeIn(); // increase count results++; } }); // clear pager interval if (typeof Trustindex !== 'undefined' && Trustindex.intervalPointer) { clearInterval(Trustindex.intervalPointer); } // show empty text if (results === 0 && !isBadgeWidget()) { jQuery('.ti-widget-editor-preview .ti-widget').hide().next().fadeIn(); isNoReviewsWithFilter = true; } else { jQuery('.ti-widget-editor-preview .ti-widget').fadeIn().next().hide(); isNoReviewsWithFilter = false; if (typeof Trustindex !== 'undefined') { Trustindex.pager_inited = true; Trustindex.init_pager(document.querySelectorAll('.ti-widget')); Trustindex.resize_widgets(); } } // ajax save if (init !== true) { jQuery.post('', { command: 'save-filter', _wpnonce: jQuery('#ti-filter-star').data('nonce'), filter: JSON.stringify({ 'stars': stars, 'only-ratings': showOnlyRatings }) }); } } // hooks jQuery('#ti-filter-star').on('change', applyFilter); jQuery('#ti-filter-only-ratings').on('change', function(event) { event.preventDefault(); applyFilter(); return false; }); // init if (reviewsElement.length) { applyFilter(true); } // background post save - style and set change jQuery('#ti-widget-selects select, #ti-widget-options input[type=checkbox]:not(.no-form-update)').on('change', function() { let form = jQuery(this).closest('form'); let data = form.serializeArray(); // include unchecked checkboxes form.find('input[type=checkbox]:not(.no-form-update)').each(function() { let checkbox = jQuery(this); if (!checkbox.prop('checked') && checkbox.attr('name')) { data.push({ name: checkbox.attr('name'), value: 0 }); } }); // show loading jQuery('#ti-loading').addClass('ti-active'); jQuery('li.ti-preview-box').addClass('disabled'); jQuery.ajax({ url: form.attr('action'), type: 'post', dataType: 'application/json', data: data }).always(() => location.reload(true)); return false; }); // layout select filter jQuery('input[name=layout-select]').on('change', function(event) { event.preventDefault(); let ids = (jQuery('input[name=layout-select]:checked').data('ids') + "").split(','); console.log('filter', ids); if (ids.length === 0 || ids[0] === "") { jQuery('.ti-preview-boxes-container').find('.ti-full-width, .ti-half-width').fadeIn(); } else { jQuery('.ti-preview-boxes-container').find('.ti-full-width, .ti-half-width').hide(); ids.forEach(id => jQuery('.ti-preview-boxes-container').find('.ti-preview-boxes[data-layout-id="'+ id + '"]').parent().fadeIn()); } return false; }); /*************************************************************************/ /* MODAL */ jQuery(document).on('click', '.btn-modal-close', function(event) { event.preventDefault(); jQuery(this).closest('.ti-modal').fadeOut(); }); jQuery(document).on('click', '.ti-modal', function(event) { if (event.target.nodeName !== 'A') { event.preventDefault(); if (!jQuery(event.target).closest('.ti-modal-dialog').length) { jQuery(this).fadeOut(); } } }); /*************************************************************************/ /* NOTICE HIDE */ jQuery(document).on('click', '.ti-notice.is-dismissible .notice-dismiss', function() { let button = jQuery(this); let container = button.closest('.ti-notice'); container.fadeOut(200); if (button.data('command') && !button.data('ajax-run')) { button.data('ajax-run', 1); // prevent multiple triggers jQuery.post('', { command: button.data('command') }); } }); jQuery('.ti-checkbox input[type=checkbox][onchange]').on('change', function() { jQuery('#ti-loading').addClass('ti-active'); }); /*************************************************************************/ /* DROPDOWN */ // change dropdown arrow positions let fixDropdownArrows = function() { jQuery('.ti-button-dropdown-arrow').each(function() { let arrow = jQuery(this); let button = arrow.closest('td').find(arrow.data('button')); // add prev buttons' width let left = 0; button.prevAll('.ti-btn').each(function() { left += jQuery(this).outerWidth(true); }); // center the arrow left += button.outerWidth() / 2; arrow.css('left', left + 'px'); }); }; fixDropdownArrows(); /*************************************************************************/ /* AI REPLY */ let generateAiReply = function(text, callback) { let tiWindow = window.open('', 'trustindex-generate-ai-reply', 'width=500,height=500,menubar=0' + popupCenter(500, 500)); let form = document.createElement('form'); let input = document.createElement('input'); // create form to pass POST data form.target = 'trustindex-generate-ai-reply'; form.method = 'POST'; form.action = 'https://admin.trustindex.io/integration/generateAiReply'; form.style.display = 'none'; // data will be in a hidden input input.type = 'hidden'; input.name = 'json'; input.value = JSON.stringify({ text: text, language: jQuery('#ti-widget-language').val() }); form.appendChild(input); // add form to body document.body.appendChild(form); if (tiWindow) { form.submit(); } // remove added form form.remove(); // popup close interval let timer = setInterval(function() { if (tiWindow.closed) { callback(false); clearInterval(timer); } }, 1000); // wait for response from Trustindex jQuery(window).one('message', function(event) { // event comes from the correct window if (tiWindow == event.originalEvent.source) { clearInterval(timer); callback(event.originalEvent.data.reply); tiWindow.close(); } }); }; let postReply = function(data, reconnect, callback) { let tiWindow = window.open('', 'trustindex-post-reply', 'width=600,height=600,menubar=0' + popupCenter(600, 600)); let form = document.createElement('form'); let input = document.createElement('input'); // create form to pass POST data form.target = 'trustindex-post-reply'; form.method = 'POST'; form.action = 'https://admin.trustindex.io/integration/postReply?type=google'; form.style.display = 'none'; if (reconnect) { form.action += '&reconnect=1'; } // data will be in a hidden input (JSON) input.type = 'hidden'; input.name = 'json'; input.value = JSON.stringify(data); form.appendChild(input); // add form to body document.body.appendChild(form); if (tiWindow) { form.submit(); } // remove added form form.remove(); // popup close interval let timer = setInterval(function() { if (tiWindow.closed) { callback(undefined); clearInterval(timer); } }, 1000); // wait for response from Trustindex jQuery(window).one('message', function(event) { // event comes from the correct window if (tiWindow == event.originalEvent.source) { clearInterval(timer); callback(!!event.originalEvent.data.success); tiWindow.close(); } }); }; // show reply section // - generate reply with AI if not edit jQuery(document).on('click', '.btn-show-ai-reply', function(event) { event.preventDefault(); let btn = jQuery(this); let td = btn.closest('td'); btn.addClass('ti-btn-loading').blur(); let replyBox = td.find('.ti-reply-box'); replyBox.find('.btn-post-reply').attr('data-reconnect', 0); replyBox.find('.ti-alert').addClass('ti-d-none'); // generate reply with AI if not edit if (replyBox.attr('data-state') === 'reply' || replyBox.attr('data-state') === 'copy-reply') { let data = JSON.parse(replyBox.next().html()); generateAiReply(data.review.text, function(reply) { btn.removeClass('ti-btn-loading'); // popup closed if (reply === false) { return; } btn.addClass('ti-btn-default-disabled'); replyBox.addClass('ti-active'); td.find('.ti-highlight-box').removeClass('ti-active'); td.find('.btn-show-highlight').removeClass('ti-btn-default-disabled'); let textarea = replyBox.find('.state-'+ replyBox.attr('data-state') +' textarea'); textarea.val(reply).focus().expand(); if (!data.review.text.trim()) { replyBox.find('.ti-alert.ti-alert-empty-review').removeClass('d-none'); } // save in DB jQuery.ajax({ method: 'POST', url: window.location.href, data: { 'save-reply-generated': 1 } }); }); } else { btn.removeClass('ti-btn-loading').addClass('ti-btn-default-disabled'); replyBox.addClass('ti-active'); td.find('.ti-highlight-box').removeClass('ti-active'); td.find('.btn-show-highlight').removeClass('ti-btn-default-disabled'); } }); // hide reply section jQuery(document).on('click', '.btn-hide-ai-reply', function(event) { event.preventDefault(); let btn = jQuery(this); btn.blur(); let replyBox = btn.closest('td').find('.ti-reply-box'); replyBox.attr('data-state', replyBox.attr('data-original-state')); if (replyBox.attr('data-state') !== 'replied') { replyBox.removeClass('ti-active'); } btn.closest('td').find('.btn-show-ai-reply').removeClass('ti-btn-default-disabled'); }); // show edit reply section jQuery(document).on('click', '.btn-show-edit-reply', function(event) { event.preventDefault(); let btn = jQuery(this); let replyBox = btn.closest('td').find('.ti-reply-box'); replyBox.attr('data-state', 'edit-reply'); replyBox.find('.state-edit-reply textarea').focus().expand(); }); // hide edit reply section jQuery(document).on('click', '.btn-hide-edit-reply', function(event) { event.preventDefault(); let btn = jQuery(this); let replyBox = btn.closest('td').find('.ti-reply-box'); replyBox.find('.ti-alert').addClass('ti-d-none'); replyBox.attr('data-state', 'replied'); }); // post reply jQuery(document).on('click', '.btn-post-reply', function(event) { event.preventDefault(); let btn = jQuery(this); let replyBox = btn.closest('td').find('.ti-reply-box'); let data = JSON.parse(replyBox.next().html()); let textarea = btn.closest('.ti-reply-box-state').find('textarea'); let reply = textarea.val().trim(); textarea.removeClass('is-invalid'); if (reply === "") { return textarea.addClass('is-invalid'); } btn.addClass('ti-btn-loading').blur(); data.reply = reply; postReply(data, btn.attr('data-reconnect') == 1, function(isSuccess) { btn.removeClass('ti-btn-loading'); // popup closed if (isSuccess === undefined) { return; } if (isSuccess) { // save in DB jQuery.ajax({ method: 'POST', url: window.location.href, data: { id: btn.attr('href'), _wpnonce: btn.data('nonce'), 'save-reply': reply } }); // show replied section replyBox.attr('data-state', 'replied').attr('data-original-state', 'replied'); replyBox.find('.state-replied p').html(reply); replyBox.find('.state-edit-reply textarea').val(reply); replyBox.find('.state-replied .ti-alert').removeClass('ti-d-none'); // change Reply with AI button text let replyButton = replyBox.closest('td').find('.btn-show-ai-reply:not(.btn-default)'); if (replyButton.length) { replyButton.html(replyButton.data('edit-reply-text')).addClass('btn-default'); setTimeout(fixDropdownArrows, 100); } } else { // set try again button state replyBox.find('.state-copy-reply .btn-try-reply-again').data('state', replyBox.attr('data-state')); // show copy section replyBox.attr('data-state', 'copy-reply'); replyBox.find('.state-copy-reply textarea').val(reply).focus().expand(); replyBox.find('.state-copy-reply .ti-alert').removeClass('ti-d-none'); } }); }); /*************************************************************************/ /* HIGHLIGHT */ // show highlight section jQuery(document).on('click', '.btn-show-highlight', function(event) { event.preventDefault(); let btn = jQuery(this); let td = btn.closest('td'); let replyBox = td.find('.ti-reply-box'); btn.addClass('ti-btn-default-disabled').blur(); td.find('.ti-highlight-box').addClass('ti-active'); replyBox.attr('data-state', replyBox.attr('data-original-state')); replyBox.removeClass('ti-active'); td.find('.btn-show-ai-reply').removeClass('ti-btn-default-disabled'); }); // hide highlight section jQuery(document).on('click', '.btn-hide-highlight', function(event) { event.preventDefault(); let btn = jQuery(this); let td = btn.closest('td'); btn.blur(); td.find('.ti-highlight-box').removeClass('ti-active'); td.find('.btn-show-highlight').removeClass('ti-btn-default-disabled'); td.find('.ti-reply-box[data-state="replied"]').addClass('ti-active'); if (td.find('.ti-reply-box').attr('data-state') === 'replied') { td.find('.btn-show-ai-reply').addClass('ti-btn-default-disabled'); } }); // highlight save jQuery(document).on('click', '.btn-save-highlight', function(event) { event.preventDefault(); let btn = jQuery(this); let highlightContent = btn.closest('td').find('.ti-highlight-content .ti-selection-content'); let data = TI_highlight_getSelection(highlightContent.get(0)); if (data.start !== null) { data.id = btn.attr('href'); data._wpnonce = btn.data('nonce'); data['save-highlight'] = 1; btn.addClass('ti-btn-loading').blur(); btn.closest('td').find('.ti-btn').css('pointer-events', 'none'); jQuery.ajax({ method: 'POST', url: window.location.href, data: data }).always(() => location.reload(true)); } }); // highlight remove jQuery(document).on('click', '.btn-remove-highlight', function(event) { event.preventDefault(); let btn = jQuery(this); btn.addClass('ti-btn-loading').blur(); btn.closest('td').find('.ti-btn').css('pointer-events', 'none'); jQuery.ajax({ method: 'POST', url: window.location.href, data: { id: btn.attr('href'), _wpnonce: btn.data('nonce'), 'save-highlight': 1 } }).always(() => location.reload(true)); }); // review download notification email jQuery(document).on('click', '.btn-notification-email-save', function(event) { event.preventDefault(); let container = jQuery(this).closest('.ti-notification-email'); let input = container.find('input[type="text"]'); let type = input.data('type'); let nonce = input.data('nonce'); let email = input.val().trim().toLowerCase(); // hide alerts container.find('.ti-notice').hide(); // check email if (email !== "" && !/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(email)) { return container.find('.ti-notice').fadeIn(); } // show loading jQuery('#ti-loading').addClass('ti-active'); // save email jQuery.post("", { 'save-notification-email': email, 'type': type, '_wpnonce': nonce }, () => location.reload(true)); }); }); // - import/btn-loading.js // loading on click jQuery(document).on('click', '.ti-btn-loading-on-click', function() { let btn = jQuery(this); btn.addClass('ti-btn-loading').blur(); }); // - import/copy-to-clipboard.js jQuery(document).on('click', '.btn-copy2clipboard', function(event) { event.preventDefault(); let btn = jQuery(this); btn.blur(); let obj = jQuery(btn.attr('href')); let text = obj.html() ? obj.html() : obj.val(); // parse html let textArea = document.createElement('textarea'); textArea.innerHTML = text; text = textArea.value; let feedback = () => { btn.removeClass('ti-toggle-tooltip').addClass('ti-show-tooltip'); if (typeof this.timeout !== 'undefined') { clearTimeout(this.timeout); } this.timeout = setTimeout(() => btn.removeClass('ti-show-tooltip').addClass('ti-toggle-tooltip'), 3000); }; if (!navigator.clipboard) { // fallback textArea = document.createElement('textarea'); textArea.value = text; textArea.style.position = 'fixed'; // avoid scrolling to bottom document.body.appendChild(textArea); textArea.focus(); textArea.select(); try { var successful = document.execCommand('copy'); feedback(); } catch (err) { } document.body.removeChild(textArea); return; } navigator.clipboard.writeText(text).then(feedback); }); // - import/feature-request.js jQuery(document).on('click', '.btn-send-feature-request', function(event) { event.preventDefault(); let btn = jQuery(this); btn.blur(); let container = jQuery('.ti-feature-request'); let email = container.find('input[name="email"]').val().trim(); let text = container.find('textarea[name="description"]').val().trim(); // hide errors container.find('.is-invalid').removeClass('is-invalid'); // check email if (email === "" || !/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(email)) { container.find('input[name="email"]').addClass('is-invalid'); } // check text if (text === "") { container.find('textarea[name="description"]').addClass('is-invalid'); } // there is error if (container.find('.is-invalid').length) { return false; } // show loading animation btn.addClass('ti-btn-loading'); let data = new FormData(jQuery('.ti-feature-request form').get(0)); // ajax request jQuery.ajax({ type: 'POST', data: data, cache: false, contentType: false, processData: false }).always(function() { btn.removeClass('ti-btn-loading'); btn.addClass('ti-show-tooltip').removeClass('ti-toggle-tooltip'); setTimeout(() => btn.removeClass('ti-show-tooltip').addClass('ti-toggle-tooltip'), 3000); }); }); // - import/rate-us.js // remember on hover jQuery(document).on('mouseenter', '.ti-quick-rating', function(event) { let container = jQuery(this); let selected = container.find('.ti-star-check.ti-active, .star-check.active'); if (selected.length) { // add index to data & remove all active stars container.data('selected', selected.index()).find('.ti-star-check, .star-check').removeClass('ti-active active'); // give back active star on mouse enter container.one('mouseleave', () => container.find('.ti-star-check, .star-check').eq(container.data('selected')).addClass('ti-active active')); } }); // star click jQuery(document).on('click', '.ti-rate-us-box .ti-quick-rating .ti-star-check', function(event) { event.preventDefault(); let star = jQuery(this); let container = star.parent(); // add index to data & remove all active stars container.data('selected', star.index()).find('.ti-star-check').removeClass('ti-active'); // select current star star.addClass('ti-active'); // show modals if (parseInt(star.data('value')) >= 4) { // open new window window.open(location.href + '&command=rate-us-feedback&_wpnonce='+ container.data('nonce') +'&star=' + star.data('value'), '_blank'); jQuery('.ti-rate-us-box').fadeOut(); } else { let feedbackModal = jQuery('#ti-rateus-modal-feedback'); if (feedbackModal.data('bs') == '5') { feedbackModal.modal('show'); setTimeout(() => feedbackModal.find('textarea').focus(), 500); } else { feedbackModal.fadeIn(); feedbackModal.find('textarea').focus(); } feedbackModal.find('.ti-quick-rating .ti-star-check').removeClass('ti-active').eq(star.index()).addClass('ti-active'); } }); // write to support jQuery(document).on('click', '.btn-rateus-support', function(event) { event.preventDefault(); let btn = jQuery(this); btn.blur(); let container = jQuery('#ti-rateus-modal-feedback'); let email = container.find('input[type=text]').val().trim(); let text = container.find('textarea').val().trim(); // hide errors container.find('input[type=text], textarea').removeClass('is-invalid'); // check email if (email === "" || !/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(email)) { container.find('input[type=text]').addClass('is-invalid').focus(); } // check text if (text === "") { container.find('textarea').addClass('is-invalid').focus(); } // there is error if (container.find('.is-invalid').length) { return false; } // show loading animation btn.addClass('ti-btn-loading'); container.find('a, button').css('pointer-events', 'none'); // ajax request jQuery.ajax({ type: 'post', dataType: 'application/json', data: { command: 'rate-us-feedback', _wpnonce: btn.data('nonce'), email: email, text: text, star: container.find('.ti-quick-rating .ti-star-check.ti-active').data('value') } }).always(() => location.reload(true)); });