Right to Carry

Food Vendor With Concealed Handgun License Shoots Robber Dead in Chicago

Reading Time: 3:38 min

A food vendor on Chicago’s West Side, doing what he’s been doing for the last ten years—serving his community, one meal at a time. But just before 9 PM, as…

View post

Philadelphia Man Charged with Murder After Shooting Alleged Car Thief

Reading Time: 2:22 min

In a cautionary tale for the limits of justifiable self-defense in some jurisdictions, a Philadelphia man has been charged with murder and other felonies after shooting an alleged car thief.…

View post

Alabama Man Foils Alleged Attack with Fatal Shot to the Groin

Reading Time: 2:19 min

As causes of death go, being fatally shot in the groin ranks right up there with the worst imaginable. Unfortunately for an Alabama man, that was the outcome of an…

View post

Judge: Second Amendment Does Not Protect Illegal Immigrants

Reading Time: 2:23 min

A federal judge ruled that an illegal immigrant in Ohio charged with unlawfully possessing roughly 170 firearms is not protected by the Second Amendment. Carlos Serrano-Restrepo continues to face the…

View post

Shooting Classroom Doors, Can This Lock Stop A School Shooter?

Reading Time: 4:13 min

Classroom safety shouldn’t be optional, yet a shocking number of schools still lack basic safety features like doors that lock from the inside. According to a 2020 survey by the…

View post

Chicago Food Vendor Uses Legal Firearm to Shoot Alleged Robber

Reading Time: 2:20 min

Food vendors are as much of the American urban landscape as tall buildings and taxicabs. Unfortunately, they present what some violent criminals believe to be “soft targets” and are forced…

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>