2A News

Alabama Homeowner Shoots Body Armor-Wearing Alleged Car Burglar

Reading Time: 1:53 min

An Alabama man last Wednesday was presumably experiencing a rather normal day when he was confronted by what had to be a strange and frightening sight. The Limestone County man…

View post

FPC Wins Settlement with NY Over Non-Resident Carry Permits

Reading Time: 1:56 min

The Firearms Policy Coalition (FPC) lawsuit against New York State over its denial of carry rights to non-residents has been settled, and it is a victory for the good guys.…

View post

CNN: Gun Buyback Encounters ‘Friction’ in Western Canada

Reading Time: 3:33 min

That deafening silence coming from north of the border is the sound of anti-gunners’ apparent shock that good Canadians are not sheepishly handing over their firearms to government agents in…

View post

Third Circuit: First Amendment Does Not Protect 3D-Printed Gun Files

Reading Time: 1:57 min

Second Amendment advocates have their hands full defending personal rights against regular incursions by anti-gun lawmakers. There are major victories to celebrate as well as setbacks to be addressed as…

View post

ATF Approves NFA Applications Previously Rejected for Citing ‘God-Given Rights’

Reading Time: 1:56 min

The Bureau of Alcohol, Tobacco, Firearms, and Explosives (ATF) is apparently not beyond redemption despite an adversarial relationship with the Second Amendment community in recent years. The controversial agency made…

View post

Carry Permit Applications ‘Nearly Double’ In Minnesota During Turmoil

Reading Time: 1:53 min

Minnesota residents were thrust into the national spotlight at the start of the year by immigration enforcement in the state and the ensuing social unrest along with the violence it…

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>