+<html>\r
+<head>\r
+ <title>The source code</title>\r
+ <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />\r
+ <script type="text/javascript" src="../resources/prettify/prettify.js"></script>\r
+</head>\r
+<body onload="prettyPrint();">\r
+ <pre class="prettyprint lang-js">(function(){\r
+ var doc = document,\r
+ isCSS1 = doc.compatMode == "CSS1Compat",\r
+ MAX = Math.max, \r
+ PARSEINT = parseInt;\r
+ \r
+ Ext.lib.Dom = {\r
+ isAncestor : function(p, c) {\r
+ var ret = false;\r
+ \r
+ p = Ext.getDom(p);\r
+ c = Ext.getDom(c);\r
+ if (p && c) {\r
+ if (p.contains) {\r
+ return p.contains(c);\r
+ } else if (p.compareDocumentPosition) {\r
+ return !!(p.compareDocumentPosition(c) & 16);\r
+ } else {\r
+ while (c = c.parentNode) {\r
+ ret = c == p || ret; \r
+ }\r
+ } \r
+ } \r
+ return ret;\r
+ },\r
+ \r
+ getViewWidth : function(full) {\r
+ return full ? this.getDocumentWidth() : this.getViewportWidth();\r
+ },\r
+\r
+ getViewHeight : function(full) {\r
+ return full ? this.getDocumentHeight() : this.getViewportHeight();\r
+ },\r
+\r
+ getDocumentHeight: function() { \r
+ return MAX(!isCSS1 ? doc.body.scrollHeight : doc.documentElement.scrollHeight, this.getViewportHeight());\r
+ },\r
+\r
+ getDocumentWidth: function() { \r
+ return MAX(!isCSS1 ? doc.body.scrollWidth : doc.documentElement.scrollWidth, this.getViewportWidth());\r
+ },\r
+\r
+ getViewportHeight: function(){\r
+ return Ext.isIE ? \r
+ (Ext.isStrict ? doc.documentElement.clientHeight : doc.body.clientHeight) :\r
+ self.innerHeight;\r
+ },\r
+\r
+ getViewportWidth : function() {\r
+ return !Ext.isStrict && !Ext.isOpera ? doc.body.clientWidth :\r
+ Ext.isIE ? doc.documentElement.clientWidth : self.innerWidth;\r
+ },\r
+ \r
+ getY : function(el) {\r
+ return this.getXY(el)[1];\r
+ },\r
+\r
+ getX : function(el) {\r
+ return this.getXY(el)[0];\r
+ },\r
+\r
+ getXY : function(el) {\r
+ var p, \r
+ pe, \r
+ b,\r
+ bt, \r
+ bl, \r
+ dbd, \r
+ x = 0,\r
+ y = 0, \r
+ scroll,\r
+ hasAbsolute, \r
+ bd = (doc.body || doc.documentElement),\r
+ ret = [0,0];\r
+ \r
+ el = Ext.getDom(el);\r
+\r
+ if(el != bd){\r
+ if (el.getBoundingClientRect) {\r
+ b = el.getBoundingClientRect();\r
+ scroll = fly(document).getScroll();\r
+ ret = [b.left + scroll.left, b.top + scroll.top];\r
+ } else { \r
+ p = el; \r
+ hasAbsolute = fly(el).isStyle("position", "absolute");\r
+ \r
+ while (p) {\r
+ pe = fly(p); \r
+ x += p.offsetLeft;\r
+ y += p.offsetTop;\r
+ \r
+ hasAbsolute = hasAbsolute || pe.isStyle("position", "absolute");\r
+ \r
+ if (Ext.isGecko) { \r
+ y += bt = PARSEINT(pe.getStyle("borderTopWidth"), 10) || 0;\r
+ x += bl = PARSEINT(pe.getStyle("borderLeftWidth"), 10) || 0; \r
+ \r
+ if (p != el && !pe.isStyle('overflow','visible')) {\r
+ x += bl;\r
+ y += bt;\r
+ }\r
+ }\r
+ p = p.offsetParent;\r
+ }\r
+ \r
+ if (Ext.isSafari && hasAbsolute) {\r
+ x -= bd.offsetLeft;\r
+ y -= bd.offsetTop;\r
+ }\r
+ \r
+ if (Ext.isGecko && !hasAbsolute) {\r
+ dbd = fly(bd);\r
+ x += PARSEINT(dbd.getStyle("borderLeftWidth"), 10) || 0;\r
+ y += PARSEINT(dbd.getStyle("borderTopWidth"), 10) || 0;\r
+ }\r
+ \r
+ p = el.parentNode;\r
+ while (p && p != bd) {\r
+ if (!Ext.isOpera || (p.tagName != 'TR' && !fly(p).isStyle("display", "inline"))) {\r
+ x -= p.scrollLeft;\r
+ y -= p.scrollTop;\r
+ }\r
+ p = p.parentNode;\r
+ }\r
+ ret = [x,y];\r
+ }\r
+ }\r
+ return ret\r
+ },\r
+\r
+ setXY : function(el, xy) {\r
+ (el = Ext.fly(el, '_setXY')).position();\r
+ \r
+ var pts = el.translatePoints(xy),\r
+ style = el.dom.style,\r
+ pos; \r
+ \r
+ for (pos in pts) { \r
+ if(!isNaN(pts[pos])) style[pos] = pts[pos] + "px"\r
+ }\r
+ },\r
+\r
+ setX : function(el, x) {\r
+ this.setXY(el, [x, false]);\r
+ },\r
+\r
+ setY : function(el, y) {\r
+ this.setXY(el, [false, y]);\r
+ }\r
+ };\r
+})();</pre> \r
+</body>\r
+</html>
\ No newline at end of file