2A News

Appeals Court Lets Texas State Fair Gun Ban Stand

Reading Time: 1:53 min

Carry rights for lawful Texas gun owners suffered a surprising defeat Thursday when a three-judge panel unanimously upheld a lower court ruling supporting the Texas State Fair’s controversial firearm prohibition.…

View post

Armed Illinois Resident Saves Juvenile from Vicious Dog Attack

Reading Time: 1:56 min

A lawful and ready firearm in the hands of an upstanding citizen is often the front line of defense against violence when there is no one there to save the…

View post

Federal Judge: Remaining NFA Registration Requirement Unconstitutional

Reading Time: 1:57 min

It was bound to happen and finally did.  Roughly a year after Congress erased the hated $200 tax on suppressors and short-barreled rifles (SBRs), a U.S. District Court Judge in…

View post

NSSF: July Gun Sales, NFA Items Continue 2026 Surge

Reading Time: 1:55 min

Law-abiding Americans showed zero signs in July of losing their passion for the right to keep and bear arms. National Instant Criminal Background Check System (NICS) data, adjusted by the…

View post

Jewish Center Sues Montgomery County Over Weapons Ban

Reading Time: 3:39 min

Between Montgomery County’s status as Maryland’s most populous county and its location bordering Washington, D.C., there are obvious security threats that officials and residents must consider.  For a synagogue, that…

View post

Appeals Court Allows NJ AR-15 Ban to Continue

Reading Time: 1:57 min

The chaos surrounding state and local bans on popular sporting rifles and standard-capacity magazines shows no signs of abating after Thursday’s decision by the U.S. Court of Appeals for the…

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>