2A News

NRA, GOA Score Important Victories Against Spanberger’s ‘Assault Firearm’ Ban

Reading Time: 3:57 min

The legal war against Virginia’s pending “assault firearm” ban produced two significant victories for those opposed to the state’s brazen gun grabbing. Gov. Abigail Spanberger’s (D) radical suppression of fundamental…

View post

Chicago Launches $100M Program to Fight ‘Gun Violence’

Reading Time: 2:21 min

“Gun violence” is a misnomer. Firearms are inanimate tools used by law-abiding citizens for everything from sport shooting and putting food on the table to defending loved ones and property…

View post

Attorney Blasts Hawaii’s Use of Black Codes to Defend ‘Vampire Rule’

Reading Time: 2:20 min

The U.S. Supreme Court last week eviscerated Hawaii’s so-called “vampire rule” that required private property owners to grant permission to lawful gun owners before they were allowed on the premises.…

View post

Virginia Leaders Openly Support Destruction of Firearm Industry

Reading Time: 3:59 min

For most Americans, July’s arrival means preparing to celebrate the country’s independence and bracing for the truly hot summer season. In Virginia this year, the first day of the month…

View post

Anti-Gunners Horrified That ‘Vampire Rule’ is Dead

Reading Time: 2:5 min

The U.S. Supreme Court on Thursday in Wolford v. Lopez returned sanity to Hawaii’s gun control apparatus by emphatically burying the so-called “vampire rule.” The 6-3 majority struck down the…

View post

Injunction Issued Against Virginia’s Pending ‘Assault Firearms’ Ban

Reading Time: 2:0 min

On the same day that the U.S. Supreme Court issued a key ruling protecting gun rights from Hawaii lawmakers, their Virginia colleagues suffered their own setback at the hands of…

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>