Right to Carry

Prosecutors No Longer Charge for Possession of Rifles and Shotguns in DC

Reading Time: 1:54 min

A significant announcement concerning the Second Amendment and the District of Columbia came down this week, and it is a positive development for gun rights.  U.S. Attorney for D.C. Jeanine…

View post

Constitutional Carry for NC Residents Now Before State House

Reading Time: 1:55 min

North Carolina’s uneven lurch toward becoming the 30th state in the Union enshrining constitutional carry rights is now in the hands of the state House. The Senate last month to…

View post

Report: Feds End Controversial Probe into Firearm Financing Firm

Reading Time: 1:50 min

The previous administration took so many nasty swipes at Second Amendment rights that dismantling the damage is not an overnight undertaking. Thankfully, that process is well on its way. Breitbart…

View post

Does Putin Carry A Gun?

Reading Time: 3:25 min

Does Putin carry a gun? That’s the question many have been asking after years of observing Russian President Vladimir Putin’s signature walk — a slow but purposeful stride where his…

View post

Victory: Tenth Circuit Strikes Down New Mexico’s 7-Day Waiting Period

Reading Time: 3:26 min

Second Amendment advocates celebrated this week after Tuesday’s encouraging news from the Tenth Circuit Court of Appeals. The court ruled in Ortega v. Grisham that New Mexico’s seven-day waiting period…

View post

SAF Challenges Massachusetts’ Controversial Non-Resident Concealed Carry Permitting Process

Reading Time: 1:52 min

A consortium of gun rights advocates, led by the Second Amendment Foundation (SAF) and its partners, challenged Massachusetts’ onerous process for a non-resident obtaining a license to carry (LTC). Law-abiding…

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>