Right to Carry

NRA Opposes DOJ Gun Rights Restoration Plan as Currently Constructed

Reading Time: 3:21 min

The Department of Justice (DOJ) recently announced a bold plan to reconstruct the gun rights restoration process. While this was met with cautious optimism in the Second Amendment lobby, a…

View post

Sig Sauer Doubles Down on P320 Safety Amid Avalanche of Reports

Reading Time: 3:26 min

Sig Sauer doubles down on P320 safety amid avalanche of reports that accuse the popular firearm of firing without the trigger being pulled—a claim the company adamantly denies. The growing…

View post

Sig Sauer Doubles Down on P320 Safety Amid Avalanche of Reports

Reading Time: 2:4 min

The public relations nightmare surrounding renowned firearm manufacturer Sig Sauer continues to intensify, even as the gun maker defends its products against a barrage of negative publicity. Reports of accidental…

View post

Arizona Lawmaker Issues Dire Warning Against Expanding Gun Control

Reading Time: 1:54 min

Anti-gunners work tirelessly to strip away the right to keep and bear arms, and this week, an Arizona legislator warned the people that there will be dire consequences if these…

View post

NC Lawmakers Override One Anti-Gun Veto, Second Uncertain

Reading Time: 1:53 min

North Carolina legislators broke bread last week as they convened to consider overturning a laundry list of vetoes issued by Gov. Josh Stein (D). On Second Amendment-related issues, there was…

View post

Washington State Crime Data Debunks Anti-Gunners’ Claims

Reading Time: 1:58 min

Second Amendment opponents are predictably long on inflammatory rhetoric and short on facts and sound arguments. The problem is, the mainstream media tends to parrot these talking points without critical…

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>