Right to Carry

Idaho Bucks Western Trend with Several Pro-Gun Measures

Reading Time: 3:56 min

It would be difficult to blame gun owners in the nation’s west for feeling besieged by anti-Second Amendment forces. One state after another throws up barriers to keep and bear…

View post

Maine’s Yellow Flag Gun Law Scrutinized After Mass Shooting

Reading Time: 3:49 min

A scathing new report alleges that Maine law enforcement officials should have taken the Lewiston gunman into custody and confiscated his firearms long before last fall’s deadly attack. The findings…

View post

Gun Rights Supporters Blast White House’s ‘Massive Red Flag Operation’

Reading Time: 3:41 min

Those who defend the Second Amendment must keep guard against seemingly daily attacks on personal freedoms.  Now comes word that the White House earmarked three-quarters of a billion dollars to…

View post

Tennessee Lawmakers Advance Bill to Protect Gun Owners’ Privacy

Reading Time: 2:12 min

While there are far too many examples of politicians catering to anti-gun forces and working to suppress Second Amendment rights, it must be recognized when lawmakers take a stand for…

View post

Florida Father Assists Deputy in Defending Family from Armed Suspect

Reading Time: 2:10 min

An armed good guy in Florida rushed to support a law enforcement officer under attack by a suspect who fired multiple rounds, according to a police report. The suspect, 29-year-old…

View post

Houston Man Shot Multiple Times by Woman Using Self-Defense

Reading Time: 2:27 min

Police officers have a notoriously difficult job that only becomes more burdensome when they encounter a violent domestic situation. There will almost certainly be wildly conflicting reports of the incident…

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>