2A News

GOA Urges White House Calls to Oppose DOJ Appeal

Reading Time: 2:3 min

Gun Owners of America (GOA) took a much-deserved victory lap after the recent and significant court ruling that struck down the statutory National Firearms Act (NFA) registration of certain Second…

View post

Veteran Endorses National Concealed Carry for Retired Special Ops

Reading Time: 2:3 min

A special privilege granted to qualified active, retired, or separated law enforcement officers to carry concealed weapons nationwide, regardless of local gun control laws, should be expanded. That’s the word…

View post

NSSF Criticizes Chicago Mayor’s Misplaced Priorities

Reading Time: 3:35 min

Law enforcement officers must have complete confidence that their service weapons are the most reliable that they may carry. After all, these public servants rarely get “do-overs” when encountering dangerous…

View post

Report: Nearly 1 in 3 Likely Voters Carry Concealed Weapons

Reading Time: 1:57 min

Rabid Second Amendment opponents would do well to consider new data compiled by McLaughlin and Associates and released by the Crime Prevention Research Center (CRPC). It is eye-opening. Nearly one-third…

View post

Customer Shoots Utah Man Allegedly Threatening Clerk Over Alcohol Refusal

Reading Time: 1:57 min

Riverton, Utah, is obviously not the place to lose your cool and wave a shotgun around threatening convenience store workers. Others in the establishment may very well be legally armed…

View post

2A Opponents Furious Over Blanche Confirmation

Reading Time: 1:58 min

It is not news that the previous White House occupants threw up every conceivable roadblock between law-abiding citizens and their Second Amendment rights.  Early Saturday morning, the U.S. Senate confirmed…

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>