function findTextNodeRelative(left, startNode) {
					var walker, lastInlineElement;

					startNode = startNode || container;
					walker = new TreeWalker(startNode, dom.getParent(startNode.parentNode, dom.isBlock) || body);

					// Walk left until we hit a text node we can move to or a block/br/img
					while (node = walker[left ? 'prev' : 'next']()) {
						// Found text node that has a length
						if (node.nodeType === 3 && node.nodeValue.length > 0) {
							container = node;
							offset = left ? node.nodeValue.length : 0;
							normalized = true;
							return;
						}

						// Break if we find a block or a BR/IMG/INPUT etc
						if (dom.isBlock(node) || nonEmptyElementsMap[node.nodeName.toLowerCase()]) {
							return;
						}

						lastInlineElement = node;
					}

					// Only fetch the last inline element when in caret mode for now
					if (collapsed && lastInlineElement) {
						container = lastInlineElement;
						normalized = true;
						offset = 0;
					}
				}
function findTextNodeRelative(left, startNode) {
					var walker, lastInlineElement;

					startNode = startNode || container;
					walker = new TreeWalker(startNode, dom.getParent(startNode.parentNode, dom.isBlock) || body);

					
					while (node = walker[left ? 'prev' : 'next']()) {
						
						if (node.nodeType === 3 && node.nodeValue.length > 0) {
							container = node;
							offset = left ? node.nodeValue.length : 0;
							normalized = true;
							return;
						}

						
						if (dom.isBlock(node) || nonEmptyElementsMap[node.nodeName.toLowerCase()]) {
							return;
						}

						lastInlineElement = node;
					}

					
					if (collapsed && lastInlineElement) {
						container = lastInlineElement;
						normalized = true;
						offset = 0;
					}
				}
function findTextNodeRelative ( left , startNode ) { var walker , lastInlineElement ; startNode = startNode || container ; walker = new TreeWalker ( startNode , dom . getParent ( startNode . parentNode , dom . isBlock ) || body ) ; // Walk left until we hit a text node we can move to or a block/br/img
 while ( node = walker [ left ? 'prev' : 'next' ] ( ) ) { // Found text node that has a length
 if ( node . nodeType === 3 && node . nodeValue . length > 0 ) { container = node ; offset = left ? node . nodeValue . length : 0 ; normalized = true ; return ; } // Break if we find a block or a BR/IMG/INPUT etc
 if ( dom . isBlock ( node ) || nonEmptyElementsMap [ node . nodeName . toLowerCase ( ) ] ) { return ; } lastInlineElement = node ; } // Only fetch the last inline element when in caret mode for now
 if ( collapsed && lastInlineElement ) { container = lastInlineElement ; normalized = true ; offset = 0 ; } }
Walks the dom left/right to find a suitable text node to move the endpoint into It will only walk within the current parent block or body and will stop if it hits a block or a BR/IMG
Walks the dom left / right to find a suitable text node to move the endpoint into It will only walk within the current parent block or body and will stop if it hits a block or a BR / IMG