(function(){
  function onReady(fn){
    if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',fn);} else {fn();}
  }

  function findContainer(){
    // کانتینر اصلی قالب نیکان
    return document.querySelector('.container-main') || document.querySelector('.container') || document.querySelector('#page');
  }

  function setPositionWithinContainer(root){
    var container = findContainer();
    if(!container) return;

    // اگر کانتینر تمام عرض بود، همان فاصله پیش‌فرض کافی است
    var rect = container.getBoundingClientRect();
    var padding = 16;
    var vw = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);
    var leftGap = Math.max(0, rect.left);
    var rightGap = Math.max(0, vw - rect.right);

    if(root.classList.contains('is-left')){
      root.style.left = (leftGap + padding) + 'px';
      root.style.right = 'auto';
    } else {
      root.style.right = (rightGap + padding) + 'px';
      root.style.left = 'auto';
    }
  }

  onReady(function(){
    var root = document.querySelector('.nikan-contact-fab');
    if(!root) return;

    var toggleBtn = root.querySelector('.nikan-contact-toggle');
    var list = root.querySelector('.nikan-contact-list');
    var closeBtn = root.querySelector('.nikan-contact-close');
    if(!toggleBtn || !list) return;

    function open(){
      list.hidden = false;
      root.classList.add('is-open');
      toggleBtn.setAttribute('aria-expanded','true');
      // فوکوس روی اولین لینک
      var first = list.querySelector('a');
      if(first) first.focus({preventScroll:true});
    }

    function close(){
      root.classList.remove('is-open');
      toggleBtn.setAttribute('aria-expanded','false');
      list.hidden = true;
    }

    function isOpen(){
      return root.classList.contains('is-open') && list.hidden === false;
    }

    function toggle(){
      isOpen() ? close() : open();
    }

    toggleBtn.addEventListener('click', function(e){
      e.preventDefault();
      toggle();
    });

    if(closeBtn){
      closeBtn.addEventListener('click', function(e){
        e.preventDefault();
        close();
      });
    }

    // کلیک بیرون
    document.addEventListener('click', function(e){
      if(!isOpen()) return;
      if(root.contains(e.target)) return;
      close();
    });

    // ESC
    document.addEventListener('keydown', function(e){
      if(e.key === 'Escape' && isOpen()) close();
    });

    // جلوگیری از Overflow از کانتینر
    setPositionWithinContainer(root);
    window.addEventListener('resize', function(){
      setPositionWithinContainer(root);
    });
  });
})();
