2A News

Two Self-Defense Related NC Laws Take Effect in NC While Constitutional Carry Labors

Reading Time: 3:28 min

North Carolina gun owners currently live in a state of flux, with new laws taking effect at the beginning of the month and a longtime push for constitutional carry still…

View post

Another Court Ruling on Smoking Marijuana and Possessing Firearms

Reading Time: 1:59 min

The labyrinth of laws and court rulings concerning gun rights for marijuana users got more complex on Friday. The Fifth Circuit, in a 2-1 ruling, determined that a Mississippi man…

View post

Senior Citizen Uses Gun for Self-Defense After Attack with Snow Shovel

Reading Time: 1:56 min

A 60-year-old Michigan man is thankful that he was armed Sunday evening despite there not being an apparent reason for enhanced self-defense. That’s because while the Kalamazoo man returned from…

View post

SC Man Shoots Attackers Who Allegedly Set Him Up for an Online Transaction

Reading Time: 1:54 min

Online sales by individuals are here to stay, but there are increasingly alarming reports that they are a tool for violent criminals to target innocent victims. A South Carolina man…

View post

NRA Battle Against California’s Ammunition Controls Continues

Reading Time: 1:56 min

California’s gun owners live under a regime that attempts to stymie their right to keep and bear arms at every turn. One of the major impediments erected by the state…

View post

Report: More Evidence That Armed Citizens Reduce Violent Crime

Reading Time: 1:53 min

Shrill anti-gunners would have you believe that protecting the right to keep and bear arms will result in violence and blood running in the streets. Only, that’s simply not true.…

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>