diff options
Diffstat (limited to 'includes/js/dojox/analytics/plugins/mouseOver.js')
-rw-r--r-- | includes/js/dojox/analytics/plugins/mouseOver.js | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/includes/js/dojox/analytics/plugins/mouseOver.js b/includes/js/dojox/analytics/plugins/mouseOver.js new file mode 100644 index 0000000..beaf25c --- /dev/null +++ b/includes/js/dojox/analytics/plugins/mouseOver.js @@ -0,0 +1,90 @@ +if(!dojo._hasResource["dojox.analytics.plugins.mouseOver"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. +dojo._hasResource["dojox.analytics.plugins.mouseOver"] = true; +dojo.provide("dojox.analytics.plugins.mouseOver"); + +dojox.analytics.plugins.mouseOver = new (function(){ + this.watchMouse = dojo.config["watchMouseOver"] || true; + this.mouseSampleDelay = dojo.config["sampleDelay"] || 2500; + this.addData = dojo.hitch(dojox.analytics, "addData", "mouseOver"); + this.targetProps = dojo.config["targetProps"] || ["id","className","localName","href", "spellcheck", "lang", "textContent", "value" ]; + + this.toggleWatchMouse=function(){ + if (this._watchingMouse){ + dojo.disconnect(this._watchingMouse); + delete this._watchingMouse; + return; + } + dojo.connect(dojo.doc, "onmousemove", this, "sampleMouse"); + } + + if (this.watchMouse){ + dojo.connect(dojo.doc, "onmouseover", this, "toggleWatchMouse"); + dojo.connect(dojo.doc, "onmouseout", this, "toggleWatchMouse"); + } + + this.sampleMouse=function(e){ + if (!this._rateLimited){ + this.addData("sample",this.trimMouseEvent(e)); + this._rateLimited=true; + setTimeout(dojo.hitch(this, function(){ + if (this._rateLimited){ + //this.addData("sample", this.trimMouseEvent(this._lastMouseEvent)); + this.trimMouseEvent(this._lastMouseEvent); + delete this._lastMouseEvent; + delete this._rateLimited; + } + }), this.mouseSampleDelay); + } + this._lastMouseEvent = e; + return e; + } + + this.trimMouseEvent=function(e){ + var t = {}; + for (var i in e){ + switch(i){ + //case "currentTarget": + case "target": + //case "originalTarget": + //case "explicitOriginalTarget": + var props=this.targetProps; + t[i]={}; + //console.log(e, i, e[i]); + for(var j=0;j<props.length;j++){ + if(dojo.isObject(e[i]) && props[j] in e[i]){ + + if (props[j]=="text" || props[j]=="textContent"){ + if (e[i]["localName"] && (e[i]["localName"]!="HTML")&&(e[i]["localName"]!="BODY")){ + t[i][props[j]]=e[i][props[j]].substr(0,50); + } + }else{ + t[i][props[j]]=e[i][props[j]]; + } + } + } + break; + //case "clientX": + //case "clientY": + //case "pageX": + //case "pageY": + //case "screenX": + //case "screenY": + case "x": + case "y": + if (e[i]) { + //console.log("Attempting: " + i); + var val = e[i]; + //console.log("val: " + val); console.log(i + "e of i: " + val); + t[i]=val + ''; + } + break; + default: + //console.log("Skipping: ", i); + break; + } + } + return t; + } +})(); + +} |