Right to Carry

Grassroots Virginia Effort Derails County Gun Ban

Reading Time: 1:33 min

When a local government in Virginia recently considered a ban on firearms and ammunition in a sweeping array of locations, local residents rose up and fought the change. In a…

View post

Another Sheriff Rejects California’s ‘Gun-Free’ Zones

Reading Time: 1:40 min

Civil disobedience can be a beautiful thing, especially when it comes to sacred constitutional rights and an egregious government overreach. This is the case in California where another sheriff publicly…

View post

Newsom Proved Hostility Toward Supreme Court and Second Amendment

Reading Time: 1:49 min

Why should law-abiding Americans across the land care about the antics of California Gov. Gavin Newsom (D)? After all, he has political authority in exactly one state, leaving the other…

View post

Illinois’ Sorry State of Affairs with Banning ‘Assault Weapons’

Reading Time: 2:58 min

Other than using turn signals, there may be no other law in the land more disrespected and ignored than the Illinois ban on so-called “assault weapons.” Law-abiding citizens engaged in…

View post

Female Convenience Store Owner Stops Three Suspected Armed Burglars

Reading Time: 1:37 min

A courageous female store owner in Chicago confronted three armed male burglary suspects early Thursday morning and exchanged fire with the criminals before they fled. Police in the Windy City…

View post

California ‘Sensitive Places’ Law on Hold Again

Reading Time: 1:39 min

In the twisting saga of California’s on-again, off-again new law designating nearly all public property in the state as “sensitive places,” the latest turn has the anti-Second Amendment statute on…

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>