Нее - вру, то было наоборот, вот прямой разбор:
        /* Get the VISIBILITY parameter to know if this layer starts hidden. */
        if (param->visibility)
        {
        /* Handle "HIDE", "HIDDEN", etc. */
                hidden = (PRBool)!XP_STRNCASECMP(param->visibility, "hid", 3);
        inherit_visibility = (PRBool)!XP_STRCASECMP(param->visibility, "inherit"
);
        }
и вот
/* Accept "hidden" or "hide" */
hidden = (JSBool)(!XP_STRNCASECMP(visibility, "hid", 3));
inherit = (JSBool)(!XP_STRCASECMP(visibility, "inherit"));
if (!hidden && !inherit &&
    XP_STRCASECMP(visibility, "show") &&
    XP_STRCASECMP(visibility, "visible")) {
    JS_ReportError(cx,
                   "Layer visibility property must be set to "
                   "one of \'hide\', \'show\' or \'inherit\'");
т.е ему пофиг hide или hidden
а на "show" он вообще не смотрит - только на "hid" или "inherit".
Все остальное для него = "show"