2A News

Victory: Expanded Injunction on Post Office Carry Ban

Reading Time: 1:55 min

With Second Amendment organizations fighting valiant battles nationwide to defend gun rights, it is important to recognize and congratulate successes against government forces armed with virtually unlimited taxpayer funds. Last…

View post

New York Ends Probes of Social Media for Gun Permit Applicants

Reading Time: 2:12 min

New York State’s 2022 Concealed Carry Improvement Act (CCIA) is as controversial as it is misnamed, and at least one part of the gun control infrastructure it established is on…

View post

Violent College Attacks Reignite Calls for Campus Carry

Reading Time: 1:59 min

Second Amendment advocates in eight states now call for easing restrictions on campus carry after two university attacks in recent months. Just last week, a convicted ISIS supporter who served…

View post

2A Coalition Urges Pennsylvania High Court to Strike Down Carry Restrictions

Reading Time: 1:60 min

The Pennsylvania Supreme Court has an opportunity approaching to right a present wrong. In Commonwealth v. Williams, justices will decide if the state’s carry restrictions for young adults under 21…

View post

Delivery Driver Wields Firearm to Defend Against Alleged Road Rager

Reading Time: 1:53 min

Delivery drivers are as ubiquitous in 2026 as Blockbuster locations were in the 80s and 90s. Unfortunately, the nature of the business makes it highly likely that these gig workers…

View post

Gun Magazines Given Away in Protest of Pending Virginia Ban

Reading Time: 1:52 min

It was a welcome sight on Saturday when hundreds of Second Amendment supporters rallied at the Virginia State Capitol. Many of the citizens were armed, and videos of a particular…

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>