2A News

Report: 2026 Homicides Headed Toward Historic Low

Reading Time: 2:5 min

Anti-gunners love to spout that the U.S. has substantially more guns than people and use this as a bludgeon against the right to keep and bear arms. However, there is…

View post

NRA: ATF Proposed Rule on Transporting Firearms Needs Clarification

Reading Time: 2:8 min

The National Rifle Association (NRA) is the nation’s oldest and largest Second Amendment advocacy group, and the lion’s share of its mission is to ensure that laws and regulations do…

View post

GOA Targets US Virgin Islands’ Ridiculous Gun Control Regime

Reading Time: 1:56 min

Gun Owners of America (GOA), the Gun Owners Foundation, and a private citizen sued the U.S. Virgin Islands (USVI) last week over its blanket prohibition of law-abiding non-residents carrying legal…

View post

NJ Lawmakers Grieve Over Demise of ‘Assault Weapon’ Ban

Reading Time: 1:58 min

Garden State anti-gunners zipped right through the denial phase and into grief and anger after the Third Circuit Court of Appeals struck down the long-standing state ban on so-called “assault…

View post

Sheriff: Idaho’s ‘Castle Doctrine’ Protects Homeowner 

Reading Time: 1:59 min

An apparently complex domestic situation erupted in violence Sunday evening in Idaho, and the fallout left 50-year-old Jason Leroy Sparks dead. He was the ex-husband of Ashley Sparks, and the…

View post

Another Week, Another Federal Court Ruling on ‘Assault Weapons’

Reading Time: 1:54 min

Less than a week after the U.S. Court of Appeals for the Third Circuit struck down New Jersey’s controversial bans on so-called “assault weapons” and standard-capacity magazines, the quagmire that…

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>