whole_func_string: function moveToCaretPosition(root) {
  				var walker, node, rng, y, viewPort, lastNode = root, tempElm;
  
  				rng = dom.createRng();
  
  				if (root.hasChildNodes()) {
  					walker = new TreeWalker(root, root);
  
  					while (node = walker.current()) {
  						if (node.nodeType == 3) {
  							rng.setStart(node, 0);
  							rng.setEnd(node, 0);
  							break;
  						}
  
  						if (nonEmptyElementsMap[node.nodeName.toLowerCase()]) {
  							rng.setStartBefore(node);
  							rng.setEndBefore(node);
  							break;
  						}
  
  						lastNode = node;
  						node = walker.next();
  					}
  
  					if (!node) {
  						rng.setStart(lastNode, 0);
  						rng.setEnd(lastNode, 0);
  					}
  				} else {
  					if (root.nodeName == 'BR') {
  						if (root.nextSibling && dom.isBlock(root.nextSibling)) {
  							// Trick on older IE versions to render the caret before the BR between two lists
  							if (!documentMode || documentMode < 9) {
  								tempElm = dom.create('br');
  								root.parentNode.insertBefore(tempElm, root);
  							}
  
  							rng.setStartBefore(root);
  							rng.setEndBefore(root);
  						} else {
  							rng.setStartAfter(root);
  							rng.setEndAfter(root);
  						}
  					} else {
  						rng.setStart(root, 0);
  						rng.setEnd(root, 0);
  					}
  				}
  
  				selection.setRng(rng);
  
  				// Remove tempElm created for old IE:s
  				dom.remove(tempElm);
  
  				viewPort = dom.getViewPort(editor.getWin());
  
  				// scrollIntoView seems to scroll the parent window in most browsers now including FF 3.0b4 so it's time to stop using it and do it our selfs
  				y = dom.getPos(root).y;
  				if (y < viewPort.y || y + 25 > viewPort.y + viewPort.h) {
  					editor.getWin().scrollTo(0, y < viewPort.y ? y : y - viewPort.h + 25); // Needs to be hardcoded to roughly one line of text if a huge text block is broken into two blocks
  				}
  			}
func_code_string: function moveToCaretPosition(root) {
  				var walker, node, rng, y, viewPort, lastNode = root, tempElm;
  
  				rng = dom.createRng();
  
  				if (root.hasChildNodes()) {
  					walker = new TreeWalker(root, root);
  
  					while (node = walker.current()) {
  						if (node.nodeType == 3) {
  							rng.setStart(node, 0);
  							rng.setEnd(node, 0);
  							break;
  						}
  
  						if (nonEmptyElementsMap[node.nodeName.toLowerCase()]) {
  							rng.setStartBefore(node);
  							rng.setEndBefore(node);
  							break;
  						}
  
  						lastNode = node;
  						node = walker.next();
  					}
  
  					if (!node) {
  						rng.setStart(lastNode, 0);
  						rng.setEnd(lastNode, 0);
  					}
  				} else {
  					if (root.nodeName == 'BR') {
  						if (root.nextSibling && dom.isBlock(root.nextSibling)) {
  							// Trick on older IE versions to render the caret before the BR between two lists
  							if (!documentMode || documentMode < 9) {
  								tempElm = dom.create('br');
  								root.parentNode.insertBefore(tempElm, root);
  							}
  
  							rng.setStartBefore(root);
  							rng.setEndBefore(root);
  						} else {
  							rng.setStartAfter(root);
  							rng.setEndAfter(root);
  						}
  					} else {
  						rng.setStart(root, 0);
  						rng.setEnd(root, 0);
  					}
  				}
  
  				selection.setRng(rng);
  
  				// Remove tempElm created for old IE:s
  				dom.remove(tempElm);
  
  				viewPort = dom.getViewPort(editor.getWin());
  
  				// scrollIntoView seems to scroll the parent window in most browsers now including FF 3.0b4 so it's time to stop using it and do it our selfs
  				y = dom.getPos(root).y;
  				if (y < viewPort.y || y + 25 > viewPort.y + viewPort.h) {
  					editor.getWin().scrollTo(0, y < viewPort.y ? y : y - viewPort.h + 25); // Needs to be hardcoded to roughly one line of text if a huge text block is broken into two blocks
  				}
  			}
func_documentation_string: Moves the caret to a suitable position within the root for example in the first non pure whitespace text node or before an image