2A News

GOA Sues Oregon City and County Over Disarming Nonresidents

Reading Time: 2:12 min

National reciprocity is an idea whose time has come. It is unconscionable that the Second Amendment right to protect oneself and loved ones evaporates merely by crossing a state line.…

View post

San Jose Officials Warned Over Outrageous Carry Permit Fees

Reading Time: 2:1 min

Second Amendment rights often come with a state-mandated price tag, which should upset freedom-loving Americans. When that financial hurdle makes their free exercise nearly impossible for rank-and-file citizens, it is…

View post

Waymo Calls Police Over Passengers With ‘Ghost Gun’

Reading Time: 2:8 min

Two San Francisco juveniles are in hot water today after the self-driving Waymo vehicle they were in earlier this month called the police on them for having an illegal weapon.…

View post

DOJ Begins Restoring 2A Rights to Qualified Offenders

Reading Time: 2:4 min

The Department of Justice (DOJ) has officially begun its rollout of long-overdue reform to restore gun rights to some who lost them due to criminal convictions, many times from decades…

View post

Maryland Rabbi Wins Victory Over ‘Gun-Free Zones’

Reading Time: 1:57 min

A federal judge on Thursday granted an injunction against Montgomery County’s enforcement of “buffer zones” around places of worship, but there’s a catch. Rabbi J. Menashe Shapiro and worshipers at…

View post

Trucker Asks SCOTUS to End Minnesota’s Refusal to Recognize Permits

Reading Time: 2:9 min

Drivers in all walks of life face threats on the job, but over-the-road truckers spend weeks at a time away from home supporting themselves and their loved ones. And as…

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>