Right to Carry

Hammer-Wielding Road Rager Shot by Handgun-Wielding Motorcyclist in Self-Defense

Reading Time: 2:19 min

It is all too common for disturbed drivers to act out aggressively against others they believe wronged them on the nation’s highways. But shouted curses and middle fingers may swiftly…

View post

Alleged Stalker Shot by Armed Texas Woman

Reading Time: 2:22 min

A man accused of following a Texas woman home and then breaking into her residence found out the hard way that a loaded firearm is indeed the “great equalizer.” The…

View post

Federal Appeals Court Allows Colorado’s Young Adult Gun Ban to Take Effect

Reading Time: 2:27 min

Anti-gunners frequently attack the rights of young adults to keep and bear arms, and that freedom suffered another setback in Colorado on Tuesday. The Rocky Mountain Gun Owners v. Polis…

View post

New Administration Brings Push for National Concealed Carry Reciprocity

Reading Time: 2:22 min

Last week’s U.S. presidential election is in the history books, and for Second Amendment advocates, few issues were at the forefront of the campaign platforms. However, President-Elect Donald Trump (R)…

View post

South Texas School District Arming Teachers and Staff

Reading Time: 4:1 min

With schools tragically determined to be “soft targets” by evildoers, more and more educational institutions turn to the Second Amendment to protect children and teachers. This is the case with…

View post

What Trump’s Return Means For The Second Amendment

Reading Time: 5:23 min

With the 2024 election wrapped up and Donald Trump back in office, gun rights in America are once again under the spotlight. Trump’s return could bring significant changes for the…

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>