Code responsible for creation of utmu parameter basing on this table can be presented in this form (distributed on WTFPL license):
var usage = [];
function setUsage(index) {
usage[index] = true;
};
function getUsage() {
var allChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
var temp = [];
for (h = 0; h < usage.length; h++)
if (usage[h]) {
temp[Math.floor(h / 6)] ^= 1 << h % 6;
}
for (h = 0; h < temp.length; h++)
temp[h] = allChars.charAt(temp[h] || 0);
return temp.join("")
};
It's looks like that above parameter is not required or validated, it is used only for statistical purposes (analytics inside of analytics). List of functions with their codes found in ga.js file:
Function | Code |
---|---|
_addIgnoredOrganic | 15 |
_addIgnoredRef | 31 |
_addItem | 19 |
_addOrganic | 14 |
_addTrans | 21 |
_anonymizeIp | 70 |
_clearIgnoredOrganic | 16 |
_clearIgnoredRef | 32 |
_clearOrganic | 17 |
_clearXKey | 72 |
_clearXValue | 73 |
_cookiePathCopy | 30 |
_createAsyncTracker | 33 |
_createEventTracker | 74 |
_createTracker | 55 |
_createXObj | 75 |
_deleteCustomVar | 35 |
_getAccount | 64 |
_getAsyncTracker | 34 |
_getClientInfo | 53 |
_getDetectFlash | 65 |
_getDetectTitle | 56 |
_getLinkerUrl | 52 |
_getLocalGifPath | 57 |
_getName | 58 |
_getServiceMode | 59 |
_getTrackerByName | 51 |
_getTracker | 0 |
_getVersion | 60 |
_getVisitorCustomVar | 50 |
_getXKey | 76 |
_getXValue | 77 |
_initData | 2 |
_linkByPost | 13 |
_link | 12 |
_sendXEvent | 78 |
_setAccount | 3 |
_setAllowAnchor | 7 |
_setAllowHash | 8 |
_setAllowLinker | 11 |
_setAutoTrackOutbound | 79 |
_setCampaignCookieTimeout | 29 |
_setCampaignTrack | 36 |
_setCampCIdKey | 37 |
_setCampContentKey | 38 |
_setCampIdKey | 39 |
_setCampMediumKey | 40 |
_setCampNameKey | 41 |
_setCampNOKey | 42 |
_setCampSourceKey | 43 |
_setCampTermKey | 44 |
_setClientInfo | 66 |
_setCookiePath | 9 |
_setCookiePersistence | 24 |
_setCookieTimeout | 25 |
_setCustomVar | 10 |
_setDetectFlash | 61 |
_setDetectTitle | 62 |
_setDomainName | 6 |
_setHrefExamineLimit | 80 |
_setLocalGifPath | 46 |
_setLocalRemoteServerMode | 47 |
_setLocalServerMode | 92 |
_setMaxCustomVariables | 71 |
_setNamespace | 48 |
_setReferrerOverride | 49 |
_setRemoteServerMode | 63 |
_setSampleRate | 45 |
_setSessionCookieTimeout | 26 |
_setSessionTimeout | 27 |
_setTrackOutboundSubdomains | 81 |
_setTransactionDelim | 82 |
_setTrans | 20 |
_setVar | 22 |
_setVisitorCookieTimeout | 28 |
_setXKey | 83 |
_setXValue | 84 |
_trackEvent | 4 |
_trackPageview | 1 |
_trackTrans | 18 |
_visitCode | 54 |
It is important to mention that, like everything else this code is not guaranteed to always work as it has been described by me. Google can change this anytime in the way which fit they needs the best. When it is currently not checked it can be checked against validity in the future.