Right to Carry

Birthday Partygoers Wield Firearms to Defend Against Alleged Shooter

Reading Time: 2:26 min

A child’s birthday celebration should be a time for celebrants to honor the person marking the milestone. And it certainly should not be the venue for violence and gunfire. That…

View post

New Hampshire House Rejects Two Extreme Anti-Gun Proposals

Reading Time: 2:24 min

The steady drumbeat of anti-gun legislation is countered daily by the herculean efforts of Second Amendment-supporting organizations working to protect the rights of the people. Another excellent example of this…

View post

Georgia Senate Advances Sales Tax Holiday for Gun Purchases in the State

Reading Time: 2:29 min

On the heels of Florida’s proposed “Second Amendment Summer” that would temporarily suspend sales taxes on firearms, ammunition, and accessories, Georgia is contemplating the same bold move. Lawmakers in the…

View post

Suspected Would-Be Mass Shooter Neutralized by Armed Citizen in Virginia

Reading Time: 2:21 min

Heroes generally do not know they are about to achieve that status before it comes upon them. Therefore, being a person who saves lives usually requires preparedness and a healthy…

View post

‘Public Nuisance’ Lawsuit Against Three Maryland Gun Shops Tossed Out of Court

Reading Time: 2:28 min

Anti-gunners are scraping the bottom of the barrel in their headlong rush to eradicate the right to keep and bear arms. Just how far they will go was put on…

View post

Utah Lawmakers Advance Bill to Teach True Gun Safety to School Children

Reading Time: 3:58 min

It is difficult to understand the reasoning of anti-gunners who are so dead set against the Second Amendment that they oppose teaching gun safety, but this phenomenon emerged in Utah.…

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>