Right to Carry

NJ Court Arbitrarily Creates Registry of Every ‘Gun-Related Product’ Sold

Reading Time: 2:3 min

New Jersey residents have the misfortune of living in one of the states that is most hostile to the Second Amendment in the Union. Now comes an injunction from a…

View post

Missouri Sheriffs Form Alliance to Protect Second Amendment

Reading Time: 1:52 min

When law enforcement officials discuss what really works to fight violent crime and what is merely window dressing, we should listen. Dozens of top cops are standing up to radical…

View post

Federal Appeals Court Rejects California’s Ammunition Background Check Scheme

Reading Time: 3:30 min

California’s unique scheme to force gun owners to undergo background checks to purchase ammunition is not only ridiculous, but also now unconstitutional. That’s the word from the Ninth U.S. Circuit…

View post

2A Groups Sue New Jersey Over Firearm Suppressor Ban

Reading Time: 1:57 min

A consortium of Second Amendment organizations filed a federal lawsuit this week against New Jersey’s prohibition on firearm suppressors. These attachments are crucial to protecting gun users’ hearing but are…

View post

NRA Blasts Newsom for Second Amendment Flip-Flop

Reading Time: 3:34 min

Political leaders attempting to rewrite history and blur their track records are as old as politics itself. However, the sheer audacity of some lawmakers who count on voter amnesia remains…

View post

Proposal Would Prohibit SBA Discrimination Against the Weapons Industry

Reading Time: 1:57 min

Firearms-related businesses enjoy constitutional protection for the simple fact that they make the right to keep and bear arms possible. Without their wares, the Second Amendment would wither and blow…

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>