Right to Carry

Armed Off-Duty Chicago Officer Stops Carjacking Attempt

Reading Time: 1:57 min

Carjacking appears to be a national epidemic, and cities such as Chicago face an alarming number of brazen attacks on innocent and unsuspecting citizens. Unfortunately for a band of would-be…

View post

Federal Judge Tosses Lawsuit Against Weapons Industry by Two Victims of School Shooting

Reading Time: 1:55 min

Mass shootings of any kind, and school shootings in particular, are heinous incidents that are universally scorned. Those who commit these evil acts rightfully receive the highest punishments handed down…

View post

Gun Rights Advocates Win Two Key Pennsylvania Battles

Reading Time: 1:57 min

Even as anti-gun forces attempt to gain the upper hand in Pennsylvania, a push by defenders of constitutional rights scored a clear victory last week in federal court. The ruling…

View post

Federal Judge Nixes ATF’s Classification of Forced Reset Triggers as ‘Machine Guns’

Reading Time: 1:58 min

One by one, overreaches by the Bureau of Alcohol, Tobacco, Firearms and Explosives (ATF) are being struck down by federal courts, which realize the agency is overstepping its legal authority.…

View post

Gun Rights Attorneys Act Against New York ‘Assault Weapon’ Ban

Reading Time: 1:55 min

New York’s draconian state attempts to suppress gun rights are once again getting pushback from Second Amendment groups and private citizens. The Empire State’s prohibition on so-called “assault weapons” is…

View post

Kentucky Homeowner Fatally Shoots Alleged Intruder

Reading Time: 1:53 min

Not a day goes by that there isn’t a report of a law-abiding citizen being forced to defend themselves from a violent criminal with a firearm. There are not the…

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>