2A News

Mississippi Woman Shoots Hammer-Wielding Alleged Intruder Under Protective Order

Reading Time: 1:52 min

A protective order may be a valuable tool for protecting the innocent and alerting law enforcement to a person’s danger. It may also serve as a warning to an individual…

View post

Under Pressure: SF Sheriff Apologizes for CCW Renewal Delays

Reading Time: 2:5 min

No one howls quite like the public figure caught in obvious wrongdoing, and their protests of innocence often dramatically transform into a long-overdue apology. That is the case with San…

View post

Giffords Awards 24 States an ‘F’ for Gun Control Policies

Reading Time: 1:56 min

Anti-Second Amendment crusading Giffords is notorious for pushing gun control policies that would effectively nullify the right to keep and bear arms.  Now they want you to know that nearly…

View post

2A Groups Petition SCOTUS to Hear Maryland Gun Permit Case

Reading Time: 2:6 min

Reciprocity is an issue that will not go away, at least not until the U.S. Supreme Court provides clarity. The right to carry a firearm away from the home for…

View post

Atlanta Homeowner Charged After Shooting Two Alleged Porch Pirates

Reading Time: 1:56 min

There is a distinctive gray area in cases of self-defense where the intended victim is not under an immediate violent threat. Unfortunately for the good people, these incidents unfold so…

View post

Dhillon: New DOJ Section to Provide ‘a Lot More Action’ to Restore Gun Rights

Reading Time: 1:58 min

This week’s launch of the Department of Justice’s (DOJ) new Second Amendment Rights Section is a welcome change. Agency leaders assured the sporting public that there would be “a lot…

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>