text: function anchorScroller(el, duration) {
    if (this.criticalSection) {
      return false;
    }
  
    if (typeof el !== `object` || typeof el.href !== `string`) {
      return true;
    }
  
    let address = el.href.split(`#`);
    if (address.length < 2) {
      return true;
    }
  
    address = address[address.length - 1];
    el = 0;
  
    for (let i = 0; i < document.anchors.length; i++) {
      if (document.anchors[i].name == address) {
        el = document.anchors[i];
        break;
      }
    }
    if (el === 0) {
      return true;
    }
  
    this.stopX = 0;
    this.stopY = 0;
    do {
      this.stopX += el.offsetLeft;
      this.stopY += el.offsetTop;
    } while ((el = el.offsetParent));
  
    this.startX =
      document.documentElement.scrollLeft ||
      window.pageXOffset ||
      document.body.scrollLeft;
    this.startY =
      document.documentElement.scrollTop ||
      window.pageYOffset ||
      document.body.scrollTop;
  
    this.stopX = this.stopX - this.startX;
    this.stopY = this.stopY - this.startY;
  
    if (this.stopX == 0 && this.stopY == 0) {
      return false;
    }
  
    this.criticalSection = true;
    if (typeof duration === `undefined`) {
      this.duration = 500;
    } else {
      this.duration = duration;
    }
  
    const date = new Date();
    this.start = date.getTime();
    this.timer = setInterval(function () {
      const date = new Date();
      let X = (date.getTime() - this.start) / this.duration;
      if (X > 1) {
        X = 1;
      }
      const Y = -Math.cos(X * Math.PI) / 2 + 0.5;
  
      cX = Math.round(this.startX + this.stopX * Y);
      cY = Math.round(this.startY + this.stopY * Y);
  
      document.documentElement.scrollLeft = cX;
      document.documentElement.scrollTop = cY;
      document.body.scrollLeft = cX;
      document.body.scrollTop = cY;
  
      if (X == 1) {
        clearInterval(this.timer);
        this.criticalSection = false;
      }
    }, 10);
    return false;
  }
  