Right to Carry

Campus Carry Controversy Continues in Several States

Reading Time: 1:56 min

The flipping of the calendar into July meant changes in Second Amendment campus carry rights in two states, and they moved in the opposite direction. Students at West Virginia’s public…

View post

Case Against Federal Law Banning Firearm Possession for Misdemeanors Continues

Reading Time: 3:31 min

Conventional wisdom says that federal law bans the possession of firearms by convicted felons, and many would undoubtedly agree with this restriction. But that description is incorrect.  Instead, this blanket…

View post

Dog Alerts Texas Homeowner to Intruder Who Flees After Shot Fired

Reading Time: 1:53 min

Man’s best friend often times is a powerful weapon against those who would prey on law-abiding citizens. The presence of a canine partner may scare away an intruder before they…

View post

Appeals Court Upholds Ohio’s Preemption Law Protecting Gun Rights

Reading Time: 1:57 min

Local jurisdictions in several states are attempting to suppress Second Amendment rights of their citizens. These controversial actions led many lawmakers at the state level to implement preemption laws that…

View post

Debunking Viral Jon Stewart Gun Control Rant On The Daily Show

Reading Time: 2:20 min

Recently, Jon Stewart delivered a monologue filled with humor and half-truths, aiming to debunk the GOP’s narrative on city crime and gun violence. As expected, Stewart’s take was a blend…

View post

Masked Assailants Stopped by Armed Intended Victim in Alabama

Reading Time: 1:55 min

The regularity of attacks against innocent people in the U.S. is alarming, and the public response is now even more predictable. The good people are arming themselves and exercising their…

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>