X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/ee06f37b0f6f6d94cd05a6ffae556660f7c4a2bc..c930e9176a5a85509c5b0230e2bff5c22a591432:/docs/source/ext-base-dom.html diff --git a/docs/source/ext-base-dom.html b/docs/source/ext-base-dom.html new file mode 100644 index 00000000..6c12d372 --- /dev/null +++ b/docs/source/ext-base-dom.html @@ -0,0 +1,160 @@ + + + The source code + + + + +
(function(){
+	var doc = document,
+		isCSS1 = doc.compatMode == "CSS1Compat",
+		MAX = Math.max,		
+		PARSEINT = parseInt;
+		
+	Ext.lib.Dom = {
+	    isAncestor : function(p, c) {
+		    var ret = false;
+			
+			p = Ext.getDom(p);
+			c = Ext.getDom(c);
+			if (p && c) {
+				if (p.contains) {
+					return p.contains(c);
+				} else if (p.compareDocumentPosition) {
+					return !!(p.compareDocumentPosition(c) & 16);
+				} else {
+					while (c = c.parentNode) {
+						ret = c == p || ret;	        			
+					}
+				}	            
+			}	
+			return ret;
+		},
+		
+        getViewWidth : function(full) {
+            return full ? this.getDocumentWidth() : this.getViewportWidth();
+        },
+
+        getViewHeight : function(full) {
+            return full ? this.getDocumentHeight() : this.getViewportHeight();
+        },
+
+        getDocumentHeight: function() {            
+            return MAX(!isCSS1 ? doc.body.scrollHeight : doc.documentElement.scrollHeight, this.getViewportHeight());
+        },
+
+        getDocumentWidth: function() {            
+            return MAX(!isCSS1 ? doc.body.scrollWidth : doc.documentElement.scrollWidth, this.getViewportWidth());
+        },
+
+        getViewportHeight: function(){
+	        return Ext.isIE ? 
+	        	   (Ext.isStrict ? doc.documentElement.clientHeight : doc.body.clientHeight) :
+	        	   self.innerHeight;
+        },
+
+        getViewportWidth : function() {
+	        return !Ext.isStrict && !Ext.isOpera ? doc.body.clientWidth :
+	        	   Ext.isIE ? doc.documentElement.clientWidth : self.innerWidth;
+        },
+        
+        getY : function(el) {
+            return this.getXY(el)[1];
+        },
+
+        getX : function(el) {
+            return this.getXY(el)[0];
+        },
+
+        getXY : function(el) {
+            var p, 
+            	pe, 
+            	b,
+            	bt, 
+            	bl,     
+            	dbd,       	
+            	x = 0,
+            	y = 0, 
+            	scroll,
+            	hasAbsolute, 
+            	bd = (doc.body || doc.documentElement),
+            	ret = [0,0];
+            	
+            el = Ext.getDom(el);
+
+            if(el != bd){
+	            if (el.getBoundingClientRect) {
+	                b = el.getBoundingClientRect();
+	                scroll = fly(document).getScroll();
+	                ret = [b.left + scroll.left, b.top + scroll.top];
+	            } else {  
+		            p = el;		
+		            hasAbsolute = fly(el).isStyle("position", "absolute");
+		
+		            while (p) {
+			            pe = fly(p);		
+		                x += p.offsetLeft;
+		                y += p.offsetTop;
+		
+		                hasAbsolute = hasAbsolute || pe.isStyle("position", "absolute");
+		                		
+		                if (Ext.isGecko) {		                    
+		                    y += bt = PARSEINT(pe.getStyle("borderTopWidth"), 10) || 0;
+		                    x += bl = PARSEINT(pe.getStyle("borderLeftWidth"), 10) || 0;	
+		
+		                    if (p != el && !pe.isStyle('overflow','visible')) {
+		                        x += bl;
+		                        y += bt;
+		                    }
+		                }
+		                p = p.offsetParent;
+		            }
+		
+		            if (Ext.isSafari && hasAbsolute) {
+		                x -= bd.offsetLeft;
+		                y -= bd.offsetTop;
+		            }
+		
+		            if (Ext.isGecko && !hasAbsolute) {
+		                dbd = fly(bd);
+		                x += PARSEINT(dbd.getStyle("borderLeftWidth"), 10) || 0;
+		                y += PARSEINT(dbd.getStyle("borderTopWidth"), 10) || 0;
+		            }
+		
+		            p = el.parentNode;
+		            while (p && p != bd) {
+		                if (!Ext.isOpera || (p.tagName != 'TR' && !fly(p).isStyle("display", "inline"))) {
+		                    x -= p.scrollLeft;
+		                    y -= p.scrollTop;
+		                }
+		                p = p.parentNode;
+		            }
+		            ret = [x,y];
+	            }
+         	}
+            return ret
+        },
+
+        setXY : function(el, xy) {
+            (el = Ext.fly(el, '_setXY')).position();
+            
+            var pts = el.translatePoints(xy),
+            	style = el.dom.style,
+            	pos;            	
+            
+            for (pos in pts) {	            
+	            if(!isNaN(pts[pos])) style[pos] = pts[pos] + "px"
+            }
+        },
+
+        setX : function(el, x) {
+            this.setXY(el, [x, false]);
+        },
+
+        setY : function(el, y) {
+            this.setXY(el, [false, y]);
+        }
+    };
+})();
+ + \ No newline at end of file