2A News

Ex-ATF Official Fighting Gun Rights Through Everytown

Reading Time: 3:33 min

When they tell you who they really are, believe them. Ammoland News recently spotlighted the work of Marianna Mitchem, a former official with the Bureau of Alcohol, Tobacco, Firearms, and…

View post

AG Bondi: Second Amendment Rights Are Not Second-Class

Reading Time: 2:3 min

As the Department of Justice (DOJ) launches the Second Amendment Rights Division, its leader reaffirmed her position that gun rights are not lesser freedoms that may be whittled down to…

View post

Weapons Maker Sues California Over Ban of ‘Less Lethal’ Firearms

Reading Time: 2:8 min

California’s ongoing war with the Second Amendment extends beyond its fight to suppress gun rights. The state decided along the way that, even as it attempted to impede firearm ownership,…

View post

November Firearm Sales Remain Strong Despite Softening Market

Reading Time: 1:56 min

Gun sales are a convenient barometer of just how healthy the Second Amendment remains in modern America. This success comes despite influential anti-gun lawmakers and mainstream media that consistently parrots…

View post

Texas Homeowner Stops Alleged Attempted Robbery with Hail of Bullets

Reading Time: 2:8 min

It’s a remarkable thing that we still regularly get reports out of Texas that an individual or group decided it was a good idea to invade a person’s home and…

View post

Virginians Stock Up on Firearms Ahead of Incoming Gun Control Regime

Reading Time: 1:55 min

Virginia’s Second Amendment community knows it is in for a lengthy battle with the changing of the guard in the state.  Already saddled with an anti-2A majority in the Legislature,…

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>