var stlib = stlib || { functions: [], functionCount: 0, util: { prop: function(p, obj) { if (obj) { return obj[p]; } return function(o) { return o[p]; }; } }, dynamicOn: true, setPublisher : function(pubKey){ stlib.publisher = pubKey; }, setProduct : function(prod){ stlib.product = prod; }, parseQuery: function( query ) { var Params = new Object (); if ( ! query ) return Params; // return empty object var Pairs = query.split(/[;&]/); for ( var i = 0; i < Pairs.length; i++ ) { var KeyVal = Pairs[i].split('='); if ( ! KeyVal || KeyVal.length != 2 ) continue; var key = unescape( KeyVal[0] ); var val = unescape( KeyVal[1] ); val = val.replace(/\+/g, ' '); Params[key] = val; } return Params; }, getQueryParams : function(){ var buttonScript = document.getElementById('st_insights_js'); if(buttonScript && buttonScript.src){ var queryString = buttonScript.src.replace(/^[^\?]+\??/,''); var params = stlib.parseQuery( queryString ); stlib.setPublisher ( params.publisher); stlib.setProduct( params.product); } } }; stlib.global = { hash: stlib.util.prop('hash', document.location).substr(1) }; // Extract out parameters stlib.getQueryParams(); /********************START BROWSER CODE***********************/ stlib.browser = { iemode: null, firefox: null, firefoxVersion: null, safari: null, chrome: null, opera: null, windows: null, mac: null, ieFallback: (/MSIE [6789]/).test(navigator.userAgent), //ieFallback: true, init: function() { var ua = navigator.userAgent.toString().toLowerCase(); if (/msie|trident/i.test(ua)) { if (document.documentMode) // IE8 or later stlib.browser.iemode = document.documentMode; else{ // IE 5-7 stlib.browser.iemode = 5; // Assume quirks mode unless proven otherwise if (document.compatMode){ if (document.compatMode == "CSS1Compat") stlib.browser.iemode = 7; // standards mode } } //stlib.browser.iemode = getFirstMatch(/(?:msie |rv:)(\d+(\.\d+)?)/i); //IE11+ } /*stlib.browser.firefox =(navigator.userAgent.indexOf("Firefox") !=-1) ? true : false; stlib.browser.firefoxVersion =(navigator.userAgent.indexOf("Firefox/5.0") !=-1 || navigator.userAgent.indexOf("Firefox/9.0") !=-1) ? false : true; stlib.browser.safari =(navigator.userAgent.indexOf("Safari") !=-1 && navigator.userAgent.indexOf("Chrome") ==-1) ? true : false; stlib.browser.chrome =(navigator.userAgent.indexOf("Safari") !=-1 && navigator.userAgent.indexOf("Chrome") !=-1) ? true : false; stlib.browser.windows =(navigator.userAgent.indexOf("Windows") !=-1) ? true : false; stlib.browser.mac =(navigator.userAgent.indexOf("Macintosh") !=-1) ? true : false;*/ stlib.browser.firefox = ((ua.indexOf("firefox") !=-1) && (typeof InstallTrigger !== 'undefined'))?true:false; stlib.browser.firefoxVersion =(ua.indexOf("firefox/5.0") !=-1 || ua.indexOf("firefox/9.0") !=-1) ? false : true; stlib.browser.safari = (ua.indexOf("safari") !=-1 && ua.indexOf("chrome") ==-1)?true:false; stlib.browser.chrome = (ua.indexOf("safari") !=-1 && ua.indexOf("chrome") !=-1)?true:false; stlib.browser.opera = (window.opera || ua.indexOf(' opr/') >= 0)?true:false; stlib.browser.windows =(ua.indexOf("windows") !=-1) ? true : false; stlib.browser.mac =(ua.indexOf("macintosh") !=-1) ? true : false; }, getIEVersion : function() { return stlib.browser.iemode; }, isFirefox : function() { return stlib.browser.firefox; }, firefox8Version : function() { return stlib.browser.firefoxVersion; }, isSafari : function() { return stlib.browser.safari; }, isWindows : function() { return stlib.browser.windows; }, isChrome : function() { return stlib.browser.chrome; }, isOpera : function() { return stlib.browser.opera; }, isMac : function() { return stlib.browser.mac; }, isSafariBrowser: function(vendor, ua) { // check if browser is safari var isSafari = vendor && vendor.indexOf('Apple Computer, Inc.') > -1 && ua && !ua.match('CriOS'); // check if browser is not chrome var notChrome = /^((?!chrome|android).)*safari/i.test(ua); // check if browser is not firefox var notFireFox = /^((?!firefox|linux))/i.test(ua); // check if OS is from Apple var isApple = (ua.indexOf('Mac OS X') > -1) || (/iPad|iPhone|iPod/.test(ua) && !window.MSStream); // check if OS is windows var isWindows = (ua.indexOf('Windows NT') > -1) && notChrome; // browser is safari but not chrome return (isSafari && notChrome && notFireFox && (isApple || isWindows)); } }; stlib.browser.init(); /********************END BROWSER CODE***********************/ /********************START MOBILE BROWSER CODE***********************/ stlib.browser.mobile = { mobile:false, uagent: null, android: null, iOs: null, silk: null, windows: null, kindle: null, url: null, sharCreated: false, sharUrl: null, isExcerptImplementation: false, //Flag to check if multiple sharethis buttons (Excerpt) have been implemented iOsVer: 0, // It will hold iOS version if device is iOS else 0 init: function () { this.uagent = navigator.userAgent.toLowerCase(); if (this.isAndroid()) { this.mobile = true; }else if (this.isIOs()) { this.mobile = true; } else if (this.isSilk()) { this.mobile = true; } else if (this.isWindowsPhone()) { this.mobile = true; }else if (this.isKindle()) { this.mobile = true; } }, isMobile: function isMobile() { return this.mobile; }, isAndroid: function() { if (this.android === null) { this.android = this.uagent.indexOf("android") > -1; } return this.android; }, isKindle: function() { if (this.kindle === null) { this.kindle = this.uagent.indexOf("kindle") > -1; } return this.kindle; }, isIOs: function isIOs() { if (this.iOs === null) { this.iOs = (this.uagent.indexOf("ipad") > -1) || (this.uagent.indexOf("ipod") > -1) || (this.uagent.indexOf("iphone") > -1); } return this.iOs; }, isSilk: function() { if (this.silk === null) { this.silk = this.uagent.indexOf("silk") > -1; } return this.silk; }, /** * This is to get iOS version if iOS device, else return 0 */ getIOSVersion: function() { if (this.isIOs()) { this.iOsVer = this.uagent.substr( (this.uagent.indexOf( 'os ' )) + 3, 5 ).replace( /\_/g, '.' ); } return this.iOsVer; }, isWindowsPhone: function() { if (this.windows === null) { this.windows = this.uagent.indexOf("windows phone") > -1; } return this.windows; } }; stlib.browser.mobile.init(); /********************END MOBILE BROWSER CODE***********************/ /********************START MOBILE BROWSER FRIENDLY CODE***********************/ stlib = stlib || {}; stlib.browser = stlib.browser || {}; stlib.browser.mobile = stlib.browser.mobile || {}; stlib.browser.mobile.handleForMobileFriendly = function(o, options, widgetOpts) { if (!this.isMobile()) { return false; } if (typeof(stLight) === 'undefined') { stLight = {} stLight.publisher = options.publisher; stLight.sessionID = options.sessionID; stLight.fpc = ""; } var title = (typeof(o.title) !== 'undefined') ? o.title: encodeURIComponent(document.title); var url = (typeof(o.url) !== 'undefined') ? o.url: document.URL; //SA-77: introduce new st_short_url parameter var shortUrl = (options.short_url != "" && options.short_url != null) ? options.short_url : ''; if (options.service=="sharethis") { var title = (typeof(o.title) !== 'undefined') ? o.title: encodeURIComponent(document.title); var url = (typeof(o.url) !== 'undefined') ? o.url: document.URL; var summary = ''; if(typeof(o.summary)!='undefined' && o.summary!=null){ summary=o.summary; } var form = document.createElement("form"); form.setAttribute("method", "GET"); form.setAttribute("action", "http://edge.sharethis.com/share4x/mobile.html"); form.setAttribute("target", "_blank"); //destination={destination}&url={url}&title={title}&publisher={publisher}&fpc={fpc}&sessionID={sessionID}&source=buttons var params={url:url,title:title,summary:summary,destination:options.service,publisher:stLight.publisher,fpc:stLight.fpc,sessionID:stLight.sessionID,short_url:shortUrl}; if(typeof(o.image)!='undefined' && o.image!=null){ params.image=o.image; }if(typeof(o.summary)!='undefined' && o.summary!=null){ params.desc=o.summary; }if(typeof(widgetOpts)!='undefined' && typeof(widgetOpts.exclusive_services)!='undefined' && widgetOpts.exclusive_services!=null){ params.exclusive_services=widgetOpts.exclusive_services; }if(typeof(options.exclusive_services)!='undefined' && options.exclusive_services!=null){ params.exclusive_services=options.exclusive_services; }if(typeof(widgetOpts)!='undefined' && typeof(widgetOpts.services)!='undefined' && widgetOpts.services!=null){ params.services=widgetOpts.services; }if(typeof(options.services)!='undefined' && options.services!=null){ params.services=options.services; } // Get any additional options var containsOpts = options; if (typeof(widgetOpts)!='undefined') { containsOpts = widgetOpts; } if(typeof(containsOpts.doNotHash)!='undefined' && containsOpts.doNotHash!=null){ params.doNotHash=containsOpts.doNotHash; } if(typeof(o.via)!='undefined' && o.via!=null){ params.via=o.via; } params.service = options.service; params.type = options.type; if (stlib.data) { var toStoreA = stlib.json.encode(stlib.data.pageInfo); var toStoreB = stlib.json.encode(stlib.data.shareInfo); if (stlib.browser.isFirefox() && !stlib.browser.firefox8Version()) { toStoreA = encodeURIComponent(encodeURIComponent(toStoreA)); toStoreB = encodeURIComponent(encodeURIComponent(toStoreB)); } else { toStoreA = encodeURIComponent(toStoreA); toStoreB = encodeURIComponent(toStoreB); } params.pageInfo = toStoreA; params.shareInfo = toStoreB; } for(var key in params) { var hiddenField = document.createElement("input"); hiddenField.setAttribute("type", "hidden"); hiddenField.setAttribute("name", key); hiddenField.setAttribute("value", params[key]); form.appendChild(hiddenField); } document.body.appendChild(form); form.submit(); return true; } if(options.service=='email') { var sharInterval, i=0; stlib.browser.mobile.url = url; if(stlib.browser.mobile.sharUrl == null) { stlib.browser.mobile.createSharOnPage(); } var body = (shortUrl != "") ? shortUrl + "%0A%0a" : "{sharURLValue}" + "%0A%0a"; if( (typeof(o.summary) != 'undefined') && o.summary!=null){ body += o.summary + "%0A%0a"; } body += "Sent using ShareThis"; var mailto = "mailto:?"; mailto += "subject=" + title; mailto += "&body=" +body; //WID-709: Shar implementation done sharInterval = setInterval( function(){ if(stlib.browser.mobile.sharUrl != null){ clearInterval(sharInterval); window.location.href=mailto.replace("{sharURLValue}", stlib.browser.mobile.sharUrl); } if(i > 500) { clearInterval(sharInterval); window.location.href=mailto.replace("{sharURLValue}", stlib.browser.mobile.sharUrl); } i++; }, 100); } return true; }; stlib.browser.mobile.createSharOnPage = function(){ if(stlib.browser.mobile.url!=="" && stlib.browser.mobile.url!==" " && stlib.browser.mobile.url!==null && !stlib.browser.mobile.sharCreated) { var data=["return=json","cb=stlib.browser.mobile.createSharOnPage_onSuccess","service=createSharURL","url="+encodeURIComponent(stlib.browser.mobile.url)]; data=data.join('&'); stlib.scriptLoader.loadJavascript("https://ws.sharethis.com/api/getApi.php?"+data, function(){}); } }; stlib.browser.mobile.createSharOnPage_onSuccess = function(response){ if(response.status=="SUCCESS") { stlib.browser.mobile.sharCreated = true; stlib.browser.mobile.sharUrl = response.data.sharURL; } else { stlib.browser.mobile.sharUrl = stlib.browser.mobile.url; } }; /********************END MOBILE BROWSER FRIENDLY CODE***********************/ stlib.debugOn = false; stlib.debug = { count: 0, messages: [], debug: function(message, show) { if (show && (typeof console) != "undefined") { console.log(message); } stlib.debug.messages.push(message); }, show: function(errorOnly) { for (message in stlib.debug.messages) { if ((typeof console) != "undefined") { if (errorOnly) { /ERROR/.test(stlib.debug.messages[message]) ? console.log(stlib.debug.messages[message]) : null; } else { console.log(stlib.debug.messages[message]); } } } }, showError: function() { stlib.debug.show(true); } }; var _$d = function(message) { stlib.debug.debug(message, stlib.debugOn); } var _$d0 = function() { _$d(" "); }; var _$d_ = function() { _$d("___________________________________________"); }; var _$d1 = function(m) { _$d(_$dt() + "| " + m); }; var _$d2 = function(m) { _$d(_$dt() + "| * " + m); }; var _$de = function(m) { _$d(_$dt() + "ERROR: " + m); }; var _$dt = function() { var today=new Date(); var h=today.getHours(); var m=today.getMinutes(); var s=today.getSeconds(); return h+":"+m+":"+s+" > "; }; /********************START LOGGING***********************/ /* * This handles logging */ stlib.logger = { loggerUrl: "https://l.sharethis.com/", l2LoggerUrl: "https://l2.sharethis.com/", productArray: new Array(), version: '', lang: 'en', isFpEvent: false, constructParamString: function() { // Pull all the parameters from the page the widget was on var p = stlib.data.pageInfo; var paramString = ""; var param; for (param in p) { // the following line creates "param=value&" if (p[param] == null || p[param] === "" || p[param] == "ERROR") continue; paramString += param + "=" + p[param] + "&"; } // Pull all the parameters related to the share p = stlib.data.shareInfo; for (param in p) { if (p[param] == null || p[param] === "" || p[param] == "ERROR") continue; paramString += param + "=" + p[param] + "&"; } // add sop parameter paramString += "sop=false" // add fpestid if it exists var fpestid = stlib.data.parseCookie("fpestid", document.cookie); if (fpestid) { paramString += "&fpestid=" + fpestid; } // add description if it exists try { var elements = document.getElementsByTagName("meta"); for (var i = 0; i < elements.length; i++) { var attribute = elements[i].getAttribute('property'); if (attribute == null) { attribute = elements[i].getAttribute('name'); } if (attribute == "twitter:description" || attribute == "og:description" || attribute == "description" || attribute == "Description") { var description = encodeURIComponent(elements[i].getAttribute('content')); paramString += "&description=" + description; break; } } } catch (e) {} return paramString }, ibl: function() { var blacklist, domain, protocol, hostname, href, i, len; href = document.referrer; if (href) { hostname = stlib.data.hostname(href) || ''; if (stlib.data.protocol) { protocol = stlib.data.protocol(href) || ''; if (protocol == "android-app:") { return true; } } blacklist = ['aol', 'bing', 'bs.to', 'facebook', 'google', 'yahoo', 'yandex', document.location.hostname]; for (i = 0, len = blacklist.length; i < len; i++) { domain = blacklist[i]; if (hostname.indexOf(domain) > -1) { return true; } } var logUrl = stlib.logger.loggerUrl + "log?event=ibl&url=" + href; stlib.logger.logByImage("ibl", logUrl, null); } return true; }, obl: function(e) { var href, prefix, ref; if ((e != null ? (ref = e.target) != null ? ref.tagName : void 0 : void 0) === 'A') { href = e.target.getAttribute('href') || ''; prefix = href.slice(0, href.indexOf(':')); if (href.slice(0, 4) === 'http' && e.target.hostname !== document.location.hostname) { var logUrl = stlib.logger.loggerUrl + "log?event=obl&url=" + href; stlib.logger.logByImage("obl", logUrl, null); } } return true; }, getGDPRQueryString: function() { var gdpr_consent = stlib.data.get("gdpr_consent", "pageInfo"); var gdpr_domain = encodeURIComponent(stlib.data.get("gdpr_domain", "pageInfo")); var gdpr_method = stlib.data.get("gdpr_method", "pageInfo"); var gdpr_query_str = ""; if (gdpr_consent) { gdpr_query_str += "&gdpr_consent=" + gdpr_consent; } if (gdpr_domain) { gdpr_query_str += "&gdpr_domain=" + gdpr_domain; } if (gdpr_method) { gdpr_query_str += "&gdpr_method=" + gdpr_method; } return gdpr_query_str; }, loadPixelsAsync: function(res) { if (typeof(stlib.product) !== "undefined") { if ((stlib.product == "ecommerce") || (stlib.product == "dos2") || (stlib.product == "feather") || (stlib.product == "simple") || (stlib.product == "simpleshare") || (stlib.product == "simple-share-pro")) { return; } } if (typeof(res) !== "undefined") { if (res.status === "true") { // set stid stlib.data.set("stid", res.stid, "pageInfo") // fire the pixel var pxcel_url = "https://t.sharethis.com/1/d/t.dhj?rnd=" + (new Date()).getTime() + "&cid=c010&dmn="+ window.location.hostname + stlib.logger.getGDPRQueryString(); var $el = document.createElement('script'); $el.async = 1; $el.src = pxcel_url; $el.id = "pxscrpt"; var first = document.getElementsByTagName('script')[0]; first.parentNode.insertBefore($el, first); } if(res.status === "true" && res.atlas === "true") { stlib.logger.js("https://platform-api.sharethis.com/atlas-exp.js"); } // run dmd script if indicated in response if (res.dmd === "true") { var f = function (w, d, s, m, n, t) { w[m] = w[m] || { init: function () { (w[m].q = w[m].q || []).push(arguments); }, ready: function (c) { if ('function' != typeof c) { return; } (w[m].c = w[m].c || []).push(c); c = w[m].c; n.onload = n.onreadystatechange = function () { if (!n.readyState || /loaded|complete/.test(n.readyState)) { n.onload = n.onreadystatechange = null; if (t.parentNode && n.parentNode) { t.parentNode.removeChild(n); } while (c.length) { (c.shift())(); } } }; } }, w[m].d = 1 * new Date(); n = d.createElement(s); t = d.getElementsByTagName(s)[0]; n.async=1;n.src='https://www.medtargetsystem.com/javascript/beacon.js?'+(Date.now().toString()).substring(0,4);n.setAttribute("data-aim",m);t.parentNode.insertBefore(n,t); } f(window, document, 'script', 'AIM'); AIM.init('194-3051-2EAEFDBB', { 'onload_pageview': false }); AIM.ready(function () { var stid = stlib.data.get("stid", "pageInfo"); var url = window.location.href + '#estid=' + stid; AIM.pageview(url); }); } try { function getBrowser() { var ua = navigator.userAgent; var tem; var M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []; var isMobile = /iPhone|iPad|iPod|Android|Opera Mini|IEMobile|WPDesktop|BlackBerry|webOS|Windows Phone/i.test(ua); if(/trident/i.test(M[1])){ tem = /\brv[ :]+(\d+)/g.exec(ua) || []; return 'IE '+(tem[1] || ''); } if(M[1] === 'Chrome'){ tem = ua.match(/\b(OPR|Edg)\/(\d+)/); if(tem != null) return tem.slice(1).join('').replace('OPR', 'Opera').replace('Edg', 'Edge'); } M = M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?']; if((tem = ua.match(/version\/(\d+)/i)) != null) M.splice(1, 1, tem[1]); if(isMobile){ if(M[0] === 'Chrome'){ return 'Chrome Mobile'+M.slice(1).join(''); } return 'Mobile '+M.join(''); } return M.join(''); } const browser_allow_list = [ "Chrome Mobile108", "Chrome Mobile110", "Chrome Mobile111", "Chrome Mobile112", "Chrome Mobile113", "Chrome Mobile114", "Chrome Mobile115", "Chrome Mobile116", "Chrome Mobile87", "Chrome108", "Chrome109", "Chrome112", "Chrome113", "Chrome114", "Chrome115", "Chrome116", "Edge108", "Edge115", "Firefox114", "Firefox116", "Mobile Firefox116", "Mobile Safari", "Mobile Safari16", "Safari16", ]; const standard_browser_name = getBrowser(); // run lotame's panorama id code if indicated by the content rule if(res.status === "true" && res.lotame === "true" && browser_allow_list.includes(standard_browser_name)) { !function() { // Callback that will be triggered after each call to sync() // and let you have access to the profile and/or panorama ids var syncCallback = function (profile) { // sync the panorama id var panorama_id = profile.getPanoramaId(); if (panorama_id && res.stid) { var url = "https://sync.sharethis.com/panorama" url += "?uid=" + encodeURIComponent(panorama_id) url += "&stid=" + encodeURIComponent(res.stid) stlib.logger.send(url) } }; var lotame_client_id = '16621'; var lotame_tag_input = { config: { onProfileReady: syncCallback } }; // Lotame initialization var lotame_config = lotame_tag_input.config || {}; var namespace = window['lotame_sync_' + lotame_client_id] = {}; namespace.config = lotame_config; namespace.data = {}; namespace.cmd = namespace.cmd || []; } (); window.lotame_sync_16621.cmd.push(function() { window.lotame_sync_16621.sync(); }); stlib.logger.js("https://platform-api.sharethis.com/panorama.js"); } } catch (e) { // do nothing for now } } }, send: function(url) { var img = new Image(1, 1); img.src = url; img.style.display = "none" img.onload = function() {}; img.onerror = function() {}; }, js: function(url) { var el = document.createElement('script'); el.async = 1; el.src = url; var first = document.getElementsByTagName('script')[0]; first.parentNode.insertBefore(el, first); }, logByImage: function(event, logUrl, callback) { // add consent params if they exist var gdpr_consent = stlib.data.get("gdpr_consent", "pageInfo"); var gdpr_domain = stlib.data.get("gdpr_domain", "pageInfo"); if (gdpr_consent) { logUrl += "&gdpr_consent=" + gdpr_consent; } if (gdpr_domain) { logUrl += "&gdpr_domain=" + gdpr_domain; } var gdpr_method = stlib.data.get("gdpr_method", "pageInfo"); if (gdpr_method) { logUrl += "&gdpr_method=" + gdpr_method; } var usprivacy = stlib.data.get("usprivacy", "pageInfo"); if (usprivacy) { logUrl += "&usprivacy=" + usprivacy; } // add fpestid if it exists var fpestid = stlib.data.parseCookie("fpestid", document.cookie); if (fpestid) { logUrl += "&fpestid=" + fpestid; } // add description if it exists try { var elements = document.getElementsByTagName("meta"); for (var i = 0; i < elements.length; i++) { var attribute = elements[i].getAttribute('property'); if (attribute == null) { attribute = elements[i].getAttribute('name'); } if (attribute == "twitter:description" || attribute == "og:description" || attribute == "description" || attribute == "Description") { var description = encodeURIComponent(elements[i].getAttribute('content')); logUrl += "&description=" + description; break; } } } catch (e) {} var mImage = new Image(1, 1); mImage.src = logUrl + "&img_pview=true"; mImage.onload = function () { return; }; if (event == "pview") { stlib.logger.loadPixelsAsync(undefined); } else { callback? callback() : null; } }, // TODO: (step 1) error checking on data // TODO: (step 2) convert params into a generic object, normalize or prepare before logging log : function(event, loggingUrl, callback, newEndpoint) { if(typeof(stlib.data.get("counter", "shareInfo")) != "undefined") { var count = 0; if (stlib.data.get("counter", "shareInfo")) { count = stlib.data.get("counter", "shareInfo"); } stlib.data.set("ts" + new Date().getTime() + "." + count, "", "shareInfo"); stlib.data.unset("counter", "shareInfo"); } else { stlib.data.set("ts" + new Date().getTime(), "", "shareInfo"); } if(event == 'widget') { var shortenedDestination = "." + stlib.hash.hashDestination(stlib.data.shareInfo.destination); stlib.hash.updateDestination(shortenedDestination); } //Fix for SAB-709 if ( !loggingUrl || (loggingUrl != stlib.logger.loggerUrl && loggingUrl != stlib.logger.l2LoggerUrl)) { loggingUrl = stlib.logger.loggerUrl; } // Step 3: log data (iterate through objects) var logName = null; if (newEndpoint) { logName = event; } else { logName = (event == "pview") ? event : ((event == "debug") ? "cns" : "log"); } stlib.data.getEUConsent(function(consent){ if(event == "pview") { var logUrl = loggingUrl + logName + "?event="+event+ "&" + "version="+stlib.logger.version+ "&" + "lang="+stlib.logger.lang + "&" + stlib.logger.constructParamString(); }else { var logUrl = loggingUrl + logName + "?event="+event + "&" + stlib.logger.constructParamString(); } var pview_had_consent = (stlib.data.get("gdpr_consent", "pageInfo")) ? true : false; stlib.data.set("pview_had_consent", pview_had_consent, "pageInfo"); var user_agent_data = {} var ua_fields = {} stlib.data.ua_fields = ua_fields try { if (navigator.userAgentData) { user_agent_data = navigator.userAgentData; } if (Array.isArray(user_agent_data.brands)) { var ua = "" user_agent_data.brands.forEach((brand) => { if (ua) { ua += ", " } ua += `"${brand.brand}";v="${brand.version}"` }); ua_fields.ua = ua logUrl += "&ua=" + encodeURIComponent(ua); } if (user_agent_data.mobile !== undefined) { var ua_mobile = (user_agent_data.mobile) ? "true" : "false"; ua_fields.ua_mobile = ua_mobile logUrl += "&ua_mobile=" + encodeURIComponent(ua_mobile); } if (user_agent_data.platform) { var ua_platform = user_agent_data.platform ua_fields.ua_platform = ua_platform logUrl += "&ua_platform=" + encodeURIComponent(ua_platform); } } catch (e) { // do nothing for now if it fails } // if there is no getHighEntropyValues function create a shell function // in order to keep the workflow unified if (!user_agent_data.getHighEntropyValues) { user_agent_data.getHighEntropyValues = () => { return new Promise((resolve) => { resolve({}); }); } } function once(fn, context) { var result; return function() { if(fn) { result = fn.apply(context || this, arguments); fn = null; } return result; }; } var sendPageView = once(function() { try { var client = new XMLHttpRequest(); var res; client.open("GET", logUrl, true); client.withCredentials = true; client.timeout = 10000; client.onreadystatechange = function () { if (this.readyState == this.DONE) { try { res = JSON.parse(client.responseText); if (res.fpestid) { stlib.data.writeCookie("fpestid", res.fpestid, res.fpestid_maxage); } if (event == "pview") { /* // stop firing comscore beacon if (typeof (stlib.comscore) != "undefined") { stlib.comscore.load(); } */ stlib.logger.loadPixelsAsync(res); } else { callback ? callback(): null; } } catch (e) { // responseText is empty for request timeout stlib.logger.logByImage(event, logUrl, callback); } } }; client.send(); } catch (err) { // some browsers don't support XMLHttpRequest stlib.logger.logByImage(event, logUrl, callback); } }) var getOverride = function() { var is_safari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); if (is_safari) { var req = new XMLHttpRequest(); req.open("GET", "https://data.stbuttons.click/data", true); req.onreadystatechange = function() { try { if (this.readyState == this.DONE) { var res = JSON.parse(req.responseText) if (res.data) { var override = res.data logUrl += "&override=" + encodeURIComponent(override); stlib.data.override = override } sendPageView() } } catch(e) { sendPageView() } } req.send() // send page view if request doesn't complete in 2 seconds setTimeout(sendPageView, 2000) } else { sendPageView() } } var high_entropy_fields = [ "model", "platformVersion", "fullVersionList" ] user_agent_data.getHighEntropyValues(high_entropy_fields).then((high_entropy_values) => { try { if (Array.isArray(high_entropy_values.fullVersionList)) { var ua_full_version_list = "" high_entropy_values.fullVersionList.forEach((brand) => { if (ua_full_version_list) { ua_full_version_list += ", " } ua_full_version_list += `"${brand.brand}";v="${brand.version}"` }); ua_fields.ua_full_version_list = ua_full_version_list logUrl += "&ua_full_version_list=" + encodeURIComponent(ua_full_version_list); } if (high_entropy_values.model) { var ua_model = high_entropy_values.model ua_fields.ua_model = ua_model logUrl += "&ua_model=" + encodeURIComponent(ua_model); } if (high_entropy_values.platformVersion) { var ua_platform_version = high_entropy_values.platformVersion ua_fields.ua_platform_version = ua_platform_version logUrl += "&ua_platform_version=" + encodeURIComponent(ua_platform_version); } } catch (e) { // do nothing for now } getOverride() }); }); }, tcfapi_listener: function() { var start = Date.now(); var interval = setInterval(function() { if (window.__tcfapi) { try { window.__tcfapi("addEventListener", 2, function(data) { if (data && data.eventStatus == "useractioncomplete") { stlib.data.set("gdpr_consent", data.tcString, "pageInfo"); var gdpr_domain = (data.isServiceSpecific) ? document.location.hostname : ".consensu.org"; stlib.data.set("gdpr_domain", gdpr_domain, "pageInfo"); stlib.data.set("gdpr_method", "api", "pageInfo"); var url = stlib.logger.loggerUrl; url += "log?event=updated_consent"; url += "&pview_had_consent=" + stlib.data.get("pview_had_consent", "pageInfo"); stlib.logger.logByImage("updated_consent", url, null); } }); } catch (e) { clearInterval(interval); } } if (Date.now() - start > 10000) { clearInterval(interval); } }, 1000); }() }; /********************END LOGGING***********************/ /***************START JSON ENCODE/DECODE***************/ stlib.json = { c : {"\b":"b","\t":"t","\n":"n","\f":"f","\r":"r",'"':'"',"\\":"\\","/":"/"}, d : function(n){return n<10?"0".concat(n):n}, e : function(c,f,e){e=eval;delete eval;if(typeof eval==="undefined")eval=e;f=eval(""+c);eval=e;return f}, i : function(e,p,l){return 1*e.substr(p,l)}, p : ["","000","00","0",""], rc : null, rd : /^[0-9]{4}\-[0-9]{2}\-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}$/, rs : /(\x5c|\x2F|\x22|[\x0c-\x0d]|[\x08-\x0a])/g, rt : /^([0-9]+|[0-9]+[,\.][0-9]{1,3})$/, ru : /([\x00-\x07]|\x0b|[\x0e-\x1f])/g, s : function(i,d){return "\\".concat(stlib.json.c[d])}, u : function(i,d){ var n=d.charCodeAt(0).toString(16); return "\\u".concat(stlib.json.p[n.length],n) }, v : function(k,v){return stlib.json.types[typeof result](result)!==Function&&(v.hasOwnProperty?v.hasOwnProperty(k):v.constructor.prototype[k]!==v[k])}, types : { "boolean":function(){return Boolean}, "function":function(){return Function}, "number":function(){return Number}, "object":function(o){return o instanceof o.constructor?o.constructor:null}, "string":function(){return String}, "undefined":function(){return null} }, $$ : function(m){ function $(c,t) { t=c[m]; delete c[m]; try { stlib.json.e(c) } catch(z){c[m]=t;return 1;} }; return $(Array)&&$(Object); }, encode : function(){ var self = arguments.length ? arguments[0] : this, result, tmp; if(self === null) result = "null"; else if(self !== undefined && (tmp = stlib.json.types[typeof self](self))) { switch(tmp){ case Array: result = []; for(var i = 0, j = 0, k = self.length; j < k; j++) { if(self[j] !== undefined && (tmp = stlib.json.encode(self[j]))) result[i++] = tmp; }; result = "[".concat(result.join(","), "]"); break; case Boolean: result = String(self); break; case Date: result = '"'.concat(self.getFullYear(), '-', stlib.json.d(self.getMonth() + 1), '-', stlib.json.d(self.getDate()), 'T', stlib.json.d(self.getHours()), ':', stlib.json.d(self.getMinutes()), ':', stlib.json.d(self.getSeconds()), '"'); break; case Function: break; case Number: result = isFinite(self) ? String(self) : "null"; break; case String: result = '"'.concat(self.replace(stlib.json.rs, stlib.json.s).replace(stlib.json.ru, stlib.json.u), '"'); break; default: var i = 0, key; result = []; for(key in self) { if(self[key] !== undefined && (tmp = stlib.json.encode(self[key]))) result[i++] = '"'.concat(key.replace(stlib.json.rs, stlib.json.s).replace(stlib.json.ru, stlib.json.u), '":', tmp); }; result = "{".concat(result.join(","), "}"); break; } }; return result; }, decode : function(input){ if(typeof(input)=='string') { var data=null; try{if ( /^[\],:{}\s]*$/.test(input.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@") .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]") .replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) { data=window.JSON && window.JSON.parse ? window.JSON.parse(input) : (new Function("return " + input))(); return data; }else{ return null; }}catch(err){} } } }; try{stlib.json.rc=new RegExp('^("(\\\\.|[^"\\\\\\n\\r])*?"|[,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t])+?$')} catch(z){stlib.json.rc=/^(true|false|null|\[.*\]|\{.*\}|".*"|\d+|\d+\.\d+)$/} /***************END JSON ENCODE/DECODE***************/ /********************START COOKIE LIBRARY***********************/ /* * This handles cookies */ var tpcCookiesEnableCheckingDone = false; var tpcCookiesEnabledStatus = true; stlib.cookie = { setCookie : function(name, value, days) { var safari =(navigator.userAgent.indexOf("Safari") !=-1 && navigator.userAgent.indexOf("Chrome") ==-1); var ie =(navigator.userAgent.indexOf("MSIE") !=-1); if (safari || ie) { var expiration = (days) ? days*24*60*60 : 0; var _div = document.createElement('div'); _div.setAttribute("id", name); _div.setAttribute("type", "hidden"); document.body.appendChild(_div); var div = document.getElementById(name), form = document.createElement('form'); try { var iframe = document.createElement(''); //try is ie } catch(err) { //catch is ff and safari iframe = document.createElement('iframe'); } iframe.name = name; iframe.src = 'javascript:false'; iframe.style.display="none"; div.appendChild(iframe); form.action = "https://sharethis.com/account/setCookie.php"; form.method = 'POST'; var hiddenField = document.createElement("input"); hiddenField.setAttribute("type", "hidden"); hiddenField.setAttribute("name", "name"); hiddenField.setAttribute("value", name); form.appendChild(hiddenField); var hiddenField2 = document.createElement("input"); hiddenField2.setAttribute("type", "hidden"); hiddenField2.setAttribute("name", "value"); hiddenField2.setAttribute("value", value); form.appendChild(hiddenField2); var hiddenField3 = document.createElement("input"); hiddenField3.setAttribute("type", "hidden"); hiddenField3.setAttribute("name", "time"); hiddenField3.setAttribute("value", expiration); form.appendChild(hiddenField3); form.target = name; div.appendChild(form); form.submit(); } else { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else { var expires = ""; } var cookie_string = name + "=" + escape(value) + expires; cookie_string += "; domain=" + escape (".sharethis.com")+";path=/"; document.cookie = cookie_string; } }, setTempCookie : function(name, value, days) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else { var expires = ""; } var cookie_string = name + "=" + escape(value) + expires; cookie_string += "; domain=" + escape (".sharethis.com")+";path=/"; document.cookie = cookie_string; }, getCookie : function(cookie_name) { var results = document.cookie.match('(^|;) ?' + cookie_name + '=([^;]*)(;|$)'); if (results) { return (unescape(results[2])); } else { return false; } }, deleteCookie : function(name) { // For all browsers var path="/"; var domain=".sharethis.com"; document.cookie = name.replace(/^\s+|\s+$/g,"") + "=" +( ( path ) ? ";path=" + path : "") + ( ( domain ) ? ";domain=" + domain : "" ) +";expires=Thu, 01-Jan-1970 00:00:01 GMT"; // For Safari and IE var safari =(navigator.userAgent.indexOf("Safari") !=-1 && navigator.userAgent.indexOf("Chrome") ==-1); var ie =(navigator.userAgent.indexOf("MSIE") !=-1); if (safari || ie) { var _div = document.createElement('div'); _div.setAttribute("id", name); _div.setAttribute("type", "hidden"); document.body.appendChild(_div); var div = document.getElementById(name), form = document.createElement('form'); try { var iframe = document.createElement(''); //try is ie } catch(err) { //catch is ff and safari iframe = document.createElement('iframe'); } iframe.name = name; iframe.src = 'javascript:false'; iframe.style.display="none"; div.appendChild(iframe); form.action = "https://sharethis.com/account/deleteCookie.php"; form.method = 'POST'; var hiddenField = document.createElement("input"); hiddenField.setAttribute("type", "hidden"); hiddenField.setAttribute("name", "name"); hiddenField.setAttribute("value", name); form.appendChild(hiddenField); form.target = name; div.appendChild(form); form.submit(); } }, deleteAllSTCookie : function() { var a=document.cookie; a=a.split(';'); for(var i=0;i1){ domain="."+str[str.length-2]+"."+str[str.length-1]; } return domain; }, checkCookiesEnabled: function() { if(!tpcCookiesEnableCheckingDone) { stlib.cookie.setTempCookie("STPC", "yes", 1); if(stlib.cookie.getCookie("STPC") == "yes") { tpcCookiesEnabledStatus = true; }else { tpcCookiesEnabledStatus = false; } tpcCookiesEnableCheckingDone = true; return tpcCookiesEnabledStatus; }else{ return tpcCookiesEnabledStatus; } }, hasLocalStorage: function() { try { localStorage.setItem("stStorage", "yes"); localStorage.removeItem("stStorage"); return true; } catch(e) { return false; } } }; /********************END COOKIE LIBRARY***********************/ /* * Requires cookie.js */ stlib.fpc = { cookieName: "__unam", cookieValue: "", createFpc: function() { if(!document.domain || document.domain.search(/\.gov/) > 0){ return false; } // var firstPersonCookie = stlib.cookie.getCookie(stlib.fpc.cookieName); var firstPersonCookie = stlib.cookie.getFpcCookie(stlib.fpc.cookieName); if(firstPersonCookie==false){ // Create a new cookie var bigRan = Math.round(Math.random() * 2147483647); bigRan = bigRan.toString(16); var time = (new Date()).getTime(); time = time.toString(16); var partialDomain = window.location.hostname.split(/\./)[1]; if(!partialDomain){ return false; } var cookieValue = ""; cookieValue = stlib.fpc.determineHash(partialDomain) + "-" + time + "-" + bigRan + "-1"; firstPersonCookie = cookieValue; }else{ // Increment the counter on the cookie by one var originalCookie = firstPersonCookie; var originalCookieArray = originalCookie.split(/\-/); if(originalCookieArray.length == 4){ var num = Number(originalCookieArray[3]); num++; firstPersonCookie = originalCookieArray[0] + "-" + originalCookieArray[1] + "-" + originalCookieArray[2] + "-" + num; } } // stlib.cookie.setCookie(stlib.fpc.cookieName, firstPersonCookie, 90); stlib.cookie.setFpcCookie(stlib.fpc.cookieName, firstPersonCookie); stlib.fpc.cookieValue = firstPersonCookie; return firstPersonCookie; }, determineHash: function(partialDomain) { var hash = 0; var salt = 0; for (var i = partialDomain.length - 1; i >= 0; i--) { var charCode = parseInt(partialDomain.charCodeAt(i)); hash = ((hash << 8) & 268435455) + charCode + (charCode << 12); if ((salt = hash & 161119850) != 0){ hash = (hash ^ (salt >> 20)); } } return hash.toString(16); } }; stlib.validate = { regexes: { notEncoded: /(%[^0-7])|(%[0-7][^0-9a-f])|["{}\[\]\<\>\\\^`\|]/gi, tooEncoded: /%25([0-7][0-9a-f])/gi, publisher: /^(([a-z]{2}(-|\.))|)[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i, url: /^(http|https):\/\/([a-z0-9!'\(\)\*\.\-\+:]*(\.)[a-z0-9!'\(\)\*\.\-\+:]*)((\/[a-z0-9!'\(\)\*\.\-\+:]*)*)/i, fpc: /^[0-9a-f]{7}-[0-9a-f]{11}-[0-9a-f]{7,8}-[0-9]*$/i, sessionID: /^[0-9]*\.[0-9a-f]*$/i, title: /.*/, description: /.*/, buttonType: /^(chicklet|vcount|hcount|large|custom|button|)$/, // TODO: verify, also, is blank ok. comment: /.*/, destination: /.*/, // TODO: check against all service (construct a regexp?) source: /.*/, // TODO: Need to define this image: /(^(http|https):\/\/([a-z0-9!'\(\)\*\.\-\+:]*(\.)[a-z0-9!'\(\)\*\.\-\+:]*)((\/[a-z0-9!'\(\)\*\.\-\+:]*)*))|^$/i, sourceURL: /^(http|https):\/\/([a-z0-9!'\(\)\*\.\-\+:]*(\.)[a-z0-9!'\(\)\*\.\-\+:]*)((\/[a-z0-9!'\(\)\*\.\-\+:]*)*)/i, sharURL: /(^(http|https):\/\/([a-z0-9!'\(\)\*\.\-\+:]*(\.)[a-z0-9!'\(\)\*\.\-\+:]*)((\/[a-z0-9!'\(\)\*\.\-\+:]*)*))|^$/i } }; stlib.html = { encode : function(value) { if(stlib.html.startsWith(value, 'http')) {//URL check return String(value) .replace(/"/g, '"') .replace(/'/g, ''') .replace(//g, '>'); } else { return String(value) .replace(/&/g, '&') .replace(/"/g, '"') .replace(/'/g, ''') .replace(//g, '>'); } }, startsWith : function(value, str) { return (value.match("^"+str)==str); } }; /* * This holds critical data, requires the cookie object */ if (typeof(stlib.data) == "undefined") { stlib.data = { bInit: false, publisherKeySet: false, pageInfo: { }, shareInfo: { }, resetPageData: function() { //stlib.data.pageInfo.publisher = "00-00-00"; // The publisher key as given by the publisher //stlib.data.pageInfo.fpc = "ERROR"; // The cookie set on the publisher's domain to track the user on that domain stlib.data.pageInfo.sessionID = "ERROR"; // The session on any given pageview with our widget on it //stlib.data.pageInfo.sourceURL = "ERROR"; // The source domain stlib.data.pageInfo.hostname = "ERROR"; // The source domain stlib.data.pageInfo.location = "ERROR"; // The source domain stlib.data.pageInfo.product = "widget"; stlib.data.pageInfo.stid = ""; }, resetShareData: function() { stlib.data.shareInfo = {}; stlib.data.shareInfo.url = "ERROR"; // The url the service is sharing before any modification stlib.data.shareInfo.sharURL = ""; // The shar url the service is sharing before any modification stlib.data.shareInfo.buttonType = "ERROR"; // The button type that were clicked (hcount or vcount) stlib.data.shareInfo.destination = "ERROR"; // The channel that is being shared to (facebook, twitter) stlib.data.shareInfo.source = "ERROR"; // The widget or code location that is generating the request //stlib.data.shareInfo.title = ""; // The title of the article as best as can be determined //stlib.data.shareInfo.image = ""; // The title of the article as best as can be determined //stlib.data.shareInfo.description = ""; // The description of the article as best as can be determined //stlib.data.shareInfo.comment = ""; // The description of the article as best as can be determined }, resetData: function() { stlib.data.resetPageData(); stlib.data.resetShareData(); }, validate: function () { var regexes = stlib.validate.regexes; function validateHelp(key, value) { if (value != encodeURIComponent(value)) { regexes.notEncoded.test(value) ? _$de(key + " not encoded") : null; regexes.tooEncoded.test(value) ? _$de(key + " has too much encoding") :null; } var valueOk = regexes[key] ? regexes[key].test(decodeURIComponent(value)) : true; if (!valueOk) { _$de(key + " failed validation"); } } var p = stlib.data.pageInfo; var param; for (param in p) { validateHelp(param, p[param]) } p = stlib.data.shareInfo; for (param in p) { validateHelp(param, p[param]) } }, init: function() { if (!stlib.data.bInit) { stlib.data.bInit = true; stlib.data.resetData(); stlib.data.set("fcmp", typeof(window.__cmp) == 'function', "pageInfo"); stlib.data.set("fcmpv2", typeof(window.__tcfapi) == 'function', "pageInfo"); if(stlib.publisher){ stlib.data.setPublisher(stlib.publisher); } stlib.data.set("product",stlib.product,"pageInfo"); var rawUrl = document.location.href, refDomain = '', refQuery = '', referArray = [], currentRefer = '', cleanUrl = '', hashString = "", baseURL = '', sessionID_time = '', sessionID_rand = ''; //Fix for WID-343 referArray = stlib.data.getRefDataFromUrl(rawUrl);//get referrer data coming from share.es if(referArray.length > 0) { refDomain = (typeof(referArray[0]) != "undefined") ? referArray[0] : ""; refQuery = (typeof(referArray[1]) != "undefined") ? referArray[1] : ""; cleanUrl = stlib.data.removeRefDataFromUrl(rawUrl);//Remove referrer data from the URL. //Displays the modified(without referrer data parameter) or original URL in the address bar stlib.data.showModifiedUrl(cleanUrl); stlib.data.set("url", cleanUrl, "shareInfo"); } else { //For old non-secure shar urls currentRefer = document.referrer; referArray = currentRefer.replace("http://", "").replace("https://", "").split("/"); refDomain = referArray.shift(); refQuery = referArray.join("/"); stlib.data.set("url", rawUrl,"shareInfo"); } // TODO add option to not use hash tag stlib.data.set("title", document.title, "shareInfo"); if (stlib.data.publisherKeySet != true) { stlib.data.set("publisher","ur.00000000-0000-0000-0000-000000000000","pageInfo"); } // no longer using fpc // stlib.fpc.createFpc(); // stlib.data.set("fpc",stlib.fpc.cookieValue,"pageInfo"); // Requires that the cookie has been created sessionID_time = (new Date()).getTime().toString(); sessionID_rand = Number(Math.random().toPrecision(5).toString().substr(2)).toString(); stlib.data.set("sessionID",sessionID_time + '.' + sessionID_rand,"pageInfo"); //stlib.data.set("sourceURL", document.location.href,"pageInfo"); stlib.data.set("hostname", document.location.hostname,"pageInfo"); stlib.data.set("location", document.location.pathname,"pageInfo"); stlib.data.set("refDomain", refDomain ,"pageInfo"); stlib.data.set("refQuery", refQuery,"pageInfo"); } }, //Fix for WID-343 showModifiedUrl: function(modUrl) { if (window.history && history.replaceState) history.replaceState(null, document.title, modUrl); else if ((/MSIE/).test(navigator.userAgent)) { var ampInHashIndex = 0, hashString = window.location.hash, patt1 = new RegExp("(\&st_refDomain=?)[^\&|]+"), patt2 = new RegExp("(\#st_refDomain=?)[^\&|]+"), hRef = document.location.href; if(patt1.test(hRef)) { ampInHashIndex = hashString.indexOf('&st_refDomain'); window.location.hash = hashString.substr(0, ampInHashIndex); } else if(patt2.test(hRef)) window.location.replace("#"); } else { document.location.replace(modUrl); } }, //Fix for WID-343 getRefDataFromUrl: function(url) { var patt = new RegExp("st_refDomain="), tempDomain = '', tempQuery = '', result = []; if(patt.test(url)) { tempDomain = url.match(/(st_refDomain=?)[^\&|]+/g); result.push(tempDomain[0].split('=')[1]); tempQuery = url.match(/(st_refQuery=?)[^\&|]+/g); result.push(tempQuery[0].replace('st_refQuery=', '')); } return result; }, //Fix for WID-343 removeRefDataFromUrl: function(url) { var urlWoRefdomain = '', obj = '', patt1 = new RegExp("(\&st_refDomain=?)[^\&|]+"), patt2 = new RegExp("(\#st_refDomain=?)[^\&|]+"); if(patt1.test(url)) { urlWoRefdomain = url.replace(/\&st_refDomain=(.*)/g,''); } else if(patt2.test(url)) { urlWoRefdomain = url.replace(/\#st_refDomain=(.*)/g,''); } else { urlWoRefdomain = url; } return urlWoRefdomain; }, setPublisher: function(publisherKey) { // TODO: Add Validation stlib.data.set("publisher",publisherKey,"pageInfo"); stlib.data.publisherKeySet = true; }, setSource: function(src, options) { // TODO: Add Validation var source = ""; // Inside widget logging if (options) { if (options.toolbar) { source = "toolbar"+src; } else if (options.page && options.page != "home" && options.page != "") { source = "chicklet"+src; } else { source = "button"+src; } } // Outside widget logging else { // can be share5x, share4x, chicklet, fastshare, mobile source = src; } stlib.data.set("source",source,"shareInfo"); }, set: function(key, value, table) { if (typeof(value) == "number" || typeof(value) == "boolean") { stlib.data[table][key] = value; } else if (typeof(value) == "undefined" || value == null) { } else { // _$d1("Stripping HTML: " + key + ": " + value.replace(/<[^<>]*>/gi, " ")); // _$d1("decodeURI: " + key + ": " + decodeURI(value.replace(/<[^<>]*>/gi, " "))); // _$d1("Escape percent: " + key + ": " + decodeURI(value.replace(/<[^<>]*>/gi, " ")).replace(/%/gi, "%25")); // _$d1("Decoding: " + key + ": " + decodeURIComponent(decodeURI(value.replace(/<[^<>]*>/gi, " ")).replace(/%/gi, "%25"))); // _$d1("Encoding: " + key + ": " + encodeURIComponent(decodeURIComponent(decodeURI(value.replace(/<[^<>]*>/gi, " ")).replace(/%/gi, "%25")))); stlib.data[table][key] = encodeURIComponent(decodeURIComponent(unescape(value.replace(/<[^<>]*>/gi, " ")).replace(/%/gi, "%25"))); // These might have url encoded data if (key=="url" /*|| key=="sourceURL"*/ || key=="location" || key=="image") { try { stlib.data[table][key] = encodeURIComponent(decodeURIComponent(decodeURI(value.replace(/<[^<>]*>/gi, " ")).replace(/%/gi, "%25"))); } catch (e) { stlib.data[table][key] = encodeURIComponent(decodeURIComponent(unescape(value.replace(/<[^<>]*>/gi, " ")).replace(/%/gi, "%25"))); } } } }, get: function(key, table) { try { if (stlib.data[table] && stlib.data[table][key]) return decodeURIComponent(stlib.data[table][key]); else return false; }catch(e){ return false } }, unset: function(key, table) { if (stlib.data[table] && typeof(stlib.data[table][key])!="undefined") delete stlib.data[table][key]; }, bindEvent: function(element, eventName, eventHandler) { if (element.addEventListener) { element.addEventListener(eventName, eventHandler, false); } else if (element.attachEvent) { element.attachEvent('on' + eventName, eventHandler); } }, debug: function(endpoint, event) { stlib.data.init(); var a = stlib.data.pageInfo; var c = ""; var b; for (b in a) { c += b + "=" + a[b] + "&" } c = c.substring(0, c.length - 1); var loggerUrl = "https://l.sharethis.com/"; loggerUrl += endpoint; loggerUrl += "?event=" + event; loggerUrl += "&" + c; var e = new Image(1, 1); e.src = loggerUrl; e.onload = function() { return }; }, hostname: function(url) { var a; if (url == null) { url = st.href; } a = document.createElement('a'); a.setAttribute('href', url); return a.hostname; }, protocol: function(url) { var a; if (url == null) { url = st.href; } a = document.createElement('a'); a.setAttribute('href', url); return a.protocol; }, parseCookie: function (name, cookie) { var values = cookie.match('(^|;)\\s*' + name + '\\s*=\\s*([^;]+)'); return values ? values.pop() : null; }, writeCookie: function(name, value, max_age) { if (!max_age) { max_age = 33696000 } var host = (window && window.location && window.location.hostname) || ''; var parts = host.split('.'); var domain = ""; if (parts.length > 1) { domain = "domain=." + parts.slice(-2).join('.'); } var samesite_secure = ""; try { document.cookie = "st_samesite=1;SameSite=None;Secure"; if (stlib.data.parseCookie("st_samesite", document.cookie)) { samesite_secure = "SameSite=None;Secure" document.cookie = "st_samesite=1;max-age=0;SameSite=None;Secure"; } } catch (e) {} document.cookie = name + "=" + value + ";" + domain + ";path=/;max-age=" + max_age + ";" + samesite_secure; }, setConsent: function(consent) { for(var consent_key in consent) { stlib.data.set(consent_key,consent[consent_key],"pageInfo"); } }, getEUConsent: function (c) { function once(fn, context) { var result; return function() { if(fn) { result = fn.apply(context || this, arguments); fn = null; } return result; }; } var done = once(c); // set usprivacy first if we have it var usprivacy = stlib.data.parseCookie("usprivacy", document.cookie); if (usprivacy) { stlib.data.setConsent({ usprivacy: usprivacy }); } // keep track of how long it takes to get consent var start = Date.now(); var useCookie = once(function() { // check for first party cookies var euconsent_v2 = stlib.data.parseCookie("euconsent-v2", document.cookie); if (euconsent_v2 !== null) { stlib.data.setConsent({ gdpr_consent: euconsent_v2, gdpr_domain: document.location.hostname, gdpr_method: "cookie" }); } done(); }); if (typeof window.__tcfapi == "function") { // fallback to cookie in case the tcf api is too slow or unavailable var timeout = setTimeout(useCookie, 5000); // first we try to get the data from the cmp // wrap in a try catch since we don't control the tcfapi code on page try { window.__tcfapi("getTCData", 2, function (data) { if (data && data.tcString) { var gdpr_domain = (data.isServiceSpecific) ? document.location.hostname : ".consensu.org"; stlib.data.setConsent({ consent_duration: Date.now() - start, gdpr_consent: data.tcString, gdpr_domain: gdpr_domain, gdpr_method: "api" }); clearTimeout(timeout); done(); } else { // fallback to cookie if there is no data useCookie(); } }); } catch (e) { // fallback to cookie if there is an error useCookie(); } } else { // fallback to cookie if the tcfapi doesn't exist useCookie(); } } }; stlib.data.resetData(); } stlib.hash = { doNotHash: false, hashAddressBar: false, doNotCopy: false, prefix:"sthash", shareHash: "", incomingHash: "", validChars: ["1","2","3","4","5","6","7","8","9","0", "A","B","C","D","E","F","G","H","I","J", "K","L","M","N","O","P","Q","R","S","T", "U","V","W","X","Y","Z","a","b","c","d", "e","f","g","h","i","j","k","l","m","n", "o","p","q","r","s","t","u","v","w","x", "y","z"], servicePreferences: { linkedin: "param", stumbleupon: "param", bebo: "param" }, hashDestination: function(destination) { if (destination == "copy") {return "dpuf";} var condensedString = destination.substring(0,2) + destination.substring(destination.length-2, destination.length); var increment = function(string, pos) { if(string.charCodeAt(pos) == 122) { return "a"; } return String.fromCharCode(string.charCodeAt(pos) + 1); } return increment(condensedString, 0) + increment(condensedString, 1) + increment(condensedString, 2) + increment(condensedString, 3); }, getHash: function() { var sthashFound = false; var sthashValue = ""; var urlWithoutHash = document.location.href; urlWithoutHash = urlWithoutHash.split("#").shift(); var paramArray = urlWithoutHash.split("?"); if (paramArray.length > 1) { paramArray = paramArray[1].split("&"); for (arg in paramArray) { try { if (paramArray[arg].substring(0, 6) == "sthash") { sthashFound = true; sthashValue = paramArray[arg]; } } catch (err) { } } if (sthashFound) { return sthashValue; } else { return document.location.hash.substring(1); } } else { return document.location.hash.substring(1); } }, stripHash: function(url) { var urlWithoutHash = url; urlWithoutHash = urlWithoutHash.split("#"); if (urlWithoutHash.length > 1) return urlWithoutHash[1]; else return ""; }, clearHash: function() { if (stlib.hash.validateHash(document.location.hash)) { var baseHref = document.location.href.split("#").shift(); if (window.history && history.replaceState) // history.replaceState(null, "ShareThis", "#"); history.replaceState(null, document.title, baseHref); else if ((/MSIE/).test(navigator.userAgent)) window.location.replace("#"); else document.location.hash = ""; } }, init: function() { var finalHash = ""; var max = stlib.hash.validChars.length; for (var i=0;i<8;i++) { finalHash += stlib.hash.validChars[Math.random()*max|0]; } if (stlib.hash.getHash() == "") { stlib.hash.shareHash = stlib.hash.prefix + "." + finalHash; } else { var splitHash = stlib.hash.getHash().split("."); var key = splitHash.shift(); if (key == stlib.hash.prefix || key == stlib.hash.prefix) { stlib.hash.incomingHash = stlib.hash.getHash(); stlib.hash.shareHash = stlib.hash.prefix + "." + splitHash.shift() + "." + finalHash; } else { stlib.hash.shareHash = stlib.hash.prefix + "." + finalHash; } } if (!stlib.hash.doNotHash && stlib.hash.hashAddressBar) { if (document.location.hash == "" || stlib.hash.validateHash(document.location.hash)) { if (window.history && history.replaceState) history.replaceState(null, "ShareThis", "#"+stlib.hash.shareHash + ".dpbs"); else if ((/MSIE/).test(navigator.userAgent)) window.location.replace("#"+stlib.hash.shareHash + ".dpbs"); else document.location.hash = stlib.hash.shareHash + ".dpbs"; } } else { stlib.hash.clearHash(); } if (!stlib.hash.doNotHash && !stlib.hash.doNotCopy) { stlib.hash.copyPasteInit(); } stlib.hash.copyPasteLog(); }, checkURL: function() { var destination = stlib.data.get("destination", "shareInfo"); var baseURL = stlib.hash.updateParams(destination); var shortenedDestination = "." + stlib.hash.hashDestination(destination); stlib.hash.updateDestination(shortenedDestination); if (!stlib.hash.doNotHash && typeof(stlib.data.pageInfo.shareHash) != "undefined") { var url = stlib.data.get("url", "shareInfo"); var hash = stlib.hash.stripHash(url); if (stlib.hash.validateHash(hash) || hash == "") { if(typeof(stlib.hash.servicePreferences[destination]) != "undefined") { if(stlib.hash.servicePreferences[destination] == "param") { _$d1("Don't use hash, use params"); _$d2(baseURL); if (baseURL.split("?").length > 1) { var parameterArray = baseURL.split("?")[1].split("&") var sthashExists = false; //for (arg in parameterArray) { for (var arg = 0; arg < parameterArray.length; arg++) { if (parameterArray[arg].split(".")[0] == "sthash") { sthashExists = true; } } if (sthashExists) { // Param was fixed by updateParams, dont need to add anything stlib.data.set("url",baseURL, "shareInfo"); } else { // Param wasn't there, need to add it. stlib.data.set("url",baseURL + "&" + stlib.data.pageInfo.shareHash, "shareInfo"); } } else { // There are no params, need to add the hash param stlib.data.set("url",baseURL + "?" + stlib.data.pageInfo.shareHash, "shareInfo"); } if (destination == "linkedin") { // shar url contains # which is an error in LinkedIn if (stlib.data.get("sharURL", "shareInfo") != "") { stlib.data.set("sharURL", stlib.data.get("url", "shareInfo"), "shareInfo"); } } } else { _$d1("Using Hash"); stlib.data.set("url",baseURL + "#" + stlib.data.pageInfo.shareHash, "shareInfo"); } } else { _$d1("Not using custom destination hash type"); stlib.data.set("url",baseURL + "#" + stlib.data.pageInfo.shareHash, "shareInfo"); } } } }, updateParams: function(destination) { var baseURL = stlib.data.get("url", "shareInfo").split("#").shift(); var regex2a = /(\?)sthash\.[a-zA-z0-9]{8}\.[a-zA-z0-9]{8}/; var regex2b = /(&)sthash\.[a-zA-z0-9]{8}\.[a-zA-z0-9]{8}/; var regex1a = /(\?)sthash\.[a-zA-z0-9]{8}/; var regex1b = /(&)sthash\.[a-zA-z0-9]{8}/; if (regex2a.test(baseURL)) { baseURL = baseURL.replace(regex2a, "?" + stlib.data.pageInfo.shareHash); } else if (regex2b.test(baseURL)) { baseURL = baseURL.replace(regex2b, "&" + stlib.data.pageInfo.shareHash); } else if (regex1a.test(baseURL)) { baseURL = baseURL.replace(regex1a, "?" + stlib.data.pageInfo.shareHash); } else if (regex1b.test(baseURL)) { baseURL = baseURL.replace(regex1b, "&" + stlib.data.pageInfo.shareHash); } return baseURL; }, updateDestination: function(destinationHash) { var regex2 = /sthash\.[a-zA-z0-9]{8}\.[a-zA-z0-9]{8}\.[a-z]{4}/; var regex1 = /sthash\.[a-zA-z0-9]{8}\.[a-z]{4}/; _$d_(); _$d1("Updating Destination"); if (regex2.test(stlib.data.pageInfo.shareHash)) { _$d2(stlib.data.pageInfo.shareHash.substring(0,24)); stlib.data.pageInfo.shareHash = stlib.data.pageInfo.shareHash.substring(0,24) + destinationHash; } else if (regex1.test(stlib.data.pageInfo.shareHash)) { _$d2(stlib.data.pageInfo.shareHash.substring(0,15)); stlib.data.pageInfo.shareHash = stlib.data.pageInfo.shareHash.substring(0,15) + destinationHash; } else { stlib.data.pageInfo.shareHash += destinationHash; } }, validateHash: function(isValidHash) { var regex3 = /[\?#&]?sthash\.[a-zA-z0-9]{8}\.[a-zA-z0-9]{8}$/; var regex2 = /[\?#&]?sthash\.[a-zA-z0-9]{8}\.[a-zA-z0-9]{8}\.[a-z]{4}$/; var regex1 = /[\?#&]?sthash\.[a-zA-z0-9]{8}\.[a-z]{4}$/; var regex0 = /[\?#&]?sthash\.[a-zA-z0-9]{8}$/; return regex0.test(isValidHash) || regex1.test(isValidHash) || regex2.test(isValidHash) || regex3.test(isValidHash); }, appendHash : function (url) { var hash = stlib.hash.stripHash(url); if (stlib.data.pageInfo.shareHash && (stlib.hash.validateHash(hash) || hash == "")) { url = url.replace("#"+hash,"") + "#" + stlib.data.pageInfo.shareHash; } else { } return url; }, copyPasteInit: function() { var body = document.getElementsByTagName("body")[0]; var replacement = document.createElement("div"); replacement.id = "stcpDiv"; replacement.style.position = "absolute"; replacement.style.top = "-1999px"; replacement.style.left = "-1988px"; body.appendChild(replacement); replacement.innerHTML = "ShareThis Copy and Paste"; var baseHref = document.location.href.split("#").shift(); var hash = "#" + stlib.hash.shareHash; if (document.addEventListener) { body["addEventListener"]("copy",function(e){ //TYNT CONFLICT FIX: do not copy if Tynt object exists if (typeof(Tynt)!="undefined"){ // console.log("Tynt exists. Don't copy"); return; } // console.log("Tynt doesn't exist. Proceed"); //grab current range and append url to it var selection = document.getSelection(); if (selection.isCollapsed) { return; } var markUp = selection.getRangeAt(0).cloneContents(); replacement.innerHTML = ""; replacement.appendChild(markUp); if (replacement.textContent.trim().length==0) { return; } if((selection+"").trim().length==0) { //No text, don't need to do anything } else if (replacement.innerHTML == (selection+"") || replacement.textContent == (selection+"")) { //Fix for CNS FB:12969. Encode html data to avoid js script execution on content copy replacement.innerHTML = stlib.html.encode(stlib.hash.selectionModify(selection)); } else { //Fix for CNS FB:12969. Encode html data to avoid js script execution on content copy replacement.innerHTML += stlib.html.encode(stlib.hash.selectionModify(selection, true)); } var range = document.createRange(); range.selectNodeContents(replacement); var oldRange = selection.getRangeAt(0); },false); } else if (document.attachEvent) { /* body.oncopy = function() { var oldRange = document.selection.createRange(); replacement.innerHTML = oldRange.htmlText; try { var length = (oldRange.text).trim().length; } catch (e) { var length = (oldRange.text).replace(/^\s+|\s+$/g, '').length; } if(length==0) { //No text, don't need to do anything } else if (oldRange.htmlText == oldRange.text) { //Just text, treat normally replacement.innerHTML = stlib.hash.selectionModify(oldRange.text); } else { //Text and markup, special case replacement.innerHTML += stlib.hash.selectionModify(oldRange.text, true); } var range = document.body.createTextRange(); range.moveToElementText(replacement); range.select(); setTimeout(function() {oldRange.select();}, 1); }; */ } }, copyPasteLog: function() { var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent"; var messageEvent1 = eventMethod == "attachEvent" ? "oncopy" : "copy"; var body = document.getElementsByTagName("body")[0]; if(body){ body[eventMethod](messageEvent1,function(e){ var pass = true; stlib.data.resetShareData(); stlib.data.set("url", document.location.href, "shareInfo"); stlib.data.setSource("copy"); stlib.data.set("destination", "copy", "shareInfo"); stlib.data.set("buttonType", "custom", "shareInfo"); if (typeof(Tynt)!="undefined"){ // Log Tynt stlib.data.set("result", "tynt", "shareInfo"); pass = false; } if (typeof(addthis_config)!="undefined") { // Log AddThis stlib.data.set("result", "addThis", "shareInfo"); if (typeof(addthis_config.data_track_textcopy)=="undefined"||addthis_config.data_track_textcopy) { stlib.data.set("enabled", "true", "shareInfo"); pass = false; } else { stlib.data.set("enabled", "false", "shareInfo"); } } },false); } }, logCopy: function(url, selection) { stlib.data.resetShareData(); stlib.data.set("url", url, "shareInfo"); stlib.data.setSource("copy"); stlib.data.set("destination", "copy", "shareInfo"); stlib.data.set("buttonType", "custom", "shareInfo"); if (selection) stlib.data.set("copy_text", selection, "shareInfo"); stlib.sharer.share(); }, selectionModify: function(selection, anchorOnly) { selection = "" + selection; _$d_(); _$d1("Copy Paste"); var regex = /^((http|https):\/\/([a-z0-9!'\(\)\*\.\-\+:]*(\.)[a-z0-9!'\(\)\*\.\-\+:]*)((\/[a-z0-9!'\(\)\*\.\-\+:]*)*))/i; var regex2 = /^([a-z0-9!'\(\)\*\.\-\+:]*(\.)[a-z0-9!'\(\)\*\.\-\+:]*)((\/[a-z0-9!'\(\)\*\.\-\+:]*)*)/i; var regexPhoneNumberUS = /^\+?1?[\.\-\\)_\s]?[\\(]?[0-9]{3}[\.\-\\)_\s]?[0-9]{3}[\.\-_\s]?[0-9]{4}$|^[0-9]{3}[\.\-_\s]?[0-9]{4}$/; var regexPhoneNumberIndia = /^[0-9]{3}[\.\-_\s]?[0-9]{8}$/; var regexPhoneNumberBrazil = /^[0-9]{2}[\.\-_\s]?[0-9]{4}[\.\-_\s]?[0-9]{4}$/; var regexEmail = /[\-_\.a-z0-9]+@[\-_\.a-z0-9]+\.[\-_\.a-z0-9]+/i; var regex3 = /[\s@]/; var baseHref = document.location.href.split("#").shift(); var hash = "#" + stlib.hash.shareHash; var anchorStr = ""; var urlStr = ""; var returnStr = selection; if (typeof(anchorOnly) == "undefined" && ((regex.test(selection) || regex2.test(selection)) && !regex3.test(selection.trim()))) { // the selection is a url _$d2("is Url"); if (selection.match(/#/) == null || stlib.hash.validateHash(selection)) { urlStr = selection.split("#")[0] + hash + ".dpuf"; } else { urlStr = selection; } } else { _$d2("is Not Url"); if (document.location.hash == "" || (/^#$/).test(document.location.hash) || stlib.hash.validateHash(document.location.hash)) { urlStr = baseHref + hash + ".dpuf"; } else { urlStr = document.location.href; } returnStr = selection; if (selection.length > 50) { if (!regexPhoneNumberUS.test(selection) && !regexPhoneNumberIndia.test(selection) && !regexPhoneNumberBrazil.test(selection) && !regexEmail.test(selection)) { // don't add if an email or phone number returnStr += anchorStr; } } } if (selection.length > 500) { selection = selection.substring(0, 497) + "..."; } stlib.hash.logCopy(urlStr, selection); return returnStr; } }; /********************START MESSAGE QUEUE***********************/ stlib.messageQueue = function () { var that = this; this.pumpInstance = null; this.queue = []; this.dependencies = ["data"]; // This holds a sorted array of dependency tags, [0] should be loaded before [1]. this.sending = true; this.setPumpInstance = function(pumpInstance){ this.pumpInstance = pumpInstance; }; this.send = function(message, tag){ // Send debug message if ((typeof(message) == "string") && (typeof(tag) == "string")) { _$d_(); _$d1("Queueing message: " + tag + ": " + message); } // Queue the message (typeof(message) == "string") && (typeof(tag) == "string") ? this.queue.push([tag, message]) : null; if (this.sending == false || stlib.browser.ieFallback) { // Don't process the queue if it's currently processing if (this.pumpInstance != null) { // If the pumpInstance is valid if (this.dependencies.length > 0) { // If there are current dependencies for (messageSet in this.queue) { // Look for the dependency and send it. If not found, don't send anything. if (this.queue.hasOwnProperty(messageSet) && this.queue[messageSet][0] == this.dependencies[0]) { if(this.queue.length > 0) { _$d1("Current Queue Length: " + this.queue.length); var m = this.queue.shift(); this.pumpInstance.broadcastSendMessage(m[1]); this.dependencies.shift(); this.sending = true; } } } } else { // If there are no dependencies, just send the first message if (this.queue.length > 0) { _$d1("Current Queue Length: " + this.queue.length); var m = this.queue.shift(); this.pumpInstance.broadcastSendMessage(m[1]); this.sending = true; } } } else { _$d_(); _$d1("Pump is null"); } } if ((stlib.browser.ieFallback) && (this.queue.length > 0)) { var processName = "process" + stlib.functionCount; stlib.functionCount++; stlib.functions[processName] = that.process; setTimeout("stlib.functions['" + processName + "']()", 500); } }; this.process = function() { _$d1("Processing MessageQueue"); that.sending = false; _$d(this.queue); that.send(); }; }; /********************END MESSAGE QUEUE***********************/ /* Requires browser obj */ stlib.pump = function (destination, source, callback) { var that = this; this.isIframeReady = false; this.isIframeSending = false; this.getHash = function(url) { var mArray = url.split("#"); mArray.shift(); return mArray.join("#"); } this.broadcastInit = function(destination) { this.destination = destination; _$d_('---------------------'); _$d1("Initiating broadcaster:"); _$d(this.destination); }; this.broadcastSendMessage = function(message) { _$d_('---------------------'); _$d1("Initiating Send:"); if (this.destination === window) { // Iframe sends an event to the parent window if (stlib.browser.ieFallback) { //window.location.hash = message; window.location.replace(window.location.href.split("#")[0] + "#" + message); _$d2("child can't communicate with parent"); return; } _$d2("Iframe to publisher: " + message); parent.postMessage("#" + message, document.referrer); } else { // The parent window sends an event to the iframe _$d2("Publisher to Iframe: " + message); if (stlib.browser.ieFallback) { if (this.destination.contentWindow) { this.destination.contentWindow.location.replace(this.destination.src + "#" + message); this.isIframeSending = true; } return; } this.destination.contentWindow.postMessage("#" + message, this.destination.src); } }; this.receiverInit = function(source, callback) { _$d_('---------------------'); _$d1("Initiating Receiver:"); _$d(source); if (stlib.browser.ieFallback) { this.callback = callback; this.source = source; if (source === window) { // The iframe polls the hash value for any changes //window.location.hash = ""; window.location.replace(window.location.href.split("#")[0] + "#"); this.currentIframe = window.location.hash; var receiverName = "receiver" + stlib.functionCount; stlib.functions[receiverName] = function (callback) { if ("" != window.location.hash && "#" != window.location.hash) { var hash = window.location.hash; callback(hash); //window.location.hash = ""; window.location.replace(window.location.href.split("#")[0] + "#"); } }; stlib.functionCount++; var callbackName = "callback" + stlib.functionCount; stlib.functions[callbackName] = callback; stlib.functionCount++; setInterval("stlib.functions['" + receiverName + "'](stlib.functions['" + callbackName + "'])", 200); } else { // The parent polls the iframe /* var receiverName = "receiver" + stlib.functionCount; that.oldHash = that.getHash(source.src); stlib.functions[receiverName] = function (callback) { _$d1("ShareThis Publisher is polling: " + that.oldHash + ": " + (source.src)); if (that.oldHash != that.getHash(source.src)) { that.oldHash = that.getHash(source.src); callback(hash); } }; stlib.functionCount++; var callbackName = "callback" + stlib.functionCount; stlib.functions[callbackName] = callback; stlib.functionCount++; setInterval("stlib.functions['" + receiverName + "'](stlib.functions['" + callbackName + "'])", 200); */ } var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent"; var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message"; // Listen to message from child window window[eventMethod](messageEvent,function(e) { if (source == window) { } else { if (e.origin.indexOf("sharethis.com") != -1) { if (e.data.match(/#Pinterest Click/)) stlib.sharer.sharePinterest(); if (e.data.match(/#Print Click/)) stlib.sharer.stPrint(); } } },false); return; } var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent"; var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message"; // Listen to message from child window window[eventMethod](messageEvent,function(e) { if (source == window) { _$d1("arrived in iframe from:"); _$d(e.origin); if (e.data.match(/#fragmentPump/) || e.data.match(/#Buttons Ready/) || e.data.match(/#Widget Ready/) || e.data.indexOf("#light")==0 || e.data.indexOf("#widget")==0 || e.data.indexOf("#popup")==0 || e.data.indexOf("#show")==0 || e.data.indexOf("#init")==0 || e.data.indexOf("#test")==0 || e.data.indexOf("#data")==0) // Make sure data is our own callback(e.data); } else { if (e.origin.indexOf("sharethis.com") != -1) { _$d1("arrived in parent from:"); _$d(e.origin); if (e.data.match(/#fragmentPump/) || e.data.match(/#Buttons Ready/) || e.data.match(/#Widget Ready/) || e.data.indexOf("#light")==0 || e.data.indexOf("#widget")==0 || e.data.indexOf("#popup")==0 || e.data.indexOf("#show")==0 || e.data.indexOf("#init")==0 || e.data.indexOf("#test")==0 || e.data.indexOf("#data")==0) // Make sure data is our own callback(e.data); else if (e.data.match(/#Pinterest Click/)) stlib.sharer.sharePinterest(); else if (e.data.match(/#Print Click/)) stlib.sharer.stPrint(); } else { _$d1("discarded event from:"); _$d(e.origin); } } },false); }; this.broadcastInit(destination); this.receiverInit(source, callback); }; /* * This handles direct post sharing */ stlib.sharer = { sharerUrl: "https://ws.sharethis.com/api/sharer.php", regAuto : new RegExp(/(.*?)_auto$/), //regexp to detect auto events constructParamString: function() { // Validate the data stlib.data.validate(); // if (!stlib.hash.doNotHash) { // stlib.hash.checkURL(); // } // Pull all the parameters from the page the widget was on var p = stlib.data.pageInfo; var paramString = "?"; var param; for (param in p) { // the following line creates "param=value&" paramString += param + "=" + encodeURIComponent(p[param]) + "&"; _$d1("constructParamStringPageInfo: " + param + ": " + p[param]); } // Pull all the parameters related to the share p = stlib.data.shareInfo; for (param in p) { paramString += param + "=" + encodeURIComponent(p[param]) + "&"; _$d1("constructParamStringShareInfo: " + param + ": " + p[param]); } paramString += "ts=" + new Date().getTime() + "&"; return paramString.substring(0, paramString.length-1); }, stPrint : function() { window.print(); }, incrementShare : function() { var currentRefer = document.referrer; var referArray = currentRefer.replace("http://", "").replace("https://", "").split("/"); var refD = referArray.shift(); if ( refD == "www.mangatown.com" || refD == "imobiliariacasa.com.br") { return; } var url = stlib.data.get("url", "shareInfo"); var dest = stlib.data.get("destination", "shareInfo"); var proto = "https://"; var cs_ep = "count-server.sharethis.com/increment_shares?countType=share&output=false"; // remove #sthash url = url.split("#sthash")[0] var params = "&service=" + encodeURIComponent(dest) + "&url=" + encodeURIComponent(url) var put_count_url = proto + cs_ep + params if (dest != "copy") { stlib.scriptLoader.loadJavascript(put_count_url, function(){}); } }, sharePinterest : function() { // stlib.sharer.incrementShare(); if (stlib.data.get("image", "shareInfo") == false || stlib.data.get("image", "shareInfo") == null || stlib.data.get("pinterest_native", "shareInfo") == "true"){ if (typeof(stWidget)!="undefined" && typeof(stWidget.closeWidget) === "function") stWidget.closeWidget(); if (typeof(stcloseWidget) === "function") stcloseWidget(); if (typeof(stToolbar) !="undefined" && typeof(stToolbar.closeWidget) === "function") stToolbar.closeWidget(); var e = document.createElement('script'); e.setAttribute('type', 'text/javascript'); e.setAttribute('charset', 'UTF-8'); e.setAttribute('src', '//assets.pinterest.com/js/pinmarklet.js?r='+Math.random() * 99999999); document.body.appendChild(e); } }, share: function(callback, popup) { var paramString = stlib.sharer.constructParamString(); _$d_(); _$d1("Initiating a Share with the following url:"); _$d2(stlib.sharer.sharerUrl + paramString); // stlib.sharer.incrementShare(); // Pass sharer.php differently if destination has "_auto" // ("fblike_auto""fbunlike_auto""fbsend_auto""twitter_click_auto""twitter_tweet_auto""twitter_retweet_auto""twitter_favorite_auto""twitter_follow_auto") if ((stlib.data.get("destination", "shareInfo") == "print") || (stlib.data.get("destination", "shareInfo") == "email") || (stlib.data.get("destination", "shareInfo") == "pinterest" && stlib.data.get("source", "shareInfo").match(/share4xmobile/) == null && stlib.data.get("source", "shareInfo").match(/share4xpage/) == null && stlib.data.get("source", "shareInfo").match(/5xpage/) == null && (stlib.data.get("image", "shareInfo") == false || stlib.data.get("image", "shareInfo") == null))|| stlib.data.get("destination", "shareInfo") == "snapsets" || stlib.data.get("destination", "shareInfo") == "copy" || stlib.data.get("destination", "shareInfo") == "plusone" || stlib.data.get("destination", "shareInfo").match(stlib.sharer.regAuto) || (typeof(stlib.nativeButtons) != "undefined" && stlib.nativeButtons.checkNativeButtonSupport(stlib.data.get("destination", "shareInfo")))||(stlib.data.get("pinterest_native", "shareInfo") != false && stlib.data.get("pinterest_native", "shareInfo") != null)){ var mImage = new Image(1,1); mImage.src = stlib.sharer.sharerUrl + paramString; mImage.onload = function(){return;}; } else { if (typeof(popup)!="undefined"&&popup==true) // <-- force popup here window.open(stlib.sharer.sharerUrl + paramString, (new Date()).valueOf(), "scrollbars=1, status=1, height=480, width=640, resizable=1"); else window.open(stlib.sharer.sharerUrl + paramString); } callback ? callback() : null; } }; stlib.logger.version = 'sharethis.js' // set product and property for new buttons if (window.__sharethis__) { stlib.setProduct(window.__sharethis__.product); stlib.setPublisher(window.__sharethis__.property); } var sop_pview_logged = typeof __stdos__ !== 'undefined' && __stdos__ !== null && __stdos__.onscriptload; if (!sop_pview_logged && !stlib.onscriptload && document.URL.indexOf("edge.sharethis.com") == -1) { stlib.data.init(); stlib.onscriptload = true; stlib.logger.log("pview", null); } stlib.logger.ibl(); stlib.data.bindEvent(document, "click", stlib.logger.obl); if(typeof(_gaq)!=="undefined" && typeof(__stPubGA)!=="undefined"){ if(typeof(_gat)!=="undefined"){ var __stPubGA=_gat._getTrackerByName("~0")._getAccount(); } if(typeof(__stPubGA)!=="undefined" && __stPubGA!="UA-XXXXX-X"){ _gaq.push(function(){ var temp=_gat._getTrackerByName(); __stPubGA=temp._getAccount(); if(__stPubGA=="UA-XXXXX-X"){ delete __stPubGA; } }); } } //try{ if (!SHARETHIS) { if(!SHARETHIS_TOOLBAR){ var SHARETHIS_TOOLBAR=false; } var SHARETHIS=null; /* parseQueryString.js - a function to parse and decode query strings -- The author of this program, Safalra (Stephen Morley), irrevocably releases all rights to this program, with the intention of it becoming part of the public domain. Because this program is released into the public domain, it comes with no warranty either expressed or implied, to the extent permitted by law. For more public domain JavaScript code by the same author, visit: http://www.safalra.com/web-design/javascript/ */ function parseQueryString(G){var E={};if(G==undefined){G=location.search?location.search:""}if(G.charAt(0)=="?"){G=G.substring(1)}var C=G.indexOf("?");if(C){G=G.substring(C+1)}C=G.indexOf("#");if(C){G=G.substring(C+1)}G=G.replace("+"," ");var B=G.split(/[&;]/g);for(var C=0;C0){ //bottom space is not available assume top is bottomA=false; topA=true; if((buttonPos.height-widgetH)>0){ newH=buttonPos.height-widgetH; } SHARETHIS.wrapper.style.top = newH+"px"; } if(diffW>0){ //left is not avaialbe assume right is... leftA=false; rightA=true; if((buttonPos.width-widgetW)>0){ newW=buttonPos.width-widgetW; } SHARETHIS.wrapper.style.left = newW+"px"; } } SHARETHIS.wrapper.style.visibility="visible"; SHARETHIS.mainstframe.style.visibility = 'visible'; }, this.hideWidget=function(){ if(SHARETHIS.wrapper.style.visibility !== 'hidden'){ SHARETHIS.wrapper.style.visibility = 'hidden'; } if(SHARETHIS.mainstframe.style.visibility !== 'hidden'){ SHARETHIS.mainstframe.style.visibility = 'hidden'; } }, this.pageSize=function() { var pScroll = [0,0,0,0]; var scX=0; var scY=0; var winX=0; var winY=0; if (typeof(window.pageYOffset) == 'number') { //Netscape compliant scX=window.pageXOffset; scY=window.pageYOffset; } else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) { //DOM compliant scX=document.body.scrollLeft; scY=document.body.scrollTop; } else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) { //IE6 standards compliant mode scX=document.documentElement.scrollLeft; scY=document.documentElement.scrollTop; } if (window.innerWidth) { winX=window.innerWidth; winY=window.innerHeight; } else if (document.documentElement.offsetWidth) { winX= document.documentElement.offsetWidth; winY=document.documentElement.offsetHeight; } pScroll={scrX:scX,scrY:scY,width:winX,height:winY}; return pScroll; } this.addEntry=function(properties, options){ if(_thisScript===null){ var tmpScr=getShareThisScript(); SHARETHIS.options=parseQueryString(tmpScr.src); this.frameUrl="https://ws.sharethis.com/secure/index.html"; //this.frameUrl="http://edge.sharethis.com/share4x/index.9aa1eb228041f3c32e59f41f0431d184.html"; // - Last Uncommented URL //this.frameUrl="http://wd.sharethis.com/share5x/index.html this.postUrl="https://ws.sharethis.com/api/setCache_ws.php"; if(SHARETHIS.options["button"]){SHARETHIS.options["button"]=SHARETHIS.getBool(SHARETHIS.options["button"].toString());} if(SHARETHIS.options["popup"]){SHARETHIS.options["popup"]=SHARETHIS.getBool(SHARETHIS.options["popup"].toString());} if(SHARETHIS.options["embeds"]){SHARETHIS.options["embeds"]=SHARETHIS.getBool(SHARETHIS.options["embeds"].toString());} var init = "init"; SHARETHIS.newwinfrag = "#popup"; for (var o in SHARETHIS.options){ if(SHARETHIS_tstOptions(o)==true) { init = init+"/"+o+"="+encodeURIComponent(options[o]); this.newwinfrag = this.newwinfrag+ "/" +o +"-=-" +encodeURIComponent(options[o]); } } SHARETHIS.initstr = init; //PUMP //SHARETHIS.mainstframe.src=SHARETHIS.frameUrl+SHARETHIS.initstr; SHARETHIS.messageQueueInstance.send(SHARETHIS.initstr, 'init'); } var o = new SHARETHIS_Shareable(properties, SHARETHIS_merge2(SHARETHIS.options, options)); if(typeof(o.properties.url)==="object"){ try{o.properties.url=o.properties.url.href;}catch(err){} } for (var prop in o.properties){ try{o.properties[prop]=o.properties[prop].toString();}catch(err){} } var xInt=""; var xInt2=""; var sendDataInt=""; var sendPopupDataInt=""; // if( this.meta.publisher=="5afea983-e449-4a75-a464-3c9a7f6c6e37" || //zillow this.meta.publisher=="e1e0ea5a-a326-4731-b1d1-f21623043511" || //boston.com this.meta.publisher=="ccd2a158-6cce-4bbc-afa8-1d2dc62fe84c" || //foxnews.com this.meta.publisher=="1e542d6f-546f-4d85-a790-bbaf333155b7" || //espn.com this.meta.publisher=="89879177-51bf-4cf0-91c9-6326d062d5e6" || //huffington post this.meta.publisher=="44b6b8a4-c8df-4bd0-8d8d-e6ad27ec63f4" ||//fast company stlib.browser.mobile.isMobile() ){ //on hover is false for these publishers o.options.onmouseover=false; } if( SHARETHIS.options['onmouseover'] ) { if( SHARETHIS.options['onmouseover'] == 'true' ) { o.options.onmouseover=true; } else if( SHARETHIS.options['onmouseover'] == 'false' ) { o.options.onmouseover=false; } } if(o.options.popup){ o.options.onmouseover = false; SHARETHIS.popupExists=true; } else if(SHARETHIS_TOOLBAR!==true){ SHARETHIS.widgetExists=true; } o.idx = this.shareables.push(o) - 1; var id = 'sharethis_' + o.idx; var oidx = o.idx; if(o.properties.url!==this.lastUrl){ this.lastUrl=o.properties.url; } else{ SHARETHIS.logFlag=false; } o.chicklet = function(e){ if (!e) var e = window.event; if (e.target) { o.trigger = e.target; } else if (e.srcElement) { o.trigger = e.srcElement; } var dest = o.trigger.getAttribute("st_dest"); stlib.data.resetShareData(); stlib.data.set("url", o.properties.url, "shareInfo"); stlib.data.set("title", o.properties.title, "shareInfo"); stlib.data.set("destination", dest, "shareInfo"); stlib.data.setSource("chicklet"); stlib.data.set("buttonType", "custom", "shareInfo"); if(typeof(o.properties.icon)!='undefined' && o.properties.icon!=null){ stlib.data.set("image", o.properties.icon, "shareInfo"); }if(typeof(o.properties.summary)!='undefined' && o.properties.summary!=null){ stlib.data.set("description", o.properties.summary, "shareInfo"); } stlib.sharer.share(); // stlib.logger.log("click"); // // var url ="https://ws.sharethis.com/button/redirect.php"; // url += "?d=" + dest; // url += "&pk=" + SHARETHIS.options.publisher; // url += "&s=" + SHARETHIS.options.sessionID; // url += "&p=" + encodeURIComponent(stlib.json.encode(o.properties)); // window.open(url,"stpopup","width=970,height=700,location=1,toolbar=1,scrollbars=1,menubar=1,resizable=1"); } o.popup = function(e) { if(stlib.browser.ieFallback) { if (typeof(SHARETHIS.initIE)=="undefined"||SHARETHIS.initIE!=true) { // console.log("IE not init"); return; } } stCancelClose(); if (!o.options.service) { var service = ""; if (e && e.currentTarget) { service = e.currentTarget.getAttribute("st_page"); } else { service = o.button.getAttribute("st_page"); } if (service == "home") { o.options.service = "sharethis"; } else if (service == "send") { o.options.service = "email"; } } if (stlib.browser.mobile.handleForMobileFriendly(o, o.options)) { SHARETHIS.log("widget", o, "mobile"); return; } o.options.autoclose=true; SHARETHIS.postEntries(o); //o.options.onmouseover=true;//setting to true for default... if(SHARETHIS_TOOLBAR===true){ if(st_showing===false){ SHARETHIS.log('widget',o,'toolbar'); } st_showing=true; clearInterval(stVisibleInterval); SHARETHIS.hideEmbeds(); var added="#popup/title="+encodeURIComponent(encodeURIComponent(o.properties.title))+"/url="+encodeURIComponent(encodeURIComponent(o.properties.url))+"/publisher="+o.options.publisher+"/toolbar=true"; var pgval=""; if(SHARETHIS.page!=null){ pgval="/page="+SHARETHIS.page; } //PUMP //SHARETHIS.mainstframe.src = SHARETHIS.frameUrl +added+pgval; SHARETHIS.messageQueueInstance.send(added+pgval, 'popup'); SHARETHIS.wrapper.style.visibility="visible"; SHARETHIS.mainstframe.style.visibility = 'visible'; } else { if( (SHARETHIS.ready===true && SHARETHIS.frameReady===true) || (SHARETHIS.popupExists===true && SHARETHIS.ready==true && SHARETHIS.widgetExists===false) || (SHARETHIS.popupExists===true && SHARETHIS.ready==true && SHARETHIS.frameReady===true) ){ clearInterval(stVisibleInterval); if ( ( typeof(e) != "undefined" && typeof(e) != "unknown" && e) || (typeof(event) != "undefined" && typeof(event) != "unknown" && event) ) { if (typeof(e) != "undefined" && typeof(e) != "unknown" && e) { o.trigger = e.target } else if (typeof(event) != "undefined" && typeof(event) != "unknown" && event) { o.trigger = event.srcElement; } if (o.trigger !== null && o.trigger) { id=o.trigger.id; SHARETHIS.current_element=o.trigger; o.page = o.trigger.getAttribute('st_page'); if(st_showing===false){ if (o.page == "home") { SHARETHIS.log('widget',o,'button'); } else { SHARETHIS.log('widget',o,'chicklet'); } } } else { o.page = "home"; if(st_showing===false){ SHARETHIS.log('widget',o,'button'); } } } else { if (o.element != null) { id=o.element.id; SHARETHIS.current_element=o.element; } o.page = "home"; if(st_showing===false){ SHARETHIS.log('widget',o,'button'); } } var pageFrag = o.page ? "/page=" + o.page : "/page=home"; SHARETHIS.curr_offsetTop=Number(o.options.offsetTop); SHARETHIS.curr_offsetLeft=Number(o.options.offsetLeft); if(SHARETHIS.curr_offsetTop>0 || SHARETHIS.curr_offsetTop>0){ SHARETHIS.autoPosition=false; } SHARETHIS.curr_id=id; if(o.options.onclick) { var res = o.options.onclick.apply(document, [o]); if(res == false) return false; } var added="#popup/title-=-"+encodeURIComponent(encodeURIComponent(o.properties.title))+"/url-=-"+encodeURIComponent(encodeURIComponent(o.properties.url))+"/publisher-=-"+o.options.publisher+"/toolbar-=-true"; if (stlib.data) { var toStoreA = stlib.json.encode(stlib.data.pageInfo); var toStoreB = stlib.json.encode(stlib.data.shareInfo); if (stlib.browser.isFirefox() && !stlib.browser.firefox8Version()) { toStoreA = encodeURIComponent(encodeURIComponent(toStoreA)); toStoreB = encodeURIComponent(encodeURIComponent(toStoreB)); } else { toStoreA = encodeURIComponent(toStoreA); toStoreB = encodeURIComponent(toStoreB); } added += "/pageInfo-=-" + toStoreA; added += "/shareInfo-=-" + toStoreB; } _$d_(); _$d1("Is popup:" + o.options.popup); if(o.options.popup) { _$d2(SHARETHIS.frameUrl); _$d2(added); var newwinurl = SHARETHIS.frameUrl + added; window.open(newwinurl, "newstframe","status=1,toolbar=0,width=350,height=450"); } else{ if(st_showing == false) { if(o.options.embeds == false) { SHARETHIS.hideEmbeds(); } stautoclose = o.options.autoclose; if(o.options.onmouseover==false){ stautoclose=false; } if(SHARETHIS.sendNum'); } } catch(err){ } var x = document.getElementById(id); if (x) { if(o.options.button) { x.appendChild(ovr); x.appendChild(img); } } break; case 'horizontal': case 'vertical': var ovr = document.createElement("div"); ovr.className = 'stoverlay'; o.button = ovr; var img = document.createElement("img"); img.setAttribute("src", "https://ws.sharethis.com/images/hbutton.gif"; if(o.options.onmouseover == false || o.options.onmouseover == "false") ovr.onclick = o.popup; if(o.options.onmouseover == true || o.options.onmouseover == "true") { ovr.onclick=function(){stCancelClose();}; ovr.onmouseover=function(){;stCancelClose();SHARETHIS.mousetimer=setTimeout(o.popup,150);}; ovr.onmouseout=function(){clearInterval(SHARETHIS.mousetimer);}; } try{ if(o.options.button==true && SHARETHIS.bodyLoaded==false){ document.write('
'); } } catch(err){ } var x = document.getElementById(id); if (x) { if(o.options.button) { x.appendChild(ovr); x.appendChild(img); } } break; default: var a = document.createElement("a"); a.className = 'stbutton stico_' + (o.options.style ? o.options.style : (SHARETHIS.options.style ? SHARETHIS.options.style : 'default')); a.title = "ShareThis via email, AIM, social bookmarking and networking sites, etc."; a.href = "javascript:void(0)"; a.setAttribute("st_page", "home"); //mouse over if(o.options.onmouseover == false || o.options.onmouseover == "false") a.onclick = o.popup; if(o.options.onmouseover == true || o.options.onmouseover == "true") { //SHARETHIS.wrapper.onmouseover=function(){;stCancelClose();}; //SHARETHIS.wrapper.onmouseout=function(){console.log("widget mouse out");}; //manu a.onclick=function(){stCancelClose();}; a.onmouseover=function(){;stCancelClose();SHARETHIS.mousetimer=setTimeout(o.popup,150);}; a.onmouseout=function(){clearInterval(SHARETHIS.mousetimer);}; //function(){SHARETHIS.mousetimer=setTimeout(o.popup,100);}; //a.onmouseover = o.popup; } var t = document.createElement("span"); t.className = 'stbuttontext'; t.setAttribute("st_page", "home"); t.appendChild(document.createTextNode(o.options.buttonText)); a.appendChild(t); o.button = a; try{ if(o.options.button==true && SHARETHIS.bodyLoaded==false){ if(document.readyState != "complete" && document.readyState != "loaded" && document.readyState != "interactive"){ document.write(''); }else if(document.readyState != "complete" && (/MSIE/gi.test(navigator.userAgent))){ document.write(''); } } }catch(err){} //SHARETHIS.onReady(); var x = document.getElementById(id); if (x) { if(o.options.button) { x.appendChild(a); } } } if(SHARETHIS.logFlag){SHARETHIS.buttonCount++;} return o; }, this.postEntries=function(o){ SHARETHIS.sendNum=0; var urls = ''; var propertylist = []; var tmp_prop={}; //var o = this.shareables[i]; urls = urls+o.properties.url; for (p in o.properties){ if(SHARETHIS_tstOptions(p)==true){ tmp_prop[p]=null; tmp_prop[p]=o.properties[p]; } } var metaProps={}; var meta=document.getElementsByTagName("meta"); for(var i=0;i 0) toReturn = true; else if(variable.length == 0) toReturn = false; break; } return toReturn; } }, this.onStFrameLoad=function(){ if(SHARETHIS.frameLoaded===false){ //SHARETHIS.postEntries(); SHARETHIS.widgetCalled=true; SHARETHIS.frameLoaded=true; if(SHARETHIS.st_clicked==true){ setTimeout("SHARETHIS.st_clicked_o.popup()",1000); } } } this.readyTest=function(){ if(SHARETHIS.frameReady===true && SHARETHIS.ready===true){ clearInterval(SHARETHIS.readyTestInterval); SHARETHIS.onStFrameLoad(); } } this.sendEvent=function(name,value){ var tmpSend="widget/"+name+"="+value; this.messageQueueInstance.send(tmpSend, 'widget'); } this.initData = function() { stlib.data.init(); this.dataInit = true; stlib.data.resetShareData(); stlib.data.set("url", document.location.href, "shareInfo"); stlib.data.set("title", document.title, "shareInfo"); stlib.data.set("source", "sharethis.js.4x","shareInfo"); //stlib.logger.productArray.push("Widget4x"); //WID-751: Adding product parameter for all ShareThis logging stlib.data.set("product", "Widget4x", "pageInfo"); this.messageQueueInstance = new stlib.messageQueue(); var thisMessageQueue = this.messageQueueInstance; this.pumpInstance = new stlib.pump(this.mainstframe, this.mainstframe, function() { thisMessageQueue.process(); }); this.messageQueueInstance.setPumpInstance(this.pumpInstance); try { this.pumpInstance.broadcastSendMessage("Buttons Ready"); } catch (err) { } var stringNeeded = "data"; for (var o in stlib.data){ if(stlib.data.hasOwnProperty(o)==true && stlib.data[o]!==null && typeof(stlib.data[o])!="function"){ if(typeof(stlib.data[o])=="object") { var toStore = stlib.json.encode(stlib.data[o]); } else if (typeof stlib.data[o] == "boolean") { var toStore = stlib.data[o] ? "true" : "false" ;} else { var toStore = stlib.data[o]; } // Only encode twice if Firefox (Firefox decodes any encoded URL) if (stlib.browser.isFirefox() && !stlib.browser.firefox8Version()) stringNeeded += "/"+o+"="+encodeURIComponent(encodeURIComponent(toStore)); else stringNeeded += "/"+o+"="+encodeURIComponent(toStore); } } this.fragString = stringNeeded; if(stlib.browser.ieFallback) { setTimeout(function(){SHARETHIS.messageQueueInstance.send(SHARETHIS.fragString, 'data');}, 1000); } else { this.messageQueueInstance.send(stringNeeded, 'data'); } if(stlib.browser.ieFallback) { setTimeout(function(){SHARETHIS.messageQueueInstance.send(SHARETHIS.sendInit[0], 'init');}, 2000); setTimeout(function(){SHARETHIS.initIE=true;}, 2500); } else { this.messageQueueInstance.send(this.sendInit[0], 'init'); } }; this.initialize=function(options){ if(typeof(options['publisher'])=="undefined" && typeof(stLight)!=="undefined"){ options.publisher=(typeof(stLight)!=="undefined") ? stLight.publisher:null } for(o in options){ options[o]=options[o].toString(); } // Fixing our logging. Publishers have been adding 'type=website' to sharethis.js. We will not use 'website' anymore, so change to 'custom' for(o in options){ if (o=="type"&&options[o]=="website") { options[o]="custom"; } } if(_thisScript==null){ var _slist = document.getElementsByTagName('script'); var _thisScript3 = _slist[_slist.length - 1]; var ST_script_src=_thisScript3.src; } else{ var ST_script_src=_thisScript.src; } this.frameUrl="https://ws.sharethis.com/secure/index.html"; // this.frameUrl="http://edge.sharethis.com/share4x/index.9aa1eb228041f3c32e59f41f0431d184.html"; this.postUrl="https://ws.sharethis.com/api/setCache_ws.php"; this.options = options || {}; if(this.options["button"]){this.options["button"]=this.getBool(this.options["button"].toString());} if(this.options["popup"]){this.options["popup"]=this.getBool(this.options["popup"].toString());} if(this.options["embeds"]){this.options["embeds"]=this.getBool(this.options["embeds"].toString());} stlib.hash.doNotHash=false; stlib.hash.doNotCopy=false; if(this.options["hashAddressBar"]){ this.options["hashAddressBar"]=this.getBool(this.options["hashAddressBar"].toString()); stlib.hash.hashAddressBar=this.options["hashAddressBar"]; } if (this.options.publisher) { this.meta.publisher = this.options.publisher; stlib.data.setPublisher(this.options.publisher); } //var tmp_css="https://wd.sharethis.com/button/css/secure.sharethis.1ac33bc7d4476110a610f925104446ff.css"; var tmp_css="https://ws.sharethis.com/button/css/sharethis-secure.css"; try{ if(this.options.css){ tmp_css=this.options.css.toString(); } } catch(err){} var css = tmp_css; this.load('link', { href : (this.options.css ? this.options.css : css), rel : 'stylesheet', type : 'text/css' }); try { this.mainstframe = document.createElement(''); this.mainstframe.onreadystatechange=function() { if(SHARETHIS.mainstframe.readyState==="complete"){ SHARETHIS.frameReady=true; that.initData(); } }; //try is ie } catch(err) { //catch is ff and safari this.mainstframe = document.createElement('iframe'); this.mainstframe.allowTransparency="true"; this.mainstframe.setAttribute("allowTransparency", "true"); this.mainstframe.onload=function() { SHARETHIS.frameReady=true; that.initData();}; } this.mainstframe.id = 'stframe'; this.mainstframe.className = 'stframe'; this.mainstframe.name = 'stframe'; this.mainstframe.frameBorder = '0'; this.mainstframe.scrolling = 'no'; this.mainstframe.width = '350px'; this.mainstframe.height = '450px'; this.mainstframe.style.top = '0px'; this.mainstframe.style.left = '0px'; //this works in ff and safari try { this.fp = document.createElement(''); } catch(err) { this.fp = document.createElement('iframe'); this.fp.style.visibility = 'hidden'; } this.fp.name = 'stpostframe'; this.fp.width = '0px'; this.fp.height = '0px'; this.fp.src = ""; var init = "init"; this.newwinfrag = "#popup"; for (var o in options){ if(SHARETHIS_tstOptions(o)==true){ init = init+"/"+o+"="+encodeURIComponent(options[o]); this.newwinfrag = this.newwinfrag+ "/" +o +"-=-" +encodeURIComponent(options[o]); } } if(typeof(stLight)!=="undefined"){ init=init+"/stLight=true"; this.newwinfrag = this.newwinfrag+"/stLight-=-true"; } this.initstr = init; this.sendInit.push(this.initstr); //PUMP //this.mainstframe.src=this.frameUrl+this.sendInit[0]; this.mainstframe.src=this.frameUrl; // this.sendNum++; this.wrapper= document.createElement('div'); this.wrapper.id = 'stwrapper'; this.wrapper.className = 'stwrapper'; this.wrapper.style.visibility = 'hidden'; this.wrapper.style.top = "-999px"; this.wrapper.style.left = "-999px"; this.closewrapper= document.createElement('div'); this.closewrapper.className = 'stclose'; this.closewrapper.onclick = stcloseWidget; this.wrapper.appendChild(this.closewrapper); this.wrapper.appendChild(this.mainstframe); this.defer(function(){ //make button count call SHARETHIS.bodyLoaded=true; SHARETHIS.trackTwitter(); SHARETHIS.trackFB(); SHARETHIS.subscribe("click",SHARETHIS.gaTS); if(SHARETHIS_TOOLBAR===true){ document.body.appendChild(SHARETHIS.fp); // SHARETHIS.postPopup(); //posts data to set cache SHARETHIS_TOOLBAR_DIV.appendChild(SHARETHIS.wrapper); } if(SHARETHIS.popupExists===true && SHARETHIS.popupCalled===false){ document.body.appendChild(SHARETHIS.fp); //SHARETHIS.postPopup(); SHARETHIS.popupCalled=true; } if(SHARETHIS.widgetCalled===false && SHARETHIS.widgetExists===true){ document.body.appendChild(SHARETHIS.wrapper); setTimeout(function(){try{ //PUMP //window.frames['stframe'].location.replace(SHARETHIS.mainstframe.src); }catch(err){}},100); SHARETHIS.readyTestInterval=setInterval(SHARETHIS.readyTest,250); } try{ var stfrm=document.getElementById("stframe"); stfrm.onmouseover=function(){stCancelClose();SHARETHIS.inTime=(new Date()).getTime();}; stfrm.onmouseout=function(){SHARETHIS.outTime=(new Date()).getTime();SHARETHIS.openDuration=(SHARETHIS.outTime-SHARETHIS.inTime)/1000;stClose();}; try{ if(document.body.attachEvent){ document.body.attachEvent('onclick',function(){if(SHARETHIS.buttonClicked==false){SHARETHIS.stopClosing=false;SHARETHIS.openDuration=0;stClose(100);}}); }else{ document.body.setAttribute('onclick','if(SHARETHIS.buttonClicked==false){SHARETHIS.stopClosing=false;SHARETHIS.openDuration=0;stClose(100);}'); } }catch(err){ document.body.onclick=function(){if(SHARETHIS.buttonClicked==false){SHARETHIS.stopClosing=false;SHARETHIS.openDuration=0;stClose(100);}}; //close widget instantly on body click } }catch(err){} }); if (typeof(window.addEventListener) != 'undefined') { window.addEventListener("load", this.onReady, false); } else if (typeof(document.addEventListener) != 'undefined') { document.addEventListener("load", this.onReady, false); } else if (typeof window.attachEvent != 'undefined') { window.attachEvent("onload", this.onReady); } if(typeof(__st_loadLate)=="undefined"){ if (typeof(window.addEventListener) != 'undefined') { window.addEventListener("DOMContentLoaded", this.onReady, false); } else if (typeof(document.addEventListener) != 'undefined') { document.addEventListener("DOMContentLoaded", this.onReady, false); } } setTimeout(function(){ for (var s in SHARETHIS.shareables) { if (SHARETHIS.shareables[s].options != undefined) { switch (SHARETHIS.shareables[s].options.style) { case 'vertical': var ifr; try { ifr = document.createElement(''); } catch(err) { ifr = document.createElement('iframe'); ifr.allowTransparency="true"; ifr.setAttribute("allowTransparency", "true"); } ifr.className = 'stcounter'; ifr.frameBorder = '0'; ifr.scrolling = 'no'; ifr.width = '57px'; ifr.height = '39px'; ifr.src = "https://ws.sharethis.com/button/vcounter.php?url=" + encodeURIComponent(SHARETHIS.shareables[s].properties.url); SHARETHIS.shareables[s].button.parentNode.appendChild(ifr); break; case 'horizontal': var ifr; try { ifr = document.createElement(''); } catch(err) { ifr = document.createElement('iframe'); ifr.allowTransparency="true"; ifr.setAttribute("allowTransparency", "true"); } ifr.className = 'stcounter'; ifr.frameBorder = '0'; ifr.scrolling = 'no'; ifr.width = '37px'; ifr.height = '18px'; ifr.src = "https://ws.sharethis.com/button/hcounter.php?url=" + encodeURIComponent(SHARETHIS.shareables[s].properties.url); SHARETHIS.shareables[s].button.parentNode.appendChild(ifr); break; } } } }, 1000); } this.initialize(options); } var closetimeout; function stClose(timer){ if(!timer){ timer=1000; } if(stautoclose==true && SHARETHIS_TOOLBAR==false){ if(SHARETHIS.openDuration<0.5 && SHARETHIS.stopClosing==false){ closetimeout = setTimeout("stcloseWidget()",timer); }else{ SHARETHIS.stopClosing=true; } } } function stCancelClose() { clearTimeout(closetimeout); SHARETHIS.buttonClicked=true; setTimeout(function(){SHARETHIS.buttonClicked=false;},100);//manu } function stcloseWidget(){ if(typeof(SHARETHIS.grayOut)!=="undefined"){ SHARETHIS.grayOut(false); } if(st_showing==false){ return false; } st_showing = false; SHARETHIS.wrapper.style.visibility ='hidden' ; SHARETHIS.mainstframe.style.visibility = 'hidden'; SHARETHIS.wrapper.style.top = "-999px"; SHARETHIS.wrapper.style.left = "-999px"; SHARETHIS.showEmbeds(); SHARETHIS.sendEvent("screen","home"); SHARETHIS.sendArray=[];//reset send array to be blank } function SHARETHIS_tstOptions(tstStr){ var opt_arr=['type','title','summary','content','url','icon','category','updated','published','author','button','onmouseover','buttonText','popup','offsetLeft','offsetTop','embeds','autoclose','publisher','tabs','services','charset','headerbg','inactivebg','inactivefg','linkfg','style','send_services','exclusive_services','post_services','headerfg','headerType','headerTitle','sessionID','tracking','fpc','ads','pUrl','publisher','doneScreen','jsref','publisherGA','lang','doNotHash']; var retVal=false; for(var i=0;i1){ domain="."+str[str.length-2]+"."+str[str.length-1]; } return domain; } //hashes dd and returns value function _stdHash(dd) { var hash=0,salt=0; for (var i=dd.length-1;i>=0;i--) { var charCode=parseInt(dd.charCodeAt(i)); hash=((hash << 8) & 268435455) + charCode + (charCode << 12); if ((salt=hash & 161119850)!=0){hash=(hash ^ (salt >> 20))}; } return hash.toString(16); } var _thisScript=null; function getShareThisScript(){ var _slist = document.getElementsByTagName('script'); var rScript=null; for(var i=0;i<_slist.length;i++) { var temp=_slist[i].src; if( temp.search(/.*sharethis.*\/button/) >=0 ){ rScript=_slist[i]; } else if(temp.search(/.*sharethis.*\/widget\/\?/) >=0 || temp.search(/.*sharethis.*\/widget\/index/) >=0 || temp.search(/.*sharethis.*\/widget\/\?&/) >=0){ rScript=_slist[i]; } } return rScript; } function dbrInfo(){ var dbr=document.referrer; if(dbr && dbr.length>0){ var domainReg=/\/\/.*?\//; //something between //something/ var matches=dbr.match(domainReg); if(typeof(matches)!=="undefined" && typeof(matches[0])!=="undefined"){ var reg=new RegExp(document.domain,'gi'); if(reg.test(matches[0])==true){ return false; } } var re1=/(http:\/\/)(.*?)\/.*/i; var re2=/(^.*\?)(.*)/ig; var retVal=""; var domain=dbr.replace(re1, "$2"); var reg=new RegExp(domain,'gi'); if(domain.length>0){retVal+="&refDomain="+domain;} else{return false;} var query=dbr.replace(re2,"$2"); if(query.length>0){retVal+="&refQuery="+encodeURIComponent(query);} return retVal; } else{ return false; } } _thisScript=getShareThisScript(); if (_thisScript){ SHARETHIS = new ShareThis(parseQueryString(_thisScript.src)); } else { SHARETHIS = new ShareThis(); } //SHARETHIS.log('pview', null, null); } // End !SHARETHIS // Don't run if called from HEAD, or if toolbar has been run var _slist = document.getElementsByTagName('script'); var _thisScript2 = _slist[_slist.length - 1]; if (_thisScript2 && _thisScript2.parentNode.tagName != "HEAD" && typeof(_sttoolbar) == "undefined") { var obj = SHARETHIS.addEntry(); } SHARETHIS.trackFB=function(){ try { if (FB && FB.Event && FB.Event.subscribe) { FB.Event.subscribe('edge.create', function(targetUrl) { SHARETHIS.trackShare("fblike_auto",targetUrl); SHARETHIS.callSubscribers("click","fblike",targetUrl); }); FB.Event.subscribe('edge.remove', function(targetUrl) { SHARETHIS.trackShare("fbunlike_auto",targetUrl); SHARETHIS.callSubscribers("click","fbunlike",targetUrl); }); FB.Event.subscribe('message.send', function(targetUrl) { SHARETHIS.trackShare("fbsend_auto",targetUrl); SHARETHIS.callSubscribers("click","fbsend",targetUrl); }); } }catch(err){} }; SHARETHIS.trackTwitter=function(){ try { if (twttr && twttr.events && twttr.events.bind) { twttr.events.bind('click',function(){SHARETHIS.trackTwitterEvent("click");SHARETHIS.callSubscribers("click","twitter");}); twttr.events.bind('tweet',function(){SHARETHIS.trackTwitterEvent("tweet");}); twttr.events.bind('retweet',function(){SHARETHIS.trackTwitterEvent("retweet");SHARETHIS.callSubscribers("click","retweet");}); twttr.events.bind('favorite',function(){SHARETHIS.trackTwitterEvent("favorite");SHARETHIS.callSubscribers("click","favorite");}); twttr.events.bind('follow',function(){SHARETHIS.trackTwitterEvent("follow");SHARETHIS.callSubscribers("click","follow");}); } }catch(err){} }; SHARETHIS.trackTwitterEvent=function(name){ SHARETHIS.trackShare("twitter_"+name+"_auto"); }; SHARETHIS.trackShare=function(destination,inUrl){ if(typeof(inUrl)!=="undefined" || inUrl!==null){ var outUrl=inUrl; }else{ var outUrl=document.location.href; } stlib.data.set("url", outUrl, "shareInfo"); stlib.data.set("destination", destination, "shareInfo"); stlib.data.set("buttonType", "button", "shareInfo"); stlib.data.setSource("sharethis4x"); stlib.sharer.share(); }; SHARETHIS.messageReceiver=function(event){ if(event && (event.origin=="http://edge.sharethis.com" || event.origin=="https://ws.sharethis.com")){ var data=event.data; data=data.split("|"); if(data[0]=="ShareThis" && data.length>2){ var url= (typeof(data[3])=="undefined") ? document.location.href : data[3]; SHARETHIS.callSubscribers(data[1],data[2],url); } } }; SHARETHIS.subscribe=function(evnt,fun){ if(evnt=="click"){ SHARETHIS.clickSubscribers.push(fun); } }; SHARETHIS.callSubscribers=function(evnt,service,url){ if(evnt=="click"){ for(var i=0;i