2A News

New York City Passes Law Mandating Gun Warning Signs in Stores

Reading Time: 1:53 min

First, it’s not like New York City has a gun shop on every corner. Sporting goods stores are in no danger of squeezing Starbucks and the ever-present bodega out of…

View post

Everytown Summit Sounds ‘Alarm’ Over 3D-Printed Firearms

Reading Time: 3:34 min

The modern-day Luddites at Everytown for Gun Safety cried wolf again in recent days with an alarmist summit held in New York City. Just how irrational was this gathering of…

View post

Anti-Gun Fanaticism Exposed with St. Paul’s Sham ‘Assault Weapon’ Ban Proposal

Reading Time: 1:57 min

No less an authority than the National Rifle Association (NRA) blasted St. Paul’s shameless groveling this week to its powerful anti-Second Amendment faction. The gun rights organization described the city’s…

View post

Ohio Man Acquitted of Murder Charges After Road Rage Incident

Reading Time: 1:54 min

There’s excellent news for an Ohio man who had his life turned upside down after an altercation led to a fatal shooting in August. A Pickaway County jury decided that…

View post

Anti-2A Outfit Giffords Blasts the Right to Armed Self-Defense

Reading Time: 1:56 min

It is bad enough that citizens of 11 U.S. states are required to retreat from imminent danger before acting in self-defense. Who wants to be forced to run away when…

View post

Hochul Signs Pair of Oppressive Gun Control Bills into Law

Reading Time: 1:52 min

The white-hot arguments swirling around so-called “red flag” laws center on the utter lack of due process afforded to some citizens when authorities seize their firearms. In New York state,…

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>