
function hxtrack_base64_encode(decStr) {
  var base64s = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
  var bits;
  var dual;
  var i = 0;
  var encOut = '';

  while(decStr.length >= i + 3) {
    bits = (decStr.charCodeAt(i++) & 0xff) <<16 |
           (decStr.charCodeAt(i++) & 0xff) <<8 |
            decStr.charCodeAt(i++) & 0xff;

    encOut += base64s.charAt((bits & 0x00fc0000) >>18) +
              base64s.charAt((bits & 0x0003f000) >>12) +
              base64s.charAt((bits & 0x00000fc0) >> 6) +
              base64s.charAt((bits & 0x0000003f));
  }

  if(decStr.length -i > 0 && decStr.length -i < 3) {
    dual = Boolean(decStr.length -i -1);

    bits = ((decStr.charCodeAt(i++) & 0xff) <<16) |
           (dual ? (decStr.charCodeAt(i) & 0xff) <<8 : 0);

    encOut += base64s.charAt((bits & 0x00fc0000) >>18) +
              base64s.charAt((bits & 0x0003f000) >>12) +
              (dual ? base64s.charAt((bits & 0x00000fc0) >>6) : '%3D') +
              '%3D';
  }

  return(encOut);
}
function hxtrack_get_size() {
  try {
    if (screen) return ("&sze=" + screen.width + "x" + screen.height);
  }
  catch (err) { }
  return '';
}
function hxtrack_get_ref() {
  try {
    if (document.referrer) return document.referrer;
    if (!window.opener) return '';
    if (!window.opener.location) return '';
    return window.opener.location.href;
  }
  catch (err) { }
  return '';
}

document.write(
  '<img src="http://www.hxtrack.com/image.gif?' + 
  'ref=' + hxtrack_base64_encode(hxtrack_get_ref()) +
  hxtrack_get_size() +
  '" alt="" width="1" height="1" border="0" />'
);