2A News

NSSF Debunks Leaders’ Anti-2A Rhetoric After Tucson Shooting

Reading Time: 3:37 min

The same crowd that warns officials and the public not to “politicize” acts of violence is the first to jump into the fray when criminals prey on each other and…

View post

Cekada: ATF Wait Times for Forms and Applications Down 76%

Reading Time: 1:54 min

A Bureau of Alcohol, Tobacco, Firearms, and Explosives (ATF) that respected constitutional gun rights and understood the difference between violent criminals and law-abiding gun owners was only a pipe dream…

View post

Virginia AG Shows Shocking Contempt for Rule of Law

Reading Time: 2:14 min

With Virginia’s blatantly unconstitutional firearm bans in limbo and a Supreme Court ruling on such atrocities on the horizon, it is a good time for the adults in the room…

View post

74-Year-Old NC Man Shoots Suspect Entering Through Window

Reading Time: 1:58 min

The hero of this incident, who likely saved himself from serious injury or worse, is exactly who the framers had in mind when they included the Second Amendment in the…

View post

Federal Court Upholds Age-Based Handgun Ban

Reading Time: 1:56 min

U.S. District Judge Sarala Nagala on Monday rejected the lawsuit brought by the Second Amendment Foundation (SAF) and the Connecticut Citizens Defense League (CCDL) against the state’s ban on adults…

View post

Upstart Political Cabal Openly Seeks Repeal of Second Amendment

Reading Time: 2:21 min

While the American political scene features many prominent players who oppose gun rights to one degree or another, most do not extend their opposition to supporting changes to the Constitution…

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>