Right to Carry

Advocacy Group Warns of Effort to Entrap Law-Abiding Gun Owners

Reading Time: 3:38 min

Advocacy Group Warns of Effort to Entrap Law-Abiding Gun Owners as Oregon lawmakers push forward with a controversial piece of legislation, Senate Bill 243. The measure, which has already cleared…

View post

Good Guy with a Gun Stops Attempted Carjacking in Georgia

Reading Time: 3:42 min

Good Guy with a Gun Stops Attempted Carjacking in Georgia in a courageous act that may have saved multiple lives. What began as a terrifying assault at a Marietta gas…

View post

Pennsylvania, Virginia Reestablish Concealed Carry Reciprocity

Reading Time: 3:32 min

Pennsylvania, Virginia Reestablish Concealed Carry Reciprocity in a long-awaited move that restores Second Amendment protections to hundreds of thousands of gun owners traveling between the two states. Thanks to a…

View post

Chicago CCL Holder Fatally Shoots Teen Robbery Suspect

Reading Time: 3:36 min

Chicago CCL Holder Fatally Shoots Teen Robbery Suspect in a tragic yet legally complex confrontation that unfolded late Tuesday night in the city’s Humboldt Park neighborhood. The case highlights a…

View post

Sixteen Attorneys General Sue Over Forced Reset Trigger Settlement

Reading Time: 3:35 min

In a move stirring national controversy, sixteen attorneys general sue over Forced Reset Trigger settlement, seeking to block a legal agreement between the Department of Justice (DOJ) and a firearms…

View post

2nd Circuit: Federal Gun Ban Applies to Financial Felons

Reading Time: 3:44 min

2nd Circuit: Federal Gun Ban Applies to Financial Felons following a Monday decision from a three-judge panel that unanimously upheld the constitutionality of stripping non-violent felons of their Second Amendment…

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>