Right to Carry

Florida Fire Investigator Uses Weapon to Defend Against Attacker

Reading Time: 2:23 min

It pays to be prepared, no matter how unlikely a violent encounter may appear. A Florida fire investigator learned this lesson Friday morning while on the scene of a blaze.…

View post

Kentucky Governor Backs Gun Rights for Medical Marijuana Users

Reading Time: 2:24 min

There is a seismic shift underfoot when it comes to marijuana, and unfortunately, there are lawful gun owners who are ensnared in legal limbo. As more and more states accept…

View post

Chicago Man Kills One Alleged Attacker and Injures a Second in Apparent Robbery Attempt

Reading Time: 2:29 min

A Chicago garbage collector is fortunate to be alive today after a frightening encounter early Friday morning with two alleged armed robbers. He has his concealed carry license and his…

View post

Gun Rights Under All-Out Attack in Virginia Senate

Reading Time: 4:6 min

Forces aligned against gun rights in Virginia are gathering momentum for an all-out assault on the Second Amendment in 2025, and advocates for gun owners have to be ready. The…

View post

Fifth Circuit Rules Against Federal Handgun Ban for Young Adults

Reading Time: 3:50 min

After what seemed to be a steady stream of legal decisions running counter to the Second Amendment, the good guys scored a significant victory last week. A three-judge panel of…

View post

Anti-Second Amendment New York Lawmakers Advance ‘Smart Gun’ Scheme

Reading Time: 2:26 min

Anti-gunners, like rust, never sleep. They spend every living hour dreaming up new schemes to nullify the Second Amendment and strip guns away from upstanding citizens. Fortunately for most of…

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>