Right to Carry

Senators Charge ATF Illegally Paid Agents Millions in Unearned Benefits

Reading Time: 2:28 min

Senators Accuse ATF of Illegally Inflating Salaries The embattled Bureau of Alcohol, Tobacco, Firearms, and Explosives (ATF) is facing yet another torrent of controversy. Two senators charge that the agency…

View post

Alleged Intruder Brought an Axe to a Gunfight–With Predictable Results

Reading Time: 2:31 min

Home Invasion Highlights Importance of Gun Rights and Self-Defense There are far too many instances when the Second Amendment is the only thing standing between a family and becoming the…

View post

Anti-Gun California Lawmakers Push Proposal to Ban Glock Handguns

Reading Time: 2:34 min

California’s Newest Gun Control Push Targets Glock Pistols California legislators recently reached into their bag of anti-Second Amendment tricks with a new proposal. If the bill became law, the good…

View post

Pressure Mounts on Supreme Court to Hear Hawaii Carry Ban Case

Reading Time: 4:25 min

Supreme Court Faces Critical Test in Hawaii Gun Rights Showdown Pressure Mounts on Supreme Court to Hear Hawaii Carry Ban Case. Are there 49 U.S. states that are bound to…

View post

New York Legislator Floats Ridiculous Mandate for Gun Owners

Reading Time: 2:26 min

Lawmakers Keep Missing the Mark on Violent Crime The wisdom of the straightforward and targeted approach to solving violent crime is lost on many lawmakers. Instead of going after the…

View post

Minnesota Now Has Reciprocity With 33 States After Supreme Court Decision

Reading Time: 2:27 min

Supreme Court Delivers Major Win for Young Gun Owners The U.S. Supreme Court’s recent action in Worth v. Jacobson upholding the rights of young adults to obtain a carry permit…

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>