2A News

Virginia Senator Blasts Rebellious Prosecutors to Stop ‘Tough Guy Posturing’

Reading Time: 1:57 min

As a wave of Commonwealth Attorneys tells the state to put their “assault weapons” ban where the sun doesn’t shine, the sponsor of the insidious prohibition on the most popular…

View post

Report: 2026 Could Finish with Lowest US Murder Rate in History

Reading Time: 2:12 min

With anti-gun radicals running in aghast circles over the hundreds of millions of firearms that Americans own, there’s a bit of data that they should check out. The Reload reported…

View post

Philly Activist Group Members Lose Carry Rights After Police Confrontation

Reading Time: 2:1 min

An armed Philadelphia activist group that patrols city streets charges that authorities singled them out to revoke many of their concealed carry permits. But why? The Black Lion Party for…

View post

Virginia Leaders Respond to Prosecutors’ Rebellion Over Gun Rights

Reading Time: 2:13 min

Keeping up with how many Commonwealth Attorneys in Virginia are announcing they will not enforce or pursue charges brought by a controversial new law set to take effect in weeks…

View post

Armed Memphis Homeowner Surprises Burglary Suspect in the Act

Reading Time: 1:53 min

Burglars with any sense at all prefer to strike targets where they know that no one is home. It slashes the risk factor, because after all, tens of millions of…

View post

Target Turns to Backup Firearm to Defend Against Robbery Attempt

Reading Time: 1:57 min

Violent criminals tend to run in packs, so it is always important to be on the lookout—especially late at night. It is even better to have backup defenses available if…

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>