2A News

Judge Rejects Challenge to Massachusetts’ Young Adult Handgun Ban

Reading Time: 1:55 min

Massachusetts’ controversial ban on adults under 21 possessing pistols and semi-automatic weapons will stand, thanks to a Friday ruling by U.S. District Court Judge George O’Toole.  The National Rifle Association,…

View post

VPC Smears Concealed Carry Holders with Grossly Misleading Data

Reading Time: 2:5 min

The original source is shrouded in history, but someone of note once said there are “lies, damned lies, and statistics.” In other words, the intellectually dishonest will use piles of…

View post

CDC Reverses Course, Reposts Defensive Gun Use Data

Reading Time: 3:37 min

The Centers for Disease Control and Prevention (CDC) in Atlanta apparently bowed to pressure from anti-Second Amendment radicals in 2022 when the agency deleted revealing statistics chronicling defensive gun uses…

View post

FFLs Transferring Unregistered Suppressors Pass ATF Inspections

Reading Time: 1:60 min

Federal Firearm Licensees (FFLs) may be excused for being skittish about selling suppressors, even after positive results from two recent cases involving federal registration of these firearm accessories. After all,…

View post

Australia Announces Buyback for ‘Excess’ Firearms

Reading Time: 2:9 min

Does any levelheaded person believe that violent radicals will surrender their weapons for a check? Apparently, some in Australia do, as the government’s latest response to last December’s Bondi Beach…

View post

Brady Blasts DOJ Reforms Restoring Second Amendment Rights

Reading Time: 1:54 min

Brady United is one of a handful of anti-Second Amendment outfits that attack gun rights and lament even the slightest reform to roll back previous constitutional overreaches. They became accustomed…

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>