Right to Carry

NRA Files Brief Supporting Challenge to Maryland’s ‘Assault Weapons’ Ban

Reading Time: 2:2 min

Some lessons can only be learned the hard way, and this holds true for state lawmakers and even appeals court jurists. Despite the crystal clear guidance provided by the U.S.…

View post

Tennessee AG Declines to Appeal Memphis Gun Control Referendum Decision

Reading Time: 1:59 min

In less than two months, Memphis voters will decide on a gun control referendum full of sound and fury — but signifying nothing.  State officials last week agreed not to…

View post

Texas Judge Rules State Fair May Ban Firearms

Reading Time: 1:59 min

The saga of the Texas State Fair’s firearms prohibition continued this week, and the latest twist did not favor Second Amendment rights.  Dallas County District Court Judge Emily Tobolowsky denied…

View post

Armed Texas Father and Son Defend Themselves from Auto Burglary

Reading Time: 1:53 min

Violent confrontations with criminal strangers increasingly occur away from the stereotypical late hours of the night in dark alleyways. Instead, these harrowing experiences now unfold in the bright daylight when…

View post

New Anti-Gun Group Targets State Legislatures

Reading Time: 1:56 min

A new organization opposing gun rights is now active, and it seeks to influence state legislatures to change firearm laws. Apparently, the previous roster of shrill, attention-seeking alarmists who wanted…

View post

Apparently Disturbed Intruder Shot After Attacking Family Dog and Attempting to Break into Residence

Reading Time: 1:53 min

The mental health crisis is real, and there are far too many instances of obviously disturbed individuals preying on the innocent. And while most are sympathetic to the plight of…

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>