usfedgov_google_analytics-8.x-1.2/js/8.0.0/Universal-Federated-Analytics.js

js/8.0.0/Universal-Federated-Analytics.js
/*
            .ooooo.        oooooooo
           d88" `88b      888    P88
           888            o888oo888
           888            888
           `"88888"       888
                                  
***********************************************************************************************************
Copyright 2024 by Cardinal Path.
Dual Tracking Federated Analytics: Google Analytics Government Wide Site Usage Measurement.
Author: Ahmed Awwad
24/06/2024 Version: 8
***********************************************************************************************************/
var tObjectCheck,
  _allowedQuerystrings = [],
  isSearch = false,
  oCONFIG = {
    GWT_GA4ID: ["G-CSLL4ZEK4L"],
    FORCE_SSL: !0,
    ANONYMIZE_IP: !0,
    AGENCY: "",
    SUB_AGENCY: "",
    VERSION: "20240624 v8 - GA4",
    SITE_TOPIC: "",
    SITE_PLATFORM: "",
    SCRIPT_SOURCE: "",
    URL_PROTOCOL: location.protocol,
    USE_MAIN_CUSTOM_DIMENSIONS: !0,
    MAIN_AGENCY_DIMENSION: "agency",
    MAIN_SUBAGENCY_DIMENSION: "subagency",
    MAIN_CODEVERSION_DIMENSION: "version",
    MAIN_SITE_TOPIC_DIMENSION: "site_topic",
    MAIN_SITE_PLATFORM_DIMENSION: "site_platform",
    MAIN_SCRIPT_SOURCE_URL_DIMENSION: "script_source",
    MAIN_URL_PROTOCOL_DIMENSION: "protocol",
    MAIN_INTERACTION_TYPE_DIMENSION: "interaction_type",
    MAIN_USING_PARALLEL_DIMENSION: "using_parallel_tracker",
    USE_PARALLEL_CUSTOM_DIMENSIONS: !1,
    PARALLEL_AGENCY_DIMENSION: "agency",
    PARALLEL_SUBAGENCY_DIMENSION: "subagency",
    PARALLEL_CODEVERSION_DIMENSION: "version",
    PARALLEL_SITE_TOPIC_DIMENSION: "site_topic",
    PARALLEL_SITE_PLATFORM_DIMENSION: "site_platform",
    PARALLEL_SCRIPT_SOURCE_URL_DIMENSION: "script_source",
    PARALLEL_URL_PROTOCOL_DIMENSION: "protocol",
    PARALLEL_INTERACTION_TYPE_DIMENSION: "interaction_type",
    PARALLEL_USING_PARALLEL_DIMENSION: "using_parallel_tracker",
    COOKIE_DOMAIN: location.hostname.replace(/^www\./, "").toLowerCase(),
    COOKIE_TIMEOUT: 63072e3,
    SEARCH_PARAMS: "q|query|nasaInclude|k|querytext|keys|qt|search_input|search|globalSearch|goog|s|gsearch|search_keywords|SearchableText|sp_q|qs|psnetsearch|locate|lookup|search_api_views_fulltext|keywords|request|_3_keywords|searchString",
    YOUTUBE: !1,
    YT_MILESTONE: 25, //accepts 10, 20, and 25
    AUTOTRACKER: !0,
    EXTS: "doc|docx|xls|xlsx|xlsm|ppt|pptx|exe|zip|pdf|js|txt|csv|dxf|dwgd|rfa|rvt|dwfx|dwg|wmv|jpg|msi|7z|gz|tgz|wma|mov|avi|mp3|mp4|csv|mobi|epub|swf|rar",
    SUBDOMAIN_BASED: !0,
    GA4_NAME: "GSA_GA4_ENOR",
    USE_CUSTOM_URL: !1,
    USE_CUSTOM_TITLE: !1,
    USING_PARALLEL_TRACKER: "no",
    ACTIVATE_DEV: !1
  };

  _updateConfig();
  _setEnvironment();

//*********GA4************
var head = document.getElementsByTagName("head").item(0);
var GA4Object = document.createElement("script");
GA4Object.setAttribute("type", "text/javascript");
GA4Object.setAttribute(
  "src",
  "https://www.googletagmanager.com/gtag/js?id=" + oCONFIG.GWT_GA4ID[0]+ "&l=dapDL"
);
head.appendChild(GA4Object);
window.dapDL = window.dapDL || [];
function gtag() {
  dapDL.push(arguments);
}
gtag("js", new Date());
gtag('set', {'cookie_flags': 'SameSite=Strict;Secure', 'transport_type': 'beacon'});
//*********GA4************



function _onEveryPage() {
  _payloadInterceptor();
  _defineCookieDomain();
  _defineAgencyCDsValues();
  _setAllowedQS();
  createTracker();
  
}
_onEveryPage();

function _defineCookieDomain() {
  /(([^.\/]+\.[^.\/]{2,3}\.[^.\/]{2})|(([^.\/]+\.)[^.\/]{2,4}))(\/.*)?$/.test(
    oCONFIG.SUBDOMAIN_BASED.toString()
  )
    ? ((oCONFIG.COOKIE_DOMAIN = oCONFIG.SUBDOMAIN_BASED.toLowerCase().replace(
      /^www\./i,
      ""
    )),
      (oCONFIG.SUBDOMAIN_BASED = !0))
    : !1 === oCONFIG.SUBDOMAIN_BASED
      ? ((oCONFIG.COOKIE_DOMAIN = document.location.hostname.match(
        /(([^.\/]+\.[^.\/]{2,3}\.[^.\/]{2})|(([^.\/]+\.)[^.\/]{2,4}))(\/.*)?$/
      )[1]),
        (oCONFIG.SUBDOMAIN_BASED = !0))
      : ((oCONFIG.COOKIE_DOMAIN = location.hostname
        .toLowerCase()
        .replace(/^www\./i, "")),
        (oCONFIG.SUBDOMAIN_BASED = !1));
}

function _defineAgencyCDsValues() {
  oCONFIG.AGENCY = oCONFIG.AGENCY || "unspecified:" + oCONFIG.COOKIE_DOMAIN;
  oCONFIG.SUB_AGENCY = oCONFIG.SUB_AGENCY || "" + oCONFIG.COOKIE_DOMAIN;
  oCONFIG.SITE_TOPIC =
    oCONFIG.SITE_TOPIC || "unspecified:" + oCONFIG.COOKIE_DOMAIN;
  oCONFIG.SITE_PLATFORM =
    oCONFIG.SITE_PLATFORM || "unspecified:" + oCONFIG.COOKIE_DOMAIN;
}

function _setEnvironment(){
  if (document.location.href.match(/([?&])(dap-dev-env)([^&$]*)/i) || oCONFIG.ACTIVATE_DEV) {
    oCONFIG.GWT_GA4ID[0] = "G-9TNNMGP8WJ"; //Test Digital Analytics Program GA4
  }
}

function _cleanBooleanParam(a) {
  switch (a.toString().toLowerCase()) {
    case "true":
    case "on":
    case "yes":
    case "1":
      return !0;
    case "false":
    case "off":
    case "no":
    case "0":
      return !1;
    default:
      return a;
  }
}

function _isValidGA4Num(a) {
  a = a.toLowerCase();
  a = a.match(/^g\-([0-9a-z])+$/);
  return null !== a && 0 < a.length && a[0] !== oCONFIG.GWT_GA4ID[0].toLowerCase();
}

var d_c=1;
function _cleanGA4Value(t, a) {
  try {
    a = a.replace(/\s/g, '_').replace(/([^\w]+)/g, '').match(/[A-Za-z]\w*$/ig);
    return ((null !== a)? a[0].toLowerCase() : t==="d"? "custom_dimension_"+d_c++ : "dap_event");
  } catch (c) { }
}

function _updateConfig() {
  if ("undefined" !== typeof _fedParmsGTM) {
    var a = _fedParmsGTM.toLowerCase().split("&");
    oCONFIG.SCRIPT_SOURCE = "GTM";
  } else {
    var b = document.getElementById("_fed_an_ua_tag");
    _fullParams = b.src.match(/^([^\?]*)(.*)$/i)[2].replace("?", "");
    a = _fullParams.split("&");
    oCONFIG.SCRIPT_SOURCE = b.src.split("?")[0];
  }
  for (b = 0; b < a.length; b++)
    switch (
    ((_keyValuePair = decodeURIComponent(a[b].toLowerCase())),
      (_key = _keyValuePair.split("=")[0]),
      (_value = _keyValuePair.split("=")[1]),
      _key)
    ) {
       case "pua":
        for (var c = _value.split(","), d = 0; d < c.length; d++)
          _isValidGA4Num(c[d]) && ( oCONFIG.GWT_GA4ID.push(c[d].toUpperCase()), oCONFIG.USING_PARALLEL_TRACKER = "pua" );
        break; 
      case "pga4":
        for (var c = _value.split(","), d = 0; d < c.length; d++)
          _isValidGA4Num(c[d]) && ( oCONFIG.GWT_GA4ID.push(c[d].toUpperCase()), oCONFIG.USING_PARALLEL_TRACKER = "pga4" );
        break;
      case "agency":
        oCONFIG.AGENCY = _value.toUpperCase();
        break;
      case "subagency":
        oCONFIG.SUB_AGENCY = _value.toUpperCase();
        break;
      case "sitetopic":
        oCONFIG.SITE_TOPIC = _value;
        break;
      case "siteplatform":
        oCONFIG.SITE_PLATFORM = _value;
        break;
      case "parallelcd":
        _value = _cleanBooleanParam(_value);
        if (!0 === _value || !1 === _value)
          oCONFIG.USE_PARALLEL_CUSTOM_DIMENSIONS = _value;
        break;
      case "custurl":
        _value = _cleanBooleanParam(_value);
        if (!0 === _value || !1 === _value)
          oCONFIG.USE_CUSTOM_URL = _value;
        break;
      case "custitle":
        _value = _cleanBooleanParam(_value);
        if (!0 === _value || !1 === _value)
          oCONFIG.USE_CUSTOM_TITLE = _value;
        break;
      case "dapdev":
        _value = _cleanBooleanParam(_value);
        if (!0 === _value || !1 === _value)
          oCONFIG.ACTIVATE_DEV = _value;
        break;
      case "palagencydim":
        _value = _cleanGA4Value("d", _value);
        "" !== _value &&
          (oCONFIG.PARALLEL_AGENCY_DIMENSION = _value);
        break;
      case "palsubagencydim":
        _value = _cleanGA4Value("d", _value);
        "" !== _value &&
          (oCONFIG.PARALLEL_SUBAGENCY_DIMENSION = _value);
        break;
      case "palversiondim":
        _value = _cleanGA4Value("d", _value);
        "" !== _value &&
          (oCONFIG.PARALLEL_CODEVERSION_DIMENSION = _value);
        break;
      case "paltopicdim":
        _value = _cleanGA4Value("d", _value);
        "" !== _value &&
          (oCONFIG.PARALLEL_SITE_TOPIC_DIMENSION = _value);
        break;
      case "palplatformdim":
        _value = _cleanGA4Value("d", _value);
        "" !== _value &&
          (oCONFIG.PARALLEL_SITE_PLATFORM_DIMENSION = _value);
        break;
      case "palscriptsrcdim":
        _value = _cleanGA4Value("d", _value);
        "" !== _value &&
          (oCONFIG.PARALLEL_SCRIPT_SOURCE_URL_DIMENSION = _value);
        break;
      case "palurlprotocoldim":
        _value = _cleanGA4Value("d", _value);
        "" !== _value &&
          (oCONFIG.PARALLEL_URL_PROTOCOL_DIMENSION = _value);
        break;
      case "palinteractiontypedim":
        _value = _cleanGA4Value("d", _value);
        "" !== _value &&
          (oCONFIG.PARALLEL_INTERACTION_TYPE_DIMENSION = _value);
        break;
      case "cto":
        oCONFIG.COOKIE_TIMEOUT = parseInt(_value) * 2628000;		// = 60 * 60 * 24 * 30.4166666666667;
        break;
      case "sp":
        oCONFIG.SEARCH_PARAMS += "|" + _value.replace(/,/g, "|");
        break;
      case "exts":
        oCONFIG.EXTS += "|" + _value.replace(/,/g, "|");
        break;
      case "yt":
        _value = _cleanBooleanParam(_value);
        if (!0 === _value || !1 === _value) oCONFIG.YOUTUBE = _value;
        break;
      case "ytm":
        oCONFIG.YT_MILESTONE = ((/^(10|20|25)$/.test(_value) ? parseInt(_value) : 25));
        break;
      case "autotracker":
        _value = _cleanBooleanParam(_value);
        if (!0 === _value || !1 === _value) oCONFIG.AUTOTRACKER = _value;
        break;
      case "sdor":
        oCONFIG.SUBDOMAIN_BASED = _cleanBooleanParam(_value);
        break;
      default:
        break;
    }
}

function _sendEvent(a, b) {
  var send_to = "";
  for (var g = 0; g < oCONFIG.GWT_GA4ID.length; g++) {
    try {
      send_to += oCONFIG.GA4_NAME + g + ",";
    }
    catch (er) { }
  }
  var c = _piiRedactor(_objToQuery(b), "json");
  c = _queryToJSON(c);
  c = _unflattenJSON(c);
  c.send_to = send_to.replace(/.$/, "");
  c.event_name_dimension = a;
  gtag("event", a, c); 
}

function gas4(a, b) {
  if (void 0 !== a && "" !== a && void 0 !== b && 'object' === typeof b) {
    a = _cleanGA4Value("e", a);
      if ("page_view" === a.toLowerCase())
          try {
              if(Object.keys(b).length !== 0){
                var ur = ((b.page_location)? b.page_location: location.href);
                  b.page_location = _URIHandler(_scrubbedURL(ur)).split(/[#]/)[0];
                  b.page_title = ((b.page_title) ? b.page_title : document.title);
                  _sendEvent("page_view", b), ((isSearch)?(_sendViewSearchResult({search_term: isSearch})) : '');
              }
          } catch (n) { }
      else
          try {
            var e_n= ((/((email|telephone|image|cta|navigation|faq|accordion)_)?click|file_download|view_search_results|video_(start|pause|progress|complete|play)|official_USA_site_banner_click|form_(start|submit|progress)|content_view|social_share|error|sort|filter|was_this_helpful_submit/gi.test(a))? a : 'dap_event');
            if(Object.keys(b).length !== 0){_sendEvent(e_n, b);}
            else{_sendEvent(e_n);}
          } catch (n) { }
  }
}

function gas(a, b, c, d, f, e, h) {
  if (
    void 0 !== a &&
    "" !== a &&
    void 0 !== b &&
    "" !== b &&
    void 0 !== c &&
    "" !== c
  )
    if ("pageview" === b.toLowerCase())
      try {
        c = _URIHandler(_scrubbedURL(c)).split(/[#]/)[0];
        _sendEvent("page_view", {page_location : c, page_title: void 0 === d || "" === d ? document.title : d}),
        ((isSearch)? _sendViewSearchResult({search_term : isSearch}) : '' );

      } catch (n) { }
    else if ("event" === b.toLowerCase() && void 0 !== d && "" !== d)
      try {
        var g = !1;
        void 0 !== h &&
          "boolean" === typeof _cleanBooleanParam(h) &&
          (g = _cleanBooleanParam(h));
        _sendEvent("dap_event", {
          event_category: c,
          event_action: d,
          event_label: void 0 === f ? "" : f,
          event_value: void 0 === e || "" === e || isNaN(e) ? 0 : parseInt(e),
          non_interaction: g,
        });
      } catch (n) { }
    else if (-1 != b.toLowerCase().indexOf("dimension"))
      try {
      } catch (n) { }
    else if (-1 != b.toLowerCase().indexOf("metric"))
      try {
       
      } catch (n) { }
}



function _sendViewSearchResult(a) {
  _sendEvent("view_search_results", a), isSearch = !1;
}

function _isExcludedReferrer() {
  if ("" !== document.referrer) {
    var a = document.referrer
      .replace(/https?:\/\//i, "")
      .split("/")[0]
      .replace(/^www\./i, "");
    return oCONFIG.SUBDOMAIN_BASED
      ? -1 != a.indexOf(oCONFIG.COOKIE_DOMAIN)
        ? !0
        : !1
      : a === oCONFIG.COOKIE_DOMAIN
        ? !0
        : !1;
  }
}

function createTracker(a) {
  var m, n, o = /^\/.*$/i;
  try { m = ((oCONFIG.USE_CUSTOM_URL && o.test(custom_dap_data.url)) ? location.protocol + "//" + location.hostname + custom_dap_data.url.replace(location.protocol + "//" + location.hostname, "") : document.location.href); n = ((oCONFIG.USE_CUSTOM_TITLE) ? custom_dap_data.title : document.title); } catch (error) { m = document.location.href; n = document.title; }
  var c = m.split(document.location.hostname)[1];
  -1 !== document.title.search(/404|not found/i) && 
  (c = ("/vpv404/" + c).replace(/\/\//g, "/") + ((document.referrer) ? "/" + document.referrer : document.referrer));
  var p = ((-1 !== document.title.search(/404|not found/ig))? document.location.protocol + "//" + document.location.hostname + c : m);
  var ur = _URIHandler(_scrubbedURL(p)); 
  var r =  {};
  for (var b = 0; b < oCONFIG.GWT_GA4ID.length; b++) {
    if (b === 0) {
      r = {
        groups: oCONFIG.GA4_NAME + b,
        cookie_expires: parseInt(oCONFIG.COOKIE_TIMEOUT),
        //ignore_referrer: (_isExcludedReferrer() ? true : false),
        page_location: ur,
        page_title: n,
        [oCONFIG.MAIN_AGENCY_DIMENSION]: oCONFIG.AGENCY.toUpperCase(),
        [oCONFIG.MAIN_SUBAGENCY_DIMENSION]: oCONFIG.SUB_AGENCY.toUpperCase(),
        [oCONFIG.MAIN_SITE_TOPIC_DIMENSION]: oCONFIG.SITE_TOPIC.toLowerCase(),
        [oCONFIG.MAIN_SITE_PLATFORM_DIMENSION]: oCONFIG.SITE_PLATFORM.toLowerCase(),
        [oCONFIG.MAIN_SCRIPT_SOURCE_URL_DIMENSION]: oCONFIG.SCRIPT_SOURCE.toLowerCase(),
        [oCONFIG.MAIN_CODEVERSION_DIMENSION]: oCONFIG.VERSION.toLowerCase(),
        [oCONFIG.MAIN_URL_PROTOCOL_DIMENSION]: oCONFIG.URL_PROTOCOL.toLowerCase(),
        [oCONFIG.MAIN_USING_PARALLEL_DIMENSION]: oCONFIG.USING_PARALLEL_TRACKER.toLowerCase()
      };
      ((document.referrer && -1 !== document.referrer.search(location.hostname))? (r.page_referrer = _scrubbedURL(document.referrer)) : document.referrer);
      var rr = _piiRedactor(_objToQuery(r), "default");
      rr = _queryToJSON(rr);
      rr = _unflattenJSON(rr);
      gtag("config", oCONFIG.GWT_GA4ID[b], rr);
    }
    else if (b > 0 && oCONFIG.USE_PARALLEL_CUSTOM_DIMENSIONS) {
      r = {
        groups: oCONFIG.GA4_NAME + b,
        cookie_expires: parseInt(oCONFIG.COOKIE_TIMEOUT),
        //ignore_referrer: (_isExcludedReferrer() ? true : false),
        page_location: ur,
        page_title: n,
        [oCONFIG.PARALLEL_AGENCY_DIMENSION]: oCONFIG.AGENCY.toUpperCase(),
        [oCONFIG.PARALLEL_SUBAGENCY_DIMENSION]: oCONFIG.SUB_AGENCY.toUpperCase(),
        [oCONFIG.PARALLEL_SITE_TOPIC_DIMENSION]: oCONFIG.SITE_TOPIC.toLowerCase(),
        [oCONFIG.PARALLEL_SITE_PLATFORM_DIMENSION]: oCONFIG.SITE_PLATFORM.toLowerCase(),
        [oCONFIG.PARALLEL_SCRIPT_SOURCE_URL_DIMENSION]: oCONFIG.SCRIPT_SOURCE.toLowerCase(),
        [oCONFIG.PARALLEL_CODEVERSION_DIMENSION]: oCONFIG.VERSION.toLowerCase(),
        [oCONFIG.PARALLEL_URL_PROTOCOL_DIMENSION]: oCONFIG.URL_PROTOCOL.toLowerCase(),
        [oCONFIG.PARALLEL_USING_PARALLEL_DIMENSION]: oCONFIG.USING_PARALLEL_TRACKER.toLowerCase()
      };
      ((document.referrer && -1 !== document.referrer.search(location.hostname))? (r.page_referrer = _scrubbedURL(document.referrer)) : document.referrer);
      var rr = _piiRedactor(_objToQuery(r), "default");
      rr = _queryToJSON(rr);
      rr = _unflattenJSON(rr);
      gtag("config", oCONFIG.GWT_GA4ID[b], rr);
    }
    else {
      r =  {
        groups: oCONFIG.GA4_NAME + b,
        cookie_expires: parseInt(oCONFIG.COOKIE_TIMEOUT),
        //ignore_referrer: (_isExcludedReferrer() ? true : false),
        page_location: ur,
        page_title: n
      };
      ((document.referrer && -1 !== document.referrer.search(location.hostname))? (r.page_referrer = _scrubbedURL(document.referrer)) : document.referrer);
      var rr = _piiRedactor(_objToQuery(r), "default");
      rr = _queryToJSON(rr);
      rr = _unflattenJSON(rr);
      gtag("config", oCONFIG.GWT_GA4ID[b], rr);
    }
  }
  ((isSearch)? _sendViewSearchResult({search_term: isSearch}) : "");
  //window.fetch = wf;
}

function _initAutoTracker() {
  var _isDownload = function (a) {
    var ex = a.href.toLowerCase().replace(/[#?&].*/, '').split(a.hostname)[1].split("."); var ext = ex[ex.length - 1];
    if (ext.match(new RegExp("^(" + oCONFIG.EXTS + ")$")) != null) {
      return ext;
    }
    else {
      return false;
    }
  };
  var _enforeLower = function (j) {
    try {
      var d = JSON.stringify(j);
      return JSON.parse(d.toLowerCase());
    } catch (error) { }
  };

  var _eventHandler = function (event) {
    try {
      if ("mousedown" === event.type || ("keydown" === event.type && 13 === event.keyCode)) {
        if (event.target.nodeName === 'A' || event.target.closest('a') !== null) {
          var b = oCONFIG.COOKIE_DOMAIN, c = "";
          var d = "",
            f = "",
            e = /^mailto:[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}/i,
            h =
              /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/i,
            i = "",
            t = "",
            l = {},
            g = /^(tel:)(.*)$/i;
          var a = event.target.closest('a');
          if ("mousedown" === event.type) {
            t = "Mouse Click";
          }
          else if ("keydown" === event.type && 13 === event.keyCode) {
            t = "Enter Key Keystroke";
          }

          if (e.test(a.href) || h.test(a.href) || g.test(a.href)) {
            try {
              h.test(a.href)
                ? ((f = a.hostname.toLowerCase().replace(/^www\./i, "")), (i = "l"))
                : e.test(a.href)
                  ? ((f = a.href.split("@")[1].toLowerCase()), (i = "m"))
                  : g.test(a.href) && ((f = a.href), (f = f.toLowerCase()), (i = "t"));
            } catch (k) {
              //continue;
            }
          }

          if (oCONFIG.SUBDOMAIN_BASED ? -1 !== f.indexOf(b) : f === b) {
            if ("m" === i) {
              c = a.href.match(/[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}/);
              l = { link_id: a.id, link_url: c[0], link_domain: c[0].split("@")[1], link_text: a.text.replace(/(?:[\r\n]+)+/g, "").trim(), link_classes: a.className, interaction_type: t };
              _sendEvent("email_click", _enforeLower(l));
            }
            /*else if("t"===i){
              l = {link_id: a.id, link_url: a.href.split("tel:")[1], link_text: a.text.replace(/(?:[\r\n]+)+/g, "").trim(), link_classes: a.className, interaction_type: t};
              _sendEvent("telephone_click", l);
            }*/
            else {
              if ("l" === i && _isDownload(a)) {
                c = a.pathname.split(/[#?&?]/)[0];
                d = _isDownload(a);
                l = { file_name: c, file_extension: d, link_text: a.text.replace(/(?:[\r\n]+)+/g, "").trim(), link_id: a.id, link_url: a.href.replace(/[#?&].*/, ""), link_domain: a.hostname.replace(/^www\./i, ""), interaction_type: t };
                _sendEvent("file_download", _enforeLower(l));
              }
              else if ("l" === i && !_isDownload(a)) {
                //internal link tracking; 
                /*c = a.closest('section'); var s_n = (('object' === typeof c)? (c.id? c.id : c.className) : '');
                l = { link_id: a.id, link_url: a.href, link_domain: a.hostname.replace(/^www\./i, ""), link_text: a.text.replace(/(?:[\r\n]+)+/g, "").trim(), link_classes: a.className, interaction_type: t, section:  s_n, menu_type: 'all' };
                _sendEvent("navigation_click", _enforeLower(l));*/
              }
            }
          }
          else {
            if ("l" === i && _isDownload(a)) {
              c = a.pathname.split(/[#?&?]/)[0];
              d = _isDownload(a);
              l = { file_name: c, file_extension: d, link_text: a.text.replace(/(?:[\r\n]+)+/g, "").trim(), link_id: a.id, link_url: a.href.replace(/[#?&].*/, ""), link_domain: a.hostname.replace(/^www\./i, ""), outbound: true, interaction_type: t };
              _sendEvent("file_download", _enforeLower(l));
            }
            else if ("l" === i && !_isDownload(a)) {
              l = { link_id: a.id, link_url: a.href.replace(/[#?&].*/, ""), link_domain: a.hostname.replace(/^www\./i, ""), link_text: a.text.replace(/(?:[\r\n]+)+/g, "").trim(), link_classes: a.className, outbound: true, interaction_type: t };
              _sendEvent("click", _enforeLower(l));
            }
            else if ("m" === i) {
              c = a.href.match(/[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}/);
              l = { link_id: a.id, link_url: c[0], link_domain: c[0].split("@")[1], link_text: a.text.replace(/(?:[\r\n]+)+/g, "").trim(), link_classes: a.className, outbound: true, interaction_type: t };
              _sendEvent("email_click", _enforeLower(l));
            }
            else if ("t" === i) {
              l = { link_id: a.id, link_url: a.href.split("tel:")[1], link_text: a.text.replace(/(?:[\r\n]+)+/g, "").trim(), link_classes: a.className, interaction_type: t };
              _sendEvent("telephone_click", _enforeLower(l));
            }
          }
        }
      }

    } catch (error) {

    }
  };

  (document.addEventListener ? document.addEventListener("mousedown", _eventHandler, false) : (document.attachEvent && document.attachEvent("onmousedown", _eventHandler)));
  (document.addEventListener ? document.addEventListener("keydown", _eventHandler, false) : (document.attachEvent && document.attachEvent("onkeydown", _eventHandler)));
}

// START YT TRACKER //
if (oCONFIG.YOUTUBE) {
  var tag = document.createElement('script');
  tag.src = "https://www.youtube.com/iframe_api";
  var firstScriptTag = document.getElementsByTagName('script')[0];
  firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
  var videoArray = [];
  var playerArray = [];
  var _buckets = [];

  var _milestoneController = oCONFIG.YT_MILESTONE; /* accepted values 10, 20 or 25 */
  var ytUtils = [];


  onYouTubeIframeAPIReady = function () {
    for (var i = 0; i < videoArray.length; i++) {
      playerArray[i] = new YT.Player(videoArray[i], {
        events: {
          'onReady': onPlayerReady,
          'onStateChange': onPlayerStateChange,
          'onError': onPlayerError
        }
      });
    }
  };
  onPlayerReady = function (event) { };
  onPlayerError = function (event) {
    _sendEvent('video_error', { videotitle: ((event.target.playerInfo !== undefined) ? event.target.playerInfo.videoData.title : event.target.getVideoData().title) });
  };
  
  onPlayerStateChange = function (event) {
    try {
      var videoIndex = 0, video_id = ((event.target.playerInfo !== undefined) ? event.target.playerInfo.videoData.video_id : event.target.getVideoData().video_id);
      for (var o = 0; o < videoArray.length; o++) {
        if (videoArray[o] == video_id) {
          videoIndex = o;
        }
      }
      var cTime = ((playerArray[videoIndex].playerInfo !== undefined) ? Math.round(playerArray[videoIndex].playerInfo.currentTime) : Math.round(playerArray[videoIndex].getCurrentTime()));
      var vDuration = ((playerArray[videoIndex].playerInfo !== undefined) ? Math.round(playerArray[videoIndex].playerInfo.duration) : Math.round(playerArray[videoIndex].getDuration()));
      var p = {
        video_current_time: cTime,
        video_duration: vDuration,
        video_percent: ((cTime / vDuration) * 100).toFixed(),
        video_provider: "youtube",
        video_title: ((playerArray[videoIndex].playerInfo !== undefined) ? playerArray[videoIndex].playerInfo.videoData.title : playerArray[videoIndex].getVideoData().title),
        video_id: ((playerArray[videoIndex].playerInfo !== undefined) ? playerArray[videoIndex].playerInfo.videoData.video_id : playerArray[videoIndex].getVideoData().video_id),
        video_url: ((playerArray[videoIndex].playerInfo !== undefined) ? playerArray[videoIndex].playerInfo.videoUrl : playerArray[videoIndex].getVideoUrl())
      };
      if (event.data == YT.PlayerState.PLAYING && p.video_percent == 0) {
        _sendEvent('video_start', p);
        cCi = 0;
        if (_milestoneController) {
          ytUtils.push([videoIndex, function (videx) {
            for (var b = 1; b <= (100 / _milestoneController); b++) {
              ((100 / _milestoneController === 4 && b === 100 / _milestoneController) ? _buckets[b - 1] = { id: videoIndex, milestone: 95, triggered: false } : ((_milestoneController * b !== 100) ? _buckets[b - 1] = { id: videoIndex,  milestone: _milestoneController * b, triggered: false } : ''));
            }
            setInterval(function () {
              var cTimeP = ((playerArray[videoIndex].playerInfo !== undefined) ? Math.round(playerArray[videoIndex].playerInfo.currentTime) : Math.round(playerArray[videoIndex].getCurrentTime()));
              var vDurationP = ((playerArray[videoIndex].playerInfo !== undefined) ? Math.round(playerArray[videoIndex].playerInfo.duration) : Math.round(playerArray[videoIndex].getDuration()));
              var y = {
                video_current_time: cTimeP,
                video_duration: vDurationP,
                video_percent: ((cTimeP / vDurationP) * 100).toFixed(),
                video_provider: "youtube",
                video_title: ((playerArray[videoIndex].playerInfo !== undefined) ? playerArray[videoIndex].playerInfo.videoData.title : playerArray[videoIndex].getVideoData().title),
                video_id: ((playerArray[videoIndex].playerInfo !== undefined) ? playerArray[videoIndex].playerInfo.videoData.video_id : playerArray[videoIndex].getVideoData().video_id),
                video_url: ((playerArray[videoIndex].playerInfo !== undefined) ? playerArray[videoIndex].playerInfo.videoUrl : playerArray[videoIndex].getVideoUrl())
              };
              if (y.video_percent <= _buckets[_buckets.length - 1] && cCi < _buckets.length) {
                if (y.video_percent >= _buckets[cCi].milestone && !_buckets[cCi].triggered && _buckets[videoIndex].id === videoIndex) {
                  _buckets[cCi].triggered = true; y.video_percent = _buckets[cCi].milestone; y.video_current_time = Math.round((y.video_duration / _buckets.length) * (cCi + 1)); _sendEvent("video_progress", y); cCi++;
                }
              }
            }, ((playerArray[videoIndex].playerInfo !== undefined) ? Math.round(playerArray[videoIndex].playerInfo.duration) : Math.round(playerArray[videoIndex].getDuration())) / _buckets.length);
          }]);
          ytUtils[ytUtils.length - 1][1](videoIndex);
        }
      }
      else if (event.data == YT.PlayerState.PLAYING) { _sendEvent("video_play", p); }
      if (event.data == YT.PlayerState.ENDED) { _sendEvent("video_complete", p); }
      if (event.data == YT.PlayerState.PAUSED) { _sendEvent("video_pause", p); }

    } catch (error) {

    }

  };
  youtube_parser = function (e) { var t = e.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/); if (t && 11 == t[2].length) return t[2] };
  IsYouTube = function (u) { var e = u.match(/(.*)(youtu\.be\/|youtube(\-nocookie)?\.([A-Za-z]{2,4}|[A-Za-z]{2,3}\.[A-Za-z]{2})\/)(watch|embed\/|vi?\/)?(\?vi?=)?([^#&\?\/]{11}).*/); return null != e && e.length > 0 };
  YTUrlHandler = function (t) { return t = t.replace(/origin\=(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})\&?/gi, "origin=" + document.location.protocol + "//" + document.location.host), stAdd = "", adFlag = !1, -1 == t.indexOf("https") && (t = t.replace("http", "https")), -1 == t.indexOf("?") && (stAdd = "?flag=1"), -1 == t.indexOf("enablejsapi") && (stAdd += "&enablejsapi=1", adFlag = !0), -1 == t.indexOf("origin") && (stAdd += "&origin=" + document.location.protocol + "//" + document.location.host, adFlag = !0), 1 == adFlag ? t + stAdd : t };
  _initYouTubeTracker = function () {
    var i = 0;
    var allIframes = document.getElementsByTagName('iframe');
    for (var iframe = 0; iframe < allIframes.length; iframe++) {
      var video = allIframes[iframe];
      var _thisSrc = video.src;
      if (IsYouTube(_thisSrc)) {
        allIframes[iframe].src = YTUrlHandler(_thisSrc);
        var youtubeid = youtube_parser(_thisSrc);
        videoArray[i] = youtubeid;
        allIframes[iframe].setAttribute('id', youtubeid);
        i++;
      }
    }
  };
}
// END YT TRACKER //

// GA4 Payload Interceptor
function _payloadInterceptor() {
  window._isRedacted = window._isRedacted || false;
  if (!window._isRedacted) {
    window._isRedacted = !0;
    try {
      var pl = window.navigator.sendBeacon;
      var ga4_props = oCONFIG.GWT_GA4ID.join("|");
      window.navigator.sendBeacon = function () {
        if (arguments && arguments[0].match(/google-analytics\.com.*v\=2\&/i) && arguments[0].match(new RegExp(ga4_props))) {
          var endpoint = arguments[0].split('?')[0], query = arguments[0].split('?')[1];
          var beacon = {
            endpoint: endpoint, query: _piiRedactor(query, "ga4"), events: []
          };
          if (arguments[1]) {
            arguments[1].split("\r\n").forEach(function (event) {
              beacon.events.push(_piiRedactor(event, "ga4"));
            });
          }
          arguments[0] = [beacon.endpoint, beacon.query].join('?');
          if (arguments[1] && beacon.events.length > 0) {
            beacon.events.join("\r\n");
            arguments[1] = beacon.events.join("\r\n");
          }
        }
        return pl.apply(this, arguments);
      };
    } catch (e) { return pl.apply(this, arguments); }
  }
}
// End GA4 Payload Interceptor

function _unflattenJSON(data) {
  try {
    if (Object(data) !== data || Array.isArray(data))
      return data;
    var result = {}, cur, prop, idx, last, temp;
    for (var p in data) {
      cur = result, prop = "", last = 0;
      do {
        idx = p.indexOf(".", last);
        temp = p.substring(last, idx !== -1 ? idx : undefined);
        cur = cur[prop] || (cur[prop] = (!isNaN(parseInt(temp)) ? [] : {}));
        prop = temp;
        last = idx + 1;
      } while (idx >= 0);
      cur[prop] = data[p];
    }
    return result[""];

  } catch (error) {
  }
}
function _flattenJSON(data) {
  try {
    var result = {};
    function recurse(cur, prop) {
      if (Object(cur) !== cur) {
        result[prop] = cur;
      } else if (Array.isArray(cur)) {
        for (var i = 0, l = cur.length; i < l; i++)
          recurse(cur[i], prop ? prop + "." + i : "" + i);
        if (l == 0)
          result[prop] = [];
      } else {
        var isEmpty = true;
        for (var p in cur) {
          isEmpty = false;
          recurse(cur[p], prop ? prop + "." + p : p);
        }
        if (isEmpty)
          result[prop] = {};
      }
    }
    recurse(data, "");
    return result;
  } catch (error) {
  }
}

function _objToQuery(obj) {
  return Object.keys(obj).reduce(function (str, key, i) {
    var delimiter, val;
    delimiter = (i === 0) ? '' : '&';
    key = encodeURIComponent(key);
    val = encodeURIComponent(obj[key]);
    return [str, delimiter, key, '=', val].join('');
  }, '');
}
function _queryToJSON(qs) {
  var pairs = qs.split('&');
  var result = {};
  pairs.forEach(function(p) {
      var pair = p.split('=');
      var key = pair[0];
      var value = decodeURIComponent(pair[1] || '');

      if( result[key] ) {
          if( Object.prototype.toString.call( result[key] ) === '[object Array]' ) {
              result[key].push( value );
          } else {
              result[key] = [ result[key], value ];
          }
      } else {
          result[key] = value;
      }
  });

  return JSON.parse(JSON.stringify(result));
};

var piiRegex = [];
function _piiRegexReset() {
  window.piiRegex = [{
    name: 'EMAIL',
    regex: /[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}/gi
  }, {
    name: 'TEL',
    regex: /((tel|(tele)?phone|mob(ile)?|cell(ular)?)\=)?((\+\d{1,2}[\s\.\-]?)?\d{3}[\s\.\-]\d{3}[\s\.\-]\d{4})([^\&\s\?\/]*)/gi
  }, {
    name: 'SSN',
    regex: /((full)?(([\-\_])?)?ssn\=)?(\d{3}([\s\.\-\+]|%20)\d{2}([\s\.\-\+]|%20)\d{4})([^\&\s\?\/]*)/ig
  }, {
    name: 'NAME',
    regex: /((first|last|middle|sur|f|l|user)([\-\_])?)?name\=([^\&\s\?\/]*)/ig
  }, {
    name: 'PASSWORD',
    regex: /(((confirm([\-\_])?)?password)|passwd|pwd)\=([^\&\s\?\/]*)/ig
  }, {
    name: 'ZIP',
    regex: /(post(al)?[\s]?code|zip[\s]?code|zip)\=([^\&\s\?\/]*)/gi
  }, {
    name: 'ADDRESS',
    regex: /add(ress)?([1-2])?\=([^\&\s\?\/]*)/ig
  }];
}

// Payload Redactor
function _piiRedactor(payload, type) {
  try {
    var checkParams = "dl|dr|dt|dt|en|ep.|up.|uid";
    var UncheckParams = "ep.agency||ep.subagency|ep.site_topic|ep.site_platform|ep.script_source|ep.version|ep.protocol";
    payload = (("object" === typeof payload && /json|default/.test(type))? (_flattenJSON(payload), payload = _objToQuery(payload)): payload);
    _piiRegexReset();
  
    var _allowedQs = _allowedQuerystrings.toString().replace(/\,/g, "=|") + "=";
    var _hitPayloadParts = payload.split('&');
    for (var i = 0; i < _hitPayloadParts.length; i++) {
      var newQueryString = '';
      var _param = _hitPayloadParts[i].split('=');
      var _para = (_param.length>2)?_param.slice(1).join("="):_param[1]; _param.splice(2); _param[1]  = _para;
      var _val;
      try {
        _val = decodeURIComponent(decodeURIComponent(_param[1]));
      } catch (e) {
        _val = decodeURIComponent(_param[1]);
      }

      if (( _param[0].match(new RegExp(checkParams)) != null || /query|json/ig.test(type) ) && _val.indexOf('?') > -1) {
        var paramArray = _val.split('?').splice(1).join('&').split('&');
        var paramSubArray = [];
        // loop through the parameters in the search query string to see if there are sub-parameters, and build the paramSubArray
        for (pa = 0; pa < paramArray.length; pa++) {
          // account for sub-parameters within parameters in the URL
          if (paramArray[pa].indexOf('?') > -1) {
            paramSubArray.push(paramArray[pa].split('?')[1]);
          }
        }
        paramArray = paramArray.concat(paramSubArray);
        // Build a new query string out of all allowed parameters
        for (var ix = 0; ix < paramArray.length; ix++) {
          if (paramArray[ix].toLowerCase().match(new RegExp(_allowedQs)) != null) {
            newQueryString += paramArray[ix] + '&';
          }
        }
        _val = _val.replace(/\?.*/, '?' + newQueryString.replace(/\&$/, ''));
      }

      if (type === 'json') {
        window.piiRegex.push(
        {
          name: 'DOB',
          regex: /(((birth)?date|dob)\=)(19|20)\d\d([\s\.\/\-]|%20)(0?[1-9]|1[012])([\s\.\/\-]|%20)(0?[1-9]|[12][0-9]|3[01])([^\&\s\?\/]*)/ig,
          format: 'YYYY-MM-DD'
        }, {
          name: 'DOB',
          regex: /(((birth)?date|dob)\=)(19|20)\d\d([\s\.\/\-]|%20)(0?[1-9]|[12][0-9]|3[01])([\s\.\/\-]|%20)(0?[1-9]|1[012])([^\&\s\?\/]*)/ig,
          format: 'YYYY-DD-MM'
        }, {
          name: 'DOB',
          regex: /(((birth)?date|dob)\=)(0?[1-9]|[12][0-9]|3[01])([\s\.\/\-]|%20)(0?[1-9]|1[012])([\s\.\/\-]|%20)(19|20)\d\d([^\&\s\?\/]*)/ig,
          format: 'DD-MM-YYYY'
        }, {
          name: 'DOB',
          regex: /(((birth)?date|dob)\=)(0?[1-9]|1[012])([\s\.\/\-]|%20)(0?[1-9]|[12][0-9]|3[01])([\s\.\/\-]|%20)(19|20)\d\d([^\&\s\?\/]*)/ig,
          format: 'MM-DD-YYYY'
        });
      }
      else if (type === 'query' || (type === 'json' && /[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/.test(_val))) {
        window.piiRegex.push(
          {
            name: 'TEL',
            regex: /((tel|(tele)?phone|mob(ile)?|cell(ular)?)\=)?((\+\d{1,2}[\s\.\-]?)?\d{3}[\s\.\-]?\d{3}[\s\.\-]?\d{4})([^\&\s\?\/]*)/gi
          }, {
            name: 'SSN',
            regex: /((full)?(([\-\_])?)?ssn\=)?(\d{3}([\s\.\-\+]|%20)?\d{2}([\s\.\-\+]|%20)?\d{4})([^\&\s\?\/]*)/ig
          }, {
          name: 'DOB',
          regex: /(((birth)?date|dob)\=)?(19|20)\d\d([\s\.\/\-]|%20)(0?[1-9]|1[012])([\s\.\/\-]%20)(0?[1-9]|[12][0-9]|3[01])([^\&\s\?\/]*)/ig,
          format: 'YYYY-MM-DD'
        }, {
          name: 'DOB',
          regex: /(((birth)?date|dob)\=)?(19|20)\d\d([\s\.\/\-]|%20)(0?[1-9]|[12][0-9]|3[01])([\s\.\/\-]|%20)(0?[1-9]|1[012])([^\&\s\?\/]*)/ig,
          format: 'YYYY-DD-MM'
        }, {
          name: 'DOB',
          regex: /(((birth)?date|dob)\=)?(0?[1-9]|[12][0-9]|3[01])([\s\.\/\-]|%20)(0?[1-9]|1[012])([\s\.\/\-]|%20)(19|20)\d\d([^\&\s\?\/]*)/ig,
          format: 'DD-MM-YYYY'
        }, {
          name: 'DOB',
          regex: /(((birth)?date|dob)\=)?(0?[1-9]|1[012])([\s\.\/\-]|%20)(0?[1-9]|[12][0-9]|3[01])([\s\.\/\-]%20)(19|20)\d\d([^\&\s\?\/]*)/ig,
          format: 'MM-DD-YYYY'
        });
      }

      if (( _param[0].match(new RegExp(checkParams)) != null && _param[0].match(new RegExp(UncheckParams)) != null ) || /query|json|default/ig.test(type)) {
        piiRegex.forEach(function (pii) {
          _val = _val.replace(pii.regex, '[REDACTED_' + pii.name + ']');
        });
        _param[1] = encodeURIComponent(_val.replace(/\?$/, '')) || _val.replace(/\?$/, '');
        _hitPayloadParts[i] = _param.join('=');
      }
    }
    _piiRegexReset();
    return _hitPayloadParts.join("&");
  } catch (error) {
  }
}
// End Payload Redactor
function _initIdAssigner() {
  for (var a = document.getElementsByTagName("a"), b = 0; b < a.length; b++) {
    var c = a[b].getAttribute("id");
    (null !== c && "" !== c && void 0 !== c) ||
      a[b].setAttribute("id", "anch_" + b);
  }
}

function _initBannerTracker() {
  try {
    var acord = document.querySelector('section.usa-banner button.usa-accordion__button');
    if (acord) {
      acord.addEventListener('click', function (e) {
        gas4("official_usa_site_banner_click", {link_text: e.target.textContent.trim(), section: "header"});
      });
    }

  } catch (error) {

  }
}
// ************ GA4 ************

function _URIHandler(a) {
  var b = new RegExp("([?&])(" + oCONFIG.SEARCH_PARAMS + ")(=[^&]+)", "i");
  b.test(a) && (a = a.replace(b, "$1query$3"), isSearch = a.match(/([?&])(query\=)([^&#?]*)/i)[3] );
  return a;
}

function _scrubbedURL(z) {
  RegExp.escape = function (s) { return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); };
  var n = new RegExp(`^(https?:\\/\\/(www\\.)?)?${RegExp.escape(document.location.hostname.replace(/^www\\./, ""))}`, "ig"),
    t = "",
    o = ((n.test(z)) ? z : document.location.protocol + "//" + document.location.hostname + z).toLowerCase(),
    a = o.split("?")[0],
    r = o.split("?").length > 1
      ? (o
        .split("?")[1]
        .split("&")
        .forEach(function (o, i) {
          _allowedQuerystrings.indexOf(o.split("=")[0]) > -1 && (t = t + "&" + o);
        }),
        t.length > 0 ? a + "?" + _piiRedactor(t.substring(1),"query") : a)
      : a;
  return r;
}

function _setAllowedQS() {
  var queries = {
    "default": ["utm_id", "utm_source", "utm_medium", "utm_campaign", "utm_term", "utm_content", "utm_source_platform", "utm_creative_format", "utm_marketing_tactic", "gbraid", "wbraid", "_gl", "gclid", "dclid", "gclsrc", "affiliate", "dap-dev-env", "v"],
    "gsa": ["challenge", "state"],
    "dhs": ["appreceiptnum"],
    "doc": ["station", "meas", "start", "atlc", "epac", "cpac", "basin", "fdays", "cone", "tswind120", "gm_track", "50wind120", "hwind120", "mltoa34", "swath", "radii", "wsurge", "key_messages", "inundation", "rainqpf", "ero", "gage", "wfo", "spanish_key_messages", "key_messages", "sid", "lan", "office", "pil"],
    "hhs": ["s_cid", "selectedFacets"],
    "hud": ["PostID"],
    "nasa": ["feature", "ProductID", "selectedFacets"],
    "nps": ["gid", "mapid", "site", "webcam", "id"],
    "nsf": ["meas", "start", "atlc", "epac", "cpac", "basin", "fdays", "cone", "tswind120", "gm_track", "50wind120", "hwind120", "mltoa34", "swath", "radii", "wsurge", "key_messages", "inundation", "rainqpf", "ero", "gage", "wfo", "spanish_key_messages", "key_messages", "sid"],
    "va": ["id"],
    "dod": ["p"],
    "opm": ["l", "soc", "jt", "j", "rmi", "smin", "hp", "g", "d", "a"]
  };
  _allowedQuerystrings = queries.default.concat(queries[oCONFIG.AGENCY.toLowerCase()]).concat(oCONFIG.SEARCH_PARAMS.toLowerCase().split("|"));
}

function _setUpTrackers() {
  //createTracker(!1);
  oCONFIG.ENHANCED_LINK ? _initIdAssigner() : "";
  oCONFIG.AUTOTRACKER ? _initAutoTracker() : "";
  oCONFIG.YOUTUBE ? _initYouTubeTracker() : "";
  _initBannerTracker(); 
}

function _setUpTrackersIfReady() {
  return (("interactive" === document.readyState || "complete" === document.readyState) ? (_setUpTrackers(), !0) : !1);
}
_setUpTrackersIfReady() || (document.addEventListener ? document.addEventListener("DOMContentLoaded", _setUpTrackers) : document.attachEvent && document.attachEvent("onreadystatechange", _setUpTrackersIfReady));

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc