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

Kentucky Homeowner Shoots and Kills Alleged Home Invader

Reading Time: 1:51 min

The burglary of an unoccupied residence is bad enough, but if there’s any positive, it’s that the perpetrator chose a target where, at least theoretically, it is unoccupied. Then there’s…

View post

California Sues Coding Firms in Unique First and Second Amendment Showdown

Reading Time: 1:50 min

Gatalog and CTRLPew LLC. are companies that specialize in ultra-modern digital designs for legal firearms and accessories. Their products are enjoyed by Second Amendment enthusiasts nationwide, but maybe not for…

View post

NH Lawmakers Move to End Carry Prohibition on College Campuses

Reading Time: 1:56 min

One of the ironies of the Second Amendment is that gun rights opponents think nothing of creating artificial “gun-free” zones that are wide open for violent criminals. Thankfully for New…

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

JPMorgan Chase Announces End of Discrimination Against Firearm Industry

Reading Time: 1:52 min

Second Amendment-related companies will no longer be subjected to blatantly discriminatory practices from a Wall Street financial giant that previously denied services to the sector. JPMorgan Chase joined a recent…

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>