Right to Carry

DA Declines Charges Against Pennsylvania Homeowner Who Shot Alleged Burglar

Reading Time: 1:54 min

Despite the fundamental right to self-defense enjoyed by all Americans, taking up arms can still be risky when faced with a threat.  That is due to the startling number of…

View post

Brief Filed With SCOTUS Over ‘Frames and Receivers’ Final Rule

Reading Time: 2:5 min

With the October 8 date looming for hearing arguments on the ATF’s contentious “ghost gun” rule, the U.S. Supreme Court is receiving briefs from Second Amendment organizations. The agency rewrote…

View post

ATF Begins Process of Returning Bump Stocks to Lawful Owners

Reading Time: 3:31 min

There is much to be said for the spectacle of seeing an overbearing federal agency with egg on its face having to backtrack from yet another bureaucratic overreach. That is…

View post

Police Instructed Not to Enforce Controversial ‘Gun-Free’ Zone in Louisiana City

Reading Time: 1:51 min

On July 4, Louisiana enacted constitutional carry for all law-abiding citizens. The good people are no longer mandated to go hat-in-hand to the state government for permission to freely exercise…

View post

Four Alleged Georgia Burglars Confronted by Armed Neighbor

Reading Time: 1:58 min

Surveillance is everywhere, and it is increasingly difficult for bad guys to do what they do undetected. Four of them were the stars of the show last Thursday night when…

View post

Researchers Claim Deer Hunting Leads to ‘Gun Violence’

Reading Time: 1:59 min

Research should not start with a hare-brained hypothesis and then do whatever it takes to prove the original supposition. It is intended to be a balanced survey of all the…

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>