Right to Carry

Georgia Proposal Would Make Private Property Owners Responsible for Damages In ‘Gun-Free’ Zones

Reading Time: 1:36 min

A Georgia lawmaker has a novel idea for dealing with private property owners who do not permit weapons on their premises. While that is well within their rights to do…

View post

Minnesota Bill Wants To Ban Lead Ammunition

Reading Time: 3:29 min

As the Minnesota legislature contemplates a bill that could ban lead ammunition, the gun enthusiast community finds itself at a crossroads. This proposal, driven by concerns over lead exposure, especially…

View post

Injunction Granted Against California Law Allowing Frivolous Lawsuits Against Weapons Industry

Reading Time: 3:5 min

A U.S. District judge in California put the brakes on a controversial new law that subjected gun manufacturers and retailers to a bevy of frivolous lawsuits. The statute would make…

View post

Texas Homeowner Shoots Car Burglary Suspect in Dead of Night

Reading Time: 1:35 min

Burglary is a dangerous business, and doubly so in states such as Texas that harbor a healthy respect for the fundamental right to defend one’s life and property. For one…

View post

Armed Chicago Jewelry Store Employee Fires at Alleged Robber

Reading Time: 1:42 min

A Chicago jewelry store was the latest site of a good guy with a gun defending against a bad guy with worse intentions. It was almost 11 a.m. Saturday morning,…

View post

West Virginia House Advances Bill to Permit Trained Teachers to Carry Firearms

Reading Time: 1:41 min

A bill to permit well trained teachers to carry firearms in the classroom to defend against threats sailed through the West Virginia House of Delegates. After the 89-11 vote on…

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>