2A News

Appeals Court Rejects Gun Grabbers’ Lawsuit Against ATF

Reading Time: 1:58 min

Anti-Second Amendment outfit Giffords and its California partners are licking their wounds today after the Ninth Circuit Court of Appeals shot down their suit against the Bureau of Alcohol, Tobacco,…

View post

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
<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>