| dojo.provide("dojo.html.util"); |
| dojo.require("dojo.html.layout"); |
| dojo.html.getElementWindow=function(_1){ |
| return dojo.html.getDocumentWindow(_1.ownerDocument); |
| }; |
| dojo.html.getDocumentWindow=function(_2){ |
| if(dojo.render.html.safari&&!_2._parentWindow){ |
| var _3=function(_4){ |
| _4.document._parentWindow=_4; |
| for(var i=0;i<_4.frames.length;i++){ |
| _3(_4.frames[i]); |
| } |
| }; |
| _3(window.top); |
| } |
| if(dojo.render.html.ie&&window!==document.parentWindow&&!_2._parentWindow){ |
| _2.parentWindow.execScript("document._parentWindow = window;","Javascript"); |
| var _6=_2._parentWindow; |
| _2._parentWindow=null; |
| return _6; |
| } |
| return _2._parentWindow||_2.parentWindow||_2.defaultView; |
| }; |
| dojo.html.gravity=function(_7,e){ |
| _7=dojo.byId(_7); |
| var _9=dojo.html.getCursorPosition(e); |
| with(dojo.html){ |
| var _a=getAbsolutePosition(_7,true); |
| var bb=getBorderBox(_7); |
| var _c=_a.x+(bb.width/2); |
| var _d=_a.y+(bb.height/2); |
| } |
| with(dojo.html.gravity){ |
| return ((_9.x<_c?WEST:EAST)|(_9.y<_d?NORTH:SOUTH)); |
| } |
| }; |
| dojo.html.gravity.NORTH=1; |
| dojo.html.gravity.SOUTH=1<<1; |
| dojo.html.gravity.EAST=1<<2; |
| dojo.html.gravity.WEST=1<<3; |
| dojo.html.overElement=function(_e,e){ |
| _e=dojo.byId(_e); |
| var _10=dojo.html.getCursorPosition(e); |
| var bb=dojo.html.getBorderBox(_e); |
| var _12=dojo.html.getAbsolutePosition(_e,true,dojo.html.boxSizing.BORDER_BOX); |
| var top=_12.y; |
| var _14=top+bb.height; |
| var _15=_12.x; |
| var _16=_15+bb.width; |
| return (_10.x>=_15&&_10.x<=_16&&_10.y>=top&&_10.y<=_14); |
| }; |
| dojo.html.renderedTextContent=function(_17){ |
| _17=dojo.byId(_17); |
| var _18=""; |
| if(_17==null){ |
| return _18; |
| } |
| for(var i=0;i<_17.childNodes.length;i++){ |
| switch(_17.childNodes[i].nodeType){ |
| case 1: |
| case 5: |
| var _1a="unknown"; |
| try{ |
| _1a=dojo.html.getStyle(_17.childNodes[i],"display"); |
| } |
| catch(E){ |
| } |
| switch(_1a){ |
| case "block": |
| case "list-item": |
| case "run-in": |
| case "table": |
| case "table-row-group": |
| case "table-header-group": |
| case "table-footer-group": |
| case "table-row": |
| case "table-column-group": |
| case "table-column": |
| case "table-cell": |
| case "table-caption": |
| _18+="\n"; |
| _18+=dojo.html.renderedTextContent(_17.childNodes[i]); |
| _18+="\n"; |
| break; |
| case "none": |
| break; |
| default: |
| if(_17.childNodes[i].tagName&&_17.childNodes[i].tagName.toLowerCase()=="br"){ |
| _18+="\n"; |
| }else{ |
| _18+=dojo.html.renderedTextContent(_17.childNodes[i]); |
| } |
| break; |
| } |
| break; |
| case 3: |
| case 2: |
| case 4: |
| var _1b=_17.childNodes[i].nodeValue; |
| var _1c="unknown"; |
| try{ |
| _1c=dojo.html.getStyle(_17,"text-transform"); |
| } |
| catch(E){ |
| } |
| switch(_1c){ |
| case "capitalize": |
| var _1d=_1b.split(" "); |
| for(var i=0;i<_1d.length;i++){ |
| _1d[i]=_1d[i].charAt(0).toUpperCase()+_1d[i].substring(1); |
| } |
| _1b=_1d.join(" "); |
| break; |
| case "uppercase": |
| _1b=_1b.toUpperCase(); |
| break; |
| case "lowercase": |
| _1b=_1b.toLowerCase(); |
| break; |
| default: |
| break; |
| } |
| switch(_1c){ |
| case "nowrap": |
| break; |
| case "pre-wrap": |
| break; |
| case "pre-line": |
| break; |
| case "pre": |
| break; |
| default: |
| _1b=_1b.replace(/\s+/," "); |
| if(/\s$/.test(_18)){ |
| _1b.replace(/^\s/,""); |
| } |
| break; |
| } |
| _18+=_1b; |
| break; |
| default: |
| break; |
| } |
| } |
| return _18; |
| }; |
| dojo.html.createNodesFromText=function(txt,_1f){ |
| if(_1f){ |
| txt=txt.replace(/^\s+|\s+$/g,""); |
| } |
| var tn=dojo.doc().createElement("div"); |
| tn.style.visibility="hidden"; |
| dojo.body().appendChild(tn); |
| var _21="none"; |
| if((/^<t[dh][\s\r\n>]/i).test(txt.replace(/^\s+/))){ |
| txt="<table><tbody><tr>"+txt+"</tr></tbody></table>"; |
| _21="cell"; |
| }else{ |
| if((/^<tr[\s\r\n>]/i).test(txt.replace(/^\s+/))){ |
| txt="<table><tbody>"+txt+"</tbody></table>"; |
| _21="row"; |
| }else{ |
| if((/^<(thead|tbody|tfoot)[\s\r\n>]/i).test(txt.replace(/^\s+/))){ |
| txt="<table>"+txt+"</table>"; |
| _21="section"; |
| } |
| } |
| } |
| tn.innerHTML=txt; |
| if(tn["normalize"]){ |
| tn.normalize(); |
| } |
| var _22=null; |
| switch(_21){ |
| case "cell": |
| _22=tn.getElementsByTagName("tr")[0]; |
| break; |
| case "row": |
| _22=tn.getElementsByTagName("tbody")[0]; |
| break; |
| case "section": |
| _22=tn.getElementsByTagName("table")[0]; |
| break; |
| default: |
| _22=tn; |
| break; |
| } |
| var _23=[]; |
| for(var x=0;x<_22.childNodes.length;x++){ |
| _23.push(_22.childNodes[x].cloneNode(true)); |
| } |
| tn.style.display="none"; |
| dojo.html.destroyNode(tn); |
| return _23; |
| }; |
| dojo.html.placeOnScreen=function(_25,_26,_27,_28,_29,_2a,_2b){ |
| if(_26 instanceof Array||typeof _26=="array"){ |
| _2b=_2a; |
| _2a=_29; |
| _29=_28; |
| _28=_27; |
| _27=_26[1]; |
| _26=_26[0]; |
| } |
| if(_2a instanceof String||typeof _2a=="string"){ |
| _2a=_2a.split(","); |
| } |
| if(!isNaN(_28)){ |
| _28=[Number(_28),Number(_28)]; |
| }else{ |
| if(!(_28 instanceof Array||typeof _28=="array")){ |
| _28=[0,0]; |
| } |
| } |
| var _2c=dojo.html.getScroll().offset; |
| var _2d=dojo.html.getViewport(); |
| _25=dojo.byId(_25); |
| var _2e=_25.style.display; |
| _25.style.display=""; |
| var bb=dojo.html.getBorderBox(_25); |
| var w=bb.width; |
| var h=bb.height; |
| _25.style.display=_2e; |
| if(!(_2a instanceof Array||typeof _2a=="array")){ |
| _2a=["TL"]; |
| } |
| var _32,_33,_34=Infinity,_35; |
| for(var _36=0;_36<_2a.length;++_36){ |
| var _37=_2a[_36]; |
| var _38=true; |
| var _39=_26-(_37.charAt(1)=="L"?0:w)+_28[0]*(_37.charAt(1)=="L"?1:-1); |
| var _3a=_27-(_37.charAt(0)=="T"?0:h)+_28[1]*(_37.charAt(0)=="T"?1:-1); |
| if(_29){ |
| _39-=_2c.x; |
| _3a-=_2c.y; |
| } |
| if(_39<0){ |
| _39=0; |
| _38=false; |
| } |
| if(_3a<0){ |
| _3a=0; |
| _38=false; |
| } |
| var x=_39+w; |
| if(x>_2d.width){ |
| x=_2d.width-w; |
| _38=false; |
| }else{ |
| x=_39; |
| } |
| x=Math.max(_28[0],x)+_2c.x; |
| var y=_3a+h; |
| if(y>_2d.height){ |
| y=_2d.height-h; |
| _38=false; |
| }else{ |
| y=_3a; |
| } |
| y=Math.max(_28[1],y)+_2c.y; |
| if(_38){ |
| _32=x; |
| _33=y; |
| _34=0; |
| _35=_37; |
| break; |
| }else{ |
| var _3d=Math.pow(x-_39-_2c.x,2)+Math.pow(y-_3a-_2c.y,2); |
| if(_34>_3d){ |
| _34=_3d; |
| _32=x; |
| _33=y; |
| _35=_37; |
| } |
| } |
| } |
| if(!_2b){ |
| _25.style.left=_32+"px"; |
| _25.style.top=_33+"px"; |
| } |
| return {left:_32,top:_33,x:_32,y:_33,dist:_34,corner:_35}; |
| }; |
| dojo.html.placeOnScreenPoint=function(_3e,_3f,_40,_41,_42){ |
| dojo.deprecated("dojo.html.placeOnScreenPoint","use dojo.html.placeOnScreen() instead","0.5"); |
| return dojo.html.placeOnScreen(_3e,_3f,_40,_41,_42,["TL","TR","BL","BR"]); |
| }; |
| dojo.html.placeOnScreenAroundElement=function(_43,_44,_45,_46,_47,_48){ |
| var _49,_4a=Infinity; |
| _44=dojo.byId(_44); |
| var _4b=_44.style.display; |
| _44.style.display=""; |
| var mb=dojo.html.getElementBox(_44,_46); |
| var _4d=mb.width; |
| var _4e=mb.height; |
| var _4f=dojo.html.getAbsolutePosition(_44,true,_46); |
| _44.style.display=_4b; |
| for(var _50 in _47){ |
| var pos,_52,_53; |
| var _54=_47[_50]; |
| _52=_4f.x+(_50.charAt(1)=="L"?0:_4d); |
| _53=_4f.y+(_50.charAt(0)=="T"?0:_4e); |
| pos=dojo.html.placeOnScreen(_43,_52,_53,_45,true,_54,true); |
| if(pos.dist==0){ |
| _49=pos; |
| break; |
| }else{ |
| if(_4a>pos.dist){ |
| _4a=pos.dist; |
| _49=pos; |
| } |
| } |
| } |
| if(!_48){ |
| _43.style.left=_49.left+"px"; |
| _43.style.top=_49.top+"px"; |
| } |
| return _49; |
| }; |
| dojo.html.scrollIntoView=function(_55){ |
| if(!_55){ |
| return; |
| } |
| if(dojo.render.html.ie){ |
| if(dojo.html.getBorderBox(_55.parentNode).height<=_55.parentNode.scrollHeight){ |
| _55.scrollIntoView(false); |
| } |
| }else{ |
| if(dojo.render.html.mozilla){ |
| _55.scrollIntoView(false); |
| }else{ |
| var _56=_55.parentNode; |
| var _57=_56.scrollTop+dojo.html.getBorderBox(_56).height; |
| var _58=_55.offsetTop+dojo.html.getMarginBox(_55).height; |
| if(_57<_58){ |
| _56.scrollTop+=(_58-_57); |
| }else{ |
| if(_56.scrollTop>_55.offsetTop){ |
| _56.scrollTop-=(_56.scrollTop-_55.offsetTop); |
| } |
| } |
| } |
| } |
| }; |