2A News

Federal Judge Blocks Sections of ATF’s ‘Engaged in the Business’ Rule

Reading Time: 2:2 min

American gun owners scored a significant victory in federal court on Tuesday in the fight against the Bureau of Alcohol, Tobacco, Firearms, and Explosives’ (ATF) controversial “engaged in the business…

View post

Anti-2A Group Blasted for Supporting Firearms Training

Reading Time: 1:55 min

Second Amendment opponents are fond of framing their objections to gun rights by claiming they actually support gun rights. They chirp that their proposals to suppress fundamental liberties are innocent…

View post

Canada’s ‘Voluntary’ Gun Buyback Amnesty Period Nears End

Reading Time: 3:28 min

Any American Second Amendment enthusiast who wonders what gun rights in the U.S. will look like if certain lawmakers get their way needs to look north for their answer. On…

View post

Attempted Car Burglary Halted by Armed Texas Homeowner

Reading Time: 1:56 min

There are activities that one undertakes knowing there is an inherent risk of suffering an injury. Attempting to break into someone’s automobile in the dead of night is a good…

View post

Another 2A Company Uproots and Moves South to Tennessee

Reading Time: 1:60 min

It’s only natural for a person—or a business—to want to reside where it is welcomed and valued. When that is not the case, greener pastures are sure to be found.…

View post

Legal Resistance to New Jersey’s Concealed Carry Fee Spreads

Reading Time: 1:54 min

Imagine having to pay a “protest tax” or “church registration fee” to exercise fundamental constitutional rights. Civil libertarians would rightly howl that the Bill of Rights is not up for…

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>