Right to Carry

Good Guy With a Gun Stops Alleged Florida Carjacking

Reading Time: 2:2 min

There is little more terrifying for a mother than facing a violent carjacking attempt with her small children in the vehicle. It is a sudden and horrific explosion of fear,…

View post

Gun Dealers Forced to Warn of ‘Dangers’ Under New York Law

Reading Time: 1:52 min

Political leaders in some states will not be happy until every gun is confiscated and every holster and gun rack are empty. The only sticking point is the pesky Second…

View post

Empire State Gun Owners Win Important Round in Federal Court

Reading Time: 3:28 min

Anti-gun forces that dominate New York suffered a legal setback on Thursday when a federal judge in Buffalo ruled in favor of the Second Amendment and law-abiding gun owners. The…

View post

Tim Walz Embarrasses Himself Going Shooting, Can’t Load A Shotgun

Reading Time: 3:27 min

Governor Tim Walz recently found himself the subject of scrutiny within the Second Amendment community, not for any groundbreaking policy but for his awkward attempt at a pheasant hunting photo-op.…

View post

Armed Robbery Target Flips Script on Alleged Attacker in Houston

Reading Time: 1:59 min

If anti-gunners get their way and strip Second Amendment rights from Americans, it doesn’t take a genius to figure out that only the bad guys will have firearms. In this…

View post

Mistaken Vigilante Attack Leads to Self-Defense Shooting in South Dakota

Reading Time: 1:58 min

Stand Your Ground laws are prevalent in states that honor the Second Amendment. Still, their detractors cry foul in virtually every instance of a good citizen defending themselves from violent…

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>