function displayEmailThreaded()

in site/js/ponymail.js [1638:1690]


function displayEmailThreaded(json, state, threadobj) {
    var level = state.level ? state.level : 1
    var b = state.before
    var cobj = document.getElementById("thread_" + b.toString().replace(/@<.+>/, ""))
    var obj = (threadobj && (typeof threadobj).match(/object/i)) ? threadobj :  ((cobj && (typeof cobj).match(/object/i)) ? cobj : document.getElementById("thread_" + state.main))
    if (!json.mid && !json.tid) {
        if (obj) {
            obj.innerHTML = "<h2>404!</h2><p>Sorry, we couldn't find this email :("
        }
        return
    }
    if (state.main == json.mid || state.main == json.tid) {
        return
    }
    saved_emails[json.mid] = json
    if (obj) {
        var eobj = document.getElementById("thread_" + (json.mid ? json.mid : json.tid).toString().replace(/@<.+>/, ""))
        var node = eobj ? eobj : document.createElement('div')
        node.setAttribute("epoch", json.epoch.toString())
        node.style.marginBottom = "20px";
        node.setAttribute("id", "thread_" + (json.mid ? json.mid : json.tid).toString().replace(/@<.+>/, ""))
        node.style.display = "block" // hack so openEmail will state that there's an email open.
        if (json.mid != b) {
            
            if (state.pchild && document.getElementById("thread_" + state.pchild.toString().replace(/@<.+>/, ""))) {
                var pc = document.getElementById("thread_" + state.pchild.toString().replace(/@<.+>/, ""))
                try {
                    if (prefs.sortOrder == 'forward') {
                        obj.insertAfter(pc, node)
                    } else {
                        obj.insertBefore(pc, node)
                    }
                } catch (e) {
                    obj.appendChild(node)
                }
            } else {
                if (prefs.sortOrder == 'forward') {
                    obj.appendChild(node)
                } else {
                    obj.insertBefore(node, obj.firstChild)
                }
            }
            displayEmail(json, (json.tid ? json.tid : json.mid), level)
        } else {
            document.getElementById("thread_" + state.main).appendChild(node)
        }
        if (state.child && state.child.children && state.child.children.length > 0) {
            getChildren(state.main, state.child, level, node)
        }
    } else {
        alert("Could not find parent object, thread_" + state.main)
    }
}