Right to Carry

Armed Good Samaritan Intervenes in Stabbing of Tennessee Woman

Reading Time: 2:25 min

The Biblical story of a foreigner who stepped up to help someone when he could just as easily have kept walking still resonates 2,000 years later. It is always heartwarming…

View post

Appeals Court Reaffirms Pennsylvania’s Ban on Young Adults Carrying Concealed Firearms is Unconstitutional

Reading Time: 4:2 min

The tide is turning on the contentious issue of young adults’ Second Amendment rights, and a significant win in a key Pennsylvania case marked another victory for constitutional freedoms. There…

View post

NC Woman Will Not Face Charges in Shooting Death of Knife-Wielding Suspect

Reading Time: 2:29 min

When faced with a potentially deadly attack from a violent criminal, there is hardly enough time to consider possible legal ramifications to defending oneself. That comes later. For one North…

View post

Michigan Bill to Teach Firearm Safety to Students Enjoys Bipartisan Support

Reading Time: 2:24 min

A measure to provide firearm safety training for Michigan students is gathering momentum, and its bipartisan support may ensure its success. State Sen. Jon Bumstead (R) of North Muskegon introduced…

View post

California Lawmakers Seek to Enshrine ‘Duty to Retreat’

Reading Time: 2:36 min

As if California gun owners do not already deal with an insane amount of oppressive laws and regulations from the state, now comes another ridiculous proposal seeking to strip away…

View post

Congressional Effort Underway to Protect Veterans from Losing Their Second Amendment Rights

Reading Time: 2:28 min

A long-overdue push to safeguard veterans’ gun rights is underway in Congress. The Veterans Second Amendment Protection Act has been reintroduced in both the Senate and House, and hopes are…

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>