in tapestry-framework/src/js/dojo-0.4.3-custom-4.1.6/src/html/selection.js [94:326]
dojo.lang.mixin(dojo.html.selection,{getType:function(){
if(dojo.doc()["selection"]){
return dojo.html.selectionType[dojo.doc().selection.type.toUpperCase()];
}else{
var _d=dojo.html.selectionType.TEXT;
var _e;
try{
_e=dojo.global().getSelection();
}
catch(e){
}
if(_e&&_e.rangeCount==1){
var _f=_e.getRangeAt(0);
if(_f.startContainer==_f.endContainer&&(_f.endOffset-_f.startOffset)==1&&_f.startContainer.nodeType!=dojo.dom.TEXT_NODE){
_d=dojo.html.selectionType.CONTROL;
}
}
return _d;
}
},isCollapsed:function(){
var _10=dojo.global();
var _11=dojo.doc();
if(_11["selection"]){
return _11.selection.createRange().text=="";
}else{
if(_10["getSelection"]){
var _12=_10.getSelection();
if(dojo.lang.isString(_12)){
return _12=="";
}else{
return _12.isCollapsed||_12.toString()=="";
}
}
}
},getSelectedElement:function(){
if(dojo.html.selection.getType()==dojo.html.selectionType.CONTROL){
if(dojo.doc()["selection"]){
var _13=dojo.doc().selection.createRange();
if(_13&&_13.item){
return dojo.doc().selection.createRange().item(0);
}
}else{
var _14=dojo.global().getSelection();
return _14.anchorNode.childNodes[_14.anchorOffset];
}
}
},getParentElement:function(){
if(dojo.html.selection.getType()==dojo.html.selectionType.CONTROL){
var p=dojo.html.selection.getSelectedElement();
if(p){
return p.parentNode;
}
}else{
if(dojo.doc()["selection"]){
return dojo.doc().selection.createRange().parentElement();
}else{
var _16=dojo.global().getSelection();
if(_16){
var _17=_16.anchorNode;
while(_17&&_17.nodeType!=dojo.dom.ELEMENT_NODE){
_17=_17.parentNode;
}
return _17;
}
}
}
},getSelectedText:function(){
if(dojo.doc()["selection"]){
if(dojo.html.selection.getType()==dojo.html.selectionType.CONTROL){
return null;
}
return dojo.doc().selection.createRange().text;
}else{
var _18=dojo.global().getSelection();
if(_18){
return _18.toString();
}
}
},getSelectedHtml:function(){
if(dojo.doc()["selection"]){
if(dojo.html.selection.getType()==dojo.html.selectionType.CONTROL){
return null;
}
return dojo.doc().selection.createRange().htmlText;
}else{
var _19=dojo.global().getSelection();
if(_19&&_19.rangeCount){
var _1a=_19.getRangeAt(0).cloneContents();
var div=document.createElement("div");
div.appendChild(_1a);
return div.innerHTML;
}
return null;
}
},hasAncestorElement:function(_1c){
return (dojo.html.selection.getAncestorElement.apply(this,arguments)!=null);
},getAncestorElement:function(_1d){
var _1e=dojo.html.selection.getSelectedElement()||dojo.html.selection.getParentElement();
while(_1e){
if(dojo.html.selection.isTag(_1e,arguments).length>0){
return _1e;
}
_1e=_1e.parentNode;
}
return null;
},isTag:function(_1f,_20){
if(_1f&&_1f.tagName){
for(var i=0;i<_20.length;i++){
if(_1f.tagName.toLowerCase()==String(_20[i]).toLowerCase()){
return String(_20[i]).toLowerCase();
}
}
}
return "";
},selectElement:function(_22){
var _23=dojo.global();
var _24=dojo.doc();
_22=dojo.byId(_22);
if(_24.selection&&dojo.body().createTextRange){
try{
var _25=dojo.body().createControlRange();
_25.addElement(_22);
_25.select();
}
catch(e){
dojo.html.selection.selectElementChildren(_22);
}
}else{
if(_23["getSelection"]){
var _26=_23.getSelection();
if(_26["removeAllRanges"]){
var _25=_24.createRange();
_25.selectNode(_22);
_26.removeAllRanges();
_26.addRange(_25);
}
}
}
},selectElementChildren:function(_27){
var _28=dojo.global();
var _29=dojo.doc();
_27=dojo.byId(_27);
if(_29.selection&&dojo.body().createTextRange){
var _2a=dojo.body().createTextRange();
_2a.moveToElementText(_27);
_2a.select();
}else{
if(_28["getSelection"]){
var _2b=_28.getSelection();
if(_2b["setBaseAndExtent"]){
_2b.setBaseAndExtent(_27,0,_27,_27.innerText.length-1);
}else{
if(_2b["selectAllChildren"]){
_2b.selectAllChildren(_27);
}
}
}
}
},getBookmark:function(){
var _2c;
var _2d=dojo.doc();
if(_2d["selection"]){
var _2e=_2d.selection.createRange();
_2c=_2e.getBookmark();
}else{
var _2f;
try{
_2f=dojo.global().getSelection();
}
catch(e){
}
if(_2f){
var _2e=_2f.getRangeAt(0);
_2c=_2e.cloneRange();
}else{
dojo.debug("No idea how to store the current selection for this browser!");
}
}
return _2c;
},moveToBookmark:function(_30){
var _31=dojo.doc();
if(_31["selection"]){
var _32=_31.selection.createRange();
_32.moveToBookmark(_30);
_32.select();
}else{
var _33;
try{
_33=dojo.global().getSelection();
}
catch(e){
}
if(_33&&_33["removeAllRanges"]){
_33.removeAllRanges();
_33.addRange(_30);
}else{
dojo.debug("No idea how to restore selection for this browser!");
}
}
},collapse:function(_34){
if(dojo.global()["getSelection"]){
var _35=dojo.global().getSelection();
if(_35.removeAllRanges){
if(_34){
_35.collapseToStart();
}else{
_35.collapseToEnd();
}
}else{
dojo.global().getSelection().collapse(_34);
}
}else{
if(dojo.doc().selection){
var _36=dojo.doc().selection.createRange();
_36.collapse(_34);
_36.select();
}
}
},remove:function(){
if(dojo.doc().selection){
var _37=dojo.doc().selection;
if(_37.type.toUpperCase()!="NONE"){
_37.clear();
}
return _37;
}else{
var _37=dojo.global().getSelection();
for(var i=0;i<_37.rangeCount;i++){
_37.getRangeAt(i).deleteContents();
}
return _37;
}
}});