var _gaq = _gaq || [];
function BGoogleAnalytics(trackingId, langCode, navigpath) {
  var actualUrl = document.location.pathname+document.location.search+document.location.hash;

  this.actualUrl = actualUrl;
  this.trackingId = trackingId;
  this.langCode = langCode;
  this.navigpath = mapOldNavigPaths(navigpath);

  _gaq.push(['_setAccount', trackingId]);
  _gaq.push(['_gat._anonymizeIp']);
  
  function log(msg) {
    if (false && console) {
      console.log(msg);
    }
  }
  this.log = log;

  function getTrackerUrl(pathOrHref) {
    // contains navig info already
    if (pathOrHref.indexOf("navig=") != -1) {
      return pathOrHref;
    }

    if (pathOrHref.indexOf("?") != -1) {
      if((this.navigpath!=undefined) && (this.navigpath!="")){
        return pathOrHref + "&navig=" + this.navigpath;
      }
    } else {
      if((this.navigpath!=undefined) && (this.navigpath!="")){
        return pathOrHref + "?navig=" + this.navigpath;
      }
    }
    return pathOrHref;
  }
  this.getTrackerUrl = getTrackerUrl;

  function track(pathOrHref) {
    var trackerUrl = "";
    if (this.trackingId) {
      if (this.langCode) {
        _gaq.push(['_setCustomVar',
                   1,                   // This custom var is set to slot #1.  Required parameter.
                   'LANG',              // The name acts as a kind of category for the user activity.  Required parameter.
                   langCode,            // This value of the custom variable.  Required parameter.
                   3                    // 1 (visitor-level), 2 (session-level), or 3 (page-level).  Optional parameter.
                ]);
      }

      if (pathOrHref) {
        trackerUrl = pathOrHref;
        _gaq.push(['_trackPageview',trackerUrl]);
      } else {
        trackerUrl = this.actualUrl;
        _gaq.push(['_trackPageview']);
      }

      
      log("pathOrHref[" + pathOrHref + "]  trackerUrl(" + trackerUrl
          + ") trackingId[" + trackingId + "] langCode[" + langCode
          + "] mode[ga.js async] this.actualUrl["
          + this.actualUrl + "]");

    } else {
      log("ERROR: no trackingId");
    }
  }
  this.track = track;

  function mapOldNavigPaths(s) {
    if (!s) {
      return "";
    }
    if ("1_1" == s) {
      return "design";
    }
    if ("1_2" == s) {
      return "manufacturers";
    }
    if ("1_3" == s) {
      return "designers";
    }
    if ("1_4" == s) {
      return "about";
    }
    if ("1_5" == s) {
      return "news";
    }
    if ("1_6" == s) {
      return "materials";
    }
    return s;
  }
}

