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

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

  this.gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
  this.pageTracker = _gat._getTracker(trackingId);
  this.pageTracker._initData();

  function log(msg) {
    if (this.console) {
      this.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 (trackingId) {
      if (langCode) {
        this.pageTracker._setVar('LANG ' + langCode);
      }

      if (pathOrHref) {
        trackerUrl = this.getTrackerUrl(pathOrHref)
      } else {
        trackerUrl = this.getTrackerUrl(this.actualUrl)
      }

      this.pageTracker._trackPageview(trackerUrl);
      log("pathOrHref[" + pathOrHref + "]  trackerUrl(" + trackerUrl
          + ") trackingId[" + trackingId + "] langCode[" + langCode
          + "] gaJsHost[" + gaJsHost + "] mode[ga.js] 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;
  }
}
