2A News

Washington State Concealed Carry Licenses Plummet

Reading Time: 1:56 min

Citizens periodically vote in a broad array of elections, and these results are widely reported for all to see. But there’s another form of voting, a much more powerful statement,…

View post

FPC’s ‘Freedom Index’ Rates Only 2 States as ‘Perfect’ on 2A Rights

Reading Time: 1:51 min

The Firearms Policy Coalition (FPC) presented a fascinating report card to the nation last week. The Second Amendment organization’s inaugural Freedom Index ranked the 50 states on how much their…

View post

NSSF Blasts ‘Lax’ Prosecutors Who Let Illegal Straw Purchases Slide

Reading Time: 2:17 min

To hear anti-gunners tell it, the firearms industry is filled with raving lunatics who want to return the nation to the bloody Wild West era or possibly the Prohibition-fueled gangland…

View post

NC Man Fires on Suspect Who Just Broke into His Home

Reading Time: 1:59 min

When a burglar attempts to break into an occupied dwelling, they must somehow realize that they are risking their life. Whatever loot might be gained at the expense of another…

View post

US Military Personnel Now Permitted to Carry on Base

Reading Time: 1:53 min

A military base, at first glance, would be one of the safest locations a person could ask for. Thousands of highly trained personnel are ready for any threat, and outside…

View post

West Virginia Extends Constitutional Carry to Young Adults

Reading Time: 1:57 min

There is good news for West Virginia’s young adults as the state joined many of its colleagues this week in expanding Second Amendment rights to include this age group. On…

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>