Right to Carry

Toronto Police Slam Trudeau’s Controversial Gun Ban

Reading Time: 3:22 min

If any Second Amendment advocate wants to see the future desired by gun rights opponents in the U.S., they need to look no further than north of the border and…

View post

Gun Prohibition on University of Michigan Campus Upheld

Reading Time: 2:1 min

Constitutional rights that should be enjoyed by law-abiding University of Michigan students were dealt a severe blow Friday when the state Supreme Court turned down an appeal of the campus…

View post

Florida Voters to Decide on Constitutional Amendment Protecting Hunting and Fishing

Reading Time: 1:52 min

Hunting and fishing are as fundamentally American as apple pie and the Star-Spangled Banner. Thus, it is surprising and a bit unnerving that many feel the need to protect these…

View post

Sacramento Considers Annual ‘Harm Reduction’ Fees for Each Gun Owned

Reading Time: 1:56 min

There are patently foolish ideas, and then there are those currently pushed by so-called leaders in Sacramento. The California city is battling a spike in violent crime, and these politicians…

View post

Battle Lines: NY Becomes Third State to Require Credit Card Tracking of Gun Purchases

Reading Time: 3:25 min

The anti-gun crusade intent on establishing a national database of firearm purchases appeared to be dead not long ago, but a few states opposed to the Second Amendment have breathed…

View post

North Dakota Teacher Avoids Charges in Self-Defense Shooting

Reading Time: 1:53 min

A teacher turned Good Samaritan is relieved to learn that he will not be charged in an August self-defense shooting in Fargo, North Dakota. Prosecutors determined Donald Barron’s actions were…

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>