2A News

2A Groups Petition SCOTUS to Hear Maryland Gun Permit Case

Reading Time: 2:6 min

Reciprocity is an issue that will not go away, at least not until the U.S. Supreme Court provides clarity. The right to carry a firearm away from the home for…

View post

Atlanta Homeowner Charged After Shooting Two Alleged Porch Pirates

Reading Time: 1:56 min

There is a distinctive gray area in cases of self-defense where the intended victim is not under an immediate violent threat. Unfortunately for the good people, these incidents unfold so…

View post

Dhillon: New DOJ Section to Provide ‘a Lot More Action’ to Restore Gun Rights

Reading Time: 1:58 min

This week’s launch of the Department of Justice’s (DOJ) new Second Amendment Rights Section is a welcome change. Agency leaders assured the sporting public that there would be “a lot…

View post

Utah Jewelry Store Invasion Ends Badly for Suspects

Reading Time: 2:1 min

A reasonable person would think twice in 2025 before attempting to rob an establishment that has typically been tied to such incidents. Pawn shops, liquor stores, and convenience stores are…

View post

Chicago Man Fires on Pair of Alleged Carjackers

Reading Time: 1:53 min

Chicago officials are well known for their opposition to gun rights, and along with Illinois state lawmakers, they do everything in their power to build walls between the good people…

View post

U of Wyoming to Spearhead National Second Amendment Initiative

Reading Time: 3:32 min

The level of misinformation surrounding the Second Amendment will be addressed under a new program funded by the Trump administration. The University of Wyoming College of Law’s Firearms Research Center…

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>