2A News

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

Anti-2A Senator Spent $360k on Private Security in Hypocritical Action

Reading Time: 1:51 min

Political leaders who oppose gun rights are strangely reluctant to give up their private security and guard details. Apparently, they do not trust the ability of social workers to handle…

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>