! function(a) { var b = /iPhone/i, c = /iPod/i, d = /iPad/i, e = /(?=.*\bAndroid\b)(?=.*\bMobile\b)/i, f = /Android/i, g = /(?=.*\bAndroid\b)(?=.*\bSD4930UR\b)/i, h = /(?=.*\bAndroid\b)(?=.*\b(?:KFOT|KFTT|KFJWI|KFJWA|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|KFARWI|KFASWI|KFSAWI|KFSAWA)\b)/i, i = /IEMobile/i, j = /(?=.*\bWindows\b)(?=.*\bARM\b)/i, k = /BlackBerry/i, l = /BB10/i, m = /Opera Mini/i, n = /(CriOS|Chrome)(?=.*\bMobile\b)/i, o = /(?=.*\bFirefox\b)(?=.*\bMobile\b)/i, p = new RegExp("(?:Nexus 7|BNTV250|Kindle Fire|Silk|GT-P1000)", "i"), q = function(a, b) { return a.test(b) }, r = function(a) { var r = a || navigator.userAgent, s = r.split("[FBAN"); return "undefined" != typeof s[1] && (r = s[0]), s = r.split("Twitter"), "undefined" != typeof s[1] && (r = s[0]), this.apple = { phone: q(b, r), ipod: q(c, r), tablet: !q(b, r) && q(d, r), device: q(b, r) || q(c, r) || q(d, r) }, this.amazon = { phone: q(g, r), tablet: !q(g, r) && q(h, r), device: q(g, r) || q(h, r) }, this.android = { phone: q(g, r) || q(e, r), tablet: !q(g, r) && !q(e, r) && (q(h, r) || q(f, r)), device: q(g, r) || q(h, r) || q(e, r) || q(f, r) }, this.windows = { phone: q(i, r), tablet: q(j, r), device: q(i, r) || q(j, r) }, this.other = { blackberry: q(k, r), blackberry10: q(l, r), opera: q(m, r), firefox: q(o, r), chrome: q(n, r), device: q(k, r) || q(l, r) || q(m, r) || q(o, r) || q(n, r) }, this.seven_inch = q(p, r), this.any = this.apple.device || this.android.device || this.windows.device || this.other.device || this.seven_inch, this.phone = this.apple.phone || this.android.phone || this.windows.phone, this.tablet = this.apple.tablet || this.android.tablet || this.windows.tablet, "undefined" == typeof window ? this : void 0 }, s = function() { var a = new r; return a.Class = r, a }; "undefined" != typeof module && module.exports && "undefined" == typeof window ? module.exports = r : "undefined" != typeof module && module.exports && "undefined" != typeof window ? module.exports = s() : "function" == typeof define && define.amd ? define("isMobile", [], a.isMobile = s()) : a.isMobile = s() }(this); //subscription code function checkCookie(name) { var nameEQ = encodeURIComponent(name) + "="; var ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) === ' ') c = c.substring(1, c.length); if (c.indexOf(nameEQ) === 0) return decodeURIComponent(c.substring(nameEQ.length, c.length)); } return null; } if (checkCookie('PUBLIR_SUBSCRIBER') === null) { var display_ads_server = 'dontshow'; }; var pubsubs = { ad_callbacks: [], //pub_domain: 'subscribe.publir', //cdn_domain: 'subscribe.publir', //pub_domain: 'publir.sandboxee.com', //cdn_domain: 'publir.sandboxee.com', pub_domain: 'subscribe.publir.com', cdn_domain: 'a.publir.com', init: function() { if (typeof jQuery === "undefined") { pubsubs.getJ(); } else { console.log('PUBLIR: jquery loaded'); pubsubs.setup(); } }, getJ: function() { console.log('PUBLIR: getting jquery'); var oScriptElem = document.createElement("script"); oScriptElem.type = "text/javascript"; oScriptElem.src = "//code.jquery.com/jquery-1.11.3.min.js"; oScriptElem.onload = pubsubs.setup; document.head.insertBefore(oScriptElem, document.getElementsByTagName("script")[0]); }, setup: function() { window.addEventListener("message", pubsubs.receiveMessage, false); // Listen for messages from the modal later console.log('PUBLIR: cross domain message listener added'); pubsubs.getPublisher(); pubsubs.getTestAd(); }, getPublisher: function() { console.log('PUBLIR: getting publisher info'); jQuery.ajax({ url: '//' + pubsubs.cdn_domain + '/pubcss/' + pubsubs.publisher_token + '.json', dataType: 'json', data: { 'token': pubsubs.publisher_token }, success: function(data, textStatus, jqXHR) { console.log('PUBLIR: publisher info retrieved'); console.log(data.site); pubsubs.site = data.site; pubsubs.process(); }, error: function(data, textStatus, jqXHR) { console.log('PUBLIR: bad publisher token sent'); pubsubs.showAds(); } }); }, getTestAd: function() { console.log('PUBLIR: calling adblock test'); jQuery.getScript('//' + pubsubs.cdn_domain + '/client/ads.js'); }, process: function() { var token = pubsubs.readCookie('PUBLIR_SUBSCRIBER'); console.log('PUBLIR: checking for subscriber cookie'); if (token) { // We found a subscriber cookie console.log('PUBLIR: subscriber cookie found'); pubsubs.checkSubscriber(token); } else { console.log('PUBLIR: no subscriber cookie found'); pubsubs.checkBroadcast(); // Check if we need to show the broadcast bar setTimeout(function() { pubsubs.showAds(); }, 100); } }, checkBroadcast: function() { setTimeout(function() { if (typeof window.can_run_ads === "undefined") { // Adblock is on pubsubs.adblock = true; console.log('PUBLIR: adblock is on'); pubsubs.eraseCookie('PUBLIR_BROADCAST'); // Remove a possible broadcast cookie console.log('PUBLIR: removed possible broadcast cookie'); pubsubs.showBar(); // Get the broadcast bar for this domain } else { pubsubs.adblock = false; console.log('PUBLIR: adblock is not on'); var brocookie = pubsubs.readCookie('PUBLIR_BROADCAST'); // Get the broadcast cookie console.log('PUBLIR: reading broadbcast cookie'); if (brocookie === null) { // First visit or cookie expired console.log('PUBLIR: this is the first visit or broadcast cookie is expired'); if (pubsubs.site.bar == 1) pubsubs.showBar(); // Get the broadcast bar for this domain } else { console.log('PUBLIR: broadcast cookie is good'); if (pubsubs.site.corner == 1) pubsubs.showCorner(); } } }, 1000); }, checkSubscriber: function(token) { console.log('PUBLIR: checking subscriber whitelist'); jQuery.ajax({ url: '//' + pubsubs.cdn_domain + '/whitelist.json', dataType: 'json', success: function(data, textStatus, jqXHR) { if (data.hasOwnProperty(token)) { // We found the subscription console.log('PUBLIR: subscription found'); var subscription = data[token]; switch (subscription.status) { case 'active': console.log('PUBLIR: subsription active'); if (pubsubs.site.corner) pubsubs.showCorner(); // Display the subscriber corner view display_ads_server = 'show'; break; case 'past_due': console.log('PUBLIR: subscription billing issue'); pubsubs.showAlert(); // Display the billing issue view pubsubs.showAds(); //display_ads_server='dontshow'; break; default: console.log('PUBLIR: unexpected subscription status'); //pubsubs.eraseCookie('PUBLIR_SUBSCRIBER'); pubsubs.showAds(); //display_ads_server='dontshow'; break; } } else { // Invalid subscription console.log('PUBLIR: invalid subscription'); //pubsubs.eraseCookie('PUBLIR_SUBSCRIBER'); pubsubs.showAds(); console.log("PUBLIR: subscriber cookie removed"); pubsubs.checkBroadcast(); } }, error: function(jqXHR, textStatus, errorThrown) { console.log('PUBLIR: whitelist error'); pubsubs.showAds(); return false; } }); }, /*showBar: function() { if (!jQuery('div.publir_broadcast').length) { pubsubs.createCookie('PUBLIR_BROADCAST', '', pubsubs.site.frequency); console.log('PUBLIR: created new broadcast cookie'); jQuery(pubsubs.site.barparent).prepend('
'); console.log('PUBLIR: showing broadcast bar'); jQuery('div.publir_broadcast').fadeIn(1000); console.log('PUBLIR: broadcast bar displayed'); jQuery('div.publir_broadcast').on('click', function() { pubsubs.getSubscriberModal(false); }); } },*/ showBar: function() { if (!jQuery('div.publir_broadcast').length) { function detectmob() { if (window.innerWidth <= 800 || window.innerHeight <= 600) { return true; } else { return false; } } var ismobile = detectmob(); pubsubs.createCookie('PUBLIR_BROADCAST', '', pubsubs.site.frequency); console.log('PUBLIR: created new broadcast cookie'); if (ismobile == true) { jQuery(pubsubs.site.barparent).prepend(''); } else { jQuery(pubsubs.site.barparent).prepend(''); } //jQuery(pubsubs.site.barparent).prepend(''); console.log('PUBLIR: showing broadcast bar'); jQuery('div.publir_broadcast').fadeIn(1000); console.log('PUBLIR: broadcast bar displayed'); jQuery('div.publir_broadcast').on('click', function() { pubsubs.getSubscriberModal(false); }); } }, showCorner: function() { if (!jQuery('div.publir_broadcast').length) { jQuery(pubsubs.site.cornerparent).prepend(''); //console.log('PUBLIR: showing broadcast corner'); //console.log('servervalue'+display_ads_server); jQuery('div.publir_broadcast').fadeIn(1000); console.log('PUBLIR: broadcast corner displayed'); jQuery('div.publir_broadcast').on('click', function() { pubsubs.getSubscriberModal(true); }); } }, showAlert: function() { jQuery(pubsubs.site.alertparent).prepend(''); console.log('PUBLIR: showing billing alert'); jQuery('div.publir_broadcast').fadeIn(1000); console.log('PUBLIR: billing alert displayed'); jQuery('div.publir_broadcast').on('click', function() { pubsubs.getBillingModal(); }); }, hideOverlays: function() { if (jQuery('div.publir_broadcast').length) { console.log('PUBLIR: hiding publir overlays'); jQuery('div.publir_broadcast').fadeOut(100); setTimeout(function() { jQuery('div.publir_broadcast').empty().remove(); console.log('PUBLIR: overlays removed'); }, 100); } }, getSubscriberModal: function(direct) { console.log('PUBLIR: getting subscriber modal'); var url = '//' + pubsubs.pub_domain + '/site/' + pubsubs.publisher_token + (direct ? '?direct' : ''); pubsubs.openModal(url); }, getBillingModal: function() { console.log('PUBLIR: getting billing modal'); var url = '//' + pubsubs.pub_domain + '/billing'; pubsubs.openModal(url); }, showAds: function() { if (pubsubs.ad_callbacks.length) { display_ads_server = 'show'; console.log('PUBLIR: found ad callbacks'); jQuery.each(pubsubs.ad_callbacks, function(k, v) { console.log('PUBLIR: calling ad callback "' + v + '"'); if (typeof window[v] !== "undefined") window[v](); }); } }, receiveMessage: function(event) { if (event.origin == 'https://' + pubsubs.pub_domain) { console.log('PUBLIR: crossTalk message received'); console.log(event); var data = JSON.parse(event.data); if (data.action == 'delete') { console.log("PUBLIR: removing subscriber cookie"); pubsubs.eraseCookie('PUBLIR_SUBSCRIBER'); if (data.reload) { setTimeout(function() { window.location.reload(); }, 1500); } else { pubsubs.hideOverlays(); setTimeout(function() { pubsubs.showBar(); }, 200); setTimeout(function() { pubsubs.hideOverlays(); }, 200); } } else if (data.action == 'create') { console.log("PUBLIR: creating subscriber cookie, token = " + data.token); pubsubs.createCookie('PUBLIR_SUBSCRIBER', data.token, 365); setTimeout(function() { window.location.reload(); }, 1500) } else if (data.action == 'replace') { var token = pubsubs.readCookie('PUBLIR_SUBSCRIBER'); if (token != data.token) { console.log("PUBLIR: replacing subscriber cookie, token = " + data.token); pubsubs.createCookie('PUBLIR_SUBSCRIBER', data.token, 365); window.location.reload(); } else { console.log('PUBLIR: token matches'); pubsubs.hideOverlays(); if (pubsubs.site.corner) { setTimeout(function() { pubsubs.showCorner(); }, 200); } } } else if (data.action == 'logout') { console.log("PUBLIR: removing publir cookies"); pubsubs.eraseCookie('PUBLIR_SUBSCRIBER'); pubsubs.eraseCookie('PUBLIR_BROADCAST'); window.location.reload(); } } }, createCookie: function(name, value, days) { // http://stackoverflow.com/questions/1458724/how-to-set-unset-cookie-with-jquery var expires; if (days) { var date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); expires = "; expires=" + date.toGMTString(); } else { expires = ""; } host = location.host; domainParts = host.split('.'); domainParts.shift(); domain = '.' + domainParts.join('.'); document.cookie = encodeURIComponent(name) + "=" + encodeURIComponent(value) + expires + "; path=/; domain=" + domain; if (pubsubs.readCookie(name) == null || pubsubs.readCookie(name) != value) { // append "." to current domain domain = '.' + host; document.cookie = encodeURIComponent(name) + "=" + encodeURIComponent(value) + expires + "; path=/; domain=" + domain; } }, readCookie: function(name) { var nameEQ = encodeURIComponent(name) + "="; var ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) === ' ') c = c.substring(1, c.length); if (c.indexOf(nameEQ) === 0) return decodeURIComponent(c.substring(nameEQ.length, c.length)); } return null; }, eraseCookie: function(name) { pubsubs.createCookie(name, "", -1); }, openModal: function(url) { var w = window.location.hostname; jQuery('body').prepend('