2A News

Maryland County’s Radical Anti-2A Stance Draws Warning and Lawsuit

Reading Time: 3:23 min

On July 21, the Montgomery County Council rolled out a gun control package that is as ridiculous as it is unconstitutional, and it went into effect last week. Opposition sprang…

View post

St. Louis Suspect Reportedly Targeted Wrong Female Clerk

Reading Time: 1:55 min

Convenience stores, unfortunately, are convenient targets for violent criminals. Employment in these locations comes with an elevated risk level, particularly in crime-ridden cities such as St. Louis, and being prepared…

View post

Johnson Signs Order to Hold Weapons Industry ‘Accountable’

Reading Time: 1:53 min

Proving yet again that anti-gunners knowingly misplace blame on inanimate objects and away from violent criminals, Chicago authorities now seek to punish firearm industry members whom they believe are responsible…

View post

NSSF Debunks Leaders’ Anti-2A Rhetoric After Tucson Shooting

Reading Time: 3:37 min

The same crowd that warns officials and the public not to “politicize” acts of violence is the first to jump into the fray when criminals prey on each other and…

View post

Cekada: ATF Wait Times for Forms and Applications Down 76%

Reading Time: 1:54 min

A Bureau of Alcohol, Tobacco, Firearms, and Explosives (ATF) that respected constitutional gun rights and understood the difference between violent criminals and law-abiding gun owners was only a pipe dream…

View post

Virginia AG Shows Shocking Contempt for Rule of Law

Reading Time: 2:14 min

With Virginia’s blatantly unconstitutional firearm bans in limbo and a Supreme Court ruling on such atrocities on the horizon, it is a good time for the adults in the room…

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>