Right to Carry

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

New Jersey Town Refunds Permitting Fees Back to Carry Permit Applicants

Reading Time: 3:35 min

New Jersey Town Refunds Permitting Fees Back to Carry Permit Applicants in a rare but powerful act of local resistance against the state’s restrictive gun laws. Englishtown, a small borough…

View post

Crab Shack Employee Reverses Roles with Alleged Armed Gunman in Richmond, VA

Reading Time: 3:33 min

Crab Shack Employee Reverses Roles with Alleged Armed Gunman in a dramatic incident that unfolded Thursday night at Sugar’s Crab Shack in Richmond, Virginia. What was likely meant to be…

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>