Contact us
Email

sales@metrofibre.co.za

Telephone

087 151 4000

Contact us
Email

sales@metrofibre.co.za

Telephone

087 151 4000

<script charset="utf-8" type="text/javascript" src="//js-eu1.hsforms.net/forms/embed/v2.js"></script>
<script>
  hbspt.forms.create({
    portalId: "26321849",
    formId: "77accf1d-da85-406f-ac33-59f2d7fcfd39",
    region: "eu1"
  });
</script>
if (!window.fbPopoverInitialized) {
  window.fbPopoverInitialized = true;

  document.addEventListener('DOMContentLoaded', function () {
    var popovers = document.querySelectorAll('[fb-popover]');

    popovers.forEach(function (popover) {
      var toggle = popover.querySelector('[fb-popover-button]');
      var accnElement = popover.querySelector('[fb-accn]');
      var content = popover.querySelector('[fb-popover-content]');
      var lastClosedTime = 0; // Almacenar el tiempo de cierre para cada popover
      var minTimeBeforeReopen = 500; // 0.5 segundos en milisegundos
      var openedWithKeyboard = false;

      toggle.setAttribute('aria-label', accnElement.textContent || accnElement.innerText);
      toggle.setAttribute('aria-controls', content.id);

      toggle.addEventListener('keydown', function (event) {
        if (['Enter', ' ', 'Spacebar'].includes(event.key)) {
          openedWithKeyboard = true;
        }
      });

      toggle.addEventListener('click', function () {
        var currentTime = Date.now();
        var elapsedTime = currentTime - lastClosedTime;

        if (elapsedTime < minTimeBeforeReopen) {
          return; // No se permite abrir el popover si no ha pasado el tiempo mínimo
        }

        var expanded = toggle.getAttribute('aria-expanded') === 'true';
        toggle.setAttribute('aria-expanded', expanded ? 'false' : 'true');
        if (expanded) {
          content.classList.remove('fb-popover--open');
          lastClosedTime = Date.now(); // Almacenar el tiempo de cierre al cerrar el popover
        } else {
          content.classList.add('fb-popover--open');
          lastClosedTime = 0; // Resetear el tiempo de cierre al abrir el popover
          setTimeout(function () {
            if (openedWithKeyboard) {
              focusFirstElementInContent();
            }
            document.addEventListener('mousedown', clickOutsideHandler); // Cambiado de `click` a `mousedown`
            document.addEventListener('keydown', escapeKeyHandler);
            document.addEventListener('focusin', focusInHandler);
          }, 700); // Espera 0.7 segundos antes de enfocar el primer elemento
        }
      });

      function focusFirstElementInContent() {
        var focusableElement = content.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
        if (focusableElement) {
          focusableElement.focus();
        }
      }

      function clickOutsideHandler(event) {
        // Cerrar el popover si se hace clic fuera, independientemente de cómo se abrió
        if (!popover.contains(event.target)) {
          toggle.setAttribute('aria-expanded', 'false');
          content.classList.remove('fb-popover--open');
          lastClosedTime = Date.now(); // Almacenar el tiempo de cierre al hacer clic fuera del popover
          document.removeEventListener('mousedown', clickOutsideHandler);
          document.removeEventListener('keydown', escapeKeyHandler);
          document.removeEventListener('focusin', focusInHandler);
        }
      }

      function escapeKeyHandler(event) {
        if (event.key === 'Escape' && toggle.getAttribute('aria-expanded') === 'true') {
          toggle.setAttribute('aria-expanded', 'false');
          content.classList.remove('fb-popover--open');
          lastClosedTime = Date.now(); // Almacenar el tiempo de cierre al presionar Escape
          document.removeEventListener('mousedown', clickOutsideHandler);
          document.removeEventListener('keydown', escapeKeyHandler);
          document.removeEventListener('focusin', focusInHandler);
        }
      }

      function focusInHandler(event) {
        if (!popover.contains(event.target)) { // Verifica que el foco no esté dentro del popover
          toggle.setAttribute('aria-expanded', 'false');
          content.classList.remove('fb-popover--open');
          lastClosedTime = Date.now();
          document.removeEventListener('mousedown', clickOutsideHandler);
          document.removeEventListener('keydown', escapeKeyHandler);
          document.removeEventListener('focusin', focusInHandler);
        }
      }

      // Previene el cierre del popover si se hace clic dentro del contenido
      content.addEventListener('mousedown', function(event) {
        event.stopPropagation();
      });
    });
  });
}

document.addEventListener('DOMContentLoaded', function() {
  const closeBtn = document.querySelector('.close-popup');
  const popup = document.querySelector('.fb-popover'); // Your popup class
  
  if (closeBtn && popup) {
    closeBtn.addEventListener('click', function(e) {
      e.preventDefault();
      popup.classList.remove('fb-popover--open');
    });
  }
});