2A News

Canada’s Gun Ban and Confiscation Program Off to a Rocky Start

Reading Time: 2:4 min

Canada’s anti-gun forces should be throwing up their hands in defeat as their insidious firearm confiscation effort continues to go down in flames. Even with a cherry-picked location for a…

View post

Police: Vietnam Vet Saves Woman by Shooting Naked Intruder

Reading Time: 2:5 min

Anyone who does not believe there is a mental health crisis in this country is likely not paying attention. Another glaring example emerged in Los Angeles early Friday morning, revealing…

View post

Divisive Gun Control Measure Before Oregon Supreme Court

Reading Time: 1:57 min

Three years ago, by the narrowest of margins and with virtually zero rural support, big-city voters in Oregon approved Measure 114. The final tally was 50.65% to 49.35% in favor…

View post

Companion Bills Introduced to Safeguard 2A Rights During Government Shutdowns

Reading Time: 3:24 min

Federal government shutdowns range from mildly annoying to seriously damaging—depending on the length—and some lawmakers want to ensure that these stoppages do not infringe on Second Amendment rights. This led…

View post

SAF Petitions SCOTUS for Review of Illinois’ Public Transit Carry Ban

Reading Time: 1:54 min

Despite the notorious safety issues plaguing Chicago residents, Illinois lawmakers continue to ban law-abiding citizens from carrying firearms on public transit. The Second Amendment Foundation (SAF) and its partners are…

View post

Minnesota’s Anti-Second Amendment Circus Hits the Road

Reading Time: 1:58 min

If at first you don’t succeed because voters disapprove of your agenda, redefine success and hit the road to convince people that your goals are theirs. That’s Minnesota officials’ apparent…

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>