2A News

DOJ Creates Pathway for Restoring Second Amendment Rights

Reading Time: 3:32 min

No one wants weapons kept out of the wrong hands more than the shooting community. However, for far too long a person who lost these rights had virtually no recourse…

View post

White House Hopeful Slams ATF Reform Proposals

Reading Time: 2:3 min

Entrenched bureaucrats and the political hacks who enable them howl in protest when meaningful reforms have a real shot at succeeding. They know that their work is substandard–and that’s putting…

View post

Powerful 2A Coalition Challenges NY Glock Ban

Reading Time: 1:56 min

On Friday, a broad alliance of influential Second Amendment defenders pooled their power against New York’s notorious gun control regime. The National Rifle Association (NRA), Second Amendment Foundation (SAF), Firearms…

View post

SC Clerk Shot and Killed Alleged Vape Shop Robber

Reading Time: 1:58 min

Good citizens who work sometimes thankless jobs have the same dreams and goals as everyone else. They may toil in liquor stores, fast food outlets, or deliver food at all…

View post

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

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
<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>