2A News

SAF Expands Suit Over Prohibited Roommate Gun Ban

Reading Time: 2:2 min

The Second Amendment Foundation (SAF) and its partners filed suit against several Bergen County, New Jersey, officials in November on behalf of Elsid Aliaj, and now the legal action includes…

View post

Virginia Resumes Illegal Checks on Private Firearm Transactions

Reading Time: 1:57 min

Facing a Supreme Court that ruled his actions were unconstitutional, President Andrew Jackson in the early 19th century famously and perhaps apocryphally challenged justices to enforce their decision. Of course,…

View post

Iowa Police Sgt. Gives Bizarre Warning After Self-Defense Shooting

Reading Time: 2:15 min

The well-worn script that follows a justified defensive shooting in the U.S. usually results in law enforcement commending the citizen for being their own first responder. The defender, in most…

View post

Va. Authorities Declare ‘Assault Firearm’ Ban Won’t be Enforced

Reading Time: 2:5 min

Virginia’s all-out attack on what are falsely deemed “assault firearms” quickly stirred a wave of opposition. Gun rights stalwarts quickly filed multiple lawsuits, and more legal challenges would not be…

View post

Homeowner Shoots Alleged Intruder Who Then Ran but Left Wallet Behind

Reading Time: 1:56 min

It almost wasn’t fair for the suspect. Imagine casing a residence with intentions of breaking in and stealing someone else’s property or much, much worse. Now consider that the homeowner…

View post

Florida’s 2A Sales Tax Holiday to Return—With a Bonus

Reading Time: 1:57 min

While a handful of members of the Republic waste an enormous amount of time and expense vilifying the Second Amendment, Florida just took another giant step on a better path.…

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>