//the cool thing chesh helped me with for comments

function buildChildren(commentsDiv, comment) {
    comment.childComments = commentsDiv.select('div.commentContainer[parentComment="'+comment.id+'"]')
    comment.childComments.each(function(child) {child.parent = comment; buildChildren(commentsDiv, child);});
    comment.indentLevel = 0;
}

function flattenTree(node, out) {
    if(out == null) {
        out = []
    }
    for(var i = 0 ; i < node.childComments.length ; ++i) {
        out.push(node.childComments[i]);
        flattenTree(node.childComments[i], out);
    }
    return out;
}

function indentChildren(parent) {
    var children = flattenTree(parent);
    var atEnd = false;
    for(var i = 0 ; i < children.length ; ++i) {
        var comment = children[i];
        atEnd = atEnd || (comment.parent == parent && comment == parent.childComments.last());
        var indentDiv = comment.indents.appendChild(Builder.node('div', {
            className: (!atEnd || comment.parent == parent) ? 'indent' : 'indentEmpty',
            style:
                'height: ' + (atEnd ? (comment.clientHeight / 2) : (comment.clientHeight - 1)) + 'px'
        }));
        if(comment.parent == parent) {
            indentDiv.appendChild(Builder.node('div', {
                className: 'indentAttach',
                style:
                    'height: ' + (comment.clientHeight / 2 - 1) + 'px'
            }));
        }
    }
}
        
function calcIndentChildren(parent) {
    var children = flattenTree(parent);
    for(var i = 0 ; i < children.length ; ++i) {
        var comment = children[i];
        ++comment.indentLevel;
    }
}

function treeifyComments(id) {
    var commentsDiv = $(id);
    var root = {id: ""};
    buildChildren(commentsDiv, root);
    var comments = flattenTree(root);
    for(var i = 0 ; i < comments.length ; ++i) {
        var comment = comments[i];
        comment.indents = Builder.node('div', {className: 'indents'})
        comment.insert({top: comment.indents});
    }
    calcIndentChildren(root);
    for(var i = 0 ; i < comments.length ; ++i) {
        var comment = comments[i];
        calcIndentChildren(comment);
    }
    for(var i = 0 ; i < comments.length ; ++i) {
        var comment = comments[i];
        var commentText = comment.select('div.commentText')[0];
        var commentIcon = comment.select('div.commentIcon')[0];
        var commentInfo = comment.select('div.commentAuthorInfo')[0];
        commentText.style.maxWidth = (770 - comment.indentLevel * 20 - commentInfo.clientWidth - commentIcon.clientWidth) + 'px';
    }
    indentChildren(root);
    for(var i = 0 ; i < comments.length ; ++i) {
        var comment = comments[i];
        indentChildren(comment);
    }
}

function pageLoad() {
    treeifyComments('comments1');
}
