Right to Carry

Iowa Expands Second Amendment Rights for Young Adults

Reading Time: 2:22 min

Young Iowans secured a significant victory Friday when Gov. Kim Reynolds (R) signed a bill into law protecting their Second Amendment rights. House File 924 guarantees the freedom of adults…

View post

Advocates Score Major Victory for Non-Residents Seeking Concealed Carry Rights in California

Reading Time: 4:4 min

The patchwork quilt of arbitrary state restrictions on Second Amendment rights is a thorn in the side of law-abiding gun owners across the nation. But now, thanks to the combined…

View post

Georgia Man Utilizes Second Amendment to Protect Family from Alleged Home Invader

Reading Time: 2:31 min

A Butts County father with his wife and three children at home is thankful for the Second Amendment as he successfully thwarted a suspected home invasion. The frightening incident last…

View post

NSSF Celebrates Appointment of Robert Cekada as ATF Deputy Director

Reading Time: 2:26 min

The Bureau of Alcohol, Tobacco, Firearms and Explosives (ATF) has a new deputy director as the long-overdue overhaul of the embattled agency continues. The National Shooting Sports Foundation (NSSF) celebrated…

View post

California Judge Rules Against Company Producing Machines to Create 3D Printable Guns

Reading Time: 2:25 min

A federal judge in San Diego sided with California in its lawsuit against a Texas company that manufactures machines to enable hobbyists to produce their own weapons at home.  With…

View post

Bill to Erase Texas State Fair Concealed Carry Ban Clears First Hurdle

Reading Time: 2:23 min

Of all the pro-Second Amendment states in the Union, many were shocked when a major Texas entity brought the hammer down on lawful concealed carry holders. The Texas State Fair…

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>