KEEP.initBack2Top = () => {

  KEEP.utils = {

    ...KEEP.utils,

    back2BottomButton_dom: document.querySelector('.tool-scroll-to-bottom'),

    back2top() {
      const scrollTopTimer = setInterval(function () {
        let top = document.body.scrollTop || document.documentElement.scrollTop;
        let speed = top / 2;
        if (document.body.scrollTop !== 0) {
          document.body.scrollTop -= speed;
        } else {
          document.documentElement.scrollTop -= speed;
        }
        if (top === 0) {
          clearInterval(scrollTopTimer);
        }
      }, 50);
    },

    back2Bottom() {
      let scrollHeight = document.body.scrollHeight || document.documentElement.scrollHeight;
      let scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
      const scrollBottomTimer = setInterval(function () {
        if (!scrollTop) scrollTop = 10;
        scrollTop = Math.floor(scrollTop + scrollTop / 2);
        window.scrollTo(0, scrollTop);
        if (scrollTop >= scrollHeight) {
          clearInterval(scrollBottomTimer);
        }
      }, 50);
    },

    initBack2Top() {
      this.back2TopButton_dom.addEventListener('click', () => {
        this.back2top();
      });
    },

    initBack2Bottom() {
      this.back2BottomButton_dom.addEventListener('click', () => {
        this.back2Bottom();
      });
    },
  }

  KEEP.utils.initBack2Top();
  KEEP.utils.initBack2Bottom();

}