export function scrollInit(divName) {
  let scroller = new Scroller(divName);
}

class Scroller {
  constructor(divName) {
    this.elmnt = document.getElementById(divName);
    this.reachedMaxScroll = false;

    this.elmnt.scrollTop = 0;
    this.previousScrollTop = 0;

    this.scrollDiv();
    this.elmnt.addEventListener("mouseover", () => {
      this.pauseScroll();
    });
    this.elmnt.addEventListener("mouseout", () => {
      this.resumeScroll();
    });
  }

  scrollDiv() {
    if (!this.reachedMaxScroll) {
      this.elmnt.scrollBy({ top: 5, left: 0, behavior: "smooth" });
      this.reachedMaxScroll =
        this.elmnt.scrollTop >=
        this.elmnt.scrollHeight - this.elmnt.offsetHeight;
      this.scrollTimeout = setTimeout(() => {
        this.scrollDiv();
      }, 100);
    } else {
      this.reachedMaxScroll = this.elmnt.scrollTop == 0 ? false : true;
      this.elmnt.scrollBy({ top: -5, left: 0, behavior: "smooth" });

      this.scrollTimeout = setTimeout(() => {
        this.scrollDiv();
      }, 100);
    }
  }

  pauseScroll() {
    clearInterval(this.scrollTimeout);
  }

  resumeScroll() {
    this.scrollDiv();
  }
}