2A News

Anti-Gunners Blame Firearms for Apparent Terror Attack in Texas

Reading Time: 1:57 min

When agenda-driven political leaders are on a singular mission, the facts seldom interfere with their arguments. Look no further than the apparent terror attack in Austin for examples of breathless…

View post

Oregon Initiative Would Ban Hunting, Fishing, and Trapping

Reading Time: 1:56 min

The Second Amendment protects a wide range of human rights, such as the right to defend loved ones and property against violent criminals. Then there’s the very real freedom to…

View post

Apparent Drunken Confusion Leads to Shooting When Man Enters Wrong House

Reading Time: 1:51 min

Some mistakes are easily corrected, and then others could lead to all questions about the afterlife being answered for a person.  In South Dakota early Saturday morning, a man nearly…

View post

Missouri Supreme Court Expands Grounds for Self-Defense

Reading Time: 2:5 min

The Missouri Supreme Court last week enhanced self-defense rights for law-abiding citizens, and it barely lifted a finger. Justices declined to hear a challenge to a significant appellate court ruling…

View post

Apparent Drunken Confusion Leads to Shooting When Man Enters Wrong House

Reading Time: 1:51 min

Some mistakes are easily corrected, and then others could lead to all questions about the afterlife being answered for a person.  In South Dakota early Saturday morning, a man nearly…

View post

Tuscaloosa Woman Shoots Alleged Attacker While on Phone With 911

Reading Time: 1:55 min

Conventional wisdom says that the best way to react to a violent threat is to avoid it in the first place, and that is undeniably true. But what happens when…

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>