Opens in a new tab

2A News

NRA Launches ‘Multi-Million-Dollar’ Campaign Ad in Texas

With the November midterms now just weeks away, forces on both sides of the gun control issue are digging deep into their pockets to get voters to their side. On…

View post

Homeowner Charged Despite Colorado’s ‘Make My Day’ Law

If a homeowner is under attack by another person and they attempt to gain entry to the home, is this enough to use potentially lethal force to subdue the suspect?…

View post

No Charges for Armed Georgia Hero in Dollar General Attack

As anyone paying attention to the news in recent days can attest, the presence of a good guy with a gun can be the difference between life and death. That…

View post

Second Amendment Supporters Respond to Critics After Oregon Tragedy

The crime scene at Silver Rail Elementary School in Bend, Oregon, on Thursday was still being processed when anti-Second Amendment forces started railing against firearms. This despite the campus being…

View post

Administration Releases Report on ‘Debanking’ of 2A Businesses

On Wednesday, the Office of the Comptroller of the Currency (OCC) released a powerful new report detailing the financial industry’s efforts to “debank” Second Amendment-related businesses and individuals. Titled “Guaranteeing…

View post

DOJ Doubles Down on Support for ‘Engaged in the Business’ Rule

The Department of Justice (DOJ) last week surprised Second Amendment supporters when the agency resumed fighting for the Biden-era “engaged in the business” rule aimed at ensnaring gun buyers and…

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>