2A News

Armed Memphis Homeowner Surprises Burglary Suspect in the Act

Reading Time: 1:53 min

Burglars with any sense at all prefer to strike targets where they know that no one is home. It slashes the risk factor, because after all, tens of millions of…

View post

Target Turns to Backup Firearm to Defend Against Robbery Attempt

Reading Time: 1:57 min

Violent criminals tend to run in packs, so it is always important to be on the lookout—especially late at night. It is even better to have backup defenses available if…

View post

Scheme to Ban Hunting and Fishing in Oregon Advances

Reading Time: 2:5 min

An effort to effectively ban hunting, fishing, and even pest control in Oregon cleared a significant hurdle this week and is increasingly likely to appear on the November ballot.  Radicals…

View post

Maryland Joins California in Banning Sale of Glock Handguns

Reading Time: 2:3 min

Following California’s lead on fighting violent crime and gun control is a risky proposition, as the Golden State has perhaps the worst track record on both in the nation. Maryland…

View post

Controversial Delaware Bill Targeting Gun Shop Owners Advances

Reading Time: 1:58 min

A brazenly unconstitutional proposal picked up steam last week in Delaware when the Senate approved SB 300. The bill advances to the House for further review and undoubtedly more controversy.…

View post

Wild Attack on Family Stopped by Armed 18-Year-Old

Reading Time: 2:3 min

A Houston family of four endured an inexplicable shock just before sunrise on Thursday. An unidentified cousin of the mother, for reasons undetermined, allegedly started stabbing the children inside, but…

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>