Right to Carry

Sweeping Anti-Second Amendment Bill Advances in Massachusetts

Reading Time: 3:9 min

The national hissy fit from anti-Second Amendment states continued this week when the Massachusetts House approved a wide-ranging bill to crack down on gun rights in the state. In last…

View post

Indiana Homeowner Reportedly Shoots, Kills Home Invader

Reading Time: 1:29 min

There is little that is conceivably more frightening than being in bed at night and hearing strange noises that are not easily explained. Pet owners and people with children understand…

View post

New York Bill Would Mandate Background Check for Purchasing 3D Printer

Reading Time: 3:6 min

If New York state Assemblywoman Jenifer Rajkumar (D) gets her way, her constituents and other citizens of the Empire State will need fingerprinting and a background check to purchase a…

View post

Even as Gun Sales Soared, Violent Crime Fell in 2022

Reading Time: 3:10 min

Opponents of gun rights cling to the fallacy that more guns equal more violent crime, when evidence proves this is far from the truth. They point to the tumultuous year…

View post

Supreme Court Upholds ATF ‘Ghost Gun’ Rule as Case Proceeds

Reading Time: 1:34 min

The U.S. Supreme Court on Monday vacated U.S. District Court Judge Reed O’Connor’s September decision blocking enforcement of the new rule covering so-called “ghost guns.” The Bureau of Alcohol, Tobacco,…

View post

Lake City Cancels All Commercial Ammunition Contracts

Reading Time: 1:38 min

Potentially big news is swirling around the U.S. Army’s Lake City ammunition plant in Independence, Missouri.  According to a report by Staple Defense, the ammo manufacturer canceled all commercial contracts.…

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>