Right to Carry

Facebook Marketplace Transaction Leads to Self-Defense Shooting

Reading Time: 1:51 min

The internet age spawned a new way of doing business, and countless transactions are carried out online every day. Some involve meeting personally to exchange items and payment, leading to…

View post

San Diego Officials Demand Federal Ban on Bump Stocks, ‘Ghost Guns’

Reading Time: 1:53 min

Though these scenes must be reported, they hardly qualify as news anymore when anti-gun political leaders gather before assembled cameras and demand that Second Amendment rights for those who obey…

View post

Academic Paper Proves Constitutional Carry Does Not Increase Crime

Reading Time: 1:58 min

Despite the rantings of anti-gun zealots predicting blood flowing in the streets if more states enact constitutional carry, this prognostication proved far from accurate. In fact, the results of an…

View post

NRA Issues Statement on High Court Decision on Firearm Possession By Persons Under DVROs

Reading Time: 1:55 min

The U.S. Supreme Court on Friday ruled in U.S. v. Rahimi that the federal ban on persons subject to domestic violence restraining orders (DVROs) is constitutional. The 8-1 majority handed…

View post

Supreme Court Upholds Ban on Firearms for Those Subject to Domestic Violence Restraining Orders

Reading Time: 3:20 min

The U.S. Supreme Court on Friday sided with the federal government in upholding the federal law prohibiting possession of weapons by individuals subject to a domestic violence restraining order (DVRO).…

View post

5 Reasons You Need A MP5

Reading Time: 5:4 min

In my head, I have a running list of firearms that every true Second Amendment enthusiast should consider owning. This isn’t about gatekeeping or saying, “You’re not a real gun…

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>