From ae8a94575735b4ef0e0249cebe0087462f429715 Mon Sep 17 00:00:00 2001 From: Thomas Steur Date: Sun, 22 Jan 2017 22:27:51 +1300 Subject: Cross Domain tracking (#11243) * some work on tracking cross domain * fix some bugs * fix some edge cases * fixed tests and added more new tests * we also need a device specific id to avoid when time is not correct on a different computer etc * more tests * minified piwikjs * use only one parameter and validate values * fix tests * improve code * Re-generated piwik.js * UI Test * Comments --- piwik.js | 102 ++++++++++++++++++++++++++++++++------------------------------- 1 file changed, 52 insertions(+), 50 deletions(-) (limited to 'piwik.js') diff --git a/piwik.js b/piwik.js index 7b92669175..1c662e4c25 100644 --- a/piwik.js +++ b/piwik.js @@ -18,56 +18,58 @@ var I="000000";var t=function(ac,ad){return(I+(ad||0)).slice(-ac)};var z="\\u00" }else{at=null}}else{if(typeof at.toJSON=="function"&&((ae!=N&&ae!=O&&ae!=E)||r.call(at,"toJSON"))){at=at.toJSON(ai)}}}if(ag){at=ag.call(aA,ai,at)}if(at===null){return"null"}ae=u.call(at);if(ae==A){return""+at}else{if(ae==N){return at>-1/0&&at<1/0?""+at:"null"}else{if(ae==O){return C(""+at)}}}if(typeof at=="object"){for(af=aj.length;af--;){if(aj[af]===at){throw aa()}}aj.push(at);ar=[];av=ac;ac+=ax;if(ae==E){for(ah=0,af=at.length;ah0){for(ad="",af>10&&(af=10); ad.length=48&&ad<=57||ad>=97&&ad<=102||ad>=65&&ad<=70)){H()}}ag+=M("0x"+ah.slice(ae,G));break;default:H()}}else{if(ad==34){break}ad=ah.charCodeAt(G);ae=G;while(ad>=32&&ad!=92&&ad!=34){ad=ah.charCodeAt(++G)}ag+=ah.slice(ae,G)}}}if(ah.charCodeAt(G)==34){G++; return ag}H();default:ae=G;if(ad==45){ai=true;ad=ah.charCodeAt(++G)}if(ad>=48&&ad<=57){if(ad==48&&((ad=ah.charCodeAt(G+1)),ad>=48&&ad<=57)){H()}ai=false;for(;G=48&&ad<=57);G++){}if(ah.charCodeAt(G)==46){ac=++G;for(;ac=48&&ad<=57);ac++){}if(ac==G){H()}G=ac}ad=ah.charCodeAt(G);if(ad==101||ad==69){ad=ah.charCodeAt(++G);if(ad==43||ad==45){G++}for(ac=G;ac=48&&ad<=57);ac++){}if(ac==G){H()}G=ac}return +ah.slice(ae,G)}if(ai){H()}if(ah.slice(G,G+4)=="true"){G+=4;return true}else{if(ah.slice(G,G+5)=="false"){G+=5;return false}else{if(ah.slice(G,G+4)=="null"){G+=4;return null}}}H()}}return"$"};var W=function(ad){var ac,ae;if(ad=="$"){H()}if(typeof ad=="string"){if((F?ad.charAt(0):ad[0])=="@"){return ad.slice(1)}if(ad=="["){ac=[];for(;;ae||(ae=true)){ad=y();if(ad=="]"){break}if(ae){if(ad==","){ad=y();if(ad=="]"){H()}}else{H()}}if(ad==","){H()}ac.push(W(ad))}return ac}else{if(ad=="{"){ac={};for(;;ae||(ae=true)){ad=y(); -if(ad=="}"){break}if(ae){if(ad==","){ad=y();if(ad=="}"){H()}}else{H()}}if(ad==","||typeof ad!="string"||(F?ad.charAt(0):ad[0])!="@"||y()!=":"){H()}ac[ad.slice(1)]=W(y())}return ac}}H()}return ad};var P=function(ae,ad,af){var ac=w(ae,ad,af);if(ac===L){delete ae[ad]}else{ae[ad]=ac}};var w=function(af,ae,ag){var ad=af[ae],ac;if(typeof ad=="object"&&ad){if(u.call(ad)==E){for(ac=ad.length;ac--;){P(ad,ac,ag)}}else{m(ad,function(ah){P(ad,ah,ag)})}}return ag.call(af,ae,ad)};V.parse=function(ae,af){var ac,ad;G=0;X=""+ae;ac=W(y());if(y()!="$"){H()}G=X=null;return af&&u.call(af)==U?w((ad={},ad[""]=ac,ad),"",af):ac}}}V.runInContext=j;return V}if(h&&!c){j(i,h)}else{var f=i.JSON,k=i.JSON3,d=false;var g=j(i,(i.JSON3={noConflict:function(){if(!d){d=true;i.JSON=f;i.JSON3=k;f=k=null}return g}}));i.JSON={parse:g.parse,stringify:g.stringify}}if(c){define(function(){return g})}}).call(this);JSON_PIWIK=a})()}if(typeof _paq!=="object"){_paq=[]}if(typeof window.Piwik!=="object"){window.Piwik=(function(){var n,a={},t={},A=document,f=navigator,R=screen,N=window,g=N.performance||N.mozPerformance||N.msPerformance||N.webkitPerformance,p=N.encodeURIComponent,M=N.decodeURIComponent,i=unescape,C=[],z,d,Y=[]; -function l(af){try{return M(af)}catch(ag){return unescape(af)}}function D(ag){var af=typeof ag;return af!=="undefined"}function v(af){return typeof af==="function"}function Q(af){return typeof af==="object"}function s(af){return typeof af==="string"||af instanceof String}function w(ag){if(!ag){return true}var af;var ah=true;for(af in ag){if(Object.prototype.hasOwnProperty.call(ag,af)){ah=false}}return ah}function ab(af){if(console!==undefined&&console&&console.error){console.error(af)}}function X(){var ak,aj,am,ag,af;for(ak=0;ak0;if(ai){al=am.split("::");ah=al[0];am=al[1];if("object"===typeof d[ah]&&"function"===typeof d[ah][am]){d[ah][am].apply(d[ah],ag)}else{if(af){Y.push(af)}}}else{for(aj=0;aj0;if(an){al=am.split(".");if(ah&&"object"===typeof ah[al[0]]){ah=ah[al[0]]; -am=al[1]}else{if(af){Y.push(af);break}}}if(ah[am]){ah[am].apply(ah,ag)}else{var ao="The method '"+am+'\' was not found in "_paq" variable. Please have a look at the Piwik tracker documentation: http://developer.piwik.org/api-reference/tracking-javascript';ab(ao);if(!an){throw new TypeError(ao)}}if(am==="addTracker"){break}if(am==="setTrackerUrl"||am==="setSiteId"){break}}else{am.apply(C[aj],ag)}}}}}function ae(ai,ah,ag,af){if(ai.addEventListener){ai.addEventListener(ah,ag,af);return true}if(ai.attachEvent){return ai.attachEvent("on"+ah,ag)}ai["on"+ah]=ag}function j(af){if(A.readyState==="complete"){af()}else{if(N.addEventListener){N.addEventListener("load",af)}else{if(N.attachEvent){N.attachEvent("onload",af)}}}}function m(ai){var af=false;if(A.attachEvent){af=A.readyState==="complete"}else{af=A.readyState!=="loading"}if(af){ai();return}var ah;if(A.addEventListener){ae(A,"DOMContentLoaded",function ag(){A.removeEventListener("DOMContentLoaded",ag,false);if(!af){af=true;ai()}})}else{if(A.attachEvent){A.attachEvent("onreadystatechange",function ag(){if(A.readyState==="complete"){A.detachEvent("onreadystatechange",ag); -if(!af){af=true;ai()}}});if(A.documentElement.doScroll&&N===N.top){(function ag(){if(!af){try{A.documentElement.doScroll("left")}catch(aj){setTimeout(ag,0);return}af=true;ai()}}())}}}ae(N,"load",function(){if(!af){af=true;ai()}},false)}function U(ag,ak){var af="",ai,ah,aj;for(ai in a){if(Object.prototype.hasOwnProperty.call(a,ai)){ah=a[ai][ag];if(v(ah)){aj=ah(ak);if(aj){af+=aj}}}}return af}function Z(){var af;U("unload");if(n){do{af=new Date()}while(af.getTimeAlias()>>(32-aA))},aw=function(aD){var aB="",aC,aA;for(aC=7;aC>=0;aC--){aA=(aD>>>(aC*4))&15;aB+=aA.toString(16)}return aB},ak,ay,ax,ag=[],ao=1732584193,am=4023233417,al=2562383102,aj=271733878,ai=3285377520,au,at,ar,aq,ap,az,af,an=[];av=y(av);af=av.length;for(ay=0;ay>>29);an.push((af<<3)&4294967295);for(ak=0;akak.offsetWidth+ak.scrollLeft||am+ap-aqak.offsetHeight+ak.scrollTop||ar+an-aqan?-1:1});if(af.length<=1){return af}var ag=0;var ai=0;var aj=[];var ah;ah=af[ag++];while(ah){if(ah===af[ag]){ai=aj.push(ag)}ah=af[ag++]||null}while(ai--){af.splice(aj[ai],1)}return af},getAttributeValueFromNode:function(aj,ah){if(!this.hasNodeAttribute(aj,ah)){return}if(aj&&aj.getAttribute){return aj.getAttribute(ah)}if(!aj||!aj.attributes){return}var ai=(typeof aj.attributes[ah]);if("undefined"===ai){return}if(aj.attributes[ah].value){return aj.attributes[ah].value}if(aj.attributes[ah].nodeValue){return aj.attributes[ah].nodeValue}var ag;var af=aj.attributes;if(!af){return}for(ag=0;ag1000){break}af++}},findPieceNode:function(ag){var af;af=W.findFirstNodeHavingAttribute(ag,this.CONTENT_PIECE_ATTR);if(!af){af=W.findFirstNodeHavingClass(ag,this.CONTENT_PIECE_CLASS)}if(af){return af}return ag},findTargetNodeNoDefault:function(af){if(!af){return}var ag=W.findFirstNodeHavingAttributeWithValue(af,this.CONTENT_TARGET_ATTR); -if(ag){return ag}ag=W.findFirstNodeHavingAttribute(af,this.CONTENT_TARGET_ATTR);if(ag){return ag}ag=W.findFirstNodeHavingClass(af,this.CONTENT_TARGET_CLASS);if(ag){return ag}},findTargetNode:function(af){var ag=this.findTargetNodeNoDefault(af);if(ag){return ag}return af},findContentName:function(ag){if(!ag){return}var aj=W.findFirstNodeHavingAttributeWithValue(ag,this.CONTENT_NAME_ATTR);if(aj){return W.getAttributeValueFromNode(aj,this.CONTENT_NAME_ATTR)}var af=this.findContentPiece(ag);if(af){return this.removeDomainIfIsInLink(af)}if(W.hasNodeAttributeWithValue(ag,"title")){return W.getAttributeValueFromNode(ag,"title")}var ah=this.findPieceNode(ag);if(W.hasNodeAttributeWithValue(ah,"title")){return W.getAttributeValueFromNode(ah,"title")}var ai=this.findTargetNode(ag);if(W.hasNodeAttributeWithValue(ai,"title")){return W.getAttributeValueFromNode(ai,"title")}},findContentPiece:function(ag){if(!ag){return}var ai=W.findFirstNodeHavingAttributeWithValue(ag,this.CONTENT_PIECE_ATTR);if(ai){return W.getAttributeValueFromNode(ai,this.CONTENT_PIECE_ATTR) -}var af=this.findPieceNode(ag);var ah=this.findMediaUrlInNode(af);if(ah){return this.toAbsoluteUrl(ah)}},findContentTarget:function(ah){if(!ah){return}var ai=this.findTargetNode(ah);if(W.hasNodeAttributeWithValue(ai,this.CONTENT_TARGET_ATTR)){return W.getAttributeValueFromNode(ai,this.CONTENT_TARGET_ATTR)}var ag;if(W.hasNodeAttributeWithValue(ai,"href")){ag=W.getAttributeValueFromNode(ai,"href");return this.toAbsoluteUrl(ag)}var af=this.findPieceNode(ah);if(W.hasNodeAttributeWithValue(af,"href")){ag=W.getAttributeValueFromNode(af,"href");return this.toAbsoluteUrl(ag)}},isSameDomain:function(af){if(!af||!af.indexOf){return false}if(0===af.indexOf(this.getLocation().origin)){return true}var ag=af.indexOf(this.getLocation().host);if(8>=ag&&0<=ag){return true}return false},removeDomainIfIsInLink:function(ah){var ag="^https?://[^/]+";var af="^.*//[^/]+";if(ah&&ah.search&&-1!==ah.search(new RegExp(ag))&&this.isSameDomain(ah)){ah=ah.replace(new RegExp(af),"");if(!ah){ah="/"}}return ah},findMediaUrlInNode:function(aj){if(!aj){return -}var ah=["img","embed","video","audio"];var af=aj.nodeName.toLowerCase();if(-1!==G(ah,af)&&W.findFirstNodeHavingAttributeWithValue(aj,"src")){var ai=W.findFirstNodeHavingAttributeWithValue(aj,"src");return W.getAttributeValueFromNode(ai,"src")}if(af==="object"&&W.hasNodeAttributeWithValue(aj,"data")){return W.getAttributeValueFromNode(aj,"data")}if(af==="object"){var ak=W.findNodesByTagName(aj,"param");if(ak&&ak.length){var ag;for(ag=0;ag0 -}var ag=ai.clientWidth;if(N.innerWidth&&ag>N.innerWidth){ag=N.innerWidth}var af=ai.clientHeight;if(N.innerHeight&&af>N.innerHeight){af=N.innerHeight}return((aj.bottom>0||ah)&&aj.right>0&&aj.left=0){cH=cH.slice(0,cG)}cG=cH.lastIndexOf("/");if(cG!==cH.length-1){cH=cH.slice(0,cG+1)}return cH+cF}function cb(cH,cF){var cG;cH=String(cH).toLowerCase();cF=String(cF).toLowerCase();if(cH===cF){return true}if(cF.slice(0,1)==="."){if(cH===cF.slice(1)){return true}cG=cH.length-cF.length;if((cG>0)&&(cH.slice(cG)===cF)){return true}}return false}function bT(cF){var cG=document.createElement("a");if(cF.indexOf("//")!==0&&cF.indexOf("http")!==0){if(cF.indexOf("*")===0){cF=cF.substr(1) -}if(cF.indexOf(".")===0){cF=cF.substr(1)}cF="http://"+cF}cG.href=r.toAbsoluteUrl(cF);if(cG.pathname){return cG.pathname}return""}function aM(cG,cF){if(!aa(cF,"/")){cF="/"+cF}if(!aa(cG,"/")){cG="/"+cG}var cH=(cF==="/"||cF==="/*");if(cH){return true}if(cG===cF){return true}cF=String(cF).toLowerCase();cG=String(cG).toLowerCase();if(L(cF,"*")){cF=cF.slice(0,-1);cH=(!cF||cF==="/");if(cH){return true}if(cG===cF){return true}return cG.indexOf(cF)===0}if(!L(cG,"/")){cG+="/"}if(!L(cF,"/")){cF+="/"}return cG.indexOf(cF)===0}function ai(cJ,cL){var cG,cF,cH,cI,cK;for(cG=0;cG0)&&(cI.slice(cH)===cF)){return true}}}return false}function bY(cF,cH){var cG=new Image(1,1);cG.onload=function(){z=0;if(typeof cH==="function"){cH() -}};cF=cF.replace("send_image=0","send_image=1");cG.src=ap+(ap.indexOf("?")<0?"?":"&")+cF}function ct(cG,cJ,cF){if(!D(cF)||null===cF){cF=true}try{var cI=N.XMLHttpRequest?new N.XMLHttpRequest():N.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null;cI.open("POST",ap,true);cI.onreadystatechange=function(){if(this.readyState===4&&!(this.status>=200&&this.status<300)&&cF){bY(cG,cJ)}else{if(this.readyState===4&&(typeof cJ==="function")){cJ()}}};cI.setRequestHeader("Content-Type",b3);cI.send(cG)}catch(cH){if(cF){bY(cG,cJ)}}}function bP(cG){var cF=new Date();var cH=cF.getTime()+cG;if(!n||cH>n){n=cH}}function bW(cF){if(bL||!aO){return}bL=setTimeout(function cG(){bL=null;if(!aU){aU=(!A.hasFocus||A.hasFocus())}if(!aU){bW(aO);return}if(br()){return}var cH=new Date(),cI=aO-(cH.getTime()-cp);cI=Math.min(aO,cI);bW(cI)},cF||aO)}function bk(){if(!bL){return}clearTimeout(bL);bL=null}function aS(){aU=true;if(br()){return}bW()}function am(){bk()}function cD(){if(ay||!aO){return}ay=true;ae(N,"focus",aS); -ae(N,"blur",am);bW()}function b8(cJ){var cG=new Date();var cF=cG.getTime();cp=cF;if(b7&&cF2000){ct(cG,cH)}else{bY(cG,cH)}bP(cF)})}if(!ay){cD()}else{bW()}}function bS(cF){if(ci){return false}return(cF&&cF.length)}function cC(cH,cF){if(!bS(cH)){return}var cG='{"requests":["?'+cH.join('","?')+'"]}';b8(function(){ct(cG,null,false);bP(cF)})}function aD(cF){return aZ+cF+"."+bF+"."+a3}function bE(){if(a0){return"0"}if(!D(f.cookieEnabled)){var cF=aD("testcookie");cB(cF,"1");return ao(cF)==="1"?"1":"0"}return f.cookieEnabled?"1":"0"}function aX(){a3=bG((co||cm)+(a4||"/")).slice(0,4)}function bw(){var cG=aD("cvar"),cF=ao(cG);if(cF.length){cF=JSON_PIWIK.parse(cF);if(Q(cF)){return cF}}return{}}function b9(){if(aA===false){aA=bw()}}function cj(){return bG((f.userAgent||"")+(f.platform||"")+JSON_PIWIK.stringify(cw)+(new Date()).getTime()+Math.random()).slice(0,16) -}function cg(){var cH=new Date(),cF=Math.round(cH.getTime()/1000),cG=aD("id"),cK=ao(cG),cJ,cI;if(cK){cJ=cK.split(".");cJ.unshift("0");if(bo.length){cJ[1]=bo}return cJ}if(bo.length){cI=bo}else{if("0"===bE()){cI=""}else{cI=cj()}}cJ=["1",cI,cF,0,cF,"",""];return cJ}function aH(){var cM=cg(),cI=cM[0],cJ=cM[1],cG=cM[2],cF=cM[3],cK=cM[4],cH=cM[5];if(!D(cM[6])){cM[6]=""}var cL=cM[6];return{newVisitor:cI,uuid:cJ,createTs:cG,visitCount:cF,currentVisitTs:cK,lastVisitTs:cH,lastEcommerceOrderTs:cL}}function at(){var cI=new Date(),cG=cI.getTime(),cJ=aH().createTs;var cF=parseInt(cJ,10);var cH=(cF*1000)+ce-cG;return cH}function aw(cF){if(!bF){return}var cH=new Date(),cG=Math.round(cH.getTime()/1000);if(!D(cF)){cF=aH()}var cI=cF.uuid+"."+cF.createTs+"."+cF.visitCount+"."+cG+"."+cF.lastVisitTs+"."+cF.lastEcommerceOrderTs;cB(aD("id"),cI,at(),a4,co)}function bm(){var cF=ao(aD("ref"));if(cF.length){try{cF=JSON_PIWIK.parse(cF);if(Q(cF)){return cF}}catch(cG){}}return["","",0,""]}function bx(cH,cG,cF){cB(cH,"",-86400,cG,cF) -}function a9(cG){var cF="testvalue";cB("test",cF,10000,null,cG);if(ao("test")===cF){bx("test",null,cG);return true}return false}function aq(){var cH=a0;a0=false;var cF=["id","ses","cvar","ref"];var cG,cI;for(cG=0;cGc4){cV.visitCount++;cV.lastVisitTs=cV.currentVisitTs}if(!a8||!cN.length){for(c1 in bZ){if(Object.prototype.hasOwnProperty.call(bZ,c1)){cN=P(c5,bZ[c1]);if(cN.length){break}}}for(c1 in bh){if(Object.prototype.hasOwnProperty.call(bh,c1)){cF=P(c5,bh[c1]);if(cF.length){break}}}}c8=c(a2);cQ=c0.length?c(c0):"";if(c8.length&&!aF(c8)&&(!a8||!cQ.length||aF(cQ))){c0=a2}if(c0.length||cN.length){cM=cP;cZ=[cN,cF,cM,bB(c0.slice(0,cJ))];cB(cW,JSON_PIWIK.stringify(cZ),cu,a4,co)}}cH+="&idsite="+bF+"&rec=1&r="+String(Math.random()).slice(2,8)+"&h="+cG.getHours()+"&m="+cG.getMinutes()+"&s="+cG.getSeconds()+"&url="+p(bB(c5))+(a2.length?"&urlref="+p(bB(a2)):"")+((bb&&bb.length)?"&uid="+p(bb):"")+"&_id="+cV.uuid+"&_idts="+cV.createTs+"&_idvc="+cV.visitCount+"&_idn="+cV.newVisitor+(cN.length?"&_rcn="+p(cN):"")+(cF.length?"&_rck="+p(cF):"")+"&_refts="+cM+"&_viewts="+cV.lastVisitTs+(String(cV.lastEcommerceOrderTs).length?"&_ects="+cV.lastEcommerceOrderTs:"")+(String(c0).length?"&_ref="+p(bB(c0.slice(0,cJ))):"")+(cS?"&cs="+p(cS):"")+"&send_image=0"; -for(c1 in cw){if(Object.prototype.hasOwnProperty.call(cw,c1)){cH+="&"+c1+"="+cw[c1]}}var c7=[];if(c2){for(c1 in c2){if(Object.prototype.hasOwnProperty.call(c2,c1)&&/^dimension\d+$/.test(c1)){var cL=c1.replace("dimension","");c7.push(parseInt(cL,10));c7.push(String(cL));cH+="&"+c1+"="+c2[c1];delete c2[c1]}}}if(c2&&w(c2)){c2=null}for(c1 in a1){if(Object.prototype.hasOwnProperty.call(a1,c1)){var cR=(-1===G(c7,c1));if(cR){cH+="&dimension"+c1+"="+a1[c1]}}}if(c2){cH+="&data="+p(JSON_PIWIK.stringify(c2))}else{if(af){cH+="&data="+p(JSON_PIWIK.stringify(af))}}function cO(c9,da){var db=JSON_PIWIK.stringify(c9);if(db.length>2){return"&"+da+"="+p(db)}return""}var c6=cE(bv);var cX=cE(bU);cH+=cO(c6,"cvar");cH+=cO(cX,"e_cvar");if(aA){cH+=cO(aA,"_cvar");for(c1 in cY){if(Object.prototype.hasOwnProperty.call(cY,c1)){if(aA[c1][0]===""||aA[c1][1]===""){delete aA[c1]}}}if(bq){cB(cT,JSON_PIWIK.stringify(aA),bX,a4,co)}}if(aL){if(bV){cH+=">_ms="+bV}else{if(g&&g.timing&&g.timing.requestStart&&g.timing.responseEnd){cH+=">_ms="+(g.timing.responseEnd-g.timing.requestStart) -}}}if(av){cH+="&pv_id="+av}cV.lastEcommerceOrderTs=D(cI)&&String(cI).length?cI:cV.lastEcommerceOrderTs;aw(cV);bM();cH+=U(c3);if(cq.length){cH+="&"+cq}if(v(bK)){cH=bK(cH)}return cH}br=function aP(){var cF=new Date();if(cp+aO<=cF.getTime()){var cG=b0("ping=1",null,"ping");bg(cG,bj);return true}return false};function a5(cI,cH,cN,cJ,cF,cQ){var cL="idgoal=0",cM,cG=new Date(),cO=[],cP,cK=String(cI).length;if(cK){cL+="&ec_id="+p(cI);cM=Math.round(cG.getTime()/1000)}cL+="&revenue="+cH;if(String(cN).length){cL+="&ec_st="+cN}if(String(cJ).length){cL+="&ec_tx="+cJ}if(String(cF).length){cL+="&ec_sh="+cF}if(String(cQ).length){cL+="&ec_dt="+cQ}if(cr){for(cP in cr){if(Object.prototype.hasOwnProperty.call(cr,cP)){if(!D(cr[cP][1])){cr[cP][1]=""}if(!D(cr[cP][2])){cr[cP][2]=""}if(!D(cr[cP][3])||String(cr[cP][3]).length===0){cr[cP][3]=0}if(!D(cr[cP][4])||String(cr[cP][4]).length===0){cr[cP][4]=1}cO.push(cr[cP])}}cL+="&ec_items="+p(JSON_PIWIK.stringify(cO))}cL=b0(cL,af,"ecommerce",cM);bg(cL,bj);if(cK){cr={} -}}function by(cF,cJ,cI,cH,cG,cK){if(String(cF).length&&D(cJ)){a5(cF,cJ,cI,cH,cG,cK)}}function a6(cF){if(D(cF)){a5("",cF,"","","","")}}function bz(cG,cI,cH){av=aW();var cF=b0("action_name="+p(ac(cG||aY)),cI,"log");bg(cF,bj,cH)}function aJ(cH,cG){var cI,cF="(^| )(piwik[_-]"+cG;if(cH){for(cI=0;cI0){cJ=parseInt(cJ,10);cM(cJ)}})}function ca(){var cG,cI,cJ={pdf:"application/pdf",qt:"video/quicktime",realp:"audio/x-pn-realaudio-plugin",wma:"application/x-mplayer2",dir:"application/x-director",fla:"application/x-shockwave-flash",java:"application/x-java-vm",gears:"application/x-googlegears",ag:"application/x-silverlight"};if(!((new RegExp("MSIE")).test(f.userAgent))){if(f.mimeTypes&&f.mimeTypes.length){for(cG in cJ){if(Object.prototype.hasOwnProperty.call(cJ,cG)){cI=f.mimeTypes[cJ[cG]]; -cw[cG]=(cI&&cI.enabledPlugin)?"1":"0"}}}if(typeof navigator.javaEnabled!=="unknown"&&D(f.javaEnabled)&&f.javaEnabled()){cw.java="1"}if(v(N.GearsFactory)){cw.gears="1"}cw.cookie=bE()}var cH=parseInt(R.width,10);var cF=parseInt(R.height,10);cw.res=parseInt(cH,10)+"x"+parseInt(cF,10)}ca();aX();aw();this.getVisitorId=function(){return aH().uuid};this.getVisitorInfo=function(){return cg()};this.getAttributionInfo=function(){return bm()};this.getAttributionCampaignName=function(){return bm()[0]};this.getAttributionCampaignKeyword=function(){return bm()[1]};this.getAttributionReferrerTimestamp=function(){return bm()[2]};this.getAttributionReferrerUrl=function(){return bm()[3]};this.setTrackerUrl=function(cF){ap=cF};this.getTrackerUrl=function(){return ap};this.addTracker=function(cF,cH){if(!cH){throw new Error("A siteId must be given to add a new tracker")}if(!D(cF)||null===cF){cF=this.getTrackerUrl()}var cG=new K(cF,cH);C.push(cG);return cG};this.getSiteId=function(){return bF};this.setSiteId=function(cF){bC(cF) -};this.setUserId=function(cF){if(!D(cF)||!cF.length){return}bb=cF;bo=bG(bb).substr(0,16)};this.getUserId=function(){return bb};this.setCustomData=function(cF,cG){if(Q(cF)){af=cF}else{if(!af){af={}}af[cF]=cG}};this.getCustomData=function(){return af};this.setCustomRequestProcessing=function(cF){bK=cF};this.appendToTrackingUrl=function(cF){cq=cF};this.getRequest=function(cF){return b0(cF)};this.addPlugin=function(cF,cG){a[cF]=cG};this.setCustomDimension=function(cF,cG){cF=parseInt(cF,10);if(cF>0){if(!D(cG)){cG=""}if(!s(cG)){cG=String(cG)}a1[cF]=cG}};this.getCustomDimension=function(cF){cF=parseInt(cF,10);if(cF>0&&Object.prototype.hasOwnProperty.call(a1,cF)){return a1[cF]}};this.deleteCustomDimension=function(cF){cF=parseInt(cF,10);if(cF>0){delete a1[cF]}};this.setCustomVariable=function(cG,cF,cJ,cH){var cI;if(!D(cH)){cH="visit"}if(!D(cF)){return}if(!D(cJ)){cJ=""}if(cG>0){cF=!s(cF)?String(cF):cF;cJ=!s(cJ)?String(cJ):cJ;cI=[cF.slice(0,a7),cJ.slice(0,a7)];if(cH==="visit"||cH===2){b9();aA[cG]=cI -}else{if(cH==="page"||cH===3){bv[cG]=cI}else{if(cH==="event"){bU[cG]=cI}}}}};this.getCustomVariable=function(cG,cH){var cF;if(!D(cH)){cH="visit"}if(cH==="page"||cH===3){cF=bv[cG]}else{if(cH==="event"){cF=bU[cG]}else{if(cH==="visit"||cH===2){b9();cF=aA[cG]}}}if(!D(cF)||(cF&&cF[0]==="")){return false}return cF};this.deleteCustomVariable=function(cF,cG){if(this.getCustomVariable(cF,cG)){this.setCustomVariable(cF,"","",cG)}};this.storeCustomVariablesInCookie=function(){bq=true};this.setLinkTrackingTimer=function(cF){bj=cF};this.setDownloadExtensions=function(cF){if(s(cF)){cF=cF.split("|")}cv=cF};this.addDownloadExtensions=function(cG){var cF;if(s(cG)){cG=cG.split("|")}for(cF=0;cF1){ab("The method "+ag+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Piwik trackers documentation: http://developer.piwik.org/guides/tracking-javascript-guide#multiple-piwik-trackers') -}al[ag]++}}}}return ak}var x=["addTracker","disableCookies","setTrackerUrl","setAPIUrl","setCookiePath","setCookieDomain","setDomains","setUserId","setSiteId","enableLinkTracking"];function V(af,ah){var ag=new K(af,ah);C.push(ag);_paq=b(_paq,x);for(z=0;z<_paq.length;z++){if(_paq[z]){X(_paq[z])}}_paq=new B();return ag}ae(N,"beforeunload",Z,false);Date.prototype.getTimeAlias=Date.prototype.getTime;d={initialized:false,JSON:JSON_PIWIK,DOM:{addEventListener:function(ai,ah,ag,af){var aj=typeof af;if(aj==="undefined"){af=false}ae(ai,ah,ag,af)},onLoad:j,onReady:m},on:function(ag,af){if(!t[ag]){t[ag]=[]}t[ag].push(af)},off:function(ah,ag){if(!t[ah]){return}var af=0;for(af;af0;if(ak){an=ao.split("::");aj=an[0];ao=an[1];if("object"===typeof d[aj]&&"function"===typeof d[aj][ao]){d[aj][ao].apply(d[aj],ai)}else{if(ah){aa.push(ah)}}}else{for(al=0;al0;if(ap){an=ao.split(".");if(aj&&"object"===typeof aj[an[0]]){aj=aj[an[0]]; +ao=an[1]}else{if(ah){aa.push(ah);break}}}if(aj[ao]){aj[ao].apply(aj,ai)}else{var aq="The method '"+ao+'\' was not found in "_paq" variable. Please have a look at the Piwik tracker documentation: http://developer.piwik.org/api-reference/tracking-javascript';ad(aq);if(!ap){throw new TypeError(aq)}}if(ao==="addTracker"){break}if(ao==="setTrackerUrl"||ao==="setSiteId"){break}}else{ao.apply(F[al],ai)}}}}}function ag(ak,aj,ai,ah){if(ak.addEventListener){ak.addEventListener(aj,ai,ah);return true}if(ak.attachEvent){return ak.attachEvent("on"+aj,ai)}ak["on"+aj]=ai}function l(ah){if(D.readyState==="complete"){ah()}else{if(Q.addEventListener){Q.addEventListener("load",ah)}else{if(Q.attachEvent){Q.attachEvent("onload",ah)}}}}function o(ak){var ah=false;if(D.attachEvent){ah=D.readyState==="complete"}else{ah=D.readyState!=="loading"}if(ah){ak();return}var aj;if(D.addEventListener){ag(D,"DOMContentLoaded",function ai(){D.removeEventListener("DOMContentLoaded",ai,false);if(!ah){ah=true;ak()}})}else{if(D.attachEvent){D.attachEvent("onreadystatechange",function ai(){if(D.readyState==="complete"){D.detachEvent("onreadystatechange",ai); +if(!ah){ah=true;ak()}}});if(D.documentElement.doScroll&&Q===Q.top){(function ai(){if(!ah){try{D.documentElement.doScroll("left")}catch(al){setTimeout(ai,0);return}ah=true;ak()}}())}}}ag(Q,"load",function(){if(!ah){ah=true;ak()}},false)}function W(ai,am){var ah="",ak,aj,al;for(ak in a){if(Object.prototype.hasOwnProperty.call(a,ak)){aj=a[ak][ai];if(x(aj)){al=aj(am);if(al){ah+=al}}}}return ah}function ab(){var ah;W("unload");if(p){do{ah=new Date()}while(ah.getTimeAlias()=0;am--){al=an[am].split("=")[0]; +if(al===aj){an.splice(am,1)}}var aq=an.join("&");if(aq){ao=ao+"?"+aq}if(ap){ao+="#"+ap}}return ao}function e(aj,ai){var ah="[\\?&#]"+ai+"=([^&#]*)";var al=new RegExp(ah);var ak=al.exec(aj);return ak?P(ak[1]):""}function A(ah){return unescape(r(ah))}function af(ax){var aj=function(aD,aC){return(aD<>>(32-aC))},ay=function(aF){var aD="",aE,aC;for(aE=7;aE>=0;aE--){aC=(aF>>>(aE*4))&15;aD+=aC.toString(16)}return aD},am,aA,az,ai=[],aq=1732584193,ao=4023233417,an=2562383102,al=271733878,ak=3285377520,aw,av,au,at,ar,aB,ah,ap=[];ax=A(ax);ah=ax.length;for(aA=0;aA>>29);ap.push((ah<<3)&4294967295); +for(am=0;amam.offsetWidth+am.scrollLeft||ao+ar-atam.offsetHeight+am.scrollTop||au+ap-atap?-1:1});if(ah.length<=1){return ah}var ai=0;var ak=0;var al=[];var aj;aj=ah[ai++];while(aj){if(aj===ah[ai]){ak=al.push(ai)}aj=ah[ai++]||null}while(ak--){ah.splice(al[ak],1)}return ah},getAttributeValueFromNode:function(al,aj){if(!this.hasNodeAttribute(al,aj)){return}if(al&&al.getAttribute){return al.getAttribute(aj) +}if(!al||!al.attributes){return}var ak=(typeof al.attributes[aj]);if("undefined"===ak){return}if(al.attributes[aj].value){return al.attributes[aj].value}if(al.attributes[aj].nodeValue){return al.attributes[aj].nodeValue}var ai;var ah=al.attributes;if(!ah){return}for(ai=0;ai1000){break}ah++}},findPieceNode:function(ai){var ah;ah=Y.findFirstNodeHavingAttribute(ai,this.CONTENT_PIECE_ATTR);if(!ah){ah=Y.findFirstNodeHavingClass(ai,this.CONTENT_PIECE_CLASS)}if(ah){return ah}return ai},findTargetNodeNoDefault:function(ah){if(!ah){return}var ai=Y.findFirstNodeHavingAttributeWithValue(ah,this.CONTENT_TARGET_ATTR);if(ai){return ai}ai=Y.findFirstNodeHavingAttribute(ah,this.CONTENT_TARGET_ATTR);if(ai){return ai}ai=Y.findFirstNodeHavingClass(ah,this.CONTENT_TARGET_CLASS); +if(ai){return ai}},findTargetNode:function(ah){var ai=this.findTargetNodeNoDefault(ah);if(ai){return ai}return ah},findContentName:function(ai){if(!ai){return}var al=Y.findFirstNodeHavingAttributeWithValue(ai,this.CONTENT_NAME_ATTR);if(al){return Y.getAttributeValueFromNode(al,this.CONTENT_NAME_ATTR)}var ah=this.findContentPiece(ai);if(ah){return this.removeDomainIfIsInLink(ah)}if(Y.hasNodeAttributeWithValue(ai,"title")){return Y.getAttributeValueFromNode(ai,"title")}var aj=this.findPieceNode(ai);if(Y.hasNodeAttributeWithValue(aj,"title")){return Y.getAttributeValueFromNode(aj,"title")}var ak=this.findTargetNode(ai);if(Y.hasNodeAttributeWithValue(ak,"title")){return Y.getAttributeValueFromNode(ak,"title")}},findContentPiece:function(ai){if(!ai){return}var ak=Y.findFirstNodeHavingAttributeWithValue(ai,this.CONTENT_PIECE_ATTR);if(ak){return Y.getAttributeValueFromNode(ak,this.CONTENT_PIECE_ATTR)}var ah=this.findPieceNode(ai);var aj=this.findMediaUrlInNode(ah);if(aj){return this.toAbsoluteUrl(aj) +}},findContentTarget:function(aj){if(!aj){return}var ak=this.findTargetNode(aj);if(Y.hasNodeAttributeWithValue(ak,this.CONTENT_TARGET_ATTR)){return Y.getAttributeValueFromNode(ak,this.CONTENT_TARGET_ATTR)}var ai;if(Y.hasNodeAttributeWithValue(ak,"href")){ai=Y.getAttributeValueFromNode(ak,"href");return this.toAbsoluteUrl(ai)}var ah=this.findPieceNode(aj);if(Y.hasNodeAttributeWithValue(ah,"href")){ai=Y.getAttributeValueFromNode(ah,"href");return this.toAbsoluteUrl(ai)}},isSameDomain:function(ah){if(!ah||!ah.indexOf){return false}if(0===ah.indexOf(this.getLocation().origin)){return true}var ai=ah.indexOf(this.getLocation().host);if(8>=ai&&0<=ai){return true}return false},removeDomainIfIsInLink:function(aj){var ai="^https?://[^/]+";var ah="^.*//[^/]+";if(aj&&aj.search&&-1!==aj.search(new RegExp(ai))&&this.isSameDomain(aj)){aj=aj.replace(new RegExp(ah),"");if(!aj){aj="/"}}return aj},findMediaUrlInNode:function(al){if(!al){return}var aj=["img","embed","video","audio"];var ah=al.nodeName.toLowerCase(); +if(-1!==J(aj,ah)&&Y.findFirstNodeHavingAttributeWithValue(al,"src")){var ak=Y.findFirstNodeHavingAttributeWithValue(al,"src");return Y.getAttributeValueFromNode(ak,"src")}if(ah==="object"&&Y.hasNodeAttributeWithValue(al,"data")){return Y.getAttributeValueFromNode(al,"data")}if(ah==="object"){var am=Y.findNodesByTagName(al,"param");if(am&&am.length){var ai;for(ai=0;ai0}var ai=ak.clientWidth;if(Q.innerWidth&&ai>Q.innerWidth){ai=Q.innerWidth +}var ah=ak.clientHeight;if(Q.innerHeight&&ah>Q.innerHeight){ah=Q.innerHeight}return((al.bottom>0||aj)&&al.right>0&&al.left=0){cS=cS.slice(0,cR)}cR=cS.lastIndexOf("/");if(cR!==cS.length-1){cS=cS.slice(0,cR+1)}return cS+cQ}function ck(cS,cQ){var cR;cS=String(cS).toLowerCase();cQ=String(cQ).toLowerCase();if(cS===cQ){return true}if(cQ.slice(0,1)==="."){if(cS===cQ.slice(1)){return true}cR=cS.length-cQ.length;if((cR>0)&&(cS.slice(cR)===cQ)){return true}}return false}function b1(cQ){var cR=document.createElement("a");if(cQ.indexOf("//")!==0&&cQ.indexOf("http")!==0){if(cQ.indexOf("*")===0){cQ=cQ.substr(1) +}if(cQ.indexOf(".")===0){cQ=cQ.substr(1)}cQ="http://"+cQ}cR.href=t.toAbsoluteUrl(cQ);if(cR.pathname){return cR.pathname}return""}function aS(cR,cQ){if(!ac(cQ,"/")){cQ="/"+cQ}if(!ac(cR,"/")){cR="/"+cR}var cS=(cQ==="/"||cQ==="/*");if(cS){return true}if(cR===cQ){return true}cQ=String(cQ).toLowerCase();cR=String(cR).toLowerCase();if(O(cQ,"*")){cQ=cQ.slice(0,-1);cS=(!cQ||cQ==="/");if(cS){return true}if(cR===cQ){return true}return cR.indexOf(cQ)===0}if(!O(cR,"/")){cR+="/"}if(!O(cQ,"/")){cQ+="/"}return cR.indexOf(cQ)===0}function ak(cU,cW){var cR,cQ,cS,cT,cV;for(cR=0;cR0)&&(cT.slice(cS)===cQ)){return true}}}return false}function b6(cQ,cS){var cR=new Image(1,1);cR.onload=function(){B=0;if(typeof cS==="function"){cS() +}};cQ=cQ.replace("send_image=0","send_image=1");cR.src=av+(av.indexOf("?")<0?"?":"&")+cQ}function cD(cR,cU,cQ){if(!G(cQ)||null===cQ){cQ=true}try{var cT=Q.XMLHttpRequest?new Q.XMLHttpRequest():Q.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null;cT.open("POST",av,true);cT.onreadystatechange=function(){if(this.readyState===4&&!(this.status>=200&&this.status<300)&&cQ){b6(cR,cU)}else{if(this.readyState===4&&(typeof cU==="function")){cU()}}};cT.setRequestHeader("Content-Type",cc);cT.send(cR)}catch(cS){if(cQ){b6(cR,cU)}}}function bW(cR){var cQ=new Date();var cS=cQ.getTime()+cR;if(!p||cS>p){p=cS}}function b4(cQ){if(bS||!aU){return}bS=setTimeout(function cR(){bS=null;if(!a0){a0=(!D.hasFocus||D.hasFocus())}if(!a0){b4(aU);return}if(by()){return}var cS=new Date(),cT=aU-(cS.getTime()-cy);cT=Math.min(aU,cT);b4(cT)},cQ||aU)}function br(){if(!bS){return}clearTimeout(bS);bS=null}function aY(){a0=true;if(by()){return}b4()}function ap(){br()}function cN(){if(aE||!aU){return}aE=true;ag(Q,"focus",aY); +ag(Q,"blur",ap);b4()}function cg(cU){var cR=new Date();var cQ=cR.getTime();cy=cQ;if(cf&&cQ2000){cD(cR,cS)}else{b6(cR,cS)}bW(cQ)})}if(!aE){cN()}else{b4()}}function b0(cQ){if(cr){return false}return(cQ&&cQ.length)}function cM(cS,cQ){if(!b0(cS)){return}var cR='{"requests":["?'+cS.join('","?')+'"]}';cg(function(){cD(cR,null,false);bW(cQ)})}function aJ(cQ){return a6+cQ+"."+bM+"."+ba}function bL(){if(a7){return"0"}if(!G(g.cookieEnabled)){var cQ=aJ("testcookie");cL(cQ,"1");return au(cQ)==="1"?"1":"0"}return g.cookieEnabled?"1":"0"}function a4(){ba=bN((cx||cv)+(bb||"/")).slice(0,4)}function bD(){var cR=aJ("cvar"),cQ=au(cR);if(cQ.length){cQ=JSON_PIWIK.parse(cQ);if(S(cQ)){return cQ}}return{}}function ch(){if(aG===false){aG=bD()}}function cs(){return bN((g.userAgent||"")+(g.platform||"")+JSON_PIWIK.stringify(cG)+(new Date()).getTime()+Math.random()).slice(0,16) +}function aq(){return bN((g.userAgent||"")+(g.platform||"")+JSON_PIWIK.stringify(cG)).slice(0,6)}function a2(){return Math.floor((new Date()).getTime()/1000)}function aA(){var cR=a2();var cS=aq();var cQ=String(cR)+cS;return cQ}function cC(cT){cT=String(cT);var cW=aq();var cU=cW.length;var cV=cT.substr(-1*cU,cU);var cS=parseInt(cT.substr(0,cT.length-cU),10);if(cS&&cV&&cV===cW){var cQ=a2();var cR=45;if(cQ>=cS&&cQ<=(cS+cR)){return true}}return false}function cO(cQ){if(!co){return""}var cU=e(cQ,an);if(!cU){return""}cU=String(cU);var cS=new RegExp("^[a-zA-Z0-9]+$");if(cU.length===32&&cS.test(cU)){var cR=cU.substr(16,32);if(cC(cR)){var cT=cU.substr(0,16);return cT}}return""}function cp(){if(!bv){bv=cO(bu)}var cS=new Date(),cQ=Math.round(cS.getTime()/1000),cR=aJ("id"),cV=au(cR),cU,cT;if(cV){cU=cV.split(".");cU.unshift("0");if(bv.length){cU[1]=bv}return cU}if(bv.length){cT=bv}else{if("0"===bL()){cT=""}else{cT=cs()}}cU=["1",cT,cQ,0,cQ,"",""];return cU}function aN(){var cX=cp(),cT=cX[0],cU=cX[1],cR=cX[2],cQ=cX[3],cV=cX[4],cS=cX[5]; +if(!G(cX[6])){cX[6]=""}var cW=cX[6];return{newVisitor:cT,uuid:cU,createTs:cR,visitCount:cQ,currentVisitTs:cV,lastVisitTs:cS,lastEcommerceOrderTs:cW}}function ay(){var cT=new Date(),cR=cT.getTime(),cU=aN().createTs;var cQ=parseInt(cU,10);var cS=(cQ*1000)+cm-cR;return cS}function aC(cQ){if(!bM){return}var cS=new Date(),cR=Math.round(cS.getTime()/1000);if(!G(cQ)){cQ=aN()}var cT=cQ.uuid+"."+cQ.createTs+"."+cQ.visitCount+"."+cR+"."+cQ.lastVisitTs+"."+cQ.lastEcommerceOrderTs;cL(aJ("id"),cT,ay(),bb,cx)}function bt(){var cQ=au(aJ("ref"));if(cQ.length){try{cQ=JSON_PIWIK.parse(cQ);if(S(cQ)){return cQ}}catch(cR){}}return["","",0,""]}function bE(cS,cR,cQ){cL(cS,"",-86400,cR,cQ)}function bg(cR){var cQ="testvalue";cL("test",cQ,10000,null,cR);if(au("test")===cQ){bE("test",null,cR);return true}return false}function aw(){var cS=a7;a7=false;var cQ=["id","ses","cvar","ref"];var cR,cT;for(cR=0;cRdf){c6.visitCount++;c6.lastVisitTs=c6.currentVisitTs}if(!bf||!cY.length){for(dc in b7){if(Object.prototype.hasOwnProperty.call(b7,dc)){cY=e(dg,b7[dc]);if(cY.length){break +}}}for(dc in bo){if(Object.prototype.hasOwnProperty.call(bo,dc)){cQ=e(dg,bo[dc]);if(cQ.length){break}}}}dj=c(a9);c1=db.length?c(db):"";if(dj.length&&!aL(dj)&&(!bf||!c1.length||aL(c1))){db=a9}if(db.length||cY.length){cX=c0;da=[cY,cQ,cX,bI(db.slice(0,cU))];cL(c7,JSON_PIWIK.stringify(da),cE,bb,cx)}}cS+="&idsite="+bM+"&rec=1&r="+String(Math.random()).slice(2,8)+"&h="+cR.getHours()+"&m="+cR.getMinutes()+"&s="+cR.getSeconds()+"&url="+r(bI(dg))+(a9.length?"&urlref="+r(bI(a9)):"")+((bi&&bi.length)?"&uid="+r(bi):"")+"&_id="+c6.uuid+"&_idts="+c6.createTs+"&_idvc="+c6.visitCount+"&_idn="+c6.newVisitor+(cY.length?"&_rcn="+r(cY):"")+(cQ.length?"&_rck="+r(cQ):"")+"&_refts="+cX+"&_viewts="+c6.lastVisitTs+(String(c6.lastEcommerceOrderTs).length?"&_ects="+c6.lastEcommerceOrderTs:"")+(String(db).length?"&_ref="+r(bI(db.slice(0,cU))):"")+(c3?"&cs="+r(c3):"")+"&send_image=0";for(dc in cG){if(Object.prototype.hasOwnProperty.call(cG,dc)){cS+="&"+dc+"="+cG[dc]}}var di=[];if(dd){for(dc in dd){if(Object.prototype.hasOwnProperty.call(dd,dc)&&/^dimension\d+$/.test(dc)){var cW=dc.replace("dimension",""); +di.push(parseInt(cW,10));di.push(String(cW));cS+="&"+dc+"="+dd[dc];delete dd[dc]}}}if(dd&&y(dd)){dd=null}for(dc in a8){if(Object.prototype.hasOwnProperty.call(a8,dc)){var c2=(-1===J(di,dc));if(c2){cS+="&dimension"+dc+"="+a8[dc]}}}if(dd){cS+="&data="+r(JSON_PIWIK.stringify(dd))}else{if(ah){cS+="&data="+r(JSON_PIWIK.stringify(ah))}}function cZ(dk,dl){var dm=JSON_PIWIK.stringify(dk);if(dm.length>2){return"&"+dl+"="+r(dm)}return""}var dh=cP(bC);var c8=cP(b2);cS+=cZ(dh,"cvar");cS+=cZ(c8,"e_cvar");if(aG){cS+=cZ(aG,"_cvar");for(dc in c9){if(Object.prototype.hasOwnProperty.call(c9,dc)){if(aG[dc][0]===""||aG[dc][1]===""){delete aG[dc]}}}if(bx){cL(c4,JSON_PIWIK.stringify(aG),b5,bb,cx)}}if(aR){if(b3){cS+=">_ms="+b3}else{if(h&&h.timing&&h.timing.requestStart&&h.timing.responseEnd){cS+=">_ms="+(h.timing.responseEnd-h.timing.requestStart)}}}if(aB){cS+="&pv_id="+aB}c6.lastEcommerceOrderTs=G(cT)&&String(cT).length?cT:c6.lastEcommerceOrderTs;aC(c6);bT();cS+=W(de);if(cz.length){cS+="&"+cz}if(x(bR)){cS=bR(cS) +}return cS}by=function aV(){var cQ=new Date();if(cy+aU<=cQ.getTime()){var cR=b8("ping=1",null,"ping");bn(cR,bq);return true}return false};function bc(cT,cS,cY,cU,cQ,c1){var cW="idgoal=0",cX,cR=new Date(),cZ=[],c0,cV=String(cT).length;if(cV){cW+="&ec_id="+r(cT);cX=Math.round(cR.getTime()/1000)}cW+="&revenue="+cS;if(String(cY).length){cW+="&ec_st="+cY}if(String(cU).length){cW+="&ec_tx="+cU}if(String(cQ).length){cW+="&ec_sh="+cQ}if(String(c1).length){cW+="&ec_dt="+c1}if(cA){for(c0 in cA){if(Object.prototype.hasOwnProperty.call(cA,c0)){if(!G(cA[c0][1])){cA[c0][1]=""}if(!G(cA[c0][2])){cA[c0][2]=""}if(!G(cA[c0][3])||String(cA[c0][3]).length===0){cA[c0][3]=0}if(!G(cA[c0][4])||String(cA[c0][4]).length===0){cA[c0][4]=1}cZ.push(cA[c0])}}cW+="&ec_items="+r(JSON_PIWIK.stringify(cZ))}cW=b8(cW,ah,"ecommerce",cX);bn(cW,bq);if(cV){cA={}}}function bF(cQ,cU,cT,cS,cR,cV){if(String(cQ).length&&G(cU)){bc(cQ,cU,cT,cS,cR,cV)}}function bd(cQ){if(G(cQ)){bc("",cQ,"","","","")}}function bG(cR,cT,cS){aB=a3();var cQ=b8("action_name="+r(ae(cR||a5)),cT,"log"); +bn(cQ,bq,cS)}function aP(cS,cR){var cT,cQ="(^| )(piwik[_-]"+cR;if(cS){for(cT=0;cT0){cR+="&"}else{cR+="?"}var cT=aN().uuid;var cS=aA();cR=C(cR,an,cT+cS);Y.setAnyAttribute(cQ,"href",cR)}function ar(cT){var cU=Y.getAttributeValueFromNode(cT,"href");if(!cU){return false}cU=String(cU);var cR=cU.indexOf("//")===0||cU.indexOf("http://")===0||cU.indexOf("https://")===0; +if(!cR){return false}var cQ=cT.pathname||b1(cT.href);var cS=(cT.hostname||c(cT.href)).toLowerCase();if(ak(cS,cQ)){if(!ck(cv,I(cS))){return true}return false}return false}function cj(cQ){var cR=cJ(cQ);if(co&&!cR&&ar(cQ)){bZ(cQ)}if(cR&&cR.type){cR.href=n(cR.href);cB(cR.href,cR.type,undefined,null,cQ)}}function cb(){return D.all&&!D.addEventListener}function cw(cQ){var cS=cQ.which;var cR=(typeof cQ.button);if(!cS&&cR!=="undefined"){if(cb()){if(cQ.button&1){cS=1}else{if(cQ.button&2){cS=3}else{if(cQ.button&4){cS=2}}}}else{if(cQ.button===0||cQ.button==="0"){cS=1}else{if(cQ.button&1){cS=2}else{if(cQ.button&2){cS=3}}}}}return cS}function bz(cQ){switch(cw(cQ)){case 1:return"left";case 2:return"middle";case 3:return"right"}}function aQ(cQ){return cQ.target||cQ.srcElement}function at(cQ){return function(cT){cT=cT||Q.event;var cS=bz(cT);var cU=aQ(cT);if(cT.type==="click"){var cR=false;if(cQ&&cS==="middle"){cR=true}if(cU&&!cR){cj(cU)}}else{if(cT.type==="mousedown"){if(cS==="middle"&&cU){aH=cS;bk=cU}else{aH=bk=null +}}else{if(cT.type==="mouseup"){if(cS===aH&&cU===bk){cj(cU)}aH=bk=null}else{if(cT.type==="contextmenu"){cj(cU)}}}}}}function aj(cS,cR){var cQ=typeof cR;if(cQ==="undefined"){cR=true}ag(cS,"click",at(cR),false);if(cR){ag(cS,"mouseup",at(cR),false);ag(cS,"mousedown",at(cR),false);ag(cS,"contextmenu",at(cR),false)}}function bl(cR){if(!ai){ai=true;var cS,cQ=aP(bj,"ignore"),cT=D.links;if(cT){for(cS=0;cS0){cU=parseInt(cU,10);cX(cU)}})}function ci(){var cR,cT,cU={pdf:"application/pdf",qt:"video/quicktime",realp:"audio/x-pn-realaudio-plugin",wma:"application/x-mplayer2",dir:"application/x-director",fla:"application/x-shockwave-flash",java:"application/x-java-vm",gears:"application/x-googlegears",ag:"application/x-silverlight"}; +if(!((new RegExp("MSIE")).test(g.userAgent))){if(g.mimeTypes&&g.mimeTypes.length){for(cR in cU){if(Object.prototype.hasOwnProperty.call(cU,cR)){cT=g.mimeTypes[cU[cR]];cG[cR]=(cT&&cT.enabledPlugin)?"1":"0"}}}if(typeof navigator.javaEnabled!=="unknown"&&G(g.javaEnabled)&&g.javaEnabled()){cG.java="1"}if(x(Q.GearsFactory)){cG.gears="1"}cG.cookie=bL()}var cS=parseInt(T.width,10);var cQ=parseInt(T.height,10);cG.res=parseInt(cS,10)+"x"+parseInt(cQ,10)}ci();a4();aC();this.getVisitorId=function(){return aN().uuid};this.getVisitorInfo=function(){return cp()};this.getAttributionInfo=function(){return bt()};this.getAttributionCampaignName=function(){return bt()[0]};this.getAttributionCampaignKeyword=function(){return bt()[1]};this.getAttributionReferrerTimestamp=function(){return bt()[2]};this.getAttributionReferrerUrl=function(){return bt()[3]};this.setTrackerUrl=function(cQ){av=cQ};this.getTrackerUrl=function(){return av};this.addTracker=function(cQ,cS){if(!cS){throw new Error("A siteId must be given to add a new tracker") +}if(!G(cQ)||null===cQ){cQ=this.getTrackerUrl()}var cR=new N(cQ,cS);F.push(cR);return cR};this.getSiteId=function(){return bM};this.setSiteId=function(cQ){bJ(cQ)};this.setUserId=function(cQ){if(!G(cQ)||!cQ.length){return}bi=cQ;bv=bN(bi).substr(0,16)};this.getUserId=function(){return bi};this.setCustomData=function(cQ,cR){if(S(cQ)){ah=cQ}else{if(!ah){ah={}}ah[cQ]=cR}};this.getCustomData=function(){return ah};this.setCustomRequestProcessing=function(cQ){bR=cQ};this.appendToTrackingUrl=function(cQ){cz=cQ};this.getRequest=function(cQ){return b8(cQ)};this.addPlugin=function(cQ,cR){a[cQ]=cR};this.setCustomDimension=function(cQ,cR){cQ=parseInt(cQ,10);if(cQ>0){if(!G(cR)){cR=""}if(!u(cR)){cR=String(cR)}a8[cQ]=cR}};this.getCustomDimension=function(cQ){cQ=parseInt(cQ,10);if(cQ>0&&Object.prototype.hasOwnProperty.call(a8,cQ)){return a8[cQ]}};this.deleteCustomDimension=function(cQ){cQ=parseInt(cQ,10);if(cQ>0){delete a8[cQ]}};this.setCustomVariable=function(cR,cQ,cU,cS){var cT;if(!G(cS)){cS="visit"}if(!G(cQ)){return +}if(!G(cU)){cU=""}if(cR>0){cQ=!u(cQ)?String(cQ):cQ;cU=!u(cU)?String(cU):cU;cT=[cQ.slice(0,be),cU.slice(0,be)];if(cS==="visit"||cS===2){ch();aG[cR]=cT}else{if(cS==="page"||cS===3){bC[cR]=cT}else{if(cS==="event"){b2[cR]=cT}}}}};this.getCustomVariable=function(cR,cS){var cQ;if(!G(cS)){cS="visit"}if(cS==="page"||cS===3){cQ=bC[cR]}else{if(cS==="event"){cQ=b2[cR]}else{if(cS==="visit"||cS===2){ch();cQ=aG[cR]}}}if(!G(cQ)||(cQ&&cQ[0]==="")){return false}return cQ};this.deleteCustomVariable=function(cQ,cR){if(this.getCustomVariable(cQ,cR)){this.setCustomVariable(cQ,"","",cR)}};this.storeCustomVariablesInCookie=function(){bx=true};this.setLinkTrackingTimer=function(cQ){bq=cQ};this.setDownloadExtensions=function(cQ){if(u(cQ)){cQ=cQ.split("|")}cF=cQ};this.addDownloadExtensions=function(cR){var cQ;if(u(cR)){cR=cR.split("|")}for(cQ=0;cQ1){ad("The method "+ai+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Piwik trackers documentation: http://developer.piwik.org/guides/tracking-javascript-guide#multiple-piwik-trackers')}an[ai]++}}}}return am}var z=["addTracker","disableCookies","setTrackerUrl","setAPIUrl","enableCrossDomainLinking","setCookiePath","setCookieDomain","setDomains","setUserId","setSiteId","enableLinkTracking"];function X(ah,aj){var ai=new N(ah,aj);F.push(ai);_paq=b(_paq,z);for(B=0;B<_paq.length;B++){if(_paq[B]){Z(_paq[B])}}_paq=new E();return ai}ag(Q,"beforeunload",ab,false);Date.prototype.getTimeAlias=Date.prototype.getTime;d={initialized:false,JSON:JSON_PIWIK,DOM:{addEventListener:function(ak,aj,ai,ah){var al=typeof ah;if(al==="undefined"){ah=false}ag(ak,aj,ai,ah)},onLoad:l,onReady:o},on:function(ai,ah){if(!v[ai]){v[ai]=[]}v[ai].push(ah)},off:function(aj,ai){if(!v[aj]){return}var ah=0;for(ah; +ah