Right to Carry

Why the RM-1S Might Be the Best Budget-Friendly Pistol on the Market

Reading Time: 1:52 min

Meet the Rost Martin RM-1S—the compact, stylish sibling of the dependable RM-1C. If the RM-1C is the all-purpose SUV of pistols, the RM-1S is the sporty coupe: sleek, fast, and…

View post

White House Reverses Controversial ‘Zero Tolerance’ Policy for Gun Dealers

Reading Time: 3:52 min

The embattled Bureau of Alcohol, Tobacco, Firearms, and Explosives (ATF) established a “zero tolerance” policy in handling federal firearm licenses (FFLs) in recent years, which is coming to a welcome…

View post

Lawmakers Move to Block Sinister Federal Gun Registry

Reading Time: 3:56 min

To be clear, the goal of virtually every anti-gunner is to eradicate gun rights and confiscate the hundreds of millions of weapons in circulation in the U.S. To achieve this,…

View post

Pennsylvania Lawmaker Proposes Misguided Attempt to Suppress Gun Shows

Reading Time: 3:60 min

When Second Amendment opponents tell you they will stop at nothing to harass gun owners and ultimately strip away the right to keep and bear arms, believe them. One such…

View post

NSSF Report: Americans Own More Than 30 Million Modern Sporting Rifles

Reading Time: 3:53 min

State and local governments that persist in attacking Second Amendment rights frequently target modern sporting rifles (MSRs). These semi-automatic weapons are used for everything from sport shooting and hunting to…

View post

Virginia Homeowner Shoots Alleged Intruder Multiple Times in the Middle of the Night

Reading Time: 2:22 min

Anti-gunners try to convince the people that the right to keep and bear arms is a threat to public safety and the cause of criminal violence. Only, the facts loudly…

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>