2A News

Federal Judge Drives Final Nail in ‘Engaged in the Business’ Rule

Reading Time: 2:9 min

Like zombies on the big screen and in a popular TV show, controversial and seemingly defunct federal regulations governing the right to keep and bear arms have magically reemerged and…

View post

White House Hopeful Slams ATF Reform Proposals

Reading Time: 2:3 min

Entrenched bureaucrats and the political hacks who enable them howl in protest when meaningful reforms have a real shot at succeeding. They know that their work is substandard–and that’s putting…

View post

Powerful 2A Coalition Challenges NY Glock Ban

Reading Time: 1:56 min

On Friday, a broad alliance of influential Second Amendment defenders pooled their power against New York’s notorious gun control regime. The National Rifle Association (NRA), Second Amendment Foundation (SAF), Firearms…

View post

SC Clerk Shot and Killed Alleged Vape Shop Robber

Reading Time: 1:58 min

Good citizens who work sometimes thankless jobs have the same dreams and goals as everyone else. They may toil in liquor stores, fast food outlets, or deliver food at all…

View post

23 State AGs Rail Against ATF Reform

Reading Time: 2:1 min

Some automatically recoil in horror at what most reasonable people consider progress, and enhancing the free exercise of Second Amendment rights is hardly different. The Bureau of Alcohol, Tobacco, Firearms…

View post

First Lawfully Unrecorded Suppressor Transferred in Nearly a Century

Reading Time: 3:35 min

History was made just after the stroke of midnight Thursday morning when a silencer was legally transferred without National Firearms Act (NFA) registration.  Gun Owners of America (GOA), Silencer Shop,…

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>