code: function wrapSelfAndSiblingsInDefaultBlock(container, offset) {
  				var newBlock, parentBlock, startNode, node, next, blockName = newBlockName || 'P';
  
  				// Not in a block element or in a table cell or caption
  				parentBlock = dom.getParent(container, dom.isBlock);
  				if (!parentBlock || !canSplitBlock(parentBlock)) {
  					parentBlock = parentBlock || editableRoot;
  
  					if (!parentBlock.hasChildNodes()) {
  						newBlock = dom.create(blockName);
  						parentBlock.appendChild(newBlock);
  						rng.setStart(newBlock, 0);
  						rng.setEnd(newBlock, 0);
  						return newBlock;
  					}
  
  					// Find parent that is the first child of parentBlock
  					node = container;
  					while (node.parentNode != parentBlock) {
  						node = node.parentNode;
  					}
  
  					// Loop left to find start node start wrapping at
  					while (node && !dom.isBlock(node)) {
  						startNode = node;
  						node = node.previousSibling;
  					}
  
  					if (startNode) {
  						newBlock = dom.create(blockName);
  						startNode.parentNode.insertBefore(newBlock, startNode);
  
  						// Start wrapping until we hit a block
  						node = startNode;
  						while (node && !dom.isBlock(node)) {
  							next = node.nextSibling;
  							newBlock.appendChild(node);
  							node = next;
  						}
  
  						// Restore range to it's past location
  						rng.setStart(container, offset);
  						rng.setEnd(container, offset);
  					}
  				}
  
  				return container;
  			}
docs: Wraps any text nodes or inline elements in the specified forced root block name