2A News

Savannah Woman Utilizes Firearm to Defend Herself from Alleged Intruder

Reading Time: 1:56 min

It’s amusing to listen to Second Amendment critics rail against ever-increasing defensive gun uses. Any reasonable person would celebrate innocent civilians protecting themselves, but anti-gunners don’t view the world that…

View post

Mississippi Home Invasion Suspect Shot Dead by Resident

Reading Time: 1:55 min

It is foolhardy to think that in 2025 it is a good idea to force your way into someone’s home and that you will not face a lethal response. As…

View post

States Continue Push to Nullify PLCAA in Defiance of Federal Law

Reading Time: 3:21 min

The open defiance of a two-decade-old federal law that has repeatedly been upheld in court defies logic, but precious little about the anti-Second Amendment platform is logical. Congress passed the…

View post

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
<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>