2A News

Armed Georgia Man Stops Brother’s Alleged Attack on Family

Reading Time: 1:58 min

Family violence is a sad fact of life and has been from the beginning. Brother against brother is as old as time, and sometimes these confrontations get so far out…

View post

DOJ Warns Minnesota Over Lengthy Handgun Purchase Delays

Reading Time: 1:60 min

Law-abiding Americans should not be forced to wait for weeks to legally purchase a firearm, but that’s the sorry state of affairs in Minnesota. The U.S. Department of Justice looks…

View post

NSSF Praises Executive Order Protecting Sporting Traditions

Reading Time: 2:6 min

When a statewide ballot initiative to ban hunting and fishing gathers tens of thousands of signatures, as one recently did in Oregon, sporting traditions are under attack. That makes Thursday’s…

View post

Florida Man Shoots Neighbor Allegedly Wielding Pickaxe

Reading Time: 1:57 min

Property boundary disputes happen, but they are usually settled with surveys and fences–not with a pickaxe and firearm. That’s the startling scenario that played out in the early evening hours…

View post

Big Friday! Fifth Circuit and DOJ Deliver Solid 2A Wins

Reading Time: 3:50 min

Friday was a red-letter day for Second Amendment rights with a pair of announcements concerning interstate handgun sales and the federal government’s young adult pistol ban. First, the U.S. Court…

View post

FPC Follows California Victory with Challenge to NJ Gun Rationing

Reading Time: 1:58 min

Second Amendment organizations work tirelessly to defend the people’s right to protect themselves and their loved ones. When one victory is achieved, there’s a brief celebration before necessarily moving on…

View post
<script>
  /*Source: https://github.com/Krzysztof-Antosik/Two-direction-Sticky-Sidebar*/
  
  // Verificar el ancho de pantalla al cargar y redimensionar
  function checkScreenWidth() {
    if (window.innerWidth <= 767) {
      // Si la pantalla es menor o igual a 676px, no ejecutar el código
      return;
    }

    const stickyElement = document.querySelector('.fb-sidebar__aside');
    const startPosition = stickyElement.getBoundingClientRect().top;

    let endScroll = window.innerHeight - stickyElement.offsetHeight - 500;
    let currPos = window.scrollY;
    let screenHeight = window.innerHeight;
    let stickyElementHeight = stickyElement.offsetHeight;
    let topGap = 40;
    let bottomGap = 40;

    setTimeout(() => {
      if (stickyElement.hasAttribute('data-top-gap')) {
        const dataTopGap = stickyElement.getAttribute('data-top-gap');
        topGap = dataTopGap === 'auto' ? startPosition : parseInt(dataTopGap);
      }

      if (stickyElement.hasAttribute('data-bottom-gap')) {
        bottomGap = parseInt(stickyElement.getAttribute('data-bottom-gap'));
      }
    }, 100);

    stickyElement.style.position = 'sticky';
    stickyElement.style.top = `${topGap}px`;
    stickyElement.style.height = 'fit-content';

    function positionStickySidebar() {
      endScroll = window.innerHeight - stickyElement.offsetHeight - bottomGap;
      const stickyElementTop = parseInt(stickyElement.style.top.replace('px', ''));

      if (stickyElementHeight + topGap + bottomGap > screenHeight) {
        if (window.scrollY < currPos) {
          if (stickyElementTop < topGap) {
            stickyElement.style.top = `${stickyElementTop + currPos - window.scrollY}px`;
          } else if (stickyElementTop >= topGap && stickyElementTop !== topGap) {
            stickyElement.style.top = `${topGap}px`;
          }
        } else {
          if (stickyElementTop > endScroll) {
            stickyElement.style.top = `${stickyElementTop + currPos - window.scrollY}px`;
          } else if (stickyElementTop < endScroll && stickyElementTop !== endScroll) {
            stickyElement.style.top = `${endScroll}px`;
          }
        }
      } else {
        stickyElement.style.top = `${topGap}px`;
      }
      currPos = window.scrollY;
    }

    function stickyElementToMe() {
      stickyElement.style.top = `${topGap}px`;
    }

    function updateSticky() {
      screenHeight = window.innerHeight;
      stickyElementHeight = stickyElement.offsetHeight;
      positionStickySidebar();
    }

    setTimeout(() => {
      window.addEventListener('resize', () => {
        currPos = window.scrollY;
        updateSticky();
      });

      document.addEventListener('scroll', updateSticky, {
        capture: true,
        passive: true
      });
    }, 1000);
  }

  // Verificar el ancho de pantalla al cargar y redimensionar
  window.addEventListener('load', checkScreenWidth);
  window.addEventListener('resize', checkScreenWidth);
</script>