| | 294 | }, |
| | 295 | |
| | 296 | PaddingNodeTag : ( new Date() ).getTime() + "_documentPadding", |
| | 297 | |
| | 298 | EnforcePaddingNode : function( doc, tagName ) |
| | 299 | { |
| | 300 | this.CheckAndRemovePaddingNode( doc, tagName, true ) ; |
| | 301 | if ( ! doc.body.lastChild |
| | 302 | || doc.body.lastChild.nodeType != 1 |
| | 303 | || doc.body.lastChild.tagName.toLowerCase() == tagName.toLowerCase() ) |
| | 304 | return ; |
| | 305 | var node = doc.createElement( tagName ) ; |
| | 306 | if ( FCKBrowserInfo.IsGecko && FCKListsLib.NonEmptyBlockElements[ tagName ] ) |
| | 307 | FCKTools.AppendBogusBr( node ) ; |
| | 308 | node.id = this.PaddingNodeTag ; |
| | 309 | doc.body.appendChild( node ) ; |
| | 310 | }, |
| | 311 | |
| | 312 | CheckAndRemovePaddingNode : function( doc, tagName, dontRemove ) |
| | 313 | { |
| | 314 | var paddingNode = doc.getElementById( this.PaddingNodeTag ) ; |
| | 315 | if ( ! paddingNode ) |
| | 316 | return ; |
| | 317 | |
| | 318 | // If the padding node is changed, remove its status as a padding node. |
| | 319 | if ( paddingNode.parentNode != doc.body |
| | 320 | || paddingNode.tagName.toLowerCase() != tagName |
| | 321 | || ( paddingNode.childNodes.length > 1 ) |
| | 322 | || ( paddingNode.firstChild && paddingNode.firstChild.nodeValue != '\xa0' |
| | 323 | && String(paddingNode.firstChild.tagName).toLowerCase() != 'br' ) ) |
| | 324 | { |
| | 325 | paddingNode.removeAttribute( 'id' ) ; |
| | 326 | return ; |
| | 327 | } |
| | 328 | |
| | 329 | // Now we're sure the padding node exists, and it is unchanged, remove it. |
| | 330 | if ( !dontRemove ) |
| | 331 | paddingNode.parentNode.removeChild( paddingNode ) ; |