2A News

South Carolina’s ‘Stand Your Ground’ Law Protects Another Potential Victim

Reading Time: 1:56 min

There is something profoundly fundamental about the right to self-defense. Anyone who does not believe that all law-abiding citizens have the freedom to use whatever force is necessary to protect…

View post

NRA Responds to Government Brief Before SCOTUS Concerning SBRs

Reading Time: 1:56 min

The National Rifle Association (NRA), the nation’s oldest and largest gun rights advocacy organization, filed a critical brief Thursday through its Institute for Legislative Action (ILA). The Reply Brief concerned…

View post

NSSF Warns Gun Rights Community About ‘Ideological Gatekeeping’ by Crypto Firm

Reading Time: 2:2 min

The National Shooting Sports Foundation (NSSF) is on the front lines protecting Second Amendment rights, and the industry trade group just released a warning concerning a powerful new economic frontier.…

View post

Minnesota’s Anti-Gunners Plan to Barnstorm the State as Controversy Swirls

Reading Time: 3:46 min

Minnesota’s gun owners are under siege. Anti-Second Amendment political forces plan to barnstorm the state in a flurry of dramatic town hall meetings aimed at drumming up support for yet…

View post

Shopper at California Beauty Store Shoots Alleged Groper

Reading Time: 1:52 min

The Second Amendment community is a big tent, and any law-abiding citizen who values liberty and the right to defend themselves and their loved ones is welcome. The ranks of…

View post

Glock Shocks 2A Community with Monday Announcement

Reading Time: 1:54 min

Rumors swirling around the Second Amendment community quickly became fact on Monday when legendary firearms manufacturer Glock announced it would undergo a radical and unexpected change. The Austrian gunmaker will…

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>