Right to Carry

North Dakota Teacher Avoids Charges in Self-Defense Shooting

Reading Time: 1:53 min

A teacher turned Good Samaritan is relieved to learn that he will not be charged in an August self-defense shooting in Fargo, North Dakota. Prosecutors determined Donald Barron’s actions were…

View post

Hammer-Wielding Suspect Hospitalized After Being Shot by Homeowner

Reading Time: 1:54 min

Not every life-threatening encounter involves a firearm, and there are many weapons that violent criminals may use to cause havoc and destruction. A frightening Friday evening incident in Fresno ended…

View post

Alleged Armed Robbery Attempt at Atlanta Football Party Leads to Self-Defense Shooting

Reading Time: 1:57 min

It is a sad day when a good citizen cannot invite friends over for a football party without fear of violent crime. Unfortunately, these troubled times mean it is critical…

View post

New Mexico’s ‘Emergency Health Order’ on Guns Expires

Reading Time: 1:60 min

New Mexico Gov. Michelle Lujan Grisham’s (D) contentious “emergency” executive order banning weapons from a wide array of public spaces died a natural death this week when she allowed it…

View post

Massachusetts Gun Owners Rise Against Controversial New State Law

Reading Time: 3:25 min

It is no small historical irony that the birthplace of the American Revolution is now controlled by political leaders who want to eradicate gun rights. However, Massachusetts’ race to be…

View post

Armed Walgreens Employee Defends Himself Against Alleged Shoplifter Brandishing Weapon

Reading Time: 1:54 min

An alleged armed shoplifter got more than he bargained for when he responded to being caught by producing a firearm. The 48-year-old Illinois man paid for that mistake with his…

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>