2A News

23 State AGs Rail Against ATF Reform

Reading Time: 2:1 min

Some automatically recoil in horror at what most reasonable people consider progress, and enhancing the free exercise of Second Amendment rights is hardly different. The Bureau of Alcohol, Tobacco, Firearms…

View post

First Lawfully Unrecorded Suppressor Transferred in Nearly a Century

Reading Time: 3:35 min

History was made just after the stroke of midnight Thursday morning when a silencer was legally transferred without National Firearms Act (NFA) registration.  Gun Owners of America (GOA), Silencer Shop,…

View post

GOA Urges White House Calls to Oppose DOJ Appeal

Reading Time: 2:3 min

Gun Owners of America (GOA) took a much-deserved victory lap after the recent and significant court ruling that struck down the statutory National Firearms Act (NFA) registration of certain Second…

View post

Veteran Endorses National Concealed Carry for Retired Special Ops

Reading Time: 2:3 min

A special privilege granted to qualified active, retired, or separated law enforcement officers to carry concealed weapons nationwide, regardless of local gun control laws, should be expanded. That’s the word…

View post

NSSF Criticizes Chicago Mayor’s Misplaced Priorities

Reading Time: 3:35 min

Law enforcement officers must have complete confidence that their service weapons are the most reliable that they may carry. After all, these public servants rarely get “do-overs” when encountering dangerous…

View post

Report: Nearly 1 in 3 Likely Voters Carry Concealed Weapons

Reading Time: 1:57 min

Rabid Second Amendment opponents would do well to consider new data compiled by McLaughlin and Associates and released by the Crime Prevention Research Center (CRPC). It is eye-opening. Nearly one-third…

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>