No veo que esta mal en el position, los colores y el visibility, según la guía de referencia que me diste esos estilos se escriben así y al estar los valores entre comillas son strings.
¿div no se supone que es la etiqueta html? Creía que con createElement(div) se conseguia crear un elemento div ¿cómo se hace entonces?
Fondo y contenido son simples strings, he modificado algunas cosas y he declarado con "var" divprincipal, hijoprincipal e hijosecundario, que no lo estaban... a ver que ves mal porque no me funciona y ya no se que puede ser :S
Código PHP:
function crear_ventana(nombre, ancho, alto)
{
var divprincipal = document.createElement("div"); //Creamos un elemento div
divprincipal.setAttribute("id", nombre); //Le asignamos como Id el parámetro nombre.
divprincipal.style.visibility = "visible";
//Creamos sus dos divs hijos.
var hijoprincipal = divprincipal.appendChild("div");
hijoprincipal.setAttribute("id", "fondo");
//Atributos de estilo CSS:
hijoprincipal.style.position = "absolute";
hijoprincipal.style.backgroundColor = "#CCCCCC";
hijoprincipal.style.opacity = "0.5";
hijoprincipal.style.filter = "alpha(opacity=50)";
hijoprincipal.style.height = "100%";
hijoprincipal.style.width = "100%";
hijoprincipal.style.top = "0";
hijoprincipal.style.left = "0";
hijoprincipal.zIndex = "1";
var hijosecundario = divprincipal.appendChild("div");
hijosecundario.setAttribute("id", "contenido");
//Atributos de estilo CSS:
hijosecundario.style.position = "absolute";
hijosecundario.style.backgroundColor = "#FFFFFF";
hijosecundario.style.height = alto + "px";
hijosecundario.style.widht = ancho + "px";
hijosecundario.style.marginLeft = "-"+ (ancho/2) + "px";
hijosecundario.style.marginTop = "-" + (alto/2) + "px";
hijosecundario.style.top = "50%";
hijosecundario.style.left = "50%";
hijosecundario.zIndex = "2";
}
function cerrar_ventana(nombre)
{
ventana = document.getElementById(nombre);
ventana.style.visibility = "hidden";
}
function abrir_ventana(nombre)
{
ventana = document.getElementById(nombre);
ventana.style.visibility = "visible";
}