2A News

Ruger Becomes Latest Firearms Manufacturer to Move to Greener Pastures

Reading Time: 1:55 min

Actions spur consequences, and the all-out war on Second Amendment industries by a handful of states prompted yet another firearms business to pull up roots and head elsewhere. Ruger was…

View post

DOJ Expands DC Lawsuit to Include Suppressor Ban

Reading Time: 1:57 min

The revamped Department of Justice (DOJ) signaled Thursday that it intends to aggressively fight for Second Amendment rights in the District of Columbia.  Of course, saying it and doing it…

View post

Philadelphia Homeowner Fatally Shoots Female Break-In Suspect

Reading Time: 1:54 min

A lawful gun owner in North Philadelphia received quite the shock Sunday afternoon. It was around 1:15 on what was likely an uneventful weekend day when the unexpected suddenly appeared.…

View post

Florida Man Sues After Being Jailed Over Alleged FBI Error 

Reading Time: 2:10 min

A Florida man filed a Second Amendment-related lawsuit over false imprisonment that should be closely watched by everyone who treasures the right to keep and bear arms. William Michael Brewer…

View post

Appeals Court Rules Illegal Residents Do Not Enjoy 2A Protections

Reading Time: 1:55 min

The First Circuit Court of Appeals handed down an important ruling last week concerning the Constitution and illegal U.S. residents, and, more specifically, the scope of Second Amendment protections. The…

View post

Florida AG Announces $5M Suit Against Jacksonville for Gun Registry

Reading Time: 1:53 min

Government gun registries are illegal in nearly every case under federal law, as they are obviously giant steps toward the inevitable confiscation push. That did not stop Jacksonville officials, however,…

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>