Right to Carry

Memphis Lawmakers Strip Gun Control Referendum from Ballot

Reading Time: 1:55 min

Nothing hits wayward politicians where it hurts quite like the possibility of losing taxpayer dollars. This proved to be the case when Memphis leaders were threatened with sales tax revenue…

View post

Missouri’s Attempt to Nullify Federal Gun Laws Ruled Unconstitutional

Reading Time: 1:52 min

No matter the outcome, Missouri officials can hardly be blamed for attempting to protect law-abiding citizens from federal laws that suppress Second Amendment rights. However, a federal court struck down…

View post

Kansas Judge Cites Bruen in Tossing Out Machine Gun Charge

Reading Time: 2:9 min

In a ruling that certainly sent shivers through the anti-gun community, a federal judge in Kansas threw out the case against a resident charged with illegally possessing a machine gun.…

View post

Controversial Memphis Gun Control Referendum Blocked

Reading Time: 1:56 min

Memphis is one of several cities in states that respect the Second Amendment attempting to buck the law. The municipality recently submitted a ballot to the Tennessee government with a…

View post

Federal Judge Delivers Blow to California’s Non-Resident Carry Ban

Reading Time: 3:22 min

The political patchwork quilt of gun laws between states that respect Second Amendment rights and those seeking to abolish them is getting out of hand. California, for example, does not…

View post

Machete-Wielding Alleged Attacker Stopped by Gun-Wielding Homeowner

Reading Time: 2:1 min

As the old song says, “You’ve got to know when to hold ‘em, know when to fold ‘em.” That was definitely the case for an alleged Texas intruder who threatened…

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>