Right to Carry

Legal Battle Over Controversial ATF Pistol Brace Rule Advances to Appeals Court

Reading Time: 2:2 min

The Firearms Policy Coalition (FPC) announced that the U.S. government has appealed the June decision by a district court judge to invalidate its arbitrary pistol brace rule. The gun rights…

View post

Police: Woman Mistakenly Attacks Armed Neighbors with Knife

Reading Time: 1:54 min

As the age-old adage goes, it is always a bad idea to take a knife to a gunfight. Rarely does that showdown end well for the holder of the sharpened…

View post

New York City Finally Allows Non-Residents to Seek Carry Permit — With Major Restrictions

Reading Time: 2:22 min

It is no secret that New York City lawmakers hold the Second Amendment and its adherents in scorn. Residents are subject to oppressive restrictions that would horrify good people in…

View post

Nebraska Lawmakers Consider Targeting Gun Owners with Ammo Tax

Reading Time: 1:54 min

Even in the unlikeliest places, there are anti-gunners who seek nothing less than to burden law-abiding citizens with taxes and penalties for exercising their rights. Nebraska is now a prime…

View post

Armed Neighbor Rescues Victim of Alleged Domestic Violence

Reading Time: 2:1 min

There is little more insidious than domestic violence. Those who should be protectors become attackers, and too many lives are shattered by these horrific actions. Last weekend, a Michigan woman…

View post

Federal Judge Dismisses Most of Mexico’s Frivolous Lawsuit Against US Gun Manufacturers

Reading Time: 3:26 min

Mexico’s frivolous lawsuit against U.S. gun manufacturers was bound to stumble in court, and the first significant collapse came Wednesday. U.S. District Judge Dennis Saylor threw out the majority of…

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>