// Tealium Custom JavaScript Tag - Piwik Pro Injection
// Scope: DOM Ready (Page Level)
// Trigger: All Pages (or configure as needed in Tealium Tag Manager)

(function () {
  "use strict";

  // Avoid duplicate injection if tag fires more than once
  if (window.__piwikProLoaded) return;
  window.__piwikProLoaded = true;

  var dataLayerName = "dataLayer";
  var containerId   = "6f6f05e2-637d-4536-ac1c-effebd6a444c";
  var containerHost = "https://srhs.containers.piwik.pro/";

  // Initialize dataLayer
  window[dataLayerName] = window[dataLayerName] || [];
  window[dataLayerName].push({
    start: (new Date()).getTime(),
    event: "stg.start"
  });

  // Build and inject the Piwik Pro script tag
  var existingScript = document.getElementsByTagName("script")[0];
  var tag = document.createElement("script");

  var queryParams = [];
  if (dataLayerName !== "dataLayer") {
    queryParams.push("data_layer_name=" + dataLayerName);
  }
  var queryString = queryParams.length > 0 ? ("?" + queryParams.join("&")) : "";

  tag.async = true;
  tag.src   = containerHost + containerId + ".js" + queryString;
  existingScript.parentNode.insertBefore(tag, existingScript);

  // Initialize ppms namespace (Tag Manager + Consent Manager APIs)
  (function (win, ns, modules) {
    win[ns] = win[ns] || {};
    for (var i = 0; i < modules.length; i++) {
      (function (mod) {
        win[ns][mod]       = win[ns][mod]       || {};
        win[ns][mod].api   = win[ns][mod].api   || function () {
          var args = [].slice.call(arguments, 0);
          if (typeof args[0] === "string") {
            window[dataLayerName].push({
              event:      ns + "." + mod + ":" + args[0],
              parameters: [].slice.call(arguments, 1)
            });
          }
        };
      })(modules[i]);
    }
  })(window, "ppms", ["tm", "cm"]);

})();
