+ _moveCaretToTextElement: function(element, where) {
+ var range = document.createRange(),
+ node = element.dom().contents()[0];
+
+ if(typeof where !== 'number') {
+ range.selectNodeContents(node);
+ } else {
+ range.setStart(node, where);
+ }
+
+ var collapseArg = true;
+ if(where === 'end')
+ collapseArg = false;
+ range.collapse(collapseArg);
+
+ var selection = document.getSelection();
+
+ selection.removeAllRanges();
+ selection.addRange(range);
+ this.wrapper.focus(); // FF requires this for caret to be put where range colllapses, Chrome doesn't.
+ },
+
+ setCursorPosition: function(position) {
+ if(position.element)
+ this._moveCaretToTextElement(position.element, position.offset);
+ },
+
+ toXML: function() {
+ var d = function(element, parent, level) {
+ console.log(element.getText ? 'text: ' + element.getText() : 'node: ' + element.getWlxmlTag());
+ var isElementNode = element instanceof documentElement.DocumentNodeElement;
+ parent.prepend(element.toXML(level));
+ if(isElementNode) {
+ var dom = $(parent.children()[0]),
+ elementChildren = element.children();
+ for(var i = elementChildren.length - 1; i >= 0; i--) {
+ d(elementChildren[i], dom, level + 1);
+ }
+ }
+ }
+ var parent = $('<div>');
+ d(this.doc(), parent, 0);
+ return parent.html();
+ }