var strict; /*!------------------------------------------------------ * jQuery nearest v1.0.3 * http://github.com/jjenzz/jQuery.nearest * ------------------------------------------------------ * Copyright (c) 2012 J. Smith (@jjenzz) * Dual licensed under the MIT and GPL licenses: * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html */ (function ($, d) { $.fn.nearest = function (selector) { var self, nearest, el, s, p, hasQsa = d.querySelectorAll; function update(el) { nearest = nearest ? nearest.add(el) : $(el); } this.each(function () { self = this; $.each(selector.split(','), function () { s = $.trim(this); if (!s.indexOf('#')) { // selector starts with an ID update((hasQsa ? d.querySelectorAll(s) : $(s))); } else { // is a class or tag selector // so need to traverse p = self.parentNode; while (p) { el = hasQsa ? p.querySelectorAll(s) : $(p).find(s); if (el.length) { update(el); break; } p = p.parentNode; } } }); }); return nearest || $(); }; }(jQuery, document)); jQuery(document).ready(function ($) { /* Show Whatsapp button on mobile devices iPhones and Android only */ if (navigator.userAgent.match(/(iPhone)/i) || navigator.userAgent.match(/(Android)/i)) { $('.mashicon-whatsapp').show(); } /** * Get facebook share count vi js client request * * @returns {undefined} * * not used any longer */ var mashsb_get_fb_shares = function () { if (document.querySelector('.mashsb-buttons') === null) { return false; } if ('undefined' !== typeof (mashsb.refresh) && mashsb.refresh === '0') { return false; } if ('undefined' === typeof (mashsb.share_url) && mashsb.share_url !== '') { return false; } if ('undefined' === typeof (mashsb.postid) && mashsb.postid !== '') { return false; } if (mashsb_is_rate_limit()) { return false; } //mashsb.share_url = 'https://www.google.de'; var facebookGraphURL = 'https://graph.facebook.com/?id=' + mashsb.share_url; $.ajax({ type: 'GET', url: facebookGraphURL, dataType: 'json', success: function (data) { mashsb_set_fb_sharecount(data); console.log(data); }, error: function (e) { console.log(e) } }) } // Make sure page has been loaded completely before requesting any shares via ajax // This also prevents hitting the server too often //setTimeout(mashsb_get_fb_shares, 3000); /** * If page is older than 30 second it's cached. So do not call FB API again * @returns {Boolean} */ function mashsb_is_rate_limit() { if ("undefined" === typeof (mashsb.servertime)) { return true; } var serverTime = Number(mashsb.servertime); var clientTime = Math.floor(Date.now() / 1000); if (clientTime > (serverTime + 30)) { console.log('rate limited: ' + (serverTime + 30)); return true; } else { console.log('not rate limited: ' + (serverTime + 30)); return false; } } /** * Store FB return data in mashshare cache vi js client request * @returns {undefined} */ function mashsb_set_fb_sharecount(result) { if ('undefined' === typeof (result.share)) { console.log('No valid result' + result); return false; } var data = { action: 'mashsb_set_fb_shares', shares: result.share, postid: mashsb.postid, url: mashsb.share_url, nonce: mashsb.nonce } $.ajax({ type: "post", url: mashsb.ajaxurl, data: data, success: function (res) { console.log('Save fb results: ' + res); }, error: function (e) { console.log('Unknown error ' + e) } }) } // pinterest button logic $('body') .off('click', '.mashicon-pinterest') .on('click', '.mashicon-pinterest', function (e) { e.preventDefault(); console.log('preventDefault:' + e); winWidth = 520; winHeight = 350; var winTop = (screen.height / 2) - (winHeight / 2); var winLeft = (screen.width / 2) - (winWidth / 2); var url = $(this).attr('data-mashsb-url'); window.open(url, 'sharer', 'top=' + winTop + ',left=' + winLeft + ',toolbar=0,status=0,width=' + winWidth + ',height=' + winHeight + ',resizable=yes'); }); /* Load Pinterest Popup window * * @param string html container * @returns void */ function load_pinterest(html) { mashnet_load_pinterest_body(); jQuery('.mashnet_pinterest_header').fadeIn(500); jQuery('.mashnet_pinterest_inner').html(html); /* Close Pinterest popup*/ jQuery('.mashnet_pinterest_close').click(function (e) { e.preventDefault(); jQuery('.mashnet_pinterest_header').hide(); }); } /** * Load pinterest wrapper * * @returns voids */ function load_pinterest_body() { var winWidth = window.innerWidth; var popupWidth = 350; var popupHeight = 310; /* Load Pinterest popup into body of page */ if (winWidth <= 330) var popupWidth = 310; if (winWidth > 400) var popupWidth = 390; if (winWidth > 500) var popupWidth = 490; var winTop = (window.innerHeight / 2) - (popupHeight / 2); var winLeft = (window.innerWidth / 2) - (popupWidth / 2); var struct = '
\n\
Pin it! \n\
\n\
\n\
\n\ '; jQuery('body').append(struct); } /* Get all images on site * * @return html * */ function get_images(url) { var allImages = jQuery('img').not("[nopin='nopin']"); var html = ''; var url = ''; var largeImages = allImages.filter(function () { return (jQuery(this).width() > 70) || (jQuery(this).height() > 70) }) for (i = 0; i < largeImages.length; i++) { html += '
  • '; } } // Fix for the inline post plugin which removes the zero share count if ($('.mashsbcount').text() == '') { $('.mashsbcount').text(0); } // check the sharecount caching method mashsb_check_cache(); /** * Check Cache * */ function mashsb_check_cache() { if (mashsb_is_rate_limit()) { return false; } setTimeout(function () { if (typeof (mashsb) && mashsb.refresh == "1") { mashsb_update_cache(); } }, 6000); } function mashsb_update_cache() { var mashsb_url = window.location.href; if (mashsb_url.indexOf("?") > -1) { mashsb_url += "&mashsb-refresh"; } else { mashsb_url += "?mashsb-refresh"; } var xhr = new XMLHttpRequest(); xhr.open("GET", mashsb_url, true); xhr.send(); } /* Opens a new minus button when plus sign is clicked */ /* Toogle function for more services */ $('.onoffswitch').on('click', function () { var $parent = $(this).parents('.mashsb-container'); $parent.find('.onoffswitch').hide(); $parent.find('.secondary-shares').show(); $parent.find('.onoffswitch2').show(); }); $('.onoffswitch2').on('click', function () { var $parent = $(this).parents('.mashsb-container'); $parent.find('.onoffswitch').show(); $parent.find('.secondary-shares').hide(); }); /* Network sharer scripts */ /* deactivate FB sharer when likeaftershare is enabled */ if (typeof lashare_fb == "undefined" && typeof mashsb !== 'undefined') { $('.mashicon-facebook').click(function (e) { winWidth = 520; winHeight = 550; var winTop = (screen.height / 2) - (winHeight / 2); var winLeft = (screen.width / 2) - (winWidth / 2); var url = $(this).attr('href'); window.open(url, 'sharer', 'top=' + winTop + ',left=' + winLeft + ',toolbar=0,status=0,width=' + winWidth + ',height=' + winHeight); e.preventDefault(); return false; }); } if (typeof mashsb !== 'undefined') { $('.mashicon-twitter').click(function (e) { winWidth = 520; winHeight = 350; var winTop = (screen.height / 2) - (winHeight / 2); var winLeft = (screen.width / 2) - (winWidth / 2); var url = $(this).attr('href'); // deprecated and removed because TW popup opens twice if (mashsb.twitter_popup === '1') { window.open(url, 'sharer', 'top=' + winTop + ',left=' + winLeft + ',toolbar=0,status=0,width=' + winWidth + ',height=' + winHeight); } e.preventDefault(); return false; }); } if (typeof mashsb !== 'undefined' && mashsb.subscribe === 'content') { /* Toogle container display:none */ $('.mashicon-subscribe').not('.trigger_active').nearest('.mashsb-toggle-container').hide(); $('.mashicon-subscribe').click(function () { var trig = $(this); if (trig.hasClass('trigger_active')) { $(trig).nearest('.mashsb-toggle-container').slideToggle('fast'); trig.removeClass('trigger_active'); //$(".mashicon-subscribe").css({"padding-bottom":"10px"}); } else { $('.trigger_active').nearest('.mashsb-toggle-container').slideToggle('slow'); $('.trigger_active').removeClass('trigger_active'); $(trig).nearest('.mashsb-toggle-container').slideToggle('fast'); trig.addClass('trigger_active'); //$(".mashicon-subscribe").css({"padding-bottom":"13px"}); } ; return false; }); } if (typeof mashsb !== 'undefined' && mashsb.subscribe === 'link') { $('.mashicon-subscribe').click(function () { var href = mashsb.subscribe_url; $(this).attr("href", href); }); } ; /* Round the shares callback function * * @param {type} value * @returns {String|@exp;value@call;toFixed} */ function roundShares(value) { if (typeof mashsb !== "undefined" && mashsb.round_shares == 1) { if (value > 1000000) { shares = Math.round((value / 1000000) * 10) / 10 + 'M'; return shares; } if (value > 1000) { shares = Math.round((value / 1000) * 10) / 10 + 'k'; return shares; } } /* zero decimals */ return value.toFixed(0); } /* Count up script jquery-countTo * by mhuggins * * Source: https://github.com/mhuggins/jquery-countTo */ (function ($) { $.fn.countTo = function (options) { options = options || {}; return $(this).each(function () { // set options for current element var settings = $.extend({}, $.fn.countTo.defaults, { from: $(this).data('from'), to: $(this).data('to'), speed: $(this).data('speed'), refreshInterval: $(this).data('refresh-interval'), decimals: $(this).data('decimals') }, options); // how many times to update the value, and how much to increment the value on each update var loops = Math.ceil(settings.speed / settings.refreshInterval), increment = (settings.to - settings.from) / loops; // references & variables that will change with each update var self = this, $self = $(this), loopCount = 0, value = settings.from, data = $self.data('countTo') || {}; $self.data('countTo', data); // if an existing interval can be found, clear it first if (data.interval) { clearInterval(data.interval); } data.interval = setInterval(updateTimer, settings.refreshInterval); // initialize the element with the starting value render(value); function updateTimer() { value += increment; loopCount++; render(value); if (typeof (settings.onUpdate) == 'function') { settings.onUpdate.call(self, value); } if (loopCount >= loops) { // remove the interval $self.removeData('countTo'); clearInterval(data.interval); value = settings.to; if (typeof (settings.onComplete) == 'function') { settings.onComplete.call(self, value); } } } function render(value) { var formattedValue = settings.formatter.call(self, value, settings); $self.text(formattedValue); } }); }; $.fn.countTo.defaults = { from: 0, // the number the element should start at to: 0, // the number the element should end at speed: 1000, // how long it should take to count between the target numbers refreshInterval: 100, // how often the element should be updated decimals: 0, // the number of decimal places to show //formatter: formatter, // handler for formatting the value before rendering formatter: roundShares, onUpdate: null, // callback method for every time the element is updated onComplete: null // callback method for when the element finishes updating }; function formatter(value, settings) { return value.toFixed(settings.decimals); } }(jQuery)); /* * Start the counter * */ if (typeof mashsb !== 'undefined' && mashsb.animate_shares == 1 && $('.mashsbcount').length) { $('.mashsbcount').countTo({from: 0, to: mashsb.shares, speed: 1000, refreshInterval: 100}); } });