2A News

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

Scheme to Ban Hunting and Fishing in Oregon Advances

Reading Time: 2:5 min

An effort to effectively ban hunting, fishing, and even pest control in Oregon cleared a significant hurdle this week and is increasingly likely to appear on the November ballot.  Radicals…

View post

Maryland Joins California in Banning Sale of Glock Handguns

Reading Time: 2:3 min

Following California’s lead on fighting violent crime and gun control is a risky proposition, as the Golden State has perhaps the worst track record on both in the nation. Maryland…

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>