2A News

Tennessee Bill Protecting Tenants’ Gun Rights Goes to Governor’s Desk

Reading Time: 1:55 min

A measure to protect the Second Amendment rights of Tennessee tenants from overreaching landlords cleared the state Legislature and awaits Gov. Bill Lee’s (R) expected signature. Renters face arbitrary restrictions…

View post

Nuns’ Lawsuit Against Smith & Wesson Dismissed

Reading Time: 1:53 min

A federal judge on Tuesday once again shot down a lawsuit filed by nuns who bought up shares of Smith & Wesson before suing the company for selling AR-15s. The…

View post

FPC Challenges Times Square Firearm Ban

Reading Time: 1:55 min

Certainly, major metropolitan cities face unique challenges in public safety, but their fallback approach to solving them is misguided at best. New York City is a prime example. While being…

View post

Florida House Greenlights Expanded Protections for College Campuses

Reading Time: 2:0 min

Florida’s push to have more armed protectors on college campuses is a giant step closer to reality after the state House overwhelmingly approved HB 757 last week. The Senate previously…

View post

Alleged Intruder Pays for Mistake After Homeowner Opens Fire

Reading Time: 1:52 min

When a criminal decides to enter another person’s home without an invitation, they assume responsibility for what follows. Despite the lamentations of anti-gunners who want to disarm the public, the…

View post

Push for Firearm Safety Instruction in Arizona Public Schools Advances

Reading Time: 1:52 min

There was a time when sporting traditions such as hunting and target shooting were passed down through the generations. Parents and grandparents taught children and grandchildren the fine art 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>