1/** 2 * jQuery Activity Plugin â оÑладоÑÐ½Ð°Ñ Ð²ÐµÑÑÐ¸Ñ (it-agency "60 ÑекÑнд") 3 * Ðогика иденÑиÑна jquery.activity.min.js, добавлено логиÑование [activity]. 4 * ÐÐ»Ñ Ð²ÑклÑÑÐµÐ½Ð¸Ñ Ð»Ð¾Ð³Ð¾Ð²: DEBUG = false 5 */ 6(function (e) { 7 var c = 0, 8 d = {}, 9 a = 0, 10 DEBUG = false, 11 windowCount = 0, 12 windowActivityLogged = false; 13 14 function log(msg) { 15 if (DEBUG) { 16 console.log('[activity] ' + msg); 17 } 18 } 19 20 var b = { 21 init: function (f) { 22 return this.each(function () { 23 var originalCallBack; 24 25 d = jQuery.extend({ 26 achieveTime: 60, 27 loop: 0, 28 eventList: "touchmove blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error", 29 testPeriod: 10, 30 useMultiMode: 1, 31 callBack: function (g) { 32 console.log("Achieved!"); 33 }, 34 watchEvery: 1, 35 counter: { test: 0, achiev: 0 } 36 }, f); 37 38 d.watchEvery *= 1000; 39 40 log('init: achieveTime=' + d.achieveTime + 41 ' testPeriod=' + d.testPeriod + 42 ' watchEvery=' + d.watchEvery + 'ms' + 43 ' useMultiMode=' + d.useMultiMode + 44 ' loop=' + d.loop); 45 46 originalCallBack = d.callBack; 47 d.callBack = function (g) { 48 log('callBack: вÑзов'); 49 try { 50 originalCallBack.call(this, g); 51 log('callBack: вÑполнен без оÑибок'); 52 } catch (err) { 53 log('callBack: ÐШÐÐÐÐ: ' + (err && err.message ? err.message : err)); 54 } 55 }; 56 57 if (d.useMultiMode) { 58 b.loadMultiData(); 59 } 60 61 if (d.counter.achiev != -1) { 62 e(this).bind(d.eventList, b.eventTrigger); 63 log('init: ÑÑекинг ÐÐÐУЩÐÐ, ÑобÑÑÐ¸Ñ Ð¿ÑивÑÐ·Ð°Ð½Ñ Ðº <' + this.tagName.toLowerCase() + '>'); 64 b.process(); 65 } else { 66 log('BLOCKED: achiev=-1 (ÑÐµÐ»Ñ Ñже ÑÑабаÑÑвала), ÑÑекинг ÐРзапÑÑен'); 67 log('BLOCKED: Ð´Ð»Ñ ÑбÑоÑа вÑполниÑе в конÑоли: document.cookie="activity=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/"; заÑем пеÑезагÑÑзиÑе ÑÑÑаниÑÑ'); 68 } 69 }); 70 }, 71 process: function () { 72 d.counter.test += 1; 73 74 if (d.counter.test == d.testPeriod) { 75 windowCount += 1; 76 if (a) { 77 a = 0; 78 d.counter.achiev += d.testPeriod; 79 log('окно #' + windowCount + ': ÐÐТÐÐÐÐ â achiev ' + (d.counter.achiev - d.testPeriod) + 'â' + d.counter.achiev); 80 } else { 81 log('окно #' + windowCount + ': неакÑивно â без пÑогÑеÑÑа (achiev=' + d.counter.achiev + ')'); 82 } 83 windowActivityLogged = false; 84 d.counter.test = 0; 85 } 86 87 c = setTimeout(b.process, d.watchEvery); 88 89 if (d.counter.achiev >= d.achieveTime) { 90 if (!d.loop) { 91 clearTimeout(c); 92 } 93 d.counter.achiev = d.loop ? 0 : -1; 94 log('GOAL ACHIEVED: achiev=' + d.achieveTime + ' â вÑзов callBack'); 95 d.callBack.call(this, d); 96 } 97 98 if (d.useMultiMode) { 99 document.cookie = "activity=" + d.counter.test + "|" + d.counter.achiev + "; path=/;"; 100 log('cookie ÑÐ¾Ñ ÑанÑн: activity=' + d.counter.test + '|' + d.counter.achiev); 101 } 102 103 log('tick: test=' + d.counter.test + '/' + d.testPeriod + ', achiev=' + d.counter.achiev + '/' + d.achieveTime + ', акÑивно=' + (a ? 'да' : 'неÑ')); 104 }, 105 eventTrigger: function (ev) { 106 if (!windowActivityLogged) { 107 windowActivityLogged = true; 108 log('акÑивноÑÑÑ: ' + (ev && ev.type ? ev.type : '?') + ' (окно #' + (windowCount + 1) + ')'); 109 } 110 a = 1; 111 }, 112 loadMultiData: function () { 113 var h = " activity="; 114 var g = " " + document.cookie; 115 if (g.length > 0) { 116 if (g.indexOf(h) != -1) { 117 var offset = g.indexOf(h) + h.length; 118 var f = unescape(g.substring(offset, g.indexOf(";", offset) == -1 ? g.length : g.indexOf(";", offset))).split("|"); 119 d.counter.test = parseInt(f[0]); 120 d.counter.achiev = parseInt(f[1]); 121 log('cookie найден: activity=' + f[0] + '|' + f[1] + ' â test=' + d.counter.test + ', achiev=' + d.counter.achiev); 122 return; 123 } 124 } 125 d.counter.test = d.counter.achiev = 0; 126 log('cookie не найден: ÑÑаÑÑ Ñ Ð½ÑÐ»Ñ (test=0, achiev=0)'); 127 } 128 }; 129 130 e.fn.activity = function (f) { 131 if (b[f]) { 132 return b[f].apply(this, Array.prototype.slice.call(arguments, 1)); 133 } else { 134 if (typeof f === "object" || !f) {
135 return b.init.apply(this, arguments); 136 } else { 137 e.error("Method " + f + " does not exist on jQuery.activity"); 138 } 139 } 140 }; 141})(jQuery);
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.