Right to Carry

Federal Court Determines ATF Pistol Brace Rule ‘Arbitrary and Capricious’

Reading Time: 1:52 min

There is another victory to celebrate after last week’s significant ruling by the Eight Circuit Court of Appeals. The contentious case involves the Bureau of Alcohol, Tobacco, Firearms and Explosives…

View post

California Tobacco Store Owner Defends Shop from Three Robbery Suspects

Reading Time: 1:52 min

Three alleged burglars armed with pepper spray got in over their heads when they reportedly attempted to rob a California tobacco store owner, and one paid for it with his…

View post

Federal Appeals Court Upholds Maryland’s Semi-Automatic Rifle Ban

Reading Time: 3:30 min

In the long battle to preserve gun rights for upstanding Americans, there are significant victories along with defeats that must be treated as mere bumps in the road. One such…

View post

Disabled Vietnam Veteran Fights Off Alleged Burglar

Reading Time: 2:11 min

The last thing a disabled veteran needs or deserves is to be targeted by a violent criminal who is only a detriment to society. These men and women stepped up…

View post

Self-Defense: Armed Chicago Man Ends Road Rage Attack

Reading Time: 2:1 min

Despite the daily efforts of anti-gunners who are dead set on convincing the public that guns are the root of all evil, the plain truth is there for everyone to…

View post

NSSF Marks 60 Consecutive Months of Over 1 Million Background Checks for Firearm Transactions

Reading Time: 3:22 min

The American appetite for firearms shows no signs of abating. In fact, it is barreling ahead at a record pace with no end in sight. The National Shooting Sports Foundation…

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>