1/* 2 * FCKeditor - The text editor for Internet - http://www.fckeditor.net 3 * Copyright (C) 2003-2007 Frederico Caldeira Knabben 4 * 5 * == BEGIN LICENSE == 6 * 7 * Licensed under the terms of any of the following licenses at your 8 * choice: 9 * 10 * - GNU General Public License Version 2 or later (the "GPL") 11 * http://www.gnu.org/licenses/gpl.html 12 * 13 * - GNU Lesser General Public License Version 2.1 or later (the "LGPL") 14 * http://www.gnu.org/licenses/lgpl.html 15 * 16 * - Mozilla Public License Version 1.1 or later (the "MPL") 17 * http://www.mozilla.org/MPL/MPL-1.1.html 18 * 19 * == END LICENSE == 20 * 21 * Manages the DOM ascensors element list of a specific DOM node 22 * (limited to body, inclusive). 23 */ 24 25var FCKElementPath = function( lastNode ) 26{ 27 var eBlock = null ; 28 var eBlockLimit = null ; 29 30 var aElements = new Array() ; 31 32 var e = lastNode ; 33 while ( e ) 34 { 35 if ( e.nodeType == 1 ) 36 { 37 if ( !this.LastElement ) 38 this.LastElement = e ; 39 40 var sElementName = e.nodeName.toLowerCase() ; 41 42 if ( !eBlockLimit ) 43 { 44 if ( !eBlock && FCKListsLib.PathBlockElements[ sElementName ] != null ) 45 eBlock = e ; 46 47 if ( FCKListsLib.PathBlockLimitElements[ sElementName ] != null ) 48 { 49 // DIV is considered the Block, if no block is available (#525). 50 if ( !eBlock && sElementName == 'div' ) 51 eBlock = e ; 52 else 53 eBlockLimit = e ; 54 } 55 } 56 57 aElements.push( e ) ; 58 59 if ( sElementName == 'body' ) 60 break ; 61 } 62 e = e.parentNode ; 63 } 64 65 this.Block = eBlock ; 66 this.BlockLimit = eBlockLimit ; 67 this.Elements = aElements ; 68} 69 70 71