2A News

Virginia’s Anti-Gunners Plot Course After Regaining Power

Reading Time: 2:14 min

Elections have consequences, first and foremost. Second Amendment advocates fretted about Virginia’s elections last month as the state teetered on the edge of falling into a full-blown gun control regime.…

View post

Michigan Bill Would Establish Concealed Carry for Young Adults

Reading Time: 1:54 min

It is indefensible that young adults are denied the Constitution’s complete protection through arbitrary anti-gun laws that do nothing to enhance public safety. In Michigan, State Representative Jason Woolford (R)…

View post

Shock: Whitmer’s Anti-2A Cronies Conclude Guns Are the Problem

Reading Time: 1:54 min

People and machines are not so different—you typically get out what you put in. With that in mind, the outcome of a highly touted Michigan task force’s work was never…

View post

Another New Jersey Municipality Rebates Firearm Carry Permit Fees

Reading Time: 1:57 min

Some say that enjoying life is all about celebrating small victories. If that’s true, Second Amendment advocates have another reason to be thankful despite the ongoing war with radical anti-gunners. …

View post

Chicago Woman Stops Alleged Carjacking Attempt by Shooting Teen Rapper

Reading Time: 1:54 min

A South Chicago teen rapper is recovering after being shot during an alleged robbery attempt. His mistake? Apparently targeting a woman who, instead of being just another helpless victim of…

View post

NSSF: Significant Progress as Stripe Removes Gun-Related Restrictions

Reading Time: 1:52 min

The tide is turning against Wall Street giants that openly discriminated against the firearm industry in recent years. Last week, another major outfit announced that it will toe the line…

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>