Veamos. Cuando a un elemento le asignás un estilo inline con el atributo html style. Ejemplo:
  Código PHP:
    <div id="juan" style="width:500px"></div> 
    
  Entonces podés usar, para que te devuelva el ancho algo como esto: 
 Código PHP:
    alert(document.getElementById('juan').style.width); 
    
  Y eso funciona. Ahora, si en lugar de asignar el estilo inline, lo asignás con una hoja de estilos o con un elemento <style></style>, eso ya no funciona.
Entonces hay que obtenerlo de otra manera. Lo que pasa es que para Explorer hay que hacerlo de una manera y para el resto de los navegadores de otra.
Explorer lo entiende con:
 Código PHP:
    document.getElementById('juan').currentStyle[nombrePropiedadCss] 
    
   y el resto de los navegadores lo entiende así: 
 Código PHP:
    window.getComputedStyle(document.getElementById('juan'), "").getPropertyValue(nombrePropiedadCss) 
    
  Pero también hay que tener cuidado con el nombre de las propiedades. Por ejemplo, la propiedad css  background-color para todos los navegadores será (usado con getPropetyValue) background-color, pero para explorer será backgroundColor (sintaxis de camello, es decir, todo pegado y las diferentes palabras con la inicial en mayúscula, excepro la primera).
Pero, si no querés complicarte, definí el estilo inline y listo. Esto, por ejemplo, funciona sin problemas: 
 Código PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title> </title>
<script type="text/javascript">
onload=function(){
alert(document.getElementById('pp').style.visibility);
}
</script>  
</head>
<body>
<div id="pp" style="visibility:hidden"></div>
</body>
</html>