2A News

Man Who Defended Son from Campus Assault Allegedly Receiving Death Threats

Reading Time: 1:52 min

Gun owners must be aware that there are times when even the most justified self-defense shooting sparks unjustified and troubling reactions.  A terrifying self-defense incident unfolded at Kentucky State University…

View post

Hawaii Presents Novel Argument in Supreme Court Gun Control Case

Reading Time: 1:60 min

Hawaii undoubtedly has a unique status as a U.S. state surrounded by the Pacific Ocean and the last to join the Union, and its history is rich and fascinating. Unfortunately,…

View post

Victory: Ninth Circuit Strikes Down California Ban on Open Carry

Reading Time: 1:58 min

The Ninth Circuit Court of Appeals on Friday struck down California’s ban on open carry of firearms in populated areas.  The state prohibition applied to residents of counties with populations…

View post

Las Vegas Homeowner Shoots Two Robbery Suspects

Reading Time: 2:2 min

A law-abiding citizen should not expect to be accosted in their own garage just going through a typical day, and there might not seem to be much of a need…

View post

Appeals Court Dismisses Indiana City’s Lawsuit Against Smith & Wesson—Filed in 1999

Reading Time: 3:28 min

Even the staunchest Second Amendment supporter may be forgiven if they have not kept up with proceedings in Smith & Wesson Corp. v. City of Gary. After all, it meandered…

View post

Virginia Proposal Could Harshly Impact Small Gun Shops

Reading Time: 1:52 min

The newly elected anti-Second Amendment regime in Virginia had not even taken office before the latest attack on gun rights emerged. Governor-Elect Abigail Spanberger (D) will not be sworn in…

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>