(function ($) { 'use strict'; $(function () { var delay_on_start = 3000; var $whatsappcontactme = $('.whatsappcontactme'); var $badge = $whatsappcontactme.find('.whatsappcontactme__badge'); var wame_settings = $whatsappcontactme.data('settings'); // In some strange cases data settings are empty if (typeof (wame_settings) == 'undefined') { try { wame_settings = JSON.parse($whatsappcontactme.attr('data-settings')); } catch (error) { wame_settings = undefined; } } // only works if whatsappcontactme is defined if ($whatsappcontactme.length && !!wame_settings && !!wame_settings.telephone) { whatsappcontactme_magic(); } function whatsappcontactme_magic() { var is_mobile = !!navigator.userAgent.match(/Android|iPhone|BlackBerry|IEMobile|Opera Mini/i); var has_cta = wame_settings.message_text !== ''; var message_hash, is_viewed, timeoutID; // stored values var messages_viewed = (localStorage.whatsappcontactme_hashes || '').split(',').filter(Boolean); var is_second_visit = localStorage.whatsappcontactme_visited == 'yes'; if (has_cta) { message_hash = hash(wame_settings.message_text).toString(); is_viewed = messages_viewed.indexOf(message_hash) > -1; } localStorage.whatsappcontactme_visited = 'yes'; if (!wame_settings.mobile_only || is_mobile) { // show button setTimeout(function () { $whatsappcontactme.addClass('whatsappcontactme--show'); }, delay_on_start); if (has_cta && !is_viewed) { if (wame_settings.message_badge) { // show badge setTimeout(function () { $badge.addClass('whatsappcontactme__badge--in'); }, delay_on_start + wame_settings.message_delay); } else if (is_second_visit) { // show dialog setTimeout(function () { $whatsappcontactme.addClass('whatsappcontactme--dialog'); }, delay_on_start + wame_settings.message_delay); } } } if (has_cta && !is_mobile) { $('.whatsappcontactme__button') .mouseenter(function () { timeoutID = setTimeout(show_dialog, 1500); }) .mouseleave(function () { clearTimeout(timeoutID); }); } $('.whatsappcontactme__button').click(function () { var link = whatsapp_link(wame_settings.telephone, wame_settings.message_send); if (has_cta && !$whatsappcontactme.hasClass('whatsappcontactme--dialog')) { show_dialog(); } else { $whatsappcontactme.removeClass('whatsappcontactme--dialog'); save_message_viewed(); send_event(link); // Open WhatsApp link window.open(link, 'whatsappcontactme'); } }); $('.whatsappcontactme__input_message-btn-send').click(function () { var link = whatsapp_link(wame_settings.telephone, document.getElementById("whatsappcontactme__input_custom").value); if (has_cta && !$whatsappcontactme.hasClass('whatsappcontactme--dialog')) { show_dialog(); } else { $whatsappcontactme.removeClass('whatsappcontactme--dialog'); save_message_viewed(); send_event(link); // Open WhatsApp link window.open(link, 'whatsappcontactme'); } }); $('.whatsappcontactme__close').click(function () { $whatsappcontactme.removeClass('whatsappcontactme--dialog'); save_message_viewed(); }); function show_dialog() { $whatsappcontactme.addClass('whatsappcontactme--dialog'); document.getElementById("whatsappcontactme__input_custom").value=wame_settings.message_send; if (wame_settings.message_badge && $badge.hasClass('whatsappcontactme__badge--in')) { $badge.removeClass('whatsappcontactme__badge--in').addClass('whatsappcontactme__badge--out'); save_message_viewed(); } } function save_message_viewed() { if (has_cta && !is_viewed) { messages_viewed.push(message_hash) localStorage.whatsappcontactme_hashes = messages_viewed.join(','); is_viewed = true; } } } }); // Return a simple hash (source https://gist.github.com/iperelivskiy/4110988#gistcomment-2697447) function hash(s) { for (var i = 0, h = 1; i < s.length; i++) { h = Math.imul(h + s.charCodeAt(i) | 0, 2654435761); } return (h ^ h >>> 17) >>> 0; }; // Return WhatsApp link with optional message function whatsapp_link(phone, message) { var link = 'https://api.whatsapp.com/send?phone=' + phone; if (typeof (message) == 'string' && message != '') { link += '&text=' + encodeURIComponent(message); } return link; } // Trigger Google Analytics event function send_event(link) { if (typeof gtag == 'function') { // Send event (Global Site Tag - gtag.js) gtag('event', 'click', { 'event_category': 'whatsappcontactme', 'event_label': link, 'transport_type': 'beacon' }); } else if (typeof ga == 'function') { // Send event (Universal Analtics - analytics.js) ga('send', 'event', { 'eventCategory': 'whatsappcontactme', 'eventAction': 'click', 'eventLabel': link, 'transport': 'beacon' }); } } }(jQuery));