var children = node.childNodes; 
var children = node.childNodes; 
function getTextFromNode(node, toReturn, textSoFar, isPreformatted) {	var children = node.childNodes;	for (var i = 0; i < children.length; i++) {		var child = children[i];				// Do we need to collapse the text so far?		if (child["tagName"] && child.tagName == "PRE") {			toReturn += collapseWhitespace(textSoFar);			textSoFar = "";			var bits = getTextFromNode(child, toReturn, "", true);			toReturn += bits[1];			continue;		}		// Or is this just plain text?		if (child.nodeName == "#text") {			var textToAdd = child.nodeValue;			textToAdd = textToAdd.replace(new RegExp(String.fromCharCode(160), "gm"), " ");			textSoFar += textToAdd;			continue;		}				// Treat as another child node. 		var bits = getTextFromNode(child, toReturn, textSoFar, false);		toReturn = bits[0];		textSoFar = bits[1];	}		if (isBlockLevel(node)) {		if (node["tagName"] && node.tagName != "PRE") {			toReturn += collapseWhitespace(textSoFar) + "\n";			textSoFar = "";		} else {			toReturn += "\n";		}	}	return [toReturn, textSoFar];};
4983	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/4983/3d58fefd2379fe19ae5bc4540e46171c91481d00/utils.js/buggy/firefox/src/extension/components/utils.js