Right to Carry

Maryland’s Blatant Disregard for Bruen Faces Strong Challenge in Federal Appeals Court

Reading Time: 2:26 min

A potentially landmark case before the Fourth Circuit Court of Appeals may signal the end of anti-gun state governments running roughshod over Second Amendment rights.   The momentous 2022 U.S.…

View post

Legislation to Restore Veterans’ Gun Rights Advances in House Despite Criticism

Reading Time: 4:12 min

It is a cruel irony that the very same veterans who defended the freedoms of all Americans are being denied their Second Amendment rights simply for needing assistance handling their…

View post

Second Amendment Group Warns of Latest Attack on Oregonians’ Gun Rights

Reading Time: 2:27 min

Law-abiding Oregon gun owners are increasingly in the crosshairs of anti-gun zealots who pile one infringement on top of another to slowly eradicate the Second Amendment.   A prominent state…

View post

Elderly Florida Resident’s Shooting of Alleged Attacker Deemed Justified

Reading Time: 2:32 min

There is something about the elderly that makes any violent attack on these treasured citizens particularly heinous. They have lived long lives and deserve peace and tranquility in their twilight…

View post

Texas Lawmakers Seek to Hold Businesses that Disarm Customers Liable

Reading Time: 2:26 min

If a Texas business denies a customer the right to carry their firearm and that person is injured or killed, the entity opens itself up to civil liability damages.  …

View post

Americans Rushing to Take Gun Training Courses Amid Uncertainty

Reading Time: 2:39 min

The number of American households in which there is at least one firearm continues to surge; at least one million weapons have been sold every month for the past five…

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>