context: 	Expand : function( unit )	{		var oNode, oSibling ;		switch ( unit )		{			case 'block_contents' :				if ( this.StartBlock )					this.SetStart( this.StartBlock, 1 ) ;				else				{					// Get the start node for the current range.					oNode = this._Range.startContainer ;										// If it is an element, get the current child node for the range (in the offset).					// If the offset node is not available, the the first one.					if ( oNode.nodeType == 1 )					{						if ( !( oNode = oNode.childNodes[ this._Range.startOffset ] ) )							oNode = oNode.firstChild ;					}										// Not able to defined the current position.					if ( !oNode )						return ;										// We must look for the left boundary, relative to the range					// start, which is limited by a block element.					while ( true )					{						oSibling = oNode.previousSibling ;												if ( !oSibling )						{							// Continue if we are not yet in the block limit (inside a <b>, for example).							if ( oNode.parentNode != this.StartBlockLimit )								oNode = oNode.parentNode ;							else								break ;						}						else if ( oSibling.nodeType != 1 || !(/^(?:P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DT|DE)$/).test( oSibling.nodeName.toUpperCase() ) )						{							// Continue if the sibling is not a block tag.							oNode = oSibling ;						}						else							break ;					}										this._Range.setStartBefore( oNode ) ;				}								if ( this.EndBlock )					this.SetEnd( this.EndBlock, 2 ) ;				else				{					oNode = this._Range.endContainer ;					if ( oNode.nodeType == 1 )						oNode = oNode.childNodes[ this._Range.endOffset ] || oNode.lastChild ;										if ( !oNode )						return ;										// We must look for the right boundary, relative to the range					// end, which is limited by a block element.					while ( true )					{						oSibling = oNode.nextSibling ;												if ( !oSibling )						{							// Continue if we are not yet in the block limit (inide a <b>, for example).							if ( oNode.parentNode != this.EndBlockLimit )								oNode = oNode.parentNode ;							else								break ;						}						else if ( oSibling.nodeType != 1 || !(/^(?:P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|OL|UL|LI|DT|DE)$/).test( oSibling.nodeName.toUpperCase() ) )						{							// Continue if the sibling is not a block tag.							oNode = oSibling ;						}						else							break ;					}										this._Range.setEndAfter( oNode ) ;				}				this._UpdateElementInfo() ;		}	},
meta: 8533	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/8533/9e983f26dc3628701a539d2377aaa3db1e8f1f71/fckdomrange.js/buggy/library/src/webapp/editor/FCKeditor/editor/_source/classes/fckdomrange.js