Right to Carry

Idaho’s ‘Stand Your Ground’ Law Protects Man Who Killed Attacker in Self-Defense

Reading Time: 2:25 min

Using a firearm to defend against violent criminals is a regular occurrence in 2025. However, even in a clear case of self-defense, the possibility exists that an overzealous prosecutor or…

View post

Firearm Industry Trade Association Files Suit Against Maryland’s Anti-PLCAA Law

Reading Time: 2:33 min

Another day, another state moves to circumvent federal law shielding the gun industry from being hammered by frivolous lawsuits seeking to drive it into the ground. This time it is…

View post

Armed Louisiana Woman Turns Tables on Alleged Attacker

Reading Time: 2:27 min

An alarming attack on a woman in her home unfolded Monday in Louisiana, and despite efforts to deescalate the situation, it was a loaded firearm that may have saved her…

View post

Pennsylvania Supreme Court Cites PLCAA in Dismissing Lawsuit Against Gun Manufacturer

Reading Time: 3:53 min

Common sense and the rule of law carried the day with the Pennsylvania Supreme Court last week. Justices tossed out a lawsuit seeking to blame a gun maker for an…

View post

Elderly Philadelphia Homeowner Fatally Shoots Alleged Burglar

Reading Time: 2:20 min

It takes a different sort of evil to prey on the young and the elderly, but sadly, that is all too familiar in 2025. That is yet another reason why…

View post

NRA Sues to End Colorado’s Controversial Excise Tax on Guns and Ammunition

Reading Time: 2:21 min

A broad coalition of gun rights groups filed a lawsuit Monday against Colorado’s punitive excise tax levied on firearm and ammunition purchases. The National Rifle Association (NRA), along with the…

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>