Recursivamente en bucle a través de un objeto para construir una lista de propiedades

Situación: tengo un objeto grande que contiene varios objetos sub y sub-sub, con propiedades que contienen varios tipos de datos. Para nuestros propósitos, este objeto se ve algo como esto:

var object = {
    aProperty: {
        aSetting1: 1,
        aSetting2: 2,
        aSetting3: 3,
        aSetting4: 4,
        aSetting5: 5
    },
    bProperty: {
        bSetting1: {
            bPropertySubSetting : true
        },
        bSetting2: "bString"
    },
    cProperty: {
        cSetting: "cString"
    }
}

Necesito recorrer este objeto y construir una lista de las claves que muestran la jerarquía, para que la lista termine pareciéndose a esto:

aProperty.aSetting1
aProperty.aSetting2
aProperty.aSetting3
aProperty.aSetting4
aProperty.aSetting5
bProperty.bSetting1.bPropertySubSetting
bProperty.bSetting2
cProperty.cSetting

Tengo esta función, que recorre el objeto y escupe las teclas, pero no jerárquicamente:

function iterate(obj) {
    for (var property in obj) {
        if (obj.hasOwnProperty(property)) {
            if (typeof obj[property] == "object") {
                iterate(obj[property]);
            }
            else {
                console.log(property + "   " + obj[property]);
            }
        }
    }
}

¿Alguien puede decirme cómo hacer esto? Aquí hay un jsfiddle para que te metas con:http://jsfiddle.net/tbynA/

Respuestas a la pregunta(10)

Su respuesta a la pregunta