2A News

Armed Good Samaritan Holds Suspect For Police After Horrific Attack

Reading Time: 1:49 min

It is still possible, even in 2025, to be stunned by the utter cruelty that people can inflict on one another.  An armed Good Samaritan in Tennessee was unable to…

View post

California Man Stops Home Invasion With .22 Rifle

Reading Time: 1:52 min

It’s not every day that a home invasion is carried out with a wooden pole as the weapon of choice, but that’s what unfolded early Thursday morning at a Mount…

View post

California Man Stops Home Invasion With .22 Rifle

Reading Time: 1:52 min

It’s not every day that a home invasion is carried out with a wooden pole as the weapon of choice, but that’s what unfolded early Thursday morning at a Mount…

View post

Former NBA Player Fires Several Rounds to Scare Off Three Alleged Intruders

Reading Time: 1:56 min

American professional athletes are increasingly targeted by burglars seeking a big score. That frightening scenario played out for former Los Angeles Laker and current NBA free agent Christian Wood on…

View post

SAF Petitions Supreme Court for Review in Challenge to Connecticut’s ‘Assault Weapons’ Ban

Reading Time: 1:55 min

It is not a question of if but when the U.S. Supreme Court will weigh in decisively on the issue of popular sporting rifles. Opponents of these firearms smear them…

View post

October US Gun Sales Hold Steady Over the One Million Mark

Reading Time: 1:48 min

Tracking firearm transactions monthly is a great way to assess the overall health of the weapons industry. And though numbers are down from their peak during the disruptions of 2020,…

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>