if(!dojo._hasResource["dojox.grid._grid.lib"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. dojo._hasResource["dojox.grid._grid.lib"] = true; dojo.provide("dojox.grid._grid.lib"); // summary: grid utility library dojo.mixin(dojox.grid,{ na: '...', nop: function(){ // summary: a null function? }, getTdIndex: function(td){ return td.cellIndex >=0 ? td.cellIndex : dojo.indexOf(td.parentNode.cells, td); }, getTrIndex: function(tr){ return tr.rowIndex >=0 ? tr.rowIndex : dojo.indexOf(tr.parentNode.childNodes, tr); }, getTr: function(rowOwner, index){ return rowOwner && ((rowOwner.rows||0)[index] || rowOwner.childNodes[index]); }, getTd: function(rowOwner, rowIndex, cellIndex){ return (dojox.grid.getTr(inTable, rowIndex)||0)[cellIndex]; }, findTable: function(node){ for (var n=node; n && n.tagName!='TABLE'; n=n.parentNode); return n; }, ascendDom: function(inNode, inWhile){ for (var n=inNode; n && inWhile(n); n=n.parentNode); return n; }, makeNotTagName: function(inTagName){ var name = inTagName.toUpperCase(); return function(node){ return node.tagName != name; }; }, fire: function(ob, ev, args){ var fn = ob && ev && ob[ev]; return fn && (args ? fn.apply(ob, args) : ob[ev]()); }, // from lib.js setStyleText: function(inNode, inStyleText){ if(inNode.style.cssText == undefined){ inNode.setAttribute("style", inStyleText); }else{ inNode.style.cssText = inStyleText; } }, getStyleText: function(inNode, inStyleText){ return (inNode.style.cssText == undefined ? inNode.getAttribute("style") : inNode.style.cssText); }, setStyle: function(inElement, inStyle, inValue){ if(inElement && inElement.style[inStyle] != inValue){ inElement.style[inStyle] = inValue; } }, setStyleHeightPx: function(inElement, inHeight){ if(inHeight >= 0){ dojox.grid.setStyle(inElement, 'height', inHeight + 'px'); } }, mouseEvents: [ 'mouseover', 'mouseout', /*'mousemove',*/ 'mousedown', 'mouseup', 'click', 'dblclick', 'contextmenu' ], keyEvents: [ 'keyup', 'keydown', 'keypress' ], funnelEvents: function(inNode, inObject, inMethod, inEvents){ var evts = (inEvents ? inEvents : dojox.grid.mouseEvents.concat(dojox.grid.keyEvents)); for (var i=0, l=evts.length; i<l; i++){ dojo.connect(inNode, 'on' + evts[i], inObject, inMethod); } }, removeNode: function(inNode){ inNode = dojo.byId(inNode); inNode && inNode.parentNode && inNode.parentNode.removeChild(inNode); return inNode; }, getScrollbarWidth: function(){ if(this._scrollBarWidth){ return this._scrollBarWidth; } this._scrollBarWidth = 18; try{ var e = document.createElement("div"); e.style.cssText = "top:0;left:0;width:100px;height:100px;overflow:scroll;position:absolute;visibility:hidden;"; document.body.appendChild(e); this._scrollBarWidth = e.offsetWidth - e.clientWidth; document.body.removeChild(e); delete e; }catch (ex){} return this._scrollBarWidth; }, // needed? dojo has _getProp getRef: function(name, create, context){ var obj=context||dojo.global, parts=name.split("."), prop=parts.pop(); for(var i=0, p; obj&&(p=parts[i]); i++){ obj = (p in obj ? obj[p] : (create ? obj[p]={} : undefined)); } return { obj: obj, prop: prop }; }, getProp: function(name, create, context){ with(dojox.grid.getRef(name, create, context)){ return (obj)&&(prop)&&(prop in obj ? obj[prop] : (create ? obj[prop]={} : undefined)); } }, indexInParent: function(inNode){ var i=0, n, p=inNode.parentNode; while((n = p.childNodes[i++])){ if(n == inNode){ return i - 1; } } return -1; }, cleanNode: function(inNode){ if(!inNode){ return; } var filter = function(inW){ return inW.domNode && dojo.isDescendant(inW.domNode, inNode, true); } var ws = dijit.registry.filter(filter); for(var i=0, w; (w=ws[i]); i++){ w.destroy(); } delete ws; }, getTagName: function(inNodeOrId){ var node = dojo.byId(inNodeOrId); return (node && node.tagName ? node.tagName.toLowerCase() : ''); }, nodeKids: function(inNode, inTag){ var result = []; var i=0, n; while((n = inNode.childNodes[i++])){ if(dojox.grid.getTagName(n) == inTag){ result.push(n); } } return result; }, divkids: function(inNode){ return dojox.grid.nodeKids(inNode, 'div'); }, focusSelectNode: function(inNode){ try{ dojox.grid.fire(inNode, "focus"); dojox.grid.fire(inNode, "select"); }catch(e){// IE sux bad } }, whenIdle: function(/*inContext, inMethod, args ...*/){ setTimeout(dojo.hitch.apply(dojo, arguments), 0); }, arrayCompare: function(inA, inB){ for(var i=0,l=inA.length; i<l; i++){ if(inA[i] != inB[i]){return false;} } return (inA.length == inB.length); }, arrayInsert: function(inArray, inIndex, inValue){ if(inArray.length <= inIndex){ inArray[inIndex] = inValue; }else{ inArray.splice(inIndex, 0, inValue); } }, arrayRemove: function(inArray, inIndex){ inArray.splice(inIndex, 1); }, arraySwap: function(inArray, inI, inJ){ var cache = inArray[inI]; inArray[inI] = inArray[inJ]; inArray[inJ] = cache; }, initTextSizePoll: function(inInterval) { var f = document.createElement("div"); with (f.style) { top = "0px"; left = "0px"; position = "absolute"; visibility = "hidden"; } f.innerHTML = "TheQuickBrownFoxJumpedOverTheLazyDog"; document.body.appendChild(f); var fw = f.offsetWidth; var job = function() { if (f.offsetWidth != fw) { fw = f.offsetWidth; dojox.grid.textSizeChanged(); } } window.setInterval(job, inInterval||200); dojox.grid.initTextSizePoll = dojox.grid.nop; }, textSizeChanged: function() { } }); dojox.grid.jobs = { cancel: function(inHandle){ if(inHandle){ window.clearTimeout(inHandle); } }, jobs: [], job: function(inName, inDelay, inJob){ dojox.grid.jobs.cancelJob(inName); var job = function(){ delete dojox.grid.jobs.jobs[inName]; inJob(); } dojox.grid.jobs.jobs[inName] = setTimeout(job, inDelay); }, cancelJob: function(inName){ dojox.grid.jobs.cancel(dojox.grid.jobs.jobs[inName]); } } }