Right to Carry

California’s Ammunition Background Check System Struck Down

Reading Time: 3:8 min

California’s oppressive limitations on ammunition purchases are on hold after an important decision in Rhode v. Bonta.  United States District Court Judge Roger T. Benitez on Tuesday blocked the sweeping…

View post

Indiana Man Who Fired in Self-Defense Will Not Be Charged

Reading Time: 1:45 min

There is good news for a southern Indiana man who was held in the shooting death of 29-year-old Jacob Mitchell over the weekend. Indiana State Police released 24-year-old Blake Henry…

View post

Chicago Concealed Carry Holder Fights Off Armed Attackers

Reading Time: 1:40 min

Walking down a Chicago street after 4 a.m. does not seem to be the brightest idea, but in the most recent case the circumstances are unclear. Perhaps the pedestrian was…

View post

Alleged Carjacker Shot Multiple Times by Intended Victim in New Orleans

Reading Time: 1:29 min

Carjackers generally do not expect armed resistance. If they did, the incidents of such violent criminal behavior would not be skyrocketing in large cities across the country. For one suspect…

View post

Armed Resident Strikes Alleged Attacker Multiple Times

Reading Time: 1:44 min

Texas does not appear to be the smartest place to invade homes or attack others. Many of the incidents involving a good guy with a gun originate in the Lone…

View post

Maryland Bill Would Require Gun Owners to Purchase $300K Liability Insurance

Reading Time: 3:5 min

Imagine having to pay to enjoy the freedoms enshrined in the Bill of Rights. No one would ever consider a charge for exercising a law-abiding citizen’s freedom of speech, 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>