2A News

Appeals Court Orders DOJ to Proceed in ‘Engaged in the Business’ Lawsuit

Reading Time: 2:11 min

The relationship between the Department of Justice (DOJ) and the Second Amendment community is fraught with inconsistencies.  While Attorney General Pam Bondi’s (R) agency now throws its considerable weight behind…

View post

Florida Gun Parts Dealer Jailed Over New York Complaint

Reading Time: 2:28 min

An Orlando man continues to languish behind bars over his refusal to hand over the customer list for his firearm parts business. For that offense, Lawrence Michael DeStefano faces possible…

View post

Texas Man Fatally Shoots Suspected Burglar in Early Morning Confrontation

Reading Time: 1:50 min

The foolishness of attempting to break into another person’s home cannot be overstated, but these alarming incidents continue to occur. A suspected Texas burglar paid the ultimate price for his…

View post

Georgia Bill: Citizens Could Sue Cities Over 2A Infringements

Reading Time: 1:59 min

Savannah officials know they lack a legal leg to stand on for their ongoing dispute with the state over gun restrictions, and they may now face financial consequences for infringing…

View post

Tennessee Man Charged After Allegedly Shooting Break-In Suspect

Reading Time: 1:58 min

It can be a risky proposition to use lethal force for self-defense, even in an obvious situation where the intended victim has a reasonable fear of imminent harm.  That’s because…

View post

Gov. Hochul Declares Intent to Eradicate ‘Ghost Guns’

Reading Time: 2:2 min

As states that are bastions of Second Amendment opponents compete to see who can infringe on gun rights the most, New York may be taking the lead. In 2025, the…

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>