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 SCRIPTLOADER***********************/
/*
* This handles on demand loading of javascript and CSS files
*/
stlib.scriptLoader = {
loadJavascript : function(href,callBack){
var loader = stlib.scriptLoader;
loader.head=document.getElementsByTagName('head')[0];
loader.scriptSrc=href;
loader.script=document.createElement('script');
loader.script.setAttribute('type', 'text/javascript');
loader.script.setAttribute('src', loader.scriptSrc);
loader.script.async = true;
if(window.attachEvent && document.all) { //IE:
loader.script.onreadystatechange=function(){
if(this.readyState=='complete' || this.readyState=='loaded'){
callBack();
}
};
} else { //other browsers:
loader.script.onload=callBack;
}
loader.s = document.getElementsByTagName('script')[0];
loader.s.parentNode.insertBefore(loader.script, loader.s);
},
loadCSS : function(href,callBack) {
_$d_();
_$d1("Loading CSS: " + href);
var loader = stlib.scriptLoader;
var cssInterval;
loader.head=document.getElementsByTagName('head')[0];
loader.cssSrc=href;
loader.css=document.createElement('link');
loader.css.setAttribute('rel', 'stylesheet');
loader.css.setAttribute('type', 'text/css');
loader.css.setAttribute('href', href);
loader.css.setAttribute('id', href);
setTimeout(function(){
callBack();
if(!document.getElementById(href)){
cssInterval=setInterval(function(){
if(document.getElementById(href)){
clearInterval(cssInterval);
callBack();
}
}, 100);
}
},100);
loader.head.appendChild(loader.css);
}
};
/********************END SCRIPTLOADER***********************/
/********************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 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);
}
};
/*
* 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 = "DOS2"; // the product
},
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
},
resetData: function() {
stlib.data.resetPageData();
stlib.data.resetShareData();
},
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;
var sessionID_time = '', sessionID_rand = '';
stlib.data.set("url", rawUrl,"shareInfo");
// no longer using fpc
// stlib.fpc.createFpc();
// stlib.data.set("fpc",stlib.fpc.cookieValue,"pageInfo"); // Requires that the cookie has been created
stlib.data.set("title", document.title, "shareInfo");
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.validateRefDomain();
//stlib.data.set("sourceURL", document.location.href,"pageInfo");
stlib.data.set("hostname", document.location.hostname,"pageInfo");
stlib.data.set("location", document.location.pathname,"pageInfo");
}
},
validateRefDomain: function() {
var refDomain = stlib.data.get("refDomain", "pageInfo");
if (!refDomain) {
this.setRefDomain(stlib.util.prop('referrer', window.document));
}
},
setRefDomain: function (refDomain) {
if (refDomain.length == 0) {
return;
}
var referArray = refDomain.replace("http://", "").replace("https://", "").split("/");
if(referArray.length > 0) {
refDomain = (typeof(referArray[0]) != "undefined") ? referArray[0] : refDomain;
refQuery = (typeof(referArray[1]) != "undefined") ? referArray[1] : "";
stlib.data.set("refQuery", refQuery,"pageInfo");
stlib.data.set("refDomain", refDomain ,"pageInfo");
}
;
},
setPublisher: function(publisherKey) {
// TODO: Add Validation
stlib.data.set("publisher",publisherKey,"pageInfo");
},
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 {
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;
},
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) {
// use the first party cookie if it exists
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 {
const tcfapi_callback = (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();
__tcfapi('removeEventListener', 2, () => {}, data.listenerId);
}
}
__tcfapi('addEventListener', 2, tcfapi_callback);
} 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.comscore = {
load: function() {
var ref=document.referrer;
var lurl = "https://sb.scorecardresearch.com/";
lurl+="b?c1=7&c2=8097938&rn=" +Math.round(Math.random() * 2147483647 )+ "&c7=" + encodeURIComponent(document.location.href)+ "&c3=8097938"+ "&c8="+encodeURIComponent(document.title)+ ( (ref)? "&c9="+encodeURIComponent(document.referrer) : "" )+ "&cv=2.2"+ "&cs=js";
var logger = new Image(1,1);
logger.src = lurl;
logger.onload = function(){return;};
}
}
/********************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/k/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 {
// run lotame's panorama id code if indicated by the content rule
if(res.status === "true" && res.lotame === "true") {
!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;
try {
if (crypto && crypto.randomUUID) {
logUrl += "&uuid=" + crypto.randomUUID()
}
stlib.data.pageInfo.pview_url = logUrl
} catch (e) {}
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***********************/
stlib.logger.version = 'st_insights.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(stLight)=="undefined" && typeof(SHARETHIS)=="undefined"){ //make sure it isnt called over and over again
var stWidgetVersion = false;
if(typeof(switchTo5x)=="undefined") {
stWidgetVersion = "4x"; // For Migration Phase 2 - by deafult widget will be 5xa
}else{
if(switchTo5x == false){
stWidgetVersion = "4x";
}
if(switchTo5x == true){
stWidgetVersion = "5xa";
}
}
stLight=new function(){
this.version=false;
this.publisher=null;
this.sessionID_time = (new Date()).getTime().toString();
this.sessionID_rand = Number(Math.random().toPrecision(5).toString().substr(2)).toString();
this.sessionID = this.sessionID_time + '.' + this.sessionID_rand;
this.fpc=null;
this.counter=0;
this.readyRun=false;
this.meta={
hostname: document.location.host,
location: document.location.pathname
};
this.loadedFromBar=false;
this.clickCallBack=false;
};
stLight.loadDefault = function() {
if (typeof(customProduct) == "undefined") {
this.product = "DOS2";
} else{
this.product = customProduct;
}
this.source = "DOS2";
this.version = "st_insights.js";
};
stLight.options=function(options){
this.loadDefault();
// set custom publisher
if(options && options.publisher){
stLight.setPublisher(options.publisher);
}
// set custom ref domain
if(options && options.refDomain){
stLight.setRefDomain(options.refDomain);
}
// set custom product
// calls setProduct but doesn't update stLight.product
// deprecated: productArray
stlib.logger.productArray = []
if(options && options.product){
stLight.setProduct(options.product);
}
else {
stLight.setProduct(stLight.product);
}
// set copy and share options
if(options && typeof(options.hashAddressBar) != "undefined") {
stlib.hash.hashAddressBar = options.hashAddressBar;
}
stlib.hash.doNotHash = stlib.hash.doNotCopy = false;
if(options) {
options.doNotCopy = options.doNotHash = false;
}
stlib.stLightOptionsObj = options;
};
stLight.onReady=function(){
if(stLight.readyRun==true){
return false;
}
stLight.loadFromScript();
stLight.readyRun=true;
stlib.data.init();
stLight.fpc=stlib.data.get("fpc", "pageInfo");
if(stLight.publisher==null){
if(typeof(window.console)!=="undefined"){
try{
// console.debug("Please specify a ShareThis Publisher Key \nFor help, contact support@sharethis.com");
}catch(err){}
}
}
stLight.setProduct(stLight.product);
//TODO: set this from the ref?
stlib.logger.lang = 'en';
};
//Used only to generate widget and pview events logs.
stLight.log=function(event){
stlib.data.resetShareData();
stlib.data.setSource(stLight.getSource());
stlib.data.set("url", document.location.href, "shareInfo");
stlib.data.set("title", document.title, "shareInfo");
stlib.data.set("counter", stLight.counter++, "shareInfo");
stlib.logger.log(event);
};
if(window.document.readyState=="completed"){
stLight.onReady();
}else{
if (typeof(window.addEventListener) != 'undefined') {
window.addEventListener("load", stLight.onReady, false);
} else if (typeof(document.addEventListener) != 'undefined') {
document.addEventListener("load", stLight.onReady, false);
} else if (typeof window.attachEvent != 'undefined') {
window.attachEvent("onload", stLight.onReady);
}
}
stLight.setPublisher = function(publisher) {
stlib.data.setPublisher(publisher);
stLight.publisher=publisher;
};
stLight.setRefDomain = function(refDomain) {
stlib.data.setRefDomain(refDomain);
};
stLight.setProduct = function(product) {
this.product = product;
stlib.data.set("product", product, "pageInfo");
};
stLight.getProduct = function() {
return this.product;
};
stLight.getSource=function(){
var source = 'share4x';
if(stWidgetVersion == "5xa"){
source = 'share5x';
}
//TODO: Get share bar version before buttons load
return source;
};
}
stLight.getUrlSearchParam = function() {
var list = window.location.search.substring(1);
return list.split("&");
}
stLight.getUrlQueryParams = function(url) {
var params = {};
var parts = url.replace(/[?&]+([^=&]+)=([^&]*)/gi,
function(m,key,value) {
params[key] = value;
});
return params;
}
stLight.getScriptSrcParams = function(scriptId){
var s = document.getElementById(scriptId);
if (s) {
return stLight.getUrlQueryParams(s.src)
}
}
stLight.setParams = function(params) {
if (params) {
if (params.refdomain) {
stLight.setRefDomain(params.refdomain);
}
if (params.publisher) {
stLight.setPublisher(params.publisher);
}
if (params.product) {
stLight.setProduct(params.product);
}
}
}
stLight.loadFromScript = function() {
// Load the url params from script "st_insights_js" src
var params = stLight.getScriptSrcParams('st_insights_js');
stLight.setParams(params)
}
stLight.loadFromWindowLocation = function() {
var params = stLight.getUrlSearchParam();
stLight.setParams(params)
}
//END OF light.js
stLight.onDomContentLoaded=function(){
stLight.onReady();
;
};
stLight.domReady=function(){
stLight.onReady();
};
st_showing=false;
stLight.clickSubscribers=[];
stLight.nonClickSubscribers=[];
if(window.document.readyState=="completed"){
stLight.domReady();//domReady
}else{
if (typeof(window.addEventListener) != 'undefined') {
window.addEventListener("load", stLight.domReady, false);
} else if (typeof(document.addEventListener) != 'undefined') {
document.addEventListener("load", stLight.domReady, false);
} else if (typeof window.attachEvent != 'undefined') {
window.attachEvent("onload", stLight.domReady);
}
}
//DOMContentLoaded
if(typeof(__st_loadLate)=="undefined"){
if (typeof(window.addEventListener) != 'undefined') {
window.addEventListener("DOMContentLoaded", stLight.onDomContentLoaded, false);
} else if (typeof(document.addEventListener) != 'undefined') {
document.addEventListener("DOMContentLoaded", stLight.onDomContentLoaded, false);
}
} else {
if (typeof(window.addEventListener) != 'undefined') {
window.addEventListener("DOMContentLoaded", stLight.onDomContentLoadedLazy, false);
} else if (typeof(document.addEventListener) != 'undefined') {
document.addEventListener("DOMContentLoaded", stLight.onDomContentLoadedLazy, false);
}
}
if(document.readyState == "complete" && stLight.readyRun==false){ //Keep at the end of the file
//This is called after body is loaded so the domeready call would never get called, so call it here
stLight.domReady();
}