function loadFonts(fonts, doc = document){
  const data = fonts;
  if(!data) return;
  const root = document.documentElement;

  let splitArray = data.toString().replace(/,\s*/g, ',').split(',');

  let googleFontsURL = `https://fonts.googleapis.com/css2?`;

  const ghostFonts = document.querySelector('link[href*="fonts.bunny.net/css"]');

  if(ghostFonts) return;

  for(let i = 0; i < splitArray.length; i++){
    if(i == 4) break;

    root.style.setProperty(`--font${i+1}`, `'${splitArray[i].toString()}'`);

    splitArray[i] = splitArray[i].replace(' ', '+');
    googleFontsURL += `family=${splitArray[i]}:wght@300;400;500;600;700&`  
  }

  googleFontsURL += 'display=swap'

  const linkElement = doc.createElement('link');
  linkElement.rel = 'stylesheet';
  linkElement.href = googleFontsURL;

  doc.head.appendChild(linkElement);
}

function hexToRgba(hex) {
  hex = hex.replace('#', '');

  const r = parseInt(hex.substring(0, 2), 16);
  const g = parseInt(hex.substring(2, 4), 16);
  const b = parseInt(hex.substring(4, 6), 16);

  let opac_20 =  `rgba(${r}, ${g}, ${b}, 0.2)`;

  document.documentElement.style.setProperty('--text-color-20', opac_20);
}

function getParameterByName(name, url) {
  if (!url) url = window.location.href;
  name = name.replace(/[\[\]]/g, "\\$&");
  var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
      results = regex.exec(url);
  if (!results) return null;
  if (!results[2]) return '';
  return decodeURIComponent(results[2].replace(/\+/g, " "));
}

function debounce(fn, delay) {
   let timerId;
   return function(...args) {
     if (timerId) {
       clearTimeout(timerId);
     }
     timerId = setTimeout(() => {
       fn(...args);
       timerId = null;
     }, delay);
   };
}

let scrollPosition = 0;

function disableScrolling() {
  scrollPosition = window.pageYOffset;
  document.body.style.overflow = 'hidden';
  document.body.style.position = 'fixed';
  document.body.style.top = `-${scrollPosition}px`;
  document.body.style.width = '100%';
  document.documentElement.style.scrollBehavior = 'auto';
  
}
  
function enableScrolling(scrollToPosition = true) {
  document.body.style.removeProperty('overflow');
  document.body.style.removeProperty('position');
  document.body.style.removeProperty('top');
  document.body.style.removeProperty('width');
  if(scrollToPosition){
    window.scrollTo(0, scrollPosition);
  } 
  document.documentElement.style.scrollBehavior = 'smooth';
}

function lazyLoadImages(container = document){
  container.querySelectorAll('.hover-image-opacity figure').forEach(wrapper => {
    let img = wrapper.querySelector('img');
    if(!img) return;
    if (img.complete) {
      wrapper.classList.add("loaded");
    } else {
      img.addEventListener("load", () => {
        wrapper.classList.add("loaded");
      });
    }
  })
}

function moveFeaturedImage(){
  let article = document.querySelector('article');

  if(article.getAttribute('data-has-feature-image') != 'true') return;
  if(article.getAttribute('data-post-header-type') != 'Narrow') return;
  if(article.getAttribute('data-use-sidebar') != 'true') return;

  document.querySelector('.post-content-outer').insertBefore(document.querySelector('.post-main-image-wrapper'), document.querySelector('.post-content-outer').firstChild);
}

function stickySidebar() {
  let sidebar = document.querySelector('.post-sidebar');
  if(!sidebar) return;

  var viewportHeight = window.innerHeight || document.documentElement.clientHeight;
  sidebar.offsetHeight > viewportHeight ? sidebar.style.top = `calc(100vh - ${sidebar.offsetHeight}px)` : sidebar.style.top = 'calc(2.64vw * var(--scale))';
}

function setLightense(){
  window.addEventListener('DOMContentLoaded', function () {
      const imagesInAnchors = document.querySelectorAll('.post-content a img, .post-content .kg-product-card img, .kg-signup-card img, .kg-header-card img');
  
      imagesInAnchors.forEach((img) => {
          img.classList.add('no-lightense');  
      });
  
      Lightense('.post-content img:not(.no-lightense)', {
          background: 'var(--background-color)'
      });
  }, false);
}

function setToggle() {
  const toggleHeadingElements = document.getElementsByClassName("kg-toggle-heading");

  const svgElement = document.createElementNS("http://www.w3.org/2000/svg", "svg");
  svgElement.setAttribute("viewBox", "0 0 16 10");
  svgElement.setAttribute("fill", "none");
  svgElement.setAttribute("xmlns", "http://www.w3.org/2000/svg");

  const pathElement = document.createElementNS("http://www.w3.org/2000/svg", "path");
  pathElement.setAttribute("d", "M16 2L8 10L-3.49691e-07 2L1.42 0.580001L8 7.16L14.58 0.58L16 2Z");

  svgElement.appendChild(pathElement);

  document.querySelectorAll('.kg-toggle-card').forEach(card => {
      card.querySelector('.kg-toggle-heading svg').remove();

      const container = card.querySelector(".kg-toggle-card-icon");
      const clonedSvg = svgElement.cloneNode(true);

      container.appendChild(clonedSvg);
  })
  
  const toggleFn = function(event) {
      
      const targetElement = event.target;
      const parentElement = targetElement.closest('.kg-toggle-card');
      var toggleState = parentElement.getAttribute("data-kg-toggle-state");
      if (toggleState === 'close') {
          parentElement.setAttribute('data-kg-toggle-state', 'open');
      } else {
          parentElement.setAttribute('data-kg-toggle-state', 'close');
      }
  };

  for (let i = 0; i < toggleHeadingElements.length; i++) {
      toggleHeadingElements[i].addEventListener('click', toggleFn, false);
  }
}

function copyUrlToClipboard(parentElement){
  let parent = document.querySelector(`.${parentElement}`)
  let alert = parent.querySelector('.clipboard-alert');

  parent.querySelector('.clipboard-link').addEventListener('click', () => {
      navigator.clipboard.writeText(window.location.href);
      alert.style.display = "block";

      setTimeout(function () {
          alert.style.display = "none";
      }, 3000);
  })
}