Subversion Repositories Applications.papyrus

Rev

Blame | Last modification | View Log | RSS feed

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");

dojo.isNumber = function(v){
        return (typeof v == 'number') || (v instanceof Number);
}

// summary:
//      grid utility library

dojo.mixin(dojox.grid, {
        na: '...',
        nop: 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]);
        }
}

}