You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
379 lines
8.9 KiB
379 lines
8.9 KiB
/* |
|
Copyright (c) 2004-2006, The Dojo Foundation |
|
All Rights Reserved. |
|
|
|
Licensed under the Academic Free License version 2.1 or above OR the |
|
modified BSD license. For more information on Dojo licensing, see: |
|
|
|
http://dojotoolkit.org/community/licensing.shtml |
|
*/ |
|
|
|
|
|
dojo.provide("dojo.dom"); |
|
dojo.dom.ELEMENT_NODE=1; |
|
dojo.dom.ATTRIBUTE_NODE=2; |
|
dojo.dom.TEXT_NODE=3; |
|
dojo.dom.CDATA_SECTION_NODE=4; |
|
dojo.dom.ENTITY_REFERENCE_NODE=5; |
|
dojo.dom.ENTITY_NODE=6; |
|
dojo.dom.PROCESSING_INSTRUCTION_NODE=7; |
|
dojo.dom.COMMENT_NODE=8; |
|
dojo.dom.DOCUMENT_NODE=9; |
|
dojo.dom.DOCUMENT_TYPE_NODE=10; |
|
dojo.dom.DOCUMENT_FRAGMENT_NODE=11; |
|
dojo.dom.NOTATION_NODE=12; |
|
dojo.dom.dojoml="http://www.dojotoolkit.org/2004/dojoml"; |
|
dojo.dom.xmlns={svg:"http://www.w3.org/2000/svg",smil:"http://www.w3.org/2001/SMIL20/",mml:"http://www.w3.org/1998/Math/MathML",cml:"http://www.xml-cml.org",xlink:"http://www.w3.org/1999/xlink",xhtml:"http://www.w3.org/1999/xhtml",xul:"http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul",xbl:"http://www.mozilla.org/xbl",fo:"http://www.w3.org/1999/XSL/Format",xsl:"http://www.w3.org/1999/XSL/Transform",xslt:"http://www.w3.org/1999/XSL/Transform",xi:"http://www.w3.org/2001/XInclude",xforms:"http://www.w3.org/2002/01/xforms",saxon:"http://icl.com/saxon",xalan:"http://xml.apache.org/xslt",xsd:"http://www.w3.org/2001/XMLSchema",dt:"http://www.w3.org/2001/XMLSchema-datatypes",xsi:"http://www.w3.org/2001/XMLSchema-instance",rdf:"http://www.w3.org/1999/02/22-rdf-syntax-ns#",rdfs:"http://www.w3.org/2000/01/rdf-schema#",dc:"http://purl.org/dc/elements/1.1/",dcq:"http://purl.org/dc/qualifiers/1.0","soap-env":"http://schemas.xmlsoap.org/soap/envelope/",wsdl:"http://schemas.xmlsoap.org/wsdl/",AdobeExtensions:"http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"}; |
|
dojo.dom.isNode=function(wh){ |
|
if(typeof Element=="function"){ |
|
try{ |
|
return wh instanceof Element; |
|
} |
|
catch(e){ |
|
} |
|
}else{ |
|
return wh&&!isNaN(wh.nodeType); |
|
} |
|
}; |
|
dojo.dom.getUniqueId=function(){ |
|
var _2=dojo.doc(); |
|
do{ |
|
var id="dj_unique_"+(++arguments.callee._idIncrement); |
|
}while(_2.getElementById(id)); |
|
return id; |
|
}; |
|
dojo.dom.getUniqueId._idIncrement=0; |
|
dojo.dom.firstElement=dojo.dom.getFirstChildElement=function(_4,_5){ |
|
var _6=_4.firstChild; |
|
while(_6&&_6.nodeType!=dojo.dom.ELEMENT_NODE){ |
|
_6=_6.nextSibling; |
|
} |
|
if(_5&&_6&&_6.tagName&&_6.tagName.toLowerCase()!=_5.toLowerCase()){ |
|
_6=dojo.dom.nextElement(_6,_5); |
|
} |
|
return _6; |
|
}; |
|
dojo.dom.lastElement=dojo.dom.getLastChildElement=function(_7,_8){ |
|
var _9=_7.lastChild; |
|
while(_9&&_9.nodeType!=dojo.dom.ELEMENT_NODE){ |
|
_9=_9.previousSibling; |
|
} |
|
if(_8&&_9&&_9.tagName&&_9.tagName.toLowerCase()!=_8.toLowerCase()){ |
|
_9=dojo.dom.prevElement(_9,_8); |
|
} |
|
return _9; |
|
}; |
|
dojo.dom.nextElement=dojo.dom.getNextSiblingElement=function(_a,_b){ |
|
if(!_a){ |
|
return null; |
|
} |
|
do{ |
|
_a=_a.nextSibling; |
|
}while(_a&&_a.nodeType!=dojo.dom.ELEMENT_NODE); |
|
if(_a&&_b&&_b.toLowerCase()!=_a.tagName.toLowerCase()){ |
|
return dojo.dom.nextElement(_a,_b); |
|
} |
|
return _a; |
|
}; |
|
dojo.dom.prevElement=dojo.dom.getPreviousSiblingElement=function(_c,_d){ |
|
if(!_c){ |
|
return null; |
|
} |
|
if(_d){ |
|
_d=_d.toLowerCase(); |
|
} |
|
do{ |
|
_c=_c.previousSibling; |
|
}while(_c&&_c.nodeType!=dojo.dom.ELEMENT_NODE); |
|
if(_c&&_d&&_d.toLowerCase()!=_c.tagName.toLowerCase()){ |
|
return dojo.dom.prevElement(_c,_d); |
|
} |
|
return _c; |
|
}; |
|
dojo.dom.moveChildren=function(_e,_f,_10){ |
|
var _11=0; |
|
if(_10){ |
|
while(_e.hasChildNodes()&&_e.firstChild.nodeType==dojo.dom.TEXT_NODE){ |
|
_e.removeChild(_e.firstChild); |
|
} |
|
while(_e.hasChildNodes()&&_e.lastChild.nodeType==dojo.dom.TEXT_NODE){ |
|
_e.removeChild(_e.lastChild); |
|
} |
|
} |
|
while(_e.hasChildNodes()){ |
|
_f.appendChild(_e.firstChild); |
|
_11++; |
|
} |
|
return _11; |
|
}; |
|
dojo.dom.copyChildren=function(_12,_13,_14){ |
|
var _15=_12.cloneNode(true); |
|
return this.moveChildren(_15,_13,_14); |
|
}; |
|
dojo.dom.replaceChildren=function(_16,_17){ |
|
var _18=[]; |
|
if(dojo.render.html.ie){ |
|
for(var i=0;i<_16.childNodes.length;i++){ |
|
_18.push(_16.childNodes[i]); |
|
} |
|
} |
|
dojo.dom.removeChildren(_16); |
|
_16.appendChild(_17); |
|
for(var i=0;i<_18.length;i++){ |
|
dojo.dom.destroyNode(_18[i]); |
|
} |
|
}; |
|
dojo.dom.removeChildren=function(_1a){ |
|
var _1b=_1a.childNodes.length; |
|
while(_1a.hasChildNodes()){ |
|
dojo.dom.removeNode(_1a.firstChild); |
|
} |
|
return _1b; |
|
}; |
|
dojo.dom.replaceNode=function(_1c,_1d){ |
|
return _1c.parentNode.replaceChild(_1d,_1c); |
|
}; |
|
dojo.dom.destroyNode=function(_1e){ |
|
if(_1e.parentNode){ |
|
_1e=dojo.dom.removeNode(_1e); |
|
} |
|
if(_1e.nodeType!=3){ |
|
if(dojo.evalObjPath("dojo.event.browser.clean",false)){ |
|
dojo.event.browser.clean(_1e); |
|
} |
|
if(dojo.render.html.ie){ |
|
_1e.outerHTML=""; |
|
} |
|
} |
|
}; |
|
dojo.dom.removeNode=function(_1f){ |
|
if(_1f&&_1f.parentNode){ |
|
return _1f.parentNode.removeChild(_1f); |
|
} |
|
}; |
|
dojo.dom.getAncestors=function(_20,_21,_22){ |
|
var _23=[]; |
|
var _24=(_21&&(_21 instanceof Function||typeof _21=="function")); |
|
while(_20){ |
|
if(!_24||_21(_20)){ |
|
_23.push(_20); |
|
} |
|
if(_22&&_23.length>0){ |
|
return _23[0]; |
|
} |
|
_20=_20.parentNode; |
|
} |
|
if(_22){ |
|
return null; |
|
} |
|
return _23; |
|
}; |
|
dojo.dom.getAncestorsByTag=function(_25,tag,_27){ |
|
tag=tag.toLowerCase(); |
|
return dojo.dom.getAncestors(_25,function(el){ |
|
return ((el.tagName)&&(el.tagName.toLowerCase()==tag)); |
|
},_27); |
|
}; |
|
dojo.dom.getFirstAncestorByTag=function(_29,tag){ |
|
return dojo.dom.getAncestorsByTag(_29,tag,true); |
|
}; |
|
dojo.dom.isDescendantOf=function(_2b,_2c,_2d){ |
|
if(_2d&&_2b){ |
|
_2b=_2b.parentNode; |
|
} |
|
while(_2b){ |
|
if(_2b==_2c){ |
|
return true; |
|
} |
|
_2b=_2b.parentNode; |
|
} |
|
return false; |
|
}; |
|
dojo.dom.innerXML=function(_2e){ |
|
if(_2e.innerXML){ |
|
return _2e.innerXML; |
|
}else{ |
|
if(_2e.xml){ |
|
return _2e.xml; |
|
}else{ |
|
if(typeof XMLSerializer!="undefined"){ |
|
return (new XMLSerializer()).serializeToString(_2e); |
|
} |
|
} |
|
} |
|
}; |
|
dojo.dom.createDocument=function(){ |
|
var doc=null; |
|
var _30=dojo.doc(); |
|
if(!dj_undef("ActiveXObject")){ |
|
var _31=["MSXML2","Microsoft","MSXML","MSXML3"]; |
|
for(var i=0;i<_31.length;i++){ |
|
try{ |
|
doc=new ActiveXObject(_31[i]+".XMLDOM"); |
|
} |
|
catch(e){ |
|
} |
|
if(doc){ |
|
break; |
|
} |
|
} |
|
}else{ |
|
if((_30.implementation)&&(_30.implementation.createDocument)){ |
|
doc=_30.implementation.createDocument("","",null); |
|
} |
|
} |
|
return doc; |
|
}; |
|
dojo.dom.createDocumentFromText=function(str,_34){ |
|
if(!_34){ |
|
_34="text/xml"; |
|
} |
|
if(!dj_undef("DOMParser")){ |
|
var _35=new DOMParser(); |
|
return _35.parseFromString(str,_34); |
|
}else{ |
|
if(!dj_undef("ActiveXObject")){ |
|
var _36=dojo.dom.createDocument(); |
|
if(_36){ |
|
_36.async=false; |
|
_36.loadXML(str); |
|
return _36; |
|
}else{ |
|
dojo.debug("toXml didn't work?"); |
|
} |
|
}else{ |
|
var _37=dojo.doc(); |
|
if(_37.createElement){ |
|
var tmp=_37.createElement("xml"); |
|
tmp.innerHTML=str; |
|
if(_37.implementation&&_37.implementation.createDocument){ |
|
var _39=_37.implementation.createDocument("foo","",null); |
|
for(var i=0;i<tmp.childNodes.length;i++){ |
|
_39.importNode(tmp.childNodes.item(i),true); |
|
} |
|
return _39; |
|
} |
|
return ((tmp.document)&&(tmp.document.firstChild?tmp.document.firstChild:tmp)); |
|
} |
|
} |
|
} |
|
return null; |
|
}; |
|
dojo.dom.prependChild=function(_3b,_3c){ |
|
if(_3c.firstChild){ |
|
_3c.insertBefore(_3b,_3c.firstChild); |
|
}else{ |
|
_3c.appendChild(_3b); |
|
} |
|
return true; |
|
}; |
|
dojo.dom.insertBefore=function(_3d,ref,_3f){ |
|
if((_3f!=true)&&(_3d===ref||_3d.nextSibling===ref)){ |
|
return false; |
|
} |
|
var _40=ref.parentNode; |
|
_40.insertBefore(_3d,ref); |
|
return true; |
|
}; |
|
dojo.dom.insertAfter=function(_41,ref,_43){ |
|
var pn=ref.parentNode; |
|
if(ref==pn.lastChild){ |
|
if((_43!=true)&&(_41===ref)){ |
|
return false; |
|
} |
|
pn.appendChild(_41); |
|
}else{ |
|
return this.insertBefore(_41,ref.nextSibling,_43); |
|
} |
|
return true; |
|
}; |
|
dojo.dom.insertAtPosition=function(_45,ref,_47){ |
|
if((!_45)||(!ref)||(!_47)){ |
|
return false; |
|
} |
|
switch(_47.toLowerCase()){ |
|
case "before": |
|
return dojo.dom.insertBefore(_45,ref); |
|
case "after": |
|
return dojo.dom.insertAfter(_45,ref); |
|
case "first": |
|
if(ref.firstChild){ |
|
return dojo.dom.insertBefore(_45,ref.firstChild); |
|
}else{ |
|
ref.appendChild(_45); |
|
return true; |
|
} |
|
break; |
|
default: |
|
ref.appendChild(_45); |
|
return true; |
|
} |
|
}; |
|
dojo.dom.insertAtIndex=function(_48,_49,_4a){ |
|
var _4b=_49.childNodes; |
|
if(!_4b.length||_4b.length==_4a){ |
|
_49.appendChild(_48); |
|
return true; |
|
} |
|
if(_4a==0){ |
|
return dojo.dom.prependChild(_48,_49); |
|
} |
|
return dojo.dom.insertAfter(_48,_4b[_4a-1]); |
|
}; |
|
dojo.dom.textContent=function(_4c,_4d){ |
|
if(arguments.length>1){ |
|
var _4e=dojo.doc(); |
|
dojo.dom.replaceChildren(_4c,_4e.createTextNode(_4d)); |
|
return _4d; |
|
}else{ |
|
if(_4c.textContent!=undefined){ |
|
return _4c.textContent; |
|
} |
|
var _4f=""; |
|
if(_4c==null){ |
|
return _4f; |
|
} |
|
for(var i=0;i<_4c.childNodes.length;i++){ |
|
switch(_4c.childNodes[i].nodeType){ |
|
case 1: |
|
case 5: |
|
_4f+=dojo.dom.textContent(_4c.childNodes[i]); |
|
break; |
|
case 3: |
|
case 2: |
|
case 4: |
|
_4f+=_4c.childNodes[i].nodeValue; |
|
break; |
|
default: |
|
break; |
|
} |
|
} |
|
return _4f; |
|
} |
|
}; |
|
dojo.dom.hasParent=function(_51){ |
|
return Boolean(_51&&_51.parentNode&&dojo.dom.isNode(_51.parentNode)); |
|
}; |
|
dojo.dom.isTag=function(_52){ |
|
if(_52&&_52.tagName){ |
|
for(var i=1;i<arguments.length;i++){ |
|
if(_52.tagName==String(arguments[i])){ |
|
return String(arguments[i]); |
|
} |
|
} |
|
} |
|
return ""; |
|
}; |
|
dojo.dom.setAttributeNS=function(_54,_55,_56,_57){ |
|
if(_54==null||((_54==undefined)&&(typeof _54=="undefined"))){ |
|
dojo.raise("No element given to dojo.dom.setAttributeNS"); |
|
} |
|
if(!((_54.setAttributeNS==undefined)&&(typeof _54.setAttributeNS=="undefined"))){ |
|
_54.setAttributeNS(_55,_56,_57); |
|
}else{ |
|
var _58=_54.ownerDocument; |
|
var _59=_58.createNode(2,_56,_55); |
|
_59.nodeValue=_57; |
|
_54.setAttributeNode(_59); |
|
} |
|
};
|
|
|