Right to Carry

Seattle Delivery Driver Run Down by Own Van, Uses Firearm to Stop Attacker

Reading Time: 2:24 min

Hardworking delivery drivers are all too often deemed “soft targets” by violent criminals who would prey on them as they do their jobs. In one recent Seattle instance, that presumption…

View post

Appeals Court to Determine Constitutionality of Illinois FOID Mandate

Reading Time: 2:25 min

The controversial Illinois mandate that firearm purchasers apply and meet requirements for a Firearms Owners Identification (FOID) card is before the 4th District Appellate Court. The plaintiffs argued last week…

View post

North Dakota Supreme Court Strengthens State Preemption Law Protecting Gun Rights

Reading Time: 2:29 min

Anti-gun forces in local governments are on the warpath against state preemption laws protecting Second Amendment rights. Once again, this time in North Dakota, their efforts proved futile. Last Thursday,…

View post

Utah Convenience Store Clerk Uses Alleged Thief’s Firearm to Stop Robbery

Reading Time: 2:22 min

Convenience and liquor stores are standard targets for not-too-bright violent criminals, but they may want to reconsider their career path and choose another line of work. These locations are increasingly…

View post

Federal Appeals Court Rejects Challenge to Non-Violent Felon Gun Ban

Reading Time: 3:53 min

A federal appeals court last week affirmed the government’s right to permanently disarm non-violent felons so long as their criminal history includes violent acts. The Sixth Circuit Court of Appeals…

View post

Congress Praised for Expanding Sport Shooters’ Access to Public Lands

Reading Time: 2:20 min

With as much justified criticism as Second Amendment advocates level at Congress and federal agencies, there are times when praise is also appropriate. A recent bipartisan congressional act drew admiration…

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>