Right to Carry

NRA, Sporting Groups Protest Closing of Bears Ears National Monument to Shooters

Reading Time: 1:57 min

Outraged defenders of the nation’s proud heritage of sport shooting filed a formal protest late last week against the federal government’s scheme to close Bears Ears National Monument to sportsmen…

View post

Judge: Massachusetts ‘Suitability’ Gun Law Violates Second Amendment

Reading Time: 1:56 min

The U.S. Supreme Court directly addressed the controversial New York practice of allowing officials to arbitrarily determine whether a person may freely exercise their Second Amendment rights. The 2022 Bruen…

View post

US Gun Sales Continue to Soar Despite Opposition Rhetoric

Reading Time: 2:18 min

As loud voices all across the political landscape warned of doom and gloom if their side did not prevail, one constant in the U.S. remained strong: The voters are all…

View post

Texas State Fair is Over, But Gun Ban Lawsuit is Just Getting Started

Reading Time: 3:33 min

The midway is closed, and revelers are elsewhere, but anger over the unilateral gun ban enacted for this year’s Texas State Fair lingers. Last week, state Attorney General Ken Paxton…

View post

Oregon’s Divisive Gun Control Measure Remains in Legal Limbo

Reading Time: 1:55 min

Oregon citizens who refuse to relegate Second Amendment rights to second-class status are now forced to wait for a definitive ruling on the contentious Measure 114. The sweeping gun control…

View post

American Hunters Increasingly Choose Semi-Automatic Sporting Rifles

Reading Time: 3:57 min

Anti-gun forces are quick to dismiss any practical purpose for a semi-automatic rifle, which they disingenuously smear as “assault weapons.” According to the prevailing narrative, they are inherently dangerous and…

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>