-
-
Save tahajahangir/1758636 to your computer and use it in GitHub Desktop.
Unobfuscated version of tynt Tracer.js
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//v26 © 2011 Tynt | |
Tynt = window.Tynt || []; | |
if (typeof Tynt.TIL != "undefined") { | |
} else { | |
(function () { | |
var mainTynt = function () { | |
var body = document.body, | |
documentElement = document.documentElement, | |
isIE = eval("/*@cc_on!@*/false"), | |
repeat = function (a, b) { | |
for (var c = "", f = 0; f < b; f++) c += a; | |
return c | |
}, | |
a50 = repeat("a", 50), | |
ic_tynt_com = (Tynt.e || "") + "ic.tynt.com", | |
de_tynt_com = (Tynt.e || "") + "de.tynt.com/deb/?id=" + a50, | |
now = function () { | |
return (new Date).getTime() | |
}, | |
trim = function (a) { | |
return a.replace(/^\s+|\s+$/g, "") | |
}, | |
copyObj = function (a, b) { | |
for (var c in a) if (a.hasOwnProperty(c)) b[c] = a[c] | |
}, | |
createElem = function (tag, attrs, styles) { | |
tag = document.createElement(tag); | |
copyObj(attrs, tag); | |
copyObj(styles, tag.style); | |
return tag | |
}, | |
myAddEvent, myRemoveEvent; | |
// Define myAddEvent and myRemoveEvent based on browser (IE/nonIE) | |
if (window.addEventListener) { | |
myAddEvent = function (a, b, c) { | |
a.addEventListener(b, c, false) | |
}; | |
myRemoveEvent = function (a, b, c) { | |
a.removeEventListener(b, c, false) | |
} | |
} else { | |
myAddEvent = function (a, b, c) { | |
a.attachEvent("on" + b, c) | |
}; | |
myRemoveEvent = function (a, b, c) { | |
a.detachEvent("on" + b, c) | |
} | |
} | |
var setCookie = function (key, value) { | |
var c = location.hostname.split("."), | |
f = 2; | |
do { | |
var d = c.slice(c.length - f, c.length).join("."); | |
document.cookie = key + ";path=/;domain=." + d + ";" + value; | |
f++ | |
} while (document.cookie.indexOf(key) == -1 && f <= c.length); | |
if (document.cookie.indexOf(key) == -1) document.cookie = key + ";path=/;" + value | |
}, | |
addLoadEvent = function (a) { | |
document.readyState == "complete" ? a() : myAddEvent(window, "load", function () { | |
setTimeout(function () { | |
if (typeof document.readyState == "undefined" && !isIE) document.readyState = "complete"; | |
a() | |
}, 10) | |
}) | |
}, | |
sendRequestAfterLoad = function (source, errorHandler2) { | |
var sendQueue = [], | |
makeImage = function (src, errorHandler) { | |
// Tynt.join("~") is user id | |
var url = "http://" + src.replace("id=" + a50, "id=" + Tynt.join("~")); | |
if (url.indexOf(ic_tynt_com + "/b/p?") > -1 && typeof Tynt.b == "string") url += "&b=" + Tynt.b; | |
var imgTag = new Image(1, 1); | |
if (errorHandler) imgTag.onerror = errorHandler; | |
imgTag.src = url | |
}; | |
sendRequestAfterLoad = function (d, e) { | |
sendQueue.push([d, e]) | |
}; | |
addLoadEvent(function () { | |
sendRequestAfterLoad = makeImage; | |
for (var d = 0; d < sendQueue.length; d++) sendRequestAfterLoad(sendQueue[d][0], sendQueue[d][1]); | |
sendQueue = null | |
}); | |
sendRequestAfterLoad(source, errorHandler2) | |
}, | |
ca = function (a) { | |
var b = [], | |
c = "", | |
f; | |
for (f in a) if (a.hasOwnProperty(f)) { | |
b.push(c, f, "=", a[f]); | |
c = "&" | |
} | |
return b.join("") | |
}, | |
getHash = function (a) { | |
// Returns a base62 9-byte hash of input | |
for (var b = 0, c = a.length < 100 ? a.length : 100, f = 0; f < c; f++) b += a.charCodeAt(f); | |
a = Math.floor(Math.random() * 3844); | |
c = Math.abs(now() - 12281184E5); | |
return da(c, 7) + da((b + a) % 3844, 2) | |
}, | |
ea = function (a) { | |
if (a < 62) return "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".charAt(this); | |
else { | |
var b = Math.floor(a / 62); | |
a = a - b * 62; | |
return b >= 62 ? ea(b) + "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".charAt(a) : "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".charAt(b) + "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".charAt(a) | |
} | |
}, | |
da = function (a, b) { | |
var c = ea(a); | |
return repeat("0", b - c.length) + c | |
}, | |
numOfWords = function (a) { | |
return (a = trim(a)) ? a.split(/\s+/i).length : 0 | |
}, | |
documentTitle = trim((document.title || location.hostname).toString()).replace(RegExp(location.hash, "g"), ""), | |
removeSchema = function (a) { | |
return a.replace(/^https?:\/\//, "") | |
}, | |
getCookie = function (a, b) { | |
for (var c = b + "=", f = a.split(";"), d = 0; d < f.length; d++) { | |
for (var e = f[d]; e.charAt(0) == " ";) e = e.substring(1, e.length); | |
if (e.indexOf(c) == 0) return e.substring(c.length, e.length) | |
} | |
return null | |
}, | |
checkAndPush3 = function () { | |
// an implementation of queue of length 3! | |
// myfun = checkAndPush3() | |
// myfun(1) -> true | |
// myfun(2) -> true | |
// myfun(1) -> false | |
// myfun(10) -> true | |
// myfun(2) -> false | |
// myfun(3) -> true | |
// myfun(1) -> true // memory size is 3! | |
var list = []; | |
return function (value) { | |
for (var c = list.length - 1; c >= 0; c--) | |
if (list[c] == value) return false; | |
list.unshift(value); | |
list.length > 3 && list.pop(); | |
return true | |
} | |
}, | |
copyAlreadyProccessed = checkAndPush3(), | |
imgSrcAlreadyProccessed = checkAndPush3(), | |
contextMenuListener = function () { | |
var targetElem, processConetxtMenu = function () { | |
console.log('contextMenuListener clicked') | |
window.removeEventListener("blur", processConetxtMenu, false); | |
processCopyEvent(targetElem); | |
return true | |
}; | |
return function (event) { | |
targetElem = event.target || event.srcElement; | |
window.removeEventListener("blur", processConetxtMenu, false); | |
if (targetElem.nodeName == "IMG" && targetElem.parentNode.nodeName != "A") { | |
window.addEventListener("blur", processConetxtMenu, false); | |
setTimeout(function () { | |
document.removeEventListener("blur", processConetxtMenu, false) | |
}, 1E4) | |
} | |
return true | |
} | |
}(), | |
copyListener = function (a) { | |
processCopyEvent(a.target || a.srcElement, true) | |
}, | |
draggingImg, | |
mouseDownListener = function (a) { | |
a = a.target || a.srcElement; | |
draggingImg = a.nodeName == "IMG" ? a : null; | |
}, | |
dragLeaveListener = function () { //generate dragListenerBasedOnBrowser | |
var extractXYfromEvent = function (event) { | |
return typeof event.pageX == "number" ? { | |
x:event.pageX - (documentElement.scrollLeft ? documentElement.scrollLeft : body.scrollLeft), | |
y:event.pageY - (documentElement.scrollTop ? documentElement.scrollTop : body.scrollTop) | |
} : { | |
x:event.clientX, | |
y:event.clientY | |
} | |
}, | |
detectDrag_Ie = function (e) { | |
e = extractXYfromEvent(e); | |
return e.x <= 0 || e.y <= 0 || e.x >= body.clientWidth || e.y >= body.clientHeight | |
}, | |
detectDrag_Ie_compat = function (e) { | |
e = extractXYfromEvent(e); | |
return e.x <= 0 || e.y <= 0 || e.x >= documentElement.clientWidth || e.y >= documentElement.clientHeight | |
}, | |
detectDrag_firefox = function (e) { | |
return e.target.nodeName == "#document" | |
}, | |
detectDrag_others = function (e) { | |
e = extractXYfromEvent(e); | |
return e.x <= 4 || e.y <= 4 || e.x >= documentElement.clientWidth - 4 || e.y >= documentElement.clientHeight - 4 | |
}, | |
detectDrag = function (event) { | |
detectDrag = navigator.userAgent.match("MSIE") ? | |
!document.compatMode || | |
document.compatMode.indexOf("CSS") == -1 ? detectDrag_Ie : detectDrag_Ie_compat | |
: navigator.userAgent.match("Firefox") ? detectDrag_firefox : detectDrag_others; | |
detectDrag(event) | |
}; | |
return function (event) { | |
if (draggingImg && detectDrag(event)) { | |
console.log('dragCaptured', event) | |
processCopyEvent(draggingImg); | |
draggingImg = null | |
} | |
return true | |
} | |
}(), | |
addAnchorClickEvents = function () { | |
function sendUrlVisitedReport(url, l) { | |
if (urlIsNew(url)) { | |
console.log('Reporting /b/o '+url) | |
//sendRequestAfterLoad(ic_tynt_com + "/b/o?id=" + a50 + (l ? "&i=" : "&l=") + encodeURIComponent(url) + "&ts=" + now()) | |
} | |
} | |
function processAnchorClicks(event) { | |
var target = event.target || event.srcElement; | |
if (event.button < 2) | |
for (; target && target != document;) { | |
var href = target.href; | |
if (target.nodeName == "A" && href && location.href.split("#")[0] != href.split("#")[0] && !/^javascript/i.test(href)) { | |
sendUrlVisitedReport(href); | |
break | |
} | |
target = target.parentNode | |
} | |
} | |
function windowBlured() { | |
objectSrc && sendUrlVisitedReport(objectSrc, true) | |
} | |
function objectOverListener(e) { | |
if (e) { | |
e = e.target || e.srcElement; | |
objectSrc = e.src || e.data || "flash"; | |
myAddEvent(window, "blur", windowBlured) | |
} | |
} | |
function objectOutListener() { | |
objectSrc = null; | |
myRemoveEvent(window, "blur", windowBlured) | |
} | |
function processObject(elem) { | |
myAddEvent(elem, "mouseover", objectOverListener); | |
myAddEvent(elem, "mouseout", objectOutListener) | |
} | |
function windowUnloaded() { | |
objectSrc && sendUrlVisitedReport(objectSrc, true) | |
} | |
var objectSrc, urlIsNew = checkAndPush3(); | |
myAddEvent(document, "mousedown", processAnchorClicks); | |
addLoadEvent(function () { | |
for (var elems = document.getElementsByTagName("iframe"), l = elems.length - 1; l >= 0; l--) { | |
var iframe = elems[l]; | |
if (iframe.src) | |
processObject(iframe); | |
else if (iframe.name) { | |
try { | |
myAddEvent(frames[iframe.name].document, "mousedown", processAnchorClicks) | |
} catch (u) { | |
} | |
} | |
} | |
elems = document.getElementsByTagName("object"); | |
for (l = elems.length - 1; l >= 0; l--) | |
processObject(elems[l]) // <object> elem | |
}); | |
myAddEvent(window, "beforeunload", windowUnloaded); | |
myAddEvent(window, "unload", windowUnloaded) | |
}, | |
registerAllEvents = function () { | |
/* Registers copy / drag / link click events | |
* Returns a function to be called when user copy something | |
*/ | |
var unimportant3 = true, | |
b, | |
sendCopyEventReq = function (args, copiedText) { | |
var data = { | |
id:a50, | |
wc:numOfWords(copiedText), | |
c:copiedText, | |
f:unimportant3 ? 1 : 0, | |
t:documentTitle | |
}; | |
copyObj(args, data); | |
unimportant3 = false; | |
var h = data.trace_type; | |
delete data.trace_type; | |
var k = data.g; | |
delete data.g; | |
for (var o = [], j = ["id", "wc", "f", "now", "h", "trim", "c"], l = 0; l < j.length; l++) { | |
var r = j[l], | |
u = data[r]; | |
u && o.push([r, encodeURIComponent(u).replace(/\'/g, "%27")]); | |
delete data[r] | |
} | |
for (var y in data) if (data.hasOwnProperty(y))(j = data[y]) && o.push([y, encodeURIComponent(j).replace(/\'/g, "%27")]); | |
data = []; | |
l = 2048 - (("http://" + ic_tynt_com + "/a/t/x#?").length + (3 + k.length) + 5); | |
r = o.length; | |
var B = u = 0, | |
z = 0, | |
U, H, V, I, J = 0; | |
for (data[J] = { | |
g:k, | |
tp:null | |
}; u < r && data.length < 35;) { | |
U = o[u][0]; | |
y = o[u][1]; | |
V = U.length + 2; | |
H = l - V - B; | |
if (H > 0) { | |
j = y.substring(z, z + H); | |
I = j.slice(-2).indexOf("%"); | |
if (I > -1) { | |
j = y.substring(z, z + H - 2 + I); | |
B += I + 2 | |
} | |
B += j.length + V; | |
z += j.length; | |
data[J][U] = j | |
} else B = l; | |
if (B >= l) { | |
data[++J] = { | |
g:k, | |
p:J | |
}; | |
B = 0 | |
} | |
if (z >= y.length) { | |
u++; | |
z = 0 | |
} | |
} | |
data[0].tp = data.length; | |
sendRequestAfterLoad(ic_tynt_com + "/b/t/" + h + "?" + ca(data[0])); | |
for (k = 1; k < data.length; k++) | |
sendRequestAfterLoad(ic_tynt_com + "/b/x/" + h + "?" + ca(data[k])) | |
}; | |
// Register events | |
/tynt=nout/.test(location.href) || addAnchorClickEvents(); | |
if (window.addEventListener) { | |
navigator.userAgent.match("Firefox/2") || body.addEventListener("copy", copyListener, false); | |
window.addEventListener("mousedown", mouseDownListener, false); | |
window.addEventListener("dragleave", dragLeaveListener, false); | |
window.addEventListener("dragexit", dragLeaveListener, false); | |
document.addEventListener("contextmenu", contextMenuListener, false) | |
} else { | |
body.attachEvent("oncopy", copyListener); | |
document.getElementsByTagName("html")[0].attachEvent("ondragleave", dragLeaveListener); | |
body.attachEvent("onmousedown", mouseDownListener) | |
} | |
//sendRequestAfterLoad(de_tynt_com); | |
var processCopyEvent = function (elem, isCopyEvent) { | |
if (!document.getElementById("tyntSS")) { | |
// assert isCopyEvent || elem.src | |
var selString; | |
if (isCopyEvent) | |
selString = typeof getSelection != "undefined" ? getSelection().toString() : document.selection.createRange().text; | |
var elemSrc = elem.src; | |
// when dragging image (doessn't work in my ubuntu/firefox) | |
elemSrc && !selString && imgSrcAlreadyProccessed(elemSrc) && sendCopyEventReq({ | |
g:getHash(elemSrc), | |
trace_type:3, | |
w:elem.width, | |
h:elem.height | |
}, elemSrc); | |
// Copying a text (not from an input/textarea) | |
if (selString && trim(selString).length && | |
elem.nodeName != "TEXTAREA" && elem.nodeName != "INPUT") { | |
var isNewEvent = copyAlreadyProccessed(selString); | |
var k = { | |
trace_type:1 | |
}; | |
if (isNewEvent) b = getHash(selString); | |
k.g = b; | |
// Add 'Read more ...' to selected text | |
var success = Tynt.tyntAddToSelection ? Tynt.tyntAddToSelection(k, selString) : true; | |
isNewEvent && success && sendCopyEventReq(k, selString) | |
} | |
} | |
}; | |
return processCopyEvent | |
}, | |
validUnicodeText = function (a) { | |
a = a.charCodeAt(0); | |
return 3584 <= a && a <= 3711 || 11904 <= a && a <= 12591 || 12688 <= a && a <= 40959 || 63744 <= a && a <= 64255 || 65072 <= a && a <= 65103 || 131072 <= a && a <= 173791 || 194560 <= a && a <= 195103 | |
}, | |
removeScriptTags = function (elem) { | |
var scripts = elem.getElementsByTagName("script"); | |
for (var b = scripts.length - 1; b >= 0; b--) { | |
var script = scripts[b]; | |
script.parentNode.removeChild(script) | |
} | |
}, | |
tracerVars, id_tynt_com = (Tynt.e || "") + "id.tynt.com", | |
unimportant2 = { | |
t:3, | |
p:6, | |
w:7 | |
}, | |
A, W, X, | |
addIxzzCode = function (a) { | |
var b = location.href; | |
b = b.replace(/#(i|a)xzz=?(.*)$/g, ""); | |
return b + "#" + ("ixzz" + a) | |
}, | |
escape = function (a) { | |
return a.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">") | |
}, | |
addToSelectionLock = false, | |
//something related to add extra text to selection | |
addToSelection = function (ixzzCode) { | |
// Returns false if another addToSelection already called | |
if (addToSelectionLock) return false; | |
addToSelectionLock = true; | |
var addText = ""; | |
if (tracerVars.changeCopiedText) { | |
var linkUrl = addIxzzCode(ixzzCode), | |
a_start_tag = '<a style="color: #003399;" href="'; | |
addText += tracerVars.readMore; | |
if (tracerVars.st) addText = addText + a_start_tag + linkUrl + '">' + escape(documentTitle) + "</a> "; | |
if (tracerVars.su) addText = addText + a_start_tag + linkUrl + '">' + escape(linkUrl) + "</a>"; | |
if (tracerVars.as.length > 0) addText = addText + "\n<br>" + tracerVars.as + " "; | |
} | |
var div, div2; | |
div = createElem("div", {}, { | |
overflow:"hidden", | |
color:"#000000", | |
backgroundColor:"#FFFFFF", | |
textAlign:"left", | |
textDecoration:"none", | |
border:"none" | |
}); | |
if (!document.selection || !document.selection.createRange) { | |
var selec = getSelection(); | |
if (selec.toString()) if (typeof selec.setBaseAndExtent != "undefined") { | |
var range = selec.getRangeAt(0); | |
addText = createElem("span", { | |
innerHTML:addText | |
}); | |
if (tracerVars.t) { | |
addText.innerHTML += "<br/><br/>"; | |
div.appendChild(addText); | |
div.appendChild(range.cloneContents()) | |
} else { | |
div.appendChild(range.cloneContents()); | |
addText.innerHTML = "<br/><br/>" + addText.innerHTML; | |
div.appendChild(addText) | |
} | |
removeScriptTags(div); | |
div.style.width = 0.1; | |
div.style.height = 0.1; | |
div.style.position = "absolute"; | |
div.style.top = "-1000px"; | |
div.style.left = "-1001px"; | |
div.appendChild(document.createElement("br")); | |
addText = div.innerText.length; | |
body.insertBefore(div, body.firstChild); | |
if (div.innerText.length != addText) div.style.overflow = ""; | |
selec.selectAllChildren(div); | |
setTimeout(function () { | |
div.parentNode.removeChild(div); | |
getSelection().setBaseAndExtent(range.startContainer, range.startOffset, range.endContainer, range.endOffset); | |
addToSelectionLock = false | |
}, 0) | |
} else { | |
div2 = createElem("div", {}, { | |
height:0, | |
position:"absolute", | |
top:"-1000px" | |
}); | |
div2.innerHTML = "<br>"; | |
if (tracerVars.t) { | |
body.insertBefore(div2, body.firstChild); | |
div.innerHTML = addText + "<br><br>" | |
} else { | |
body.appendChild(div2); | |
div.innerHTML = "<br>" + addText + "<br>" | |
} | |
div2.appendChild(div); | |
addText = document.createRange(); | |
addText.selectNode(div); | |
selec.addRange(addText); | |
window.setTimeout(function () { | |
div2.parentNode.removeChild(div2); | |
addToSelectionLock = false | |
}, 0) | |
} | |
} else { | |
var k = documentElement.scrollLeft || body.scrollLeft, | |
o = documentElement.scrollTop || body.scrollTop; | |
div2 = createElem("div", {}, { | |
overflow:"hidden", | |
position:"absolute", | |
left:k + 20 + "px", | |
top:o + 20 + "px", | |
width:"1px", | |
height:"1px" | |
}); | |
body.insertBefore(div2, body.firstChild); | |
var j = document.selection.createRange(); | |
div.innerHTML = tracerVars.t ? addText + "<br><br>" + j.htmlText : j.htmlText + "<br><br>" + addText; | |
removeScriptTags(div); | |
div2.appendChild(document.createElement("br")); | |
div2.appendChild(div); | |
addText = body.createTextRange(); | |
addText.moveToElementText(div); | |
addText.select(); | |
setTimeout(function () { | |
body.removeChild(div2); | |
if (j.text != "") { | |
j.select(); | |
documentElement.scrollLeft = k; | |
body.scrollLeft = k; | |
documentElement.scrollTop = o; | |
body.scrollTop = o | |
} | |
addToSelectionLock = false | |
}, 0) | |
} | |
return true | |
}, | |
doAddToSelection = function (param, selectText) { | |
var success = true; | |
if (tracerVars.changeCopiedText || A || tracerVars.el) { | |
var trimmed = trim(selectText); | |
var validText = trimmed.length >= 2 ? | |
validUnicodeText(trimmed.charAt(0)) || | |
validUnicodeText(trimmed.charAt(trimmed.length - 1)) || | |
validUnicodeText(trimmed.charAt(trimmed.length / 2)) | |
: validUnicodeText(trimmed); | |
var d; | |
// OOPCH: very complex code! | |
if (d = tracerVars.h) LABELLABEL: { | |
console.log('This code never executes'); | |
d = (d = unimportant4()) ? d.className.split(/\s+/) : []; | |
for (var e = d.length - 1; e >= 0; e--) if (tracerVars.h[d[e]] !== undefined) { | |
d = tracerVars.h[d[e]]; | |
break LABELLABEL | |
} | |
d = void 0 | |
} | |
d = d; | |
// d is always undefined | |
if (d !== false && | |
(validText && selectText.replace(/\s/g, "").length >= tracerVars.minCopyLength * 2 || | |
!validText && numOfWords(selectText) >= tracerVars.minCopyLength) | |
|| d) | |
if (tracerVars.changeCopiedText || A || tracerVars.el) { | |
success = addToSelection(param.g); | |
if (tracerVars.changeCopiedText) param.trace_type = 0 | |
} | |
} | |
return success | |
}, | |
unimportant4 = function () { | |
return !document.selection || !document.selection.createRange ? | |
function () { | |
var a = getSelection().getRangeAt(0), | |
b = a.startContainer.nodeType == 3 ? a.startContainer.parentNode : a.startContainer; | |
return b && trim(a.toString()) == trim(b.textContent) ? b : null | |
} : function () { | |
var a = document.selection.createRange(), | |
b = a.duplicate(); | |
b.collapse(true); | |
return (b = b.parentElement()) && trim(a.text) == trim(b.innerText) ? b : null | |
} | |
}(), | |
unused1 = function (a) { | |
if (a.hash != "") return false; | |
if (typeof tracerVars.ba == "boolean" && tracerVars.ba) tracerVars.ba = ["/"]; | |
else if (!tracerVars.ba) return true; | |
for (var b, c = tracerVars.ba.length - 1; c >= 0; c--) { | |
b = null; | |
var f = tracerVars.ba[c], | |
d = f.indexOf("/"); | |
if (d != 0) { | |
b = f.slice(0, d); | |
f = f.slice(d) | |
} | |
if (!b || a.host == b) if (f.charAt(f.length - 1) == "#") { | |
if (a.pathname.indexOf(f.slice(0, -1)) == 0) return false | |
} else if (a.pathname == f) return false | |
} | |
return true | |
}, | |
initTracerVarsArgs = function (a) { | |
tracerVars = Tynt.i || window.tyntVariables || {}; | |
tracerVars.s = a.s || 1; | |
tracerVars.changeCopiedText = !(tracerVars.changeCopiedText == 0 || a.a == 0); | |
tracerVars.cc = tracerVars.cc || a.cc || 0; | |
if (tracerVars.cc > 6) tracerVars.cc = 0; | |
tracerVars.b = !!(tracerVars.b || a.b); | |
tracerVars.minCopyLength = Math.max(tracerVars.minCopyLength || 8, 8); | |
if (tracerVars.changeCopiedText) { | |
tracerVars.readMore = (tracerVars.readMore || (typeof tyntAP != "undefined" ? tyntAP : null) || "Read more:") + " "; | |
tracerVars.as = tracerVars.as || (typeof tyntAS != "undefined" ? tyntAS : null) || ""; | |
tracerVars.st = !!(tracerVars.st || a.st); | |
tracerVars.su = !(tracerVars.su == 0 || a.su == 0); | |
tracerVars.sp = tracerVars.sp || a.sp; | |
if (tracerVars.sp) { | |
X = tracerVars.spid; | |
W = (tracerVars.spt || decodeURIComponent(a.spt || "")) + " "; | |
A = tracerVars.sp || decodeURIComponent(a.sp || "") | |
} | |
} | |
}, | |
removeIAxzzFromTitle = function () { | |
var a = document.title.indexOf("#ixzz"); | |
if (a > -1) document.title = document.title.substring(0, a); | |
a = document.title.indexOf("#axzz"); | |
if (a > -1) document.title = document.title.substring(0, a) | |
}, | |
getUserId = function () { | |
for (var a = 0; a < Tynt.length; a++) if (Tynt[a] && Tynt[a].length == 22) return Tynt[a]; | |
return null | |
}, | |
tracerJsParams = function (tracerJsSrc) { | |
if (!tracerJsSrc) return {}; | |
for (var parsed = {}, params = tracerJsSrc.substring(tracerJsSrc.indexOf("?") + 1).split("&"), f = 0; f < params.length; f++) { | |
var key_value = params[f].split("="); | |
if (key_value[0].indexOf("amp;") == 0) key_value[0] = key_value[0].substring(4); | |
parsed[key_value[0]] = key_value[1] | |
} | |
tracerJsSrc = tracerJsSrc.split("/"); | |
tracerJsSrc.pop(); | |
parsed.scriptPathUri = tracerJsSrc.join("/"); | |
return parsed | |
}(function () { | |
for (var a = document.getElementsByTagName("script"), b = 0; b < a.length; b++) | |
if (/\/tracer.*\?/i.test(a[b].src)) return a[b].src; | |
return null | |
}()), | |
userId = tracerJsParams.user || getUserId(); | |
if (!userId) throw Error("Error finding Tynt Insight userId. Please check your HTML for errors."); | |
tracerJsParams.user && Tynt.push(tracerJsParams.user); | |
// Check tracking is disabled or not | |
var trackingDisabled = function () { | |
var a = /tracer=test/.test(location.href); | |
a && sendRequestAfterLoad(id_tynt_com + "/script/verify/" + userId); | |
if (a) return true; | |
if (/tracer=no_tracing/.test(location.href)) return true; | |
if (/disableTracer=/.test(location.href)) { | |
a = location.href.match(/disableTracer=([^?$]*)/)[1]; | |
var b = new Date; | |
b.setDate(a && a == "on" ? b.getDate() + 365 : b.getDate() - 2); | |
setCookie("disableTracer=y", "expires=" + b.toUTCString()); | |
console.log('oho'); // never runs | |
b = createElem("div", {}, { | |
zIndex:"10000", | |
position:"absolute", | |
top:"10%", | |
left:"10%", | |
width:"80%", | |
height:"80%", | |
backgroundColor:"white", | |
color:"black", | |
textAlign:"center", | |
fontSize:"32px", | |
paddingTop:"10%", | |
border:"1px solid gray" | |
}); | |
b.innerHTML = "Tynt Insight has been turned " + (a && a == "on" ? "off" : "on") + " in this browser.<br>You may close this window."; | |
body.insertBefore(b, body.firstChild); | |
return true | |
} | |
if (getCookie(document.cookie, "disableTracer")) return true; | |
return false | |
}(); | |
if (!trackingDisabled) { | |
if (isIE) { | |
removeIAxzzFromTitle(); | |
document.attachEvent("onpropertychange", removeIAxzzFromTitle) | |
} | |
initTracerVarsArgs(tracerJsParams); | |
var processCopyEvent = registerAllEvents(); | |
Tynt.tyntAddToSelection = doAddToSelection; | |
} | |
}; | |
Tynt.TIL = function () { | |
document.body ? mainTynt() : setTimeout(Tynt.TIL, 300) | |
} | |
})(); | |
Tynt.TIL() | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Does this script only perform what the name indicates? Or something else? Thanks