
//
// split a url of the form:
//   protocol://hostname:port/pathname?search#anchor
// into the following components
//   [0] protocol
//   [1] hostname
//   [2] port
//   [3] pathname
//   [4] search
//   [5] anchor
//
function bmzURLSplit(fullUrl) {
  var urlParts = new Array();
  urlParts[0] = urlParts[1] = urlParts[2] = urlParts[3] = urlParts[4] = urlParts[5] = "";

  var r = fullUrl;
  var p = r.indexOf('://');
  if (p >= 0) {
    // protocol
    urlParts[0] = r.substring(0, p);
    r = r.substring(p + 3, r.length);

    if (((p = r.indexOf('/')) >= 0) || ((p = r.indexOf('?')) >= 0) || ((p = r.indexOf('#')) >= 0) || ((p = r.length) >= 0)) {

      hp = r.substring(0, p);
      var pi = hp.indexOf(':');
      if (pi < 0) {
        // hostname
        urlParts[1] = hp;
      }
      else {
        // hostname
        urlParts[1] = hp.substring(0,pi);
        // port
        urlParts[2] = hp.substring(pi + 1, hp.length);
      }

      if (p != r.length) {
        var c = r.charAt(p);
        r = r.substring(p + 1, r.length);

        if (c == '/') {
          if (((p = r.indexOf('?')) >= 0) || ((p = r.indexOf('#')) >= 0) || ((p = r.length) >= 0)) {
            // pathname
            urlParts[3] = r.substring(0,p);
          }
          if (p == r.length) {
            r = "";
            c = "";
          }
          else {
            c = r.charAt(p);
            r = r.substring(p + 1, r.length);
          }
        }

        if (c == '?') {
          if (((p = r.indexOf('#')) >= 0) || ((p = r.length) >= 0)) {
            // search
            urlParts[4] = r.substring(0,p);
          }
          if (p == r.length) {
            r = "";
            c = "";
          }
          else {
            c = r.charAt(p);
            r = r.substring(p + 1, r.length);
          }
        }

        if (c == '#') {
          // search
          urlParts[5] = r;
        }
      }
    }
  }

  return urlParts;
}

//
// trim a string of leading/trailing whitespace
//
function bmzTrim(s) {

  var r = s;
  var c, l;
  while ((l = r.length) > 0 && (c = r.charAt(0)) == ' ' || c == '\t')
    r = r.substring(1, l);
  while ((l = r.length) > 0 && (c = r.charAt(l - 1)) == ' ' || c == '\t')
    r = r.substring(0, l - 1);

  return r;
}

//
// bmzSEPhrase
//
// figure out which search engine (if any) that a query comes from
//
// returns and Array(2) of the form
//  [0] name of search engine
//  [1] the search phrase used
//
var _bmzEngines = [
 "googlesyndication",	"url",
 "google",		"q",
 "mail.yahoo",		"box",
 "yahoo",		"p",
 "msn",			"q",
 "aol",			"query",
 "lycos",		"query",
 "ask",			"q",
 "altavista",		"q",,
 "search",		"q",
 "netscape",		"query",
 "earthlink",		"q",
 "cnn",			"query",
 "looksmart",		"key",
 "about",		"terms",
 "excite",		"qkw",
 "overture",		"Keywords",
 "mamma",		"query",
 "alltheweb",		"q",
 "allthebrands",	"q",
 "gigablast",		"q",
 "voila",		"kw",
 "virgilio",		"qs",
 "teoma",		"q",
 "comcast",		"query",
 "att",			"qry"
];

function bmzSEPhrase(u) {
  var r = new Array();
  r[0] = r[1] = "";

  var s = bmzURLSplit(u);
  var hostname = s[1];
  var query = s[4];

  for (var i = 0; i < _bmzEngines.length; i += 2) {
    if (hostname.indexOf(_bmzEngines[i]) >= 0) {
      r[0] = _bmzEngines[i];
      if ((p = query.indexOf(_bmzEngines[i + 1] + '=')) == 0)
        p += (_bmzEngines[i + 1].length + 1);
      else if ((p = query.indexOf('&' + _bmzEngines[i + 1] + '=')) >= 0)
        p += (_bmzEngines[i + 1].length + 2);

      if (p >= 0) {
        var e = query.indexOf('&', p);
        if (e < 0)
          e = query.length;
        r[1] = query.substring(p, e);
      }
      return r;
    }
  }

  return r;
}

//
// bmzWhichBrowser
//
// figure out which browser is being used
//

var _bmzBrowsers = [
 "msie",
 "firefox",
 "netscape",
 "safari",
 "konqueror",
 "camino",
 "gecko",
 "mozilla"
];

function bmzWhichBrowser(userAgent) {
  var ua = userAgent.toLowerCase();
  var b;

  for (var i = 0; i < _bmzBrowsers.length; i++) {
    if ((b = ua.indexOf(_bmzBrowsers[i])) >= 0) {
      var e;
      var w = ((e = ua.indexOf(';', b)) >= 0) || ((e = ua.indexOf(' ', b)) >= 0) || ((e = ua.length) >= 0);
      if (w) {
        if (i == 0 && e != ua.length && ua.charAt(e) != ';') {  // MSIE
          var e2;
          var w = ((e2 = ua.indexOf(';', e + 1)) >= 0) || ((e2 = us.indexOf(' ', e + 1)) >= 0) || ((e2 = us.length) >= 0);
          if (w)
            return bmzTrim(userAgent.substring(b, e2));
        }
        else
          return bmzTrim(userAgent.substring(b, e));
      }
    }
  }

  return "";
}


//
// bmzTrackingID
//
// figure out what the tracking ID is.
//
function bmzTrackingID(srch) {
  var prefix = (_bmzTrackingPrefixOverride == null || _bmzTrackingPrefixOverride == "") ? 'bmztid' : _bmzTrackingPrefixOverride;

  var b, e;
  if ((b = srch.indexOf(prefix + '=')) == 0)
    b += (prefix.length + 1);
  else if ((b = srch.indexOf('&' + prefix + '=')) >= 0)
    b += (prefix.length + 2);
  if (b >= 0) {
    if ((e = srch.indexOf('&', b)) < 0)
      e = srch.length;
    return srch.substring(b, e);
  }

  return "";
}


//
// bmzTrack
//
// Main tracking function
//
function bmzTrack() {
  window.onerror = function() { return true; }

  var clickID, campaignID;
  if ((clickID = bmzGetCookie('bmzclickid')) == null) {
    clickID = '000046930170-b2fd';
    bmzSetCookie('bmzclickid', clickID);
  }
  if ((campaignID = bmzGetCookie('bmzcampaignid')) == null) {
    campaignID = '00000008-6f9e';
    bmzSetCookie('bmzcampaignid', campaignID);
  }

  var ourUrl = '' + top.document.URL;
  var ourReferrer = '' + top.document.referrer;
  var ourUserAgent = '' + top.navigator.userAgent;

  /* not for referrals from same domain */
  var ourl = bmzURLSplit(ourUrl);
  var rurl = bmzURLSplit(ourReferrer);
  if (ourl[1] != rurl[1]) {
    var SEP = bmzSEPhrase(ourReferrer);
    if (ourReferrer.length == 0) {
      SEP[0] = "none";
    }
    else if (SEP[0] == "") {
      SEP[0] = "unknown";
      SEP[1] = ourReferrer;
    }
    var ua = bmzWhichBrowser(ourUserAgent);
    if (ua == "") ua = ourUserAgent;

    var bmImg = new Image();
    bmImg.src = 'http://tracking.bidmizer.com/track/bmtrack.gif?bmzcampaignid=00000008-6f9e&bmzclickid=000046930170-b2fd&bmztrackingid=' + bmzTrackingID(ourl[4]) + '&bmztag=homepage&bmzurl=' + escape(ourUrl) + '&bmzreferrer=' + escape(SEP[0] + ':' + SEP[1]) + '&bmzuseragent=' + escape(ua);
  }

}

function bmzSetCookie(name,value) {
  document.cookie = name + '=' + escape(value) + '; version=1; path=; expires=Thu, 31-Dec-2019 12:00:00 GMT';
}

function bmzGetCookie(name) {
  var c = document.cookie;
  var b = c.indexOf(name + '=');
  if (b < 0) return null;
  b += (name.length + 1);
  var e = c.indexOf(';', b);
  if (e < 0) e = c.length;
  return unescape(c.substring(b, e));
}

bmzTrack();

