Right to Carry

Why Glock 19 Used to Be The Answer & Isn’t Anymore

Reading Time: 2:35 min

Why Glock 19 Used to Be The Answer & Isn’t Anymore is a debate that defines how far the concealed carry market has come. Once considered the gold standard of…

View post

At Long Last: Louisiana Frog Hunters May Now Carry Firearms at Night

Reading Time: 1:49 min

Of all the things that Americans may be restricted from, being prohibited from carrying a gun while frogging at night in Louisiana is not one that jumps out as most…

View post

Charlie Kirk’s Tense Gun Debate On College Campus

Reading Time: 2:31 min

Charlie Kirk’s tense gun debate on a college campus has sparked discussion about the Second Amendment and its role in protecting American freedoms. The exchange, which took place between Kirk…

View post

Appeals Court Rules California’s ‘One-Gun-Per-Month’ Rule Unconstitutional

Reading Time: 2:14 min

In retrospect, it is stunning that California’s notoriously bad “one-gun-per-month” law managed to stay on the books for 26 years before finally being thrown out with the other trash. After…

View post

WV Homeowner Shoots and Kills Heavily Armed Intruder

Reading Time: 2:5 min

A West Virginia homeowner is fortunate to be alive today after confronting an armed trespasser, and it is thanks to the Second Amendment that he walked away. Authorities were called…

View post

Ninth Circuit Panel Revives Lawsuit Against LA Concealed Carry Regime

Reading Time: 1:55 min

The wheels of justice are slowly turning against California’s notorious gun control scheme, and it’s always a good day when the Ninth Circuit acknowledges the Second Amendment. A three-judge panel…

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>