Right to Carry

Oklahoma Legislator Seeks Grand Jury Investigation of Controversial ATF Raid

Reading Time: 3:23 min

A grand jury may be called to investigate the controversial June raid on an Oklahoma resident by the Bureau of Alcohol, Tobacco, Firearms and Explosives (ATF).  That’s the noble goal…

View post

Leaders Shamelessly Exploit Maine Tragedy for Personal Agendas

Reading Time: 3:7 min

It took no time for anti-gun politicians to use the Maine shootings to rail against the Second Amendment. Even as the manhunt continued and questions swirled, the now-familiar rhetoric was…

View post

Senate Moves to Protect Veterans’ Second Amendment Rights From VA

Reading Time: 3:4 min

One would think it is a massive no-brainer to protect the Second Amendment rights of the nation’s military veterans. After all, these men and women performed the highest service to…

View post

Alabama Gun Owner Apprehends Murder Suspect for Police

Reading Time: 1:31 min

Yet another good guy with a gun swooped in to save the day, and this time he may have prevented further loss of life. This time an Alabama gun owner…

View post

New York Sheriff Frustrated by Ammunition Background Check System

Reading Time: 1:37 min

Just how incompetent is the New York ammunition background check system? On top of ridiculous delays and false denials, a local sheriff was forced to wait for 25 full hours…

View post

New York City’s Flagrant Defiance of Bruen Struck Down by Judge

Reading Time: 3:9 min

Perhaps more than any other anti-Second Amendment jurisdiction, New York City threw a temper tantrum unbecoming of a first world country after last year’s pivotal Supreme Court decision on gun…

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>