context: function findPreviousColumnInfo(table){    // All the rows in the grouping (for merged rows).    var extents = new Array();    // Get the last row in the table.    var tr = table.firstChild.lastChild;    // Get message type.    if (tr.className == "msg-nested-tr")    {        var rv = findPreviousColumnInfo(tr.firstChild.firstChild);        rv.nested = true;        return rv;    }    // Now get the read one...    var className = (tr && tr.childNodes[1]) ? tr.childNodes[1].getAttribute("class") : "";    // Keep going up rows until you find the first in a group.    // This will go up until it hits the top of a multiline/merged block.    while (tr && tr.childNodes[1] && className.search(/msg-user|msg-type/) == -1)    {        extents.push(tr);        tr = tr.previousSibling;        if (tr && tr.childNodes[1])            className = tr.childNodes[1].getAttribute("class");    }        // If we ran out of rows, or it's not a talking line, we're outta here.    if (!tr || className != "msg-user")        return {extents: [], nickColumns: [], nested: false};        extents.push(tr);        // Time to collect the nick data...    var nickCol = tr.firstChild;    // All the cells that contain nickname info.    var nickCols = new Array();    while (nickCol)    {        // Just collect nickname column cells.        if (nickCol.getAttribute("class") == "msg-user")            nickCols.push(nickCol);        nickCol = nickCol.nextSibling;    }        // And we're done.    return {extents: extents, nickColumns: nickCols, nested: false};}    
meta: 9421	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/9421/d84f82bf3e11bd09e70e1036662b0018f8834acc/static.js/clean/extensions/irc/xul/content/static.js