1 2function hot(a) { 3 this.t = a 4} 5hot.prototype = { 6 sendHeat: function (a) { 7 var b, d = [], 8 q = document.body, 9 s = document.documentElement; 10 11 if (a.r && 1 == a.r) { 12 if($("div.navgationDiv")[0]){ 13 return; 14 } 15 d.push("&x=" + a.x); 16 d.push("&y=" + a.y); 17 d.push("&hotClick=yes"); 18 a = this.t.url.join("") + d.join(""); 19 20 b = this.t.getParameter("ps", a); 21 a = a.replace("ps=" + b, "" == b ? "ps=" : "ps=0"); 22 a = a.replace("sh=" + b, "sh=" + Math.max(q && q.scrollHeight, s && s.scrollHeight)); 23 this.t.sendInfo(a); 24 } 25 }, 26 getPos: function (a, d, b, c) { 27 var b = b || 0, 28 c = c || 0, 29 d = d || document, 30 e = a || window.event, 31 t = e.srcElement || e.target, 32 r = 0, 33 a = {}, 34 a = e.pageX || e.pageY ? { 35 x: e.pageX, 36 y: e.pageY 37 } : { 38 x: e.clientX + Math.max(d.documentElement.scrollLeft, d.body.scrollLeft) - d.body.clientLeft, 39 y: e.clientY + Math.max(d.documentElement.scrollTop, d.body.scrollTop) - d.body.clientTop 40 }; 41 a.x += b; 42 a.y += c; 43 44 switch (t.tagName) { 45 case "A": 46 case "IMG": 47 case "INPUT": 48 case "EMBED": 49 case "BUTTON": 50 case "SELECT": 51 case "OBJECT": 52 case "TEXTAREA": 53 a.r = 1; 54 break; 55 default: 56 a.r = r; 57 } 58 return a 59 }, 60 clickHeat: function (a) { 61 this.sendHeat(this.getPos(a)) 62 }, 63 watchClick: function (a) { 64 var d = function (a, b, c) { 65 var d = function (a) { 66 a = window.event || a; 67 target = a.srcElement || a.target; 68 c(a, target) 69 }; 70 a.attachEvent ? a.attachEvent("on" + b, d) : a.addEventListener(b, d, !1) 71 }, 72 b = this; 73 if (a) b.clickHeat(evt); 74 else { 75 a = document; 76 d(a, "click", function (a) { 77 b.sendHeat(b.getPos(a)) 78 }); 79 for (var c = a.getElementsByTagName("iframe"), e = 0, a = c.length; e < a; e++) try { 80 (function () { 81 var a = c[e], 82 f = a.contentWindow.document; 83 d(f, "click", 84 function (d) { 85 var c = b.getElementPos(a); 86 b.sendHeat(b.getPos(d, f, c.x, c.y)) 87 }) 88 })() 89 } catch (f) { } 90 } 91 }, 92 getElementPos: function (a) { 93 if (null === a.parentNode || "none" == a.style.display) return !1; 94 var d = navigator.userAgent.toLowerCase(), 95 b = null, 96 c = []; 97 if (a.getBoundingClientRect) return d = a.getBoundingClientRect(), a = Math.max(document.documentElement.scrollTop, document.body.scrollTop), b = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft), { 98 x: d.left + b - document.body.clientLeft, 99 y: d.top + a - document.body.clientTop 100 }; 101 if (document.getBoxObjectFor) d = document.getBoxObjectFor(a), c = [d.x - (a.style.borderLeftWidth ? Math.floor(a.style.borderLeftWidth) : 0), d.y - (a.style.borderTopWidth ? Math.floor(a.style.borderTopWidth) : 0)]; 102 else { 103 c = [a.offsetLeft, a.offsetTop]; 104 b = a.offsetParent; 105 if (b != a) 106 for (; b;) c[0] += b.offsetLeft, c[1] += b.offsetTop, b = b.offsetParent; 107 if (-1 < d.indexOf("opera") || -1 < d.indexOf("safari") && "absolute" == a.style.position) c[0] -= document.body.offsetLeft, c[1] -= document.body.offsetTop 108 } 109 for (b = a.parentNode ? a.parentNode : null;
109 b && "BODY" != 110 b.tagName && "HTML" != b.tagName;) c[0] -= b.scrollLeft, c[1] -= b.scrollTop, b = b.parentNode ? b.parentNode : null; 111 return { 112 x: c[0], 113 y: c[1] 114 } 115 } 116}; 117window.hot = hot;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.