2A News

NSSF Takes Stand Against Maryland’s Attack on Weapons Industry

Reading Time: 1:54 min

Established federal law protects the weapons industry from frivolous lawfare intent on bankrupting the very companies that make Second Amendment freedoms possible. The Protection of Lawful Commerce in Arms Act…

View post

Supporters Raise $27k for Oklahoma Woman Fired for Courageous Self-Defense

Reading Time: 2:14 min

A young Oklahoma City mother fired for defending herself from a customer who allegedly tried to strangle her received an overwhelming outpouring of support from the sympathetic community. Stephanie Dilyard,…

View post

SAF Files Motion in Case Against Massachusetts’ Discriminatory Gun Control Regime

Reading Time: 1:52 min

A coalition of influential Second Amendment organizations filed a motion last week for summary judgment in Escher v. Noble. This contentious case challenges the Massachusetts prohibition on young adults purchasing…

View post

Huntsville Man Fatally Shoots Intruder After Retreating Failed

Reading Time: 1:54 min

An Alabama man faced the frightening prospect Tuesday evening of having another person use force to enter their locked apartment and come after them.  And while the state has a…

View post

Constitutional Carry for NC Gun Owners Still Unresolved

Reading Time: 1:52 min

North Carolina’s Second Amendment supporters are back to kicking rocks while they wait for definitive action from their elected officials. Lawmakers again delayed a vote on finally recognizing constitutional carry…

View post

Delaware’s Permit to Purchase Law and Training Requirement Take Effect

Reading Time: 1:51 min

The erosion of constitutional freedoms will not always be announced from the rooftops and confirmed on the evening news. Sometimes it’s just the passing of a predetermined date that signals…

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>