Right to Carry

Armed Citizen Defends Himself From Violence in Smoke Shop Altercation

Reading Time: 1:39 min

Not all notable cases of armed self-defense occur at 3:00 a.m. when a burglar breaks a window and alerts a homeowner that something is amiss. Sometimes the situation is brought…

View post

2023 Was a Banner Year for Constitutional Carry

Reading Time: 3:20 min

Less than three years ago, there were only 16 states in the U.S. that allowed permitless carry, or constitutional carry. This is despite the Second Amendment’s crystal-clear establishment of the…

View post

Sheriff Praises Judge’s Rejection of California Gun Control Law

Reading Time: 1:35 min

U.S. District Court Judge Cormac Carney came down clearly on the side of the Second Amendment Wednesday, and his ruling is being celebrated by a prominent California law enforcement authority.…

View post

Concealed Carry Permit Holder Thwarts Alleged Armed Robbery in Chicago

Reading Time: 1:38 min

There is much to be said about instances of a good guy with a gun that some do not want you to hear. While they enjoy rattling off instances where…

View post

New Mexico Anti-Gun Group in Legal Trouble Over Gun Buyback

Reading Time: 3:14 min

A New Mexico gun control group may have violated a state statute that they helped to enact. The law of unintended consequences is alive and well. New Mexicans to Prevent…

View post

California Law Banning Concealed Carry in Most Public Places Temporarily Blocked

Reading Time: 3:10 min

California’s prohibition of concealed carry in most public places was set to take effect Jan. 1. That is derailed for now as a federal judge on Wednesday temporarily blocked 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>