2A News

Police Arrest Atlanta Burglary Victim After He Allegedly Shot Young Suspect

Reading Time: 1:58 min

While the lawfulness of defense of life and property would logically be a given, that is unfortunately not always the case. A recent incident in Atlanta in which a homeowner…

View post

Judge: Florida’s Concealed Carry Minimum Age of 21 is Unconstitutional

Reading Time: 1:55 min

Second Amendment supporters continue to battle laws that discriminate against young adults exercising their rights, and they are happy to report a recent victory in Florida. The encouraging decision came…

View post

AI Firearm Detection System Under Fire After Baltimore Student Held at Gunpoint

Reading Time: 2:3 min

As school safety is increasingly on the front burner, some systems are installing new AI firearm detection systems to ward off possible threats. Suffice it to say, the bugs are…

View post

Alleged California Burglar Learns Hard Lesson Delivered by Armed Citizen

Reading Time: 1:52 min

There’s an old saying in which a person with nerves of steel is described as having “the guts of a burglar.” However, as more Americans arm themselves to protect their…

View post

South Carolina’s ‘Stand Your Ground’ Law Protects Another Potential Victim

Reading Time: 1:56 min

There is something profoundly fundamental about the right to self-defense. Anyone who does not believe that all law-abiding citizens have the freedom to use whatever force is necessary to protect…

View post

NRA Responds to Government Brief Before SCOTUS Concerning SBRs

Reading Time: 1:56 min

The National Rifle Association (NRA), the nation’s oldest and largest gun rights advocacy organization, filed a critical brief Thursday through its Institute for Legislative Action (ILA). The Reply Brief concerned…

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>