2A News

Shock: US Attorney to Incarcerate Law-Abiding Gun Owners Entering DC

Reading Time: 2:2 min

National reciprocity is a cause whose time has come. There are far too many instances where a law-abiding gun owner is well within the law in one state or jurisdiction…

View post

Appeals Court: States May Criminalize Possession of Certain Knives

Reading Time: 1:55 min

A federal appeals court unanimously ruled on Friday that states may prohibit specific pocketknives.  As these instruments are historically weapons of self-defense and thus should be “arms,” Second Amendment advocates…

View post

NSSF: Background Checks for NFA Items Exploded in January

Reading Time: 1:51 min

Not only are U.S. firearm sales strong despite pulling back from recent record highs, but Americans have a renewed appetite for suppressors and other NFA items. The National Shooting Sports…

View post

Colorado Governor Breaks with Colleague Over Marijuana and Firearm Possession

Reading Time: 1:52 min

Second Amendment advocates anxiously await a long-overdue decision by the U.S. Supreme Court on gun rights and marijuana consumption. Strange bedfellows emerged in the buildup to the ruling, which is…

View post

Fifth Circuit Rejects Stripping Gun Rights Forever from Non-Violent Felon

Reading Time: 1:55 min

The Fifth Circuit Court of Appeals just handed down a noteworthy decision for those who strayed from the straight and narrow at some point in their lives. To be clear,…

View post

GOA: Pennsylvania Lawmakers Sneaking More Gun Control into Session

Reading Time: 1:55 min

Sometimes the enemy charges through the front gate with trumpets blasting and a sound and fury that will never be mistaken for anything but a dire threat. Other times, 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>