// Returns next node of DOM tree or null if no next node is found.
nextNode = function(node) {
// Handles case for null input.
if (node == null) {
return null;
}
if (node.firstChild != null) {
return node.firstChild;
}
if (node.nextSibling != null) {
return node.nextSibling;
}
// If loop iterates back to the root, the DOM tree has no next node so it stops.
while (node != null && node.nextSibling == null) {
node = node.parentNode;
}
return node == null ? null : node.nextSibling;
};