/** @param nDays = 0 forever */
function setCookie(name, value, nDays) {
   var expires = "";
   if (nDays != 0) {
      var date = new Date();
      date.setTime(new Date().getTime() + nDays*24*60*60*1000);
      expires = ";expires="+date.toGMTString();
   }
   document.cookie = name+"="+value+"; path=/" + expires;
}

function 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 readParam(name)
{
   name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
   var regexS = "[\\?&]"+name+"=([^&#]*)";
   var regex = new RegExp( regexS );
   var results = regex.exec( window.location.href );
   if( results == null )
      return null;
   else
      return results[1];
}

function chopParams(url) {
   return url.replace(/\?.*$/, "");
}

function loadXMLDoc(url) {
   req = false;
   if(window.XMLHttpRequest) {
      try { req = new XMLHttpRequest(); }
      catch(e) { req = false; }
   } else if(window.ActiveXObject) {
      try { req = new ActiveXObject("Msxml2.XMLHTTP"); }
      catch(e) {
         try { req = new ActiveXObject("Microsoft.XMLHTTP"); }
         catch(e) { req = false; }
      }
   }
   if(req) {
//    req.onreadystatechange = callback;
      req.open("GET", url, true);
      req.send("");
   }
}

function getOrCreateSessionCookie() {
   var result = readCookie("session_id");
   if (result == null) {
      result = Math.floor(Math.random()*100000);
      setCookie("session_id", result, 0);
   }
   return result;
}

function getPid() {

   // 1. try cookie
   result = readCookie("pid");
   if (result) return result;
   
   // 2. try url param
   result = readParam("pid");
   if (result) {
      setCookie("pid", result, 3*29);
      return result;
   }
   
   // 3. static within page
   result = pid;
   setCookie("pid", result, 3*29);
   return result;
}

function trackView() {
   var sessionId = getOrCreateSessionCookie();
   var pidToUse = getPid();

   var url = "/view-tracking.cgi?"+
      "session_id=" + escape(sessionId) + "&" +
      "pid=" + escape(pidToUse) + "&" +
      "url=" + escape(chopParams(document.URL));

   loadXMLDoc("/cgi-bin" + url);
   loadXMLDoc("/cgi-local" + url);
}

trackView();
