2A News

Hero California Father Protects Family and Kills Armed Suspect 

Reading Time: 1:54 min

Imagine visiting neighbors during a perfectly normal night and suddenly hearing gunfire and screams coming from your home. Your teenage daughter is inside, as is your wife, who just walked…

View post

DOJ Targets Philly Police Over Carry Permit Cancellations

Reading Time: 1:59 min

The Department of Justice (DOJ) put the Philadelphia Police Department (PPD) on notice this week following multiple complaints over arbitrary revocations of carry permits. On Tuesday, the DOJ Civil Rights…

View post

Battle Lines Expanding in Controversy over 3D-Printed Firearms

Reading Time: 2:0 min

The latest scheme by anti-gunners, even as the U.S. Supreme Court and Department of Justice warm to the concept of Second Amendment rights, is to go after homemade weapons. For…

View post

Virginia Authorities Retreat After Admonishment from Court

Reading Time: 1:57 min

A court order is not something to be taken lightly, even if you are politically powerful and have a rabid base that you constantly need to appease. This hard lesson…

View post

FPC Files Lawsuit Against California Cities’ Handgun Rationing

Reading Time: 1:54 min

California’s anti-Second Amendment establishment faces yet another strong legal challenge after gun rights groups last week filed a lawsuit challenging two cities’ handgun rationing scheme. The Firearms Policy Coalition (FPC),…

View post

Anti-2A Radicals Blow Gasket Over ATF Reform

Reading Time: 1:57 min

Handling disappointment when things don’t go your way is an incredibly valuable life skill that can do wonders for your prospects for a happy and successful future. Then there’s the…

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>