/*\r
-Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.\r
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.\r
For licensing, see LICENSE.html or http://ckeditor.com/license\r
*/\r
\r
{\r
if ( domNode )\r
{\r
- switch ( domNode.nodeType )\r
- {\r
- // Safari don't consider document as element node type. (#3389)\r
- case CKEDITOR.NODE_DOCUMENT :\r
- return new CKEDITOR.dom.document( domNode );\r
-\r
- case CKEDITOR.NODE_ELEMENT :\r
- return new CKEDITOR.dom.element( domNode );\r
+ var type = domNode.nodeType == CKEDITOR.NODE_DOCUMENT ? 'document'\r
+ : domNode.nodeType == CKEDITOR.NODE_ELEMENT ? 'element'\r
+ : domNode.nodeType == CKEDITOR.NODE_TEXT ? 'text'\r
+ : domNode.nodeType == CKEDITOR.NODE_COMMENT ? 'comment'\r
+ : 'domObject'; // Call the base constructor otherwise.\r
\r
- case CKEDITOR.NODE_TEXT :\r
- return new CKEDITOR.dom.text( domNode );\r
- }\r
-\r
- // Call the base constructor.\r
- CKEDITOR.dom.domObject.call( this, domNode );\r
+ return new CKEDITOR.dom[ type ]( domNode );\r
}\r
\r
return this;\r
do\r
{\r
previous = previous.previousSibling;\r
- retval = previous && new CKEDITOR.dom.node( previous );\r
+\r
+ // Avoid returning the doc type node.\r
+ // http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-412266927\r
+ retval = previous && previous.nodeType != 10 && new CKEDITOR.dom.node( previous );\r
}\r
while ( retval && evaluator && !evaluator( retval ) )\r
return retval;\r