2A News

Federal Proposal Would Eliminate ‘Sin Taxes’ on Firearms and Accessories

Reading Time: 3:21 min

The Second Amendment community is accustomed to withstanding the slings and arrows that gun rights opponents frequently hurl at them. When uber-popular modern sporting rifles are smeared as “weapons of…

View post

Virginia Lawmakers Ram Gun Control Package Through House

Reading Time: 2:1 min

When anti-gunners promise to strip Second Amendment rights if they are given power, we should believe them. The Virginia House of Delegates carried out several campaign promises made to gun…

View post

California Anti-Gunners Push Mandatory Live-Fire Training for Buyers

Reading Time: 1:52 min

Keeping up with California’s latest infringements on the right to keep and bear arms is a full-time job. You’d think Golden State lawmakers would have more to do with their…

View post

ATF Director Nominee Sails Through Senate Hearing

Reading Time: 3:28 min

Robert Cekada’s nomination to head the Bureau of Alcohol, Tobacco, Firearms, and Explosives (ATF) encountered little resistance last week as he sailed through his Senate examination. Despite ongoing and pitched…

View post

Shock: US Attorney to Incarcerate Law-Abiding Gun Owners Entering DC

Reading Time: 2:2 min

National reciprocity is a cause whose time has come. There are far too many instances where a law-abiding gun owner is well within the law in one state or jurisdiction…

View post

Appeals Court: States May Criminalize Possession of Certain Knives

Reading Time: 1:55 min

A federal appeals court unanimously ruled on Friday that states may prohibit specific pocketknives.  As these instruments are historically weapons of self-defense and thus should be “arms,” Second Amendment advocates…

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>