Hola:
Lo que más se usa para lo que quieres son los lightbox o similares, y muchas librerías tienen esas ventanas implementadas, pero si quieres javascript, fíjate en este artículo:
Pseudo-lightbox... el oscurecimiento es conseguido con opacidad, y lo demás es aclarar también con opacidad el elemento enlazado (o mejor dicho asociado).
Saludos