2A News

Another New Jersey Municipality Rebates Firearm Carry Permit Fees

Reading Time: 1:57 min

Some say that enjoying life is all about celebrating small victories. If that’s true, Second Amendment advocates have another reason to be thankful despite the ongoing war with radical anti-gunners. …

View post

Chicago Woman Stops Alleged Carjacking Attempt by Shooting Teen Rapper

Reading Time: 1:54 min

A South Chicago teen rapper is recovering after being shot during an alleged robbery attempt. His mistake? Apparently targeting a woman who, instead of being just another helpless victim of…

View post

NSSF: Significant Progress as Stripe Removes Gun-Related Restrictions

Reading Time: 1:52 min

The tide is turning against Wall Street giants that openly discriminated against the firearm industry in recent years. Last week, another major outfit announced that it will toe the line…

View post

ATF Announces Improvements to Process of Transporting NFA-Regulated Firearms

Reading Time: 1:56 min

The fact that the National Firearms Act of 1934 (NFA) still exists in 2025 is a source of constant irritation for Second Amendment advocates. On the bright side, there is…

View post

SCOTUS Turns Back Challenge to Illegal Alien Gun Ban

Reading Time: 2:5 min

A busy U.S. Supreme Court declined a challenge to the federal prohibition on illegal aliens possessing weapons in the U.S. Justices also did not act on a pair of petitions…

View post

Gun Parts Supplier Faces Prison for Shocking Reason

Reading Time: 2:5 min

U.S. gun owners know there is still a hangover from the egregious gun control excesses of the previous administration. While much progress has been made, significant challenges to Second Amendment…

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>