/* Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dijit._editor.range"]){dojo._hasResource["dijit._editor.range"]=true;dojo.provide("dijit._editor.range");dijit.range={};dijit.range.getIndex=function(_1,_2){var _3=[],_4=[];var _5=_2;var _6=_1;var _7,n;while(_1!=_5){var i=0;_7=_1.parentNode;while((n=_7.childNodes[i++])){if(n===_1){--i;break;}}if(i>=_7.childNodes.length){dojo.debug("Error finding index of a node in dijit.range.getIndex");}_3.unshift(i);_4.unshift(i-_7.childNodes.length);_1=_7;}if(_3.length>0&&_6.nodeType==3){n=_6.previousSibling;while(n&&n.nodeType==3){_3[_3.length-1]--;n=n.previousSibling;}n=_6.nextSibling;while(n&&n.nodeType==3){_4[_4.length-1]++;n=n.nextSibling;}}return {o:_3,r:_4};};dijit.range.getNode=function(_8,_9){if(!dojo.isArray(_8)||_8.length==0){return _9;}var _a=_9;dojo.every(_8,function(i){if(i>=0&&i<_a.childNodes.length){_a=_a.childNodes[i];}else{_a=null;return false;}return true;});return _a;};dijit.range.getCommonAncestor=function(n1,n2){var _b=function(n){var as=[];while(n){as.unshift(n);if(n.nodeName!="BODY"){n=n.parentNode;}else{break;}}return as;};var _c=_b(n1);var _d=_b(n2);var m=Math.min(_c.length,_d.length);var _e=_c[0];for(var i=1;i0){dojo.every(_37.childNodes,function(_3b,i){var _3c;if(_3b.nodeType!=3){_35.moveToElementText(_3b);if(_35.compareEndPoints(_36,_34)>0){if(_3a&&_3a.nodeType==3){_38=_3a;_3c=true;}else{_38=_37;_39=i;return false;}}else{if(i==_37.childNodes.length-1){_38=_37;_39=_37.childNodes.length;return false;}}}else{if(i==_37.childNodes.length-1){_38=_3b;_3c=true;}}if(_3c&&_38){var _3d=dijit.range.adjacentNoneTextNode(_38)[0];if(_3d){_38=_3d.nextSibling;}else{_38=_37.firstChild;}var _3e=dijit.range.adjacentNoneTextNode(_38);_3d=_3e[0];var _3f=_3e[1];if(_3d){_35.moveToElementText(_3d);_35.collapse(false);}else{_35.moveToElementText(_37);}_35.setEndPoint(_36,_34);_39=_35.text.length-_3f;return false;}_3a=_3b;return true;});}else{_38=_37;_39=0;}if(!end&&_38.nodeType==1&&_39==_38.childNodes.length){var _40=_38.nextSibling;if(_40&&_40.nodeType==3){_38=_40;_39=0;}}return [_38,_39];},setEndPoint:function(_41,_42,_43){var _44=_41.duplicate(),_45,len;if(_42.nodeType!=3){if(_43>0){_45=_42.childNodes[_43-1];if(_45.nodeType==3){_42=_45;_43=_45.length;}else{if(_45.nextSibling&&_45.nextSibling.nodeType==3){_42=_45.nextSibling;_43=0;}else{_44.moveToElementText(_45.nextSibling?_45:_42);var _46=_45.parentNode;var _47=_46.insertBefore(_45.ownerDocument.createTextNode(" "),_45.nextSibling);_44.collapse(false);_46.removeChild(_47);}}}else{_44.moveToElementText(_42);_44.collapse(true);}}if(_42.nodeType==3){var _48=dijit.range.adjacentNoneTextNode(_42);var _49=_48[0];len=_48[1];if(_49){_44.moveToElementText(_49);_44.collapse(false);if(_49.contentEditable!="inherit"){len++;}}else{_44.moveToElementText(_42.parentNode);_44.collapse(true);}_43+=len;if(_43>0){if(_44.move("character",_43)!=_43){console.error("Error when moving!");}}}return _44;},decomposeTextRange:function(_4a){var _4b=dijit.range.ie.getEndPoint(_4a);var _4c=_4b[0],_4d=_4b[1];var _4e=_4b[0],_4f=_4b[1];if(_4a.htmlText.length){if(_4a.htmlText==_4a.text){_4f=_4d+_4a.text.length;}else{_4b=dijit.range.ie.getEndPoint(_4a,true);_4e=_4b[0],_4f=_4b[1];}}return [_4c,_4d,_4e,_4f];},setRange:function(_50,_51,_52,_53,_54,_55){var _56=dijit.range.ie.setEndPoint(_50,_51,_52);_50.setEndPoint("StartToStart",_56);if(!_55){var end=dijit.range.ie.setEndPoint(_50,_53,_54);}_50.setEndPoint("EndToEnd",end||_56);return _50;}};dojo.declare("dijit.range.W3CRange",null,{constructor:function(){if(arguments.length>0){this.setStart(arguments[0][0],arguments[0][1]);this.setEnd(arguments[0][2],arguments[0][3]);}else{this.commonAncestorContainer=null;this.startContainer=null;this.startOffset=0;this.endContainer=null;this.endOffset=0;this.collapsed=true;}},_updateInternal:function(){if(this.startContainer!==this.endContainer){this.commonAncestorContainer=dijit.range.getCommonAncestor(this.startContainer,this.endContainer);}else{this.commonAncestorContainer=this.startContainer;}this.collapsed=(this.startContainer===this.endContainer)&&(this.startOffset==this.endOffset);},setStart:function(_57,_58){_58=parseInt(_58);if(this.startContainer===_57&&this.startOffset==_58){return;}delete this._cachedBookmark;this.startContainer=_57;this.startOffset=_58;if(!this.endContainer){this.setEnd(_57,_58);}else{this._updateInternal();}},setEnd:function(_59,_5a){_5a=parseInt(_5a);if(this.endContainer===_59&&this.endOffset==_5a){return;}delete this._cachedBookmark;this.endContainer=_59;this.endOffset=_5a;if(!this.startContainer){this.setStart(_59,_5a);}else{this._updateInternal();}},setStartAfter:function(_5b,_5c){this._setPoint("setStart",_5b,_5c,1);},setStartBefore:function(_5d,_5e){this._setPoint("setStart",_5d,_5e,0);},setEndAfter:function(_5f,_60){this._setPoint("setEnd",_5f,_60,1);},setEndBefore:function(_61,_62){this._setPoint("setEnd",_61,_62,0);},_setPoint:function(_63,_64,_65,ext){var _66=dijit.range.getIndex(_64,_64.parentNode).o;this[_63](_64.parentNode,_66.pop()+ext);},_getIERange:function(){var r=(this._body||this.endContainer.ownerDocument.body).createTextRange();dijit.range.ie.setRange(r,this.startContainer,this.startOffset,this.endContainer,this.endOffset,this.collapsed);return r;},getBookmark:function(_67){this._getIERange();return this._cachedBookmark;},_select:function(){var r=this._getIERange();r.select();},deleteContents:function(){var r=this._getIERange();r.pasteHTML("");this.endContainer=this.startContainer;this.endOffset=this.startOffset;this.collapsed=true;},cloneRange:function(){var r=new dijit.range.W3CRange([this.startContainer,this.startOffset,this.endContainer,this.endOffset]);r._body=this._body;return r;},detach:function(){this._body=null;this.commonAncestorContainer=null;this.startContainer=null;this.startOffset=0;this.endContainer=null;this.endOffset=0;this.collapsed=true;}});}}