2A News

NSSF: Media May Purposefully Understate Number of Modern Sporting Rifles in Circulation

Reading Time: 1:56 min

It should be more difficult in the Google age to declare false data to score political points, but far too many people take the mainstream media at its word and…

View post

Hawaii County’s Gun Control Regime Sued Over Permit Delays

Reading Time: 1:53 min

The Aloha State welcomes millions of visitors every year to enjoy its pristine beaches and tropical delights. Unfortunately, it is not a welcoming environment for those who wish to freely…

View post

Mississippi Home Invasion Leads to Fatal Shooting of Suspect

Reading Time: 1:57 min

Ski masks are great for hitting the slopes at this time of year, but they are also the disguise of choice for violent criminals wishing to hide their identity. But…

View post

Victory: ‘Egregious’ Suppressor Tax Proposal Pulled in Virginia

Reading Time: 1:51 min

In a legislative session during which Virginia’s Second Amendment opponents waged all-out war on gun rights, any victory is worth celebrating.  Now comes word that the proposed $500 suppressor tax…

View post

Officials Push to Extend Indiana Preemption Law to Shooting Ranges

Reading Time: 1:53 min

Second Amendment opponents strive daily to find new ways to suppress the right to keep and bear arms. Unable to ban firearms outright due to the pesky Bill of Rights,…

View post

2A Groups Slam New Mexico’s Gun Control Schemes

Reading Time: 1:54 min

New Mexico’s anti-gunners treated the new year like a fresh opportunity to infringe on Second Amendment rights, and they did not waste a moment in racing toward that goal. The…

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>