window.onload = (event) => {
  const btn = document.getElementById("theme-toggler");
  const darkTheme = window.matchMedia("(prefers-color-scheme: dark)");
  const currentTheme = sessionStorage.getItem("theme");

  if (currentTheme == "dark") {
    document.body.classList.toggle("dark");
  } else if (currentTheme == "light") {
    document.body.classList.toggle("light");
    btn.classList.toggle("rotate-180");
  }

  btn.addEventListener("click", function () {
    btn.classList.toggle("rotate-180");
    var theme = "dark";
    if (darkTheme.matches) {
      document.body.classList.toggle("light");
      theme = document.body.classList.contains("light") ? "light" : "dark";
    } else {
      document.body.classList.toggle("dark");
      theme = document.body.classList.contains("dark") ? "dark" : "light";
    }
    sessionStorage.setItem("theme", theme);
  });

  if ((document.documentElement.scrollHeight / window.screen.availHeight ) > 1.5) {
    window.addEventListener("scroll", () => {
      var winScroll = document.body.scrollTop || document.documentElement.scrollTop;
      var height = document.documentElement.scrollHeight - document.documentElement.clientHeight;
      var scrolled = (winScroll / height) * 100;
      document.getElementById('progress').style.width = scrolled + "%";

      const toTop = document.getElementById('totop');

      if ((window.scrollY > 0 && !toTop.classList.contains("show")) || (window.scrollY <= 0 && toTop.classList.contains("show"))) {
        toTop.classList.toggle("show");
      }
    });
  }
}

function toggleTableOfContent(e) {
  const toc = document.getElementById('TableOfContents');
  toc.classList.toggle("show");
  const extend = toc.parentElement.getElementsByClassName("extend")[0];
  extend.children[0].classList.toggle("icon-angle-right");
  extend.children[0].classList.toggle("icon-angle-left");
}