Upgrade to ExtJS 3.1.1 - Released 02/08/2010
[extjs.git] / src / core / core / Element.scroll.js
1 /*!
2  * Ext JS Library 3.1.1
3  * Copyright(c) 2006-2010 Ext JS, LLC
4  * licensing@extjs.com
5  * http://www.extjs.com/license
6  */
7 /**\r
8  * @class Ext.Element\r
9  */\r
10 Ext.Element.addMethods({\r
11     /**\r
12      * Returns true if this element is scrollable.\r
13      * @return {Boolean}\r
14      */\r
15     isScrollable : function(){\r
16         var dom = this.dom;\r
17         return dom.scrollHeight > dom.clientHeight || dom.scrollWidth > dom.clientWidth;\r
18     },\r
19 \r
20     /**\r
21      * Scrolls this element the specified scroll point. It does NOT do bounds checking so if you scroll to a weird value it will try to do it. For auto bounds checking, use scroll().\r
22      * @param {String} side Either "left" for scrollLeft values or "top" for scrollTop values.\r
23      * @param {Number} value The new scroll value.\r
24      * @return {Element} this\r
25      */\r
26     scrollTo : function(side, value){\r
27         this.dom["scroll" + (/top/i.test(side) ? "Top" : "Left")] = value;\r
28         return this;\r
29     },\r
30 \r
31     /**\r
32      * Returns the current scroll position of the element.\r
33      * @return {Object} An object containing the scroll position in the format {left: (scrollLeft), top: (scrollTop)}\r
34      */\r
35     getScroll : function(){\r
36         var d = this.dom, \r
37             doc = document,\r
38             body = doc.body,\r
39             docElement = doc.documentElement,\r
40             l,\r
41             t,\r
42             ret;\r
43 \r
44         if(d == doc || d == body){\r
45             if(Ext.isIE && Ext.isStrict){\r
46                 l = docElement.scrollLeft; \r
47                 t = docElement.scrollTop;\r
48             }else{\r
49                 l = window.pageXOffset;\r
50                 t = window.pageYOffset;\r
51             }\r
52             ret = {left: l || (body ? body.scrollLeft : 0), top: t || (body ? body.scrollTop : 0)};\r
53         }else{\r
54             ret = {left: d.scrollLeft, top: d.scrollTop};\r
55         }\r
56         return ret;\r
57     }\r
58 });