//First things first, set up our array that we are going to use. var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + //all caps "abcdefghijklmnopqrstuvwxyz" + //all lowercase "0123456789+/="; // all numbers plus +/= //Heres the encode function function CL_Base64Encode(inp) { var out = ""; //This is the output var chr1, chr2, chr3 = ""; //These are the 3 bytes to be encoded var enc1, enc2, enc3, enc4 = ""; //These are the 4 encoded bytes var i = 0; //Position counter do { //Set up the loop here chr1 = inp.charCodeAt(i++); //Grab the first byte chr2 = inp.charCodeAt(i++); //Grab the second byte chr3 = inp.charCodeAt(i++); //Grab the third byte //Here is the actual base64 encode part. //There really is only one way to do it. enc1 = chr1 >> 2; enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); enc4 = chr3 & 63; if (isNaN(chr2)) { enc3 = enc4 = 64; } else if (isNaN(chr3)) { enc4 = 64; } //Lets spit out the 4 encoded bytes out = out + keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4); // OK, now clean out the variables used. chr1 = chr2 = chr3 = ""; enc1 = enc2 = enc3 = enc4 = ""; } while (i < inp.length); //And finish off the loop //Now return the encoded values. return out; } //Heres the decode function function CL_Base64Decode(inp) { var out = ""; //This is the output var chr1, chr2, chr3 = ""; //These are the 3 decoded bytes var enc1, enc2, enc3, enc4 = ""; //These are the 4 bytes to be decoded var i = 0; //Position counter // remove all characters that are not A-Z, a-z, 0-9, +, /, or = var base64test = /[^A-Za-z0-9\+\/\=]/g; if (base64test.exec(inp)) { //Do some error checking alert("There were invalid base64 characters in the input text.\n" + "Valid base64 characters are A-Z, a-z, 0-9, ?+?, ?/?, and ?=?\n" + "Expect errors in decoding."); } inp = inp.replace(/[^A-Za-z0-9\+\/\=]/g, ""); do { //Here’s the decode loop. //Grab 4 bytes of encoded content. enc1 = keyStr.indexOf(inp.charAt(i++)); enc2 = keyStr.indexOf(inp.charAt(i++)); enc3 = keyStr.indexOf(inp.charAt(i++)); enc4 = keyStr.indexOf(inp.charAt(i++)); //Heres the decode part. There’s really only one way to do it. chr1 = (enc1 << 2) | (enc2 >> 4); chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); chr3 = ((enc3 & 3) << 6) | enc4; //Start to output decoded content out = out + String.fromCharCode(chr1); if (enc3 != 64) { out = out + String.fromCharCode(chr2); } if (enc4 != 64) { out = out + String.fromCharCode(chr3); } //now clean out the variables used chr1 = chr2 = chr3 = ""; enc1 = enc2 = enc3 = enc4 = ""; } while (i < inp.length); //finish off the loop //Now return the decoded values. return out; } function CL_CreateCookie(name,value,days) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else var expires = ""; document.cookie = name+"="+value+expires+"; path=/"; } function CL_CreateCookieBase64(name,value,days) { var enc_name = name; //CL_Base64Encode(name); var enc_value = CL_Base64Encode(value); CL_CreateCookie(enc_name, enc_value, days); } function CL_ReadCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } function CL_ReadCookieBase64(name) { var enc_name = name; //CL_Base64Encode(name); var enc_value = CL_ReadCookie(enc_name); var value = CL_Base64Decode(enc_value); return value; } function CL_EraseCookie(name) { createCookie(name,"",-1); } function CL_GetUrlParamter(name) { var regexS = "[\\?&]"+name+"=([^&#]*)"; var regex = new RegExp( regexS ); var tmpURL = window.location.href; var results = regex.exec( tmpURL ); if( results == null ) return ""; else return results[1]; } var _redirect = ""; var _account = ""; function OneTrackSys() { var _rfr = ""; if(document.referrer) _rfr=document.referrer; var _clc = CL_ReadCookie("clc"); if(_clc == null) { _clc = "zy4sqfzufg3btq45e2fl1b55"; CL_CreateCookie("clc", _clc, 2039); } var _funnel_id = CL_GetUrlParamter("fid"); //var _imgsrc = "http://www.1tracksys.web/recorder/" var _imgsrc = "http://www.1tracksys.com/recorder/" + "?mid=" + _account + "&uri=" + CL_Base64Encode(document.URL) + "&rfr=" + CL_Base64Encode(_rfr) + "&ssc=zy4sqfzufg3btq45e2fl1b55" + "&clc=" + _clc + "&fid=" + _funnel_id ; var img = new Image(); img.src = _imgsrc; var _enc_redirect = CL_GetUrlParamter("uri"); if(_enc_redirect != "") _redirect = CL_Base64Decode(_enc_redirect); if(_redirect != "") document.location = _redirect; }