/**
 * (smt)2 simple mouse tracking - record mode
 * Copyleft (cc) 2006-2010 Luis Leiva
 * Release date: September 30th 2010
 * http://smt2.googlecode.com & http://smt.speedzinemedia.com
 */
(function(){var smtOpt={fps:24,recTime:120,postInterval:2,trackingServer:"/smt2/",storageServer:"",warn:false,warnText:"We'd like to track your mouse activity"+"\n"+"in order to improve this website's usability."+"\n"+"Do you agree?",cookieDays:365,disabled:0};var aux=window.smt2fn;if(typeof aux==="undefined"){throw("auxiliar (smt)2 functions not found");}
var smtRec={i:0,mouse:{x:0,y:0},page:{width:0,height:0},discrepance:{x:1,y:1},coords:{x:[],y:[]},clicks:{x:[],y:[]},elem:{hovered:[],clicked:[]},url:null,rec:null,userId:null,append:null,paused:false,clicked:false,timestamp:null,timer:null,timeout:smtOpt.fps*smtOpt.recTime,xmlhttp:aux.createXMLHTTPObject(),firstTimeUser:1,pauseRecording:function()
{smtRec.paused=true;},resumeRecording:function()
{smtRec.paused=false;},normalizeData:function()
{var doc=aux.getPageSize();smtRec.discrepance.x=aux.roundTo(doc.width/smtRec.page.width);smtRec.discrepance.y=aux.roundTo(doc.height/smtRec.page.height);},getMousePos:function(e)
{var posX=0,posY=0;if(!e){e=window.event;}
if(e.pageX||e.pageY){posX=e.pageX;posY=e.pageY;}else if(e.clientX||e.clientY){posX=e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft;posY=e.clientY+document.body.scrollTop+document.documentElement.scrollTop;}
if(posX<0)posX=0;if(posY<0)posY=0;smtRec.mouse.x=posX;smtRec.mouse.y=posY;},setClick:function()
{smtRec.clicked=true;},releaseClick:function()
{smtRec.clicked=false;},recMouse:function()
{if(smtRec.paused){return;}
if(smtRec.i<smtRec.timeout){var x=smtRec.mouse.x;var y=smtRec.mouse.y;smtRec.coords.x.push(x);smtRec.coords.y.push(y);if(!smtRec.clicked){smtRec.clicks.x.push(null);smtRec.clicks.y.push(null);}else{smtRec.clicks.x.push(x);smtRec.clicks.y.push(y);}}else{clearInterval(smtRec.rec);clearInterval(smtRec.append);}
++smtRec.i;},initMouseData:function()
{smtRec.computeAvailableSpace();var data="url="+smtRec.url;data+="&urltitle="+document.title;data+="&cookies="+document.cookie;data+="&referrer="+encodeURIComponent(document.referrer);data+="&screenw="+screen.width;data+="&screenh="+screen.height;data+="&pagew="+smtRec.page.width;data+="&pageh="+smtRec.page.height;data+="&time="+smtRec.getTime();data+="&fps="+smtOpt.fps;data+="&ftu="+smtRec.firstTimeUser;data+="&xcoords="+smtRec.coords.x;data+="&ycoords="+smtRec.coords.y;data+="&xclicks="+smtRec.clicks.x;data+="&yclicks="+smtRec.clicks.y;data+="&elhovered="+smtRec.elem.hovered;data+="&elclicked="+smtRec.elem.clicked;data+="&action="+"store";data+="&remote="+smtOpt.storageServer;aux.sendAjaxRequest({url:smtOpt.trackingServer+"/core/gateway.php",callback:smtRec.setUserId,postdata:data,xmlhttp:smtRec.xmlhttp});smtRec.clearMouseData();},setUserId:function(response)
{smtRec.userId=parseInt(response);if(smtRec.userId>0){smtRec.append=setInterval(smtRec.appendMouseData,smtOpt.postInterval*1000);}},getTime:function()
{var ms=(new Date()).getTime()-smtRec.timestamp;return ms/1000;},appendMouseData:function()
{if(!smtRec.rec||smtRec.paused){return false;}
var data="uid="+smtRec.userId;data+="&time="+smtRec.getTime();data+="&pagew="+smtRec.page.width;data+="&pageh="+smtRec.page.height;data+="&xcoords="+smtRec.coords.x;data+="&ycoords="+smtRec.coords.y;data+="&xclicks="+smtRec.clicks.x;data+="&yclicks="+smtRec.clicks.y;data+="&elhovered="+smtRec.elem.hovered;data+="&elclicked="+smtRec.elem.clicked;data+="&action="+"append";data+="&remote="+smtOpt.storageServer;aux.sendAjaxRequest({url:smtOpt.trackingServer+"/core/gateway.php",postdata:data,xmlhttp:smtRec.xmlhttp});smtRec.clearMouseData();},clearMouseData:function()
{smtRec.coords.x=[];smtRec.coords.y=[];smtRec.clicks.x=[];smtRec.clicks.y=[];smtRec.elem.hovered=[];smtRec.elem.clicked=[];},findElement:function(e)
{if(!e){e=window.event;}
aux.widget.findDOMElement(e,function(name){if(e.type=="mousedown"){smtRec.elem.clicked.push(name);}else if(e.type=="mousemove"){smtRec.elem.hovered.push(name);}});},computeAvailableSpace:function()
{var doc=aux.getPageSize();smtRec.page.width=doc.width;smtRec.page.height=doc.height;},init:function()
{smtRec.computeAvailableSpace();smtRec.url=escape(window.location.href);var interval=Math.round(1000/smtOpt.fps);smtRec.rec=setInterval(smtRec.recMouse,interval);aux.allowTrackingOnFlashObjects();aux.addEvent(document,"mousemove",smtRec.getMousePos);aux.addEvent(document,"mousedown",smtRec.setClick);aux.addEvent(document,"mouseup",smtRec.releaseClick);aux.addEvent(window,"resize",smtRec.computeAvailableSpace);if(document.attachEvent){aux.addEvent(document.body,"focusout",smtRec.pauseRecording);aux.addEvent(document.body,"focusin",smtRec.resumeRecording);}else{aux.addEvent(window,"blur",smtRec.pauseRecording);aux.addEvent(window,"focus",smtRec.resumeRecording);}
aux.addEvent(document,"mousedown",smtRec.findElement);aux.addEvent(document,"mousemove",smtRec.findElement);if(typeof window.onbeforeunload=='function'){aux.addEvent(window,"beforeunload",smtRec.appendMouseData);}else{aux.addEvent(window,"unload",smtRec.appendMouseData);}
setTimeout(smtRec.initMouseData,smtOpt.postInterval*1000);smtRec.timestamp=(new Date()).getTime();}};if(typeof window.smt2!=='undefined'){throw("smt2 namespace conflict");}
window.smt2={record:function(opts){if(typeof opts!=='undefined'){aux.overrideTrackingOptions(smtOpt,opts);};var previousUser=aux.cookies.checkCookie('smt-ftu');if(smtOpt.disabled&&previousUser){return;}
smtRec.firstTimeUser=(!previousUser|0);aux.cookies.setCookie('smt-ftu',smtRec.firstTimeUser,smtOpt.cookieDays);if(smtOpt.warn){var prevAgreed=aux.cookies.checkCookie('smt-agreed');var agree=(prevAgreed)?aux.cookies.getCookie('smt-agreed'):window.confirm(smtOpt.warnText);if(agree>0){aux.cookies.setCookie('smt-agreed',1,smtOpt.cookieDays);}else{aux.cookies.setCookie('smt-agreed',0,1);return false;}}
var scripts=document.getElementsByTagName('script');for(var i=0,s=scripts.length;i<s;++i)
{var filename=scripts[i].src;if(/smt-record/i.test(filename))
{var paths=filename.split("/");var pos=aux.array.indexOf(paths,"smt2");if(pos&&smtOpt.trackingServer===null){smtOpt.trackingServer=paths.slice(0,pos+1).join("/");}}}
aux.onDOMload(smtRec.init);}};})();
