const helper = {
  offset() {
    const mainOffset = $('#main').offset();
    const offsetTop = mainOffset ? mainOffset.top : 0;
    return (window.pageYOffset || $('html').scrollTop()) - offsetTop;
  }
};

export default Ember.Mixin.create({
  queueDockCheck: null,

  init() {
    this._super();
    this.queueDockCheck = () => {
      Ember.run.debounce(this, this.safeDockCheck, 5);
    };
  },

  safeDockCheck() {
    if (this.isDestroyed || this.isDestroying) { return; }
    this.dockCheck(helper);
  },

  didInsertElement() {
    this._super();

    $(window).bind('scroll.discourse-dock', this.queueDockCheck);
    $(document).bind('touchmove.discourse-dock', this.queueDockCheck);

    this.dockCheck(helper);
  },

  willDestroyElement() {
    this._super();
    $(window).unbind('scroll.discourse-dock', this.queueDockCheck);
    $(document).unbind('touchmove.discourse-dock', this.queueDockCheck);
  }
});
