2A News

GOA Warns Government Hoarding Gun Owners’ Personal Data

Reading Time: 1:53 min

The federal government is neck-deep in the information business, and business is booming. That’s the warning from Gun Owners of America (GOA) concerning the troubling acquisition of data troves by…

View post

NRA: Virginia Gun Shops See Spike in Firearm Sales

Reading Time: 2:13 min

As Virginia’s undeclared war on the Second Amendment advances, residents continue to prove their dedication to the right to keep and bear arms. The National Rifle Association (NRA) reported that…

View post

Investigative Journalist’s Firearms Seized, Then Returned

Reading Time: 1:57 min

Supporters of Extreme Risk Protection Orders (ERPOs) contend that these mechanisms are in place to safeguard innocent people from those who would bring them harm. While that is true in…

View post

NY Pushes Criminalizing Possession of 3D Printer Files

Reading Time: 1:60 min

New technology always attracts modern-day Luddites fearful that the sky is falling because advancements are not understood or in their control. For anti-gunners, the boogeyman is 3D printing capable of…

View post

Virginia Lawmakers Put Brakes on Some Spanberger 2A Changes

Reading Time: 1:57 min

Make no mistake, even though Virginia is politically a battleground state, anti-Second Amendment forces dominate its government.  Led by Gov. Abigail Spanberger (D), who laughably campaigned as a moderate, the…

View post

Tire Shop Customer Returns Fire After Alleged Attack

Reading Time: 2:2 min

Conducting business at a gas station that bumps up against a tire shop should not be a dangerous affair, but in Memphis in 2026, all bets are off. Last Tuesday…

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>