// Move the start of a range to the start of a node,
// compensating for the fact that you can't call
// moveToElementText with text nodes.
- function moveToNodeStart(range, node) {
+ function moveToNodeStart(range, node) {
if (node.nodeType == 3) {
var count = 0, cur = node.previousSibling;
while (cur && cur.nodeType == 3) {
}
if (cur) {
try{range.moveToElementText(cur);}
- catch(e){alert(cur + " " + cur.nodeType + " " + (cur && cur.outerHTML));}
+ catch(e){}
range.collapse(false);
}
else range.moveToElementText(node.parentNode);
if (count) range.move("character", count);
}
- else try{range.moveToElementText(node);} catch(e) {};
+ else range.moveToElementText(node);
}
// Do a binary search through the container object, comparing
// the start of each node to the selection
- var start = 0, end = container.childNodes.length;
- while (start != end) {
+ var start = 0, end = container.childNodes.length - 1;
+ while (start < end) {
var middle = Math.ceil((end + start) / 2), node = container.childNodes[middle];
if (!node) return false; // Don't ask. IE6 manages this sometimes.
moveToNodeStart(range2, node);