2 Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
3 Available via Academic Free License >= 2.1 OR the modified BSD license.
4 see: http://dojotoolkit.org/license for details
8 if(!dojo._hasResource["dojo._base.query"]){
9 dojo._hasResource["dojo._base.query"]=true;
10 if(typeof dojo!="undefined"){
11 dojo.provide("dojo._base.query");
12 dojo.require("dojo._base.NodeList");
13 dojo.require("dojo._base.lang");
18 var _3=d._NodeListCtor=d.NodeList;
22 var _5=((d.isWebKit||d.isMozilla)&&((_4().compatMode)=="BackCompat"));
23 var _6=!!_4().firstChild["children"]?"children":"childNodes";
30 if(_7.indexOf(_b.slice(-1))>=0){
36 return _1(_b.slice(s,e));
39 var _d=-1,_e=-1,_f=-1,_10=-1,_11=-1,_12=-1,_13=-1,lc="",cc="",_14;
40 var x=0,ql=_b.length,_15=null,_16=null;
43 var tv=(_13==x)?null:ts(_13,x);
44 _15[(_7.indexOf(tv)<0)?"tag":"oper"]=tv;
50 _15.id=ts(_12,x).replace(/\\/g,"");
56 _15.classes.push(ts(_11+1,x).replace(/\\/g,""));
68 _15.pseudos.push({name:ts(_10+1,x)});
70 _15.loops=(_15.pseudos.length||_15.attrs.length||_15.classes.length);
71 _15.oquery=_15.query=ts(_14,x);
72 _15.otag=_15.tag=(_15["oper"])?null:(_15.tag||"*");
74 _15.tag=_15.tag.toUpperCase();
76 if(_c.length&&(_c[_c.length-1].oper)){
77 _15.infixOper=_c.pop();
78 _15.query=_15.infixOper.query+" "+_15.query;
83 for(;lc=cc,cc=_b.charAt(x),x<ql;x++){
89 _15={query:null,pseudos:[],attrs:[],classes:[],tag:null,oper:null,id:null,getTag:function(){
90 return (_8)?this.otag:this.tag;
99 _16.matchFor=ts((_f||_d+1),x);
101 var cmf=_16.matchFor;
103 if((cmf.charAt(0)=="\"")||(cmf.charAt(0)=="'")){
104 _16.matchFor=cmf.slice(1,-1);
112 var _1c=("|~^$*".indexOf(lc)>=0)?lc:"";
114 _16.attr=ts(_d+1,x-_1c.length);
122 _16.value=ts(_e+1,x);
146 _16={name:ts(_10+1,x),value:null};
147 _15.pseudos.push(_16);
151 if((cc==" ")&&(lc!=cc)){
164 var _1d=function(_1e,_1f){
172 return _1e.apply(window,arguments)&&_1f.apply(window,arguments);
175 var _20=function(i,arr){
183 return (1==n.nodeType);
186 var _23=function(_24,_25){
191 return _24.className||_22;
194 return _24.htmlFor||_22;
197 return _24.style.cssText||_22;
199 return (_8?_24.getAttribute(_25):_24.getAttribute(_25,2))||_22;
201 var _26={"*=":function(_27,_28){
202 return function(_29){
203 return (_23(_29,_27).indexOf(_28)>=0);
205 },"^=":function(_2a,_2b){
206 return function(_2c){
207 return (_23(_2c,_2a).indexOf(_2b)==0);
209 },"$=":function(_2d,_2e){
211 return function(_30){
212 var ea=" "+_23(_30,_2d);
213 return (ea.lastIndexOf(_2e)==(ea.length-_2e.length));
215 },"~=":function(_31,_32){
217 return function(_34){
218 var ea=" "+_23(_34,_31)+" ";
219 return (ea.indexOf(_33)>=0);
221 },"|=":function(_35,_36){
223 return function(_38){
224 var ea=" "+_23(_38,_35);
225 return ((ea==_36)||(ea.indexOf(_37)==0));
227 },"=":function(_39,_3a){
228 return function(_3b){
229 return (_23(_3b,_39)==_3a);
232 var _3c=(typeof _4().firstChild.nextElementSibling=="undefined");
233 var _3d=!_3c?"nextElementSibling":"nextSibling";
234 var _3e=!_3c?"previousElementSibling":"previousSibling";
235 var _3f=(_3c?_21:_9);
236 var _40=function(_41){
244 var _42=function(_43){
252 var _44=function(_45){
253 var _46=_45.parentNode;
254 var i=0,_47=_46[_6],ci=(_45["_i"]||-1),cl=(_46["_l"]||-1);
259 if(cl==l&&ci>=0&&cl>=0){
264 for(var te=_46["firstElementChild"]||_46["firstChild"];te;te=te[_3d]){
274 var _48=function(_49){
275 return !((_44(_49))%2);
277 var _4a=function(_4b){
278 return ((_44(_4b))%2);
280 var _4c={"checked":function(_4d,_4e){
281 return function(_4f){
282 return !!("checked" in _4f?_4f.checked:_4f.selected);
284 },"first-child":function(){
286 },"last-child":function(){
288 },"only-child":function(_50,_51){
289 return function(_52){
298 },"empty":function(_53,_54){
299 return function(_55){
300 var cn=_55.childNodes;
301 var cnl=_55.childNodes.length;
302 for(var x=cnl-1;x>=0;x--){
303 var nt=cn[x].nodeType;
304 if((nt===1)||(nt==3)){
310 },"contains":function(_56,_57){
311 var cz=_57.charAt(0);
312 if(cz=="\""||cz=="'"){
315 return function(_58){
316 return (_58.innerHTML.indexOf(_57)>=0);
318 },"not":function(_59,_5a){
324 if(!p.classes.length){
328 return function(_5d){
331 },"nth-child":function(_5e,_5f){
340 if(_5f.indexOf("n")!=-1){
341 var _60=_5f.split("n",2);
342 var _61=_60[0]?((_60[0]=="-")?-1:pi(_60[0])):1;
343 var idx=_60[1]?pi(_60[1]):0;
347 idx=(idx%_61)&&(_61+(idx%_61));
366 return function(_62){
368 return (i>=lb)&&(ub<0||i<=ub)&&((i%_61)==idx);
375 return function(_64){
376 return (_44(_64)==_63);
379 var _65=(d.isIE)?function(_66){
380 var clc=_66.toLowerCase();
384 return function(_67){
385 return (_8?_67.getAttribute(_66):_67[_66]||_67[clc]);
388 return function(_69){
389 return (_69&&_69.getAttribute&&_69.hasAttribute(_68));
392 var _5c=function(_6a,_6b){
403 ff=_1d(ff,function(_6c){
404 return (_6c&&(_6c.tagName==_6a.getTag()));
408 if(!("classes" in _6b)){
409 _2(_6a.classes,function(_6d,idx,arr){
410 var re=new RegExp("(?:^|\\s)"+_6d+"(?:\\s|$)");
411 ff=_1d(ff,function(_6e){
412 return re.test(_6e.className);
417 if(!("pseudos" in _6b)){
418 _2(_6a.pseudos,function(_6f){
421 ff=_1d(ff,_4c[pn](pn,_6f.value));
425 if(!("attrs" in _6b)){
426 _2(_6a.attrs,function(_70){
429 if(_70.type&&_26[_70.type]){
430 _71=_26[_70.type](a,_70.matchFor);
443 ff=_1d(ff,function(_72){
444 return (!!_72&&(_72.id==_6a.id));
449 if(!("default" in _6b)){
455 var _73=function(_74){
456 return function(_75,ret,bag){
458 if(_3c&&(!_21(_75))){
461 if((!bag||_76(_75,bag))&&_74(_75)){
469 var _77=function(_78){
470 return function(_79,ret,bag){
474 if(bag&&!_76(te,bag)){
486 var _7a=function(_7b){
488 return function(_7c,ret,bag){
489 var te,x=0,_7d=_7c[_6];
491 if(_3f(te)&&(!bag||_76(te,bag))&&(_7b(te,x))){
498 var _7e=function(_7f,_80){
499 var pn=_7f.parentNode;
509 var _82=function(_83){
510 var _84=_81[_83.query];
514 var io=_83.infixOper;
515 var _85=(io?io.oper:"");
516 var _86=_5c(_83,{el:1});
519 var ecs=_4()["getElementsByClassName"];
522 _86=(!_83.loops&&_87)?_9:_5c(_83,{el:1,id:1});
523 _84=function(_88,arr){
524 var te=d.byId(_83.id,(_88.ownerDocument||_88));
537 if(ecs&&/\{\s*\[native code\]\s*\}/.test(String(ecs))&&_83.classes.length&&!_5){
538 _86=_5c(_83,{el:1,classes:1,id:1});
539 var _89=_83.classes.join(" ");
540 _84=function(_8a,arr,bag){
541 var ret=_20(0,arr),te,x=0;
542 var _8b=_8a.getElementsByClassName(_89);
543 while((te=_8b[x++])){
544 if(_86(te,_8a)&&_76(te,bag)){
551 if(!_87&&!_83.loops){
552 _84=function(_8c,arr,bag){
553 var ret=_20(0,arr),te,x=0;
554 var _8d=_8c.getElementsByTagName(_83.getTag());
555 while((te=_8d[x++])){
563 _86=_5c(_83,{el:1,tag:1,id:1});
564 _84=function(_8e,arr,bag){
565 var ret=_20(0,arr),te,x=0;
566 var _8f=_8e.getElementsByTagName(_83.getTag());
567 while((te=_8f[x++])){
568 if(_86(te,_8e)&&_76(te,bag)){
595 return _81[_83.query]=_84;
597 var _91=function(_92,_93){
598 var _94=_20(_92),qp,x,te,qpl=_93.length,bag,ret;
599 for(var i=0;i<qpl;i++){
608 for(var j=0;(te=_94[j]);j++){
619 var _97=function(_98){
623 return function(_9a){
624 var r=tef(_9a,new _3());
631 return function(_9b){
635 var nua=navigator.userAgent;
637 var _9c=(d.isWebKit&&(nua.indexOf(wk)>0)&&(parseFloat(nua.split(wk)[1])>528));
638 var _9d=d.isIE?"commentStrip":"nozip";
639 var qsa="querySelectorAll";
640 var _9e=(!!_4()[qsa]&&(!d.isSafari||(d.isSafari>3.1)||_9c));
641 var _9f=/n\+\d|([^ ])?([>~+])([^ =])?/g;
642 var _a0=function(_a1,pre,ch,_a2){
643 return ch?(pre?pre+" ":"")+ch+(_a2?" "+_a2:""):_a1;
645 var _a3=function(_a4,_a5){
646 _a4=_a4.replace(_9f,_a0);
657 var qcz=_a4.charAt(0);
658 var _a8=(-1==_a4.indexOf(" "));
659 if((_a4.indexOf("#")>=0)&&(_a8)){
662 var _a9=(_9e&&(!_a5)&&(_7.indexOf(qcz)==-1)&&(!d.isIE||(_a4.indexOf(":")==-1))&&(!(_5&&(_a4.indexOf(".")>=0)))&&(_a4.indexOf(":contains")==-1)&&(_a4.indexOf(":checked")==-1)&&(_a4.indexOf("|=")==-1));
664 var tq=(_7.indexOf(_a4.charAt(_a4.length-1))>=0)?(_a4+" *"):_a4;
665 return _96[_a4]=function(_aa){
667 if(!((9==_aa.nodeType)||_a8)){
675 return _a3(_a4,true)(_aa);
679 var _ab=_a4.split(/\s*,\s*/);
680 return _95[_a4]=((_ab.length<2)?_97(_a4):function(_ac){
682 while((tp=_ab[_ad++])){
683 ret=ret.concat(_97(tp)(_ac));
690 var _af=d.isIE?function(_b0){
692 return (_b0.getAttribute("_uid")||_b0.setAttribute("_uid",++_ae)||_ae);
697 return (_b1._uid||(_b1._uid=++_ae));
699 var _76=function(_b2,bag){
710 var _b4=function(arr){
712 return (_3._wrap)?_3._wrap(arr):arr;
715 if(!arr||!arr.length){
727 arr[0].setAttribute(_b3,_b5);
728 for(var x=1,te;te=arr[x];x++){
729 if(arr[x].getAttribute(_b3)!=_b5){
732 te.setAttribute(_b3,_b5);
735 if(d.isIE&&arr.commentStrip){
737 for(var x=1,te;te=arr[x];x++){
749 for(var x=1,te;te=arr[x];x++){
750 if(arr[x][_b3]!=_ae){
759 d.query=function(_b6,_b7){
764 if(_b6.constructor==_3){
767 if(typeof _b6!="string"){
770 if(typeof _b7=="string"){
777 var od=_b7.ownerDocument||_b7.documentElement;
778 _8=(_b7.contentType&&_b7.contentType=="application/xml")||(d.isOpera&&(_b7.doctype||od.toString()=="[object XMLDocument]"))||(!!od)&&(d.isIE?od.xml:(_b7.xmlVersion||od.xmlVersion));
780 if(r&&r.nozip&&!_3._wrap){
786 d._filterQueryResult=function(_b8,_b9){
787 var _ba=new d._NodeListCtor();
788 var _bb=_5c(_a(_b9)[0]);
789 for(var x=0,te;te=_b8[x];x++){
796 })(this["queryPortability"]||this["acme"]||dojo);