4 * This is a toolkit, normally used to copy features into a Dom Range element
5 * Roo.lib.Range.wrap(x);
10 Roo.lib.Range = function() { };
13 * Wrap a Dom Range object, to give it new features...
15 * @param {Range} the range to wrap
17 Roo.lib.Range.wrap = function(r) {
18 return Roo.apply(r, Roo.lib.Range.prototype);
21 * find a parent node eg. LI / OL
22 * @param {string|Array} node name or array of nodenames
23 * @return {DomElement|false}
25 Roo.apply(Roo.lib.Range.prototype,
28 closest : function(str)
30 if (typeof(str) != 'string') {
31 // assume it's a array.
32 for(var i = 0;i < str.length;i++) {
33 var r = this.closest(str[i]);
41 str = str.toLowerCase();
42 var n = this.commonAncestorContainer; // might not be a node
43 while (n.nodeType != 1) {
47 if (n.nodeName.toLowerCase() == str ) {
50 if (n.nodeName.toLowerCase() == 'body') {
54 return n.closest(str) || false;
57 cloneRange : function()
59 return Roo.lib.Range.wrap(Range.prototype.cloneRange.call(this));