1/* Source and licensing information for the line(s) below can be found at https://portableapps.com/misc/form-single-submit.js. */ 2(function($){Drupal.behaviors.formSingleSubmit={attach:function(){function onFormSubmit(e){var $form=$(e.currentTarget),formValues=$form.serialize(),previousValues=$form.attr('data-drupal-form-submit-last');if(previousValues===formValues){e.preventDefault()}else $form.attr('data-drupal-form-submit-last',formValues)};$('body').once('form-single-submit').delegate('form:not([method~="GET"])','submit.singleSubmit',onFormSubmit)}}})(jQuery);; 3/* Source and licensing information for the above line(s) can be found at https://portableapps.com/misc/form-single-submit.js. */;/*})'"*/ 4var d = new Date(), 5 ctTimeMs = new Date().getTime(), 6 ctMouseEventTimerFlag = true, //Reading interval flag 7 ctMouseData = "[", 8 ctMouseDataCounter = 0; 9 10function ctSetCookie(c_name, value) { 11 document.cookie = c_name + "=" + encodeURIComponent(value) + "; path=/"; 12} 13 14ctSetCookie("ct_ps_timestamp", Math.floor(new Date().getTime()/1000)); 15ctSetCookie("ct_fkp_timestamp", "0"); 16ctSetCookie("ct_pointer_data", "0"); 17ctSetCookie("ct_timezone", d.getTimezoneOffset()/60*(-1)); 18 19//Reading interval 20var ctMouseReadInterval = setInterval(function(){ 21 ctMouseEventTimerFlag = true; 22 }, 150); 23 24//Writting interval 25var ctMouseWriteDataInterval = setInterval(function(){ 26 var ctMouseDataToSend = ctMouseData.slice(0,-1).concat("]"); 27 ctSetCookie("ct_pointer_data", ctMouseDataToSend); 28 }, 1200); 29 30//Stop observing function 31function ctMouseStopData(){ 32 if(typeof window.addEventListener == "function") 33 window.removeEventListener("mousemove", ctFunctionMouseMove); 34 else 35 window.detachEvent("onmousemove", ctFunctionMouseMove); 36 clearInterval(ctMouseReadInterval); 37 clearInterval(ctMouseWriteDataInterval); 38} 39 40//Logging mouse position each 300 ms 41var ctFunctionMouseMove = function output(event){ 42 if(ctMouseEventTimerFlag == true){ 43 var mouseDate = new Date(); 44 ctMouseData += "[" + Math.round(event.pageY) + "," + Math.round(event.pageX) + "," + Math.round(mouseDate.getTime() - ctTimeMs) + "],"; 45 ctMouseDataCounter++; 46 ctMouseEventTimerFlag = false; 47 if(ctMouseDataCounter >= 100) 48 ctMouseStopData(); 49 } 50}; 51 52//Stop key listening function 53function ctKeyStopStopListening(){ 54 if(typeof window.addEventListener == "function"){ 55 window.removeEventListener("mousedown", ctFunctionFirstKey); 56 window.removeEventListener("keydown", ctFunctionFirstKey); 57 }else{ 58 window.detachEvent("mousedown", ctFunctionFirstKey); 59 window.detachEvent("keydown", ctFunctionFirstKey); 60 } 61} 62 63//Writing first key press timestamp 64var ctFunctionFirstKey = function output(event){ 65 var KeyTimestamp = Math.floor(new Date().getTime()/1000); 66 ctSetCookie("ct_fkp_timestamp", KeyTimestamp); 67 ctKeyStopStopListening(); 68}; 69 70if(typeof window.addEventListener == "function"){ 71 window.addEventListener("mousemove", ctFunctionMouseMove); 72 window.addEventListener("mousedown", ctFunctionFirstKey); 73 window.addEventListener("keydown", ctFunctionFirstKey); 74}else{ 75 window.attachEvent("onmousemove", ctFunctionMouseMove); 76 window.attachEvent("mousedown", ctFunctionFirstKey); 77 window.attachEvent("keydown", ctFunctionFirstKey); 78} 79;/*})'"*/;/*})'"*/
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.