Upgrade to ExtJS 3.3.1 - Released 11/30/2010
[extjs.git] / docs / source / Element.position.html
index 3280048..10267fd 100644 (file)
-<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">/**\r
- * @class Ext.Element\r
- */\r
-(function(){\r
-var D = Ext.lib.Dom,\r
-        LEFT = "left",\r
-        RIGHT = "right",\r
-        TOP = "top",\r
-        BOTTOM = "bottom",\r
-        POSITION = "position",\r
-        STATIC = "static",\r
-        RELATIVE = "relative",\r
-        AUTO = "auto",\r
-        ZINDEX = "z-index";\r
-\r
-function animTest(args, animate, i) {\r
-       return this.preanim && !!animate ? this.preanim(args, i) : false        \r
-}\r
-\r
-Ext.Element.addMethods({\r
-       <div id="method-Ext.Element-getX"></div>/**\r
-      * Gets the current X position of the element based on page coordinates.  Element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).\r
-      * @return {Number} The X position of the element\r
-      */\r
-    getX : function(){\r
-        return D.getX(this.dom);\r
-    },\r
-\r
-    <div id="method-Ext.Element-getY"></div>/**\r
-      * Gets the current Y position of the element based on page coordinates.  Element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).\r
-      * @return {Number} The Y position of the element\r
-      */\r
-    getY : function(){\r
-        return D.getY(this.dom);\r
-    },\r
-\r
-    <div id="method-Ext.Element-getXY"></div>/**\r
-      * Gets the current position of the element based on page coordinates.  Element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).\r
-      * @return {Array} The XY position of the element\r
-      */\r
-    getXY : function(){\r
-        return D.getXY(this.dom);\r
-    },\r
-\r
-    <div id="method-Ext.Element-getOffsetsTo"></div>/**\r
-      * Returns the offsets of this element from the passed element. Both element must be part of the DOM tree and not have display:none to have page coordinates.\r
-      * @param {Mixed} element The element to get the offsets from.\r
-      * @return {Array} The XY page offsets (e.g. [100, -200])\r
-      */\r
-    getOffsetsTo : function(el){\r
-        var o = this.getXY(),\r
-               e = Ext.fly(el, '_internal').getXY();\r
-        return [o[0]-e[0],o[1]-e[1]];\r
-    },\r
-\r
-    <div id="method-Ext.Element-setX"></div>/**\r
-     * Sets the X position of the element based on page coordinates.  Element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).\r
-     * @param {Number} The X position of the element\r
-     * @param {Boolean/Object} animate (optional) True for the default animation, or a standard Element animation config object\r
-     * @return {Ext.Element} this\r
-     */\r
-    setX : function(x, animate){           \r
-           return this.setXY([x, this.getY()], animTest.call(this, arguments, animate, 1));\r
-    },\r
-\r
-    <div id="method-Ext.Element-setY"></div>/**\r
-     * Sets the Y position of the element based on page coordinates.  Element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).\r
-     * @param {Number} The Y position of the element\r
-     * @param {Boolean/Object} animate (optional) True for the default animation, or a standard Element animation config object\r
-     * @return {Ext.Element} this\r
-     */\r
-    setY : function(y, animate){           \r
-           return this.setXY([this.getX(), y], animTest.call(this, arguments, animate, 1));\r
-    },\r
-\r
-    <div id="method-Ext.Element-setLeft"></div>/**\r
-     * Sets the element's left position directly using CSS style (instead of {@link #setX}).\r
-     * @param {String} left The left CSS property value\r
-     * @return {Ext.Element} this\r
-     */\r
-    setLeft : function(left){\r
-        this.setStyle(LEFT, this.addUnits(left));\r
-        return this;\r
-    },\r
-\r
-    <div id="method-Ext.Element-setTop"></div>/**\r
-     * Sets the element's top position directly using CSS style (instead of {@link #setY}).\r
-     * @param {String} top The top CSS property value\r
-     * @return {Ext.Element} this\r
-     */\r
-    setTop : function(top){\r
-        this.setStyle(TOP, this.addUnits(top));\r
-        return this;\r
-    },\r
-\r
-    <div id="method-Ext.Element-setRight"></div>/**\r
-     * Sets the element's CSS right style.\r
-     * @param {String} right The right CSS property value\r
-     * @return {Ext.Element} this\r
-     */\r
-    setRight : function(right){\r
-        this.setStyle(RIGHT, this.addUnits(right));\r
-        return this;\r
-    },\r
-\r
-    <div id="method-Ext.Element-setBottom"></div>/**\r
-     * Sets the element's CSS bottom style.\r
-     * @param {String} bottom The bottom CSS property value\r
-     * @return {Ext.Element} this\r
-     */\r
-    setBottom : function(bottom){\r
-        this.setStyle(BOTTOM, this.addUnits(bottom));\r
-        return this;\r
-    },\r
-\r
-    <div id="method-Ext.Element-setXY"></div>/**\r
-     * Sets the position of the element in page coordinates, regardless of how the element is positioned.\r
-     * The element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).\r
-     * @param {Array} pos Contains X & Y [x, y] values for new position (coordinates are page-based)\r
-     * @param {Boolean/Object} animate (optional) True for the default animation, or a standard Element animation config object\r
-     * @return {Ext.Element} this\r
-     */\r
-    setXY : function(pos, animate){\r
-           var me = this;\r
-        if(!animate || !me.anim){\r
-            D.setXY(me.dom, pos);\r
-        }else{\r
-            me.anim({points: {to: pos}}, me.preanim(arguments, 1), 'motion');\r
-        }\r
-        return me;\r
-    },\r
-\r
-    <div id="method-Ext.Element-setLocation"></div>/**\r
-     * Sets the position of the element in page coordinates, regardless of how the element is positioned.\r
-     * The element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).\r
-     * @param {Number} x X value for new position (coordinates are page-based)\r
-     * @param {Number} y Y value for new position (coordinates are page-based)\r
-     * @param {Boolean/Object} animate (optional) True for the default animation, or a standard Element animation config object\r
-     * @return {Ext.Element} this\r
-     */\r
-    setLocation : function(x, y, animate){\r
-        return this.setXY([x, y], animTest.call(this, arguments, animate, 2));\r
-    },\r
-\r
-    <div id="method-Ext.Element-moveTo"></div>/**\r
-     * Sets the position of the element in page coordinates, regardless of how the element is positioned.\r
-     * The element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).\r
-     * @param {Number} x X value for new position (coordinates are page-based)\r
-     * @param {Number} y Y value for new position (coordinates are page-based)\r
-     * @param {Boolean/Object} animate (optional) True for the default animation, or a standard Element animation config object\r
-     * @return {Ext.Element} this\r
-     */\r
-    moveTo : function(x, y, animate){\r
-        return this.setXY([x, y], animTest.call(this, arguments, animate, 2));        \r
-    },    \r
-    \r
-    <div id="method-Ext.Element-getLeft"></div>/**\r
-     * Gets the left X coordinate\r
-     * @param {Boolean} local True to get the local css position instead of page coordinate\r
-     * @return {Number}\r
-     */\r
-    getLeft : function(local){\r
-           return !local ? this.getX() : parseInt(this.getStyle(LEFT), 10) || 0;\r
-    },\r
-\r
-    <div id="method-Ext.Element-getRight"></div>/**\r
-     * Gets the right X coordinate of the element (element X position + element width)\r
-     * @param {Boolean} local True to get the local css position instead of page coordinate\r
-     * @return {Number}\r
-     */\r
-    getRight : function(local){\r
-           var me = this;\r
-           return !local ? me.getX() + me.getWidth() : (me.getLeft(true) + me.getWidth()) || 0;\r
-    },\r
-\r
-    <div id="method-Ext.Element-getTop"></div>/**\r
-     * Gets the top Y coordinate\r
-     * @param {Boolean} local True to get the local css position instead of page coordinate\r
-     * @return {Number}\r
-     */\r
-    getTop : function(local) {\r
-           return !local ? this.getY() : parseInt(this.getStyle(TOP), 10) || 0;\r
-    },\r
-\r
-    <div id="method-Ext.Element-getBottom"></div>/**\r
-     * Gets the bottom Y coordinate of the element (element Y position + element height)\r
-     * @param {Boolean} local True to get the local css position instead of page coordinate\r
-     * @return {Number}\r
-     */\r
-    getBottom : function(local){\r
-           var me = this;\r
-           return !local ? me.getY() + me.getHeight() : (me.getTop(true) + me.getHeight()) || 0;\r
-    },\r
-\r
-    <div id="method-Ext.Element-position"></div>/**\r
-    * Initializes positioning on this element. If a desired position is not passed, it will make the\r
-    * the element positioned relative IF it is not already positioned.\r
-    * @param {String} pos (optional) Positioning to use "relative", "absolute" or "fixed"\r
-    * @param {Number} zIndex (optional) The zIndex to apply\r
-    * @param {Number} x (optional) Set the page X position\r
-    * @param {Number} y (optional) Set the page Y position\r
-    */\r
-    position : function(pos, zIndex, x, y){\r
-           var me = this;\r
-           \r
-        if(!pos && me.isStyle(POSITION, STATIC)){           \r
-            me.setStyle(POSITION, RELATIVE);           \r
-        } else if(pos) {\r
-            me.setStyle(POSITION, pos);\r
-        }\r
-        if(zIndex){\r
-            me.setStyle(ZINDEX, zIndex);\r
-        }\r
-        if(x || y) me.setXY([x || false, y || false]);\r
-    },\r
-\r
-    <div id="method-Ext.Element-clearPositioning"></div>/**\r
-    * Clear positioning back to the default when the document was loaded\r
-    * @param {String} value (optional) The value to use for the left,right,top,bottom, defaults to '' (empty string). You could use 'auto'.\r
-    * @return {Ext.Element} this\r
-     */\r
-    clearPositioning : function(value){\r
-        value = value || '';\r
-        this.setStyle({\r
-            left : value,\r
-            right : value,\r
-            top : value,\r
-            bottom : value,\r
-            "z-index" : "",\r
-            position : STATIC\r
-        });\r
-        return this;\r
-    },\r
-\r
-    <div id="method-Ext.Element-getPositioning"></div>/**\r
-    * Gets an object with all CSS positioning properties. Useful along with setPostioning to get\r
-    * snapshot before performing an update and then restoring the element.\r
-    * @return {Object}\r
-    */\r
-    getPositioning : function(){\r
-        var l = this.getStyle(LEFT);\r
-        var t = this.getStyle(TOP);\r
-        return {\r
-            "position" : this.getStyle(POSITION),\r
-            "left" : l,\r
-            "right" : l ? "" : this.getStyle(RIGHT),\r
-            "top" : t,\r
-            "bottom" : t ? "" : this.getStyle(BOTTOM),\r
-            "z-index" : this.getStyle(ZINDEX)\r
-        };\r
-    },\r
-    \r
-    <div id="method-Ext.Element-setPositioning"></div>/**\r
-    * Set positioning with an object returned by getPositioning().\r
-    * @param {Object} posCfg\r
-    * @return {Ext.Element} this\r
-     */\r
-    setPositioning : function(pc){\r
-           var me = this,\r
-               style = me.dom.style;\r
-               \r
-        me.setStyle(pc);\r
-        \r
-        if(pc.right == AUTO){\r
-            style.right = "";\r
-        }\r
-        if(pc.bottom == AUTO){\r
-            style.bottom = "";\r
-        }\r
-        \r
-        return me;\r
-    },    \r
-       \r
-    <div id="method-Ext.Element-translatePoints"></div>/**\r
-     * Translates the passed page coordinates into left/top css values for this element\r
-     * @param {Number/Array} x The page x or an array containing [x, y]\r
-     * @param {Number} y (optional) The page y, required if x is not an array\r
-     * @return {Object} An object with left and top properties. e.g. {left: (value), top: (value)}\r
-     */\r
-    translatePoints : function(x, y){               \r
-           y = isNaN(x[1]) ? y : x[1];\r
-        x = isNaN(x[0]) ? x : x[0];\r
-        var me = this,\r
-               relative = me.isStyle(POSITION, RELATIVE),\r
-               o = me.getXY(),\r
-               l = parseInt(me.getStyle(LEFT), 10),\r
-               t = parseInt(me.getStyle(TOP), 10);\r
-        \r
-        l = !isNaN(l) ? l : (relative ? 0 : me.dom.offsetLeft);\r
-        t = !isNaN(t) ? t : (relative ? 0 : me.dom.offsetTop);        \r
-\r
-        return {left: (x - o[0] + l), top: (y - o[1] + t)}; \r
-    },\r
-    \r
-    animTest : animTest\r
-});\r
-})();</pre>    \r
-</body>\r
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    
+  <title>The source code</title>
+    <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
+    <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
+</head>
+<body  onload="prettyPrint();">
+    <pre class="prettyprint lang-js">/*!
+ * Ext JS Library 3.3.1
+ * Copyright(c) 2006-2010 Sencha Inc.
+ * licensing@sencha.com
+ * http://www.sencha.com/license
+ */
+/**
+ * @class Ext.Element
+ */
+(function(){
+var D = Ext.lib.Dom,
+        LEFT = "left",
+        RIGHT = "right",
+        TOP = "top",
+        BOTTOM = "bottom",
+        POSITION = "position",
+        STATIC = "static",
+        RELATIVE = "relative",
+        AUTO = "auto",
+        ZINDEX = "z-index";
+
+Ext.Element.addMethods({
+       <div id="method-Ext.Element-getX"></div>/**
+      * Gets the current X position of the element based on page coordinates.  Element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).
+      * @return {Number} The X position of the element
+      */
+    getX : function(){
+        return D.getX(this.dom);
+    },
+
+    <div id="method-Ext.Element-getY"></div>/**
+      * Gets the current Y position of the element based on page coordinates.  Element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).
+      * @return {Number} The Y position of the element
+      */
+    getY : function(){
+        return D.getY(this.dom);
+    },
+
+    <div id="method-Ext.Element-getXY"></div>/**
+      * Gets the current position of the element based on page coordinates.  Element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).
+      * @return {Array} The XY position of the element
+      */
+    getXY : function(){
+        return D.getXY(this.dom);
+    },
+
+    <div id="method-Ext.Element-getOffsetsTo"></div>/**
+      * Returns the offsets of this element from the passed element. Both element must be part of the DOM tree and not have display:none to have page coordinates.
+      * @param {Mixed} element The element to get the offsets from.
+      * @return {Array} The XY page offsets (e.g. [100, -200])
+      */
+    getOffsetsTo : function(el){
+        var o = this.getXY(),
+               e = Ext.fly(el, '_internal').getXY();
+        return [o[0]-e[0],o[1]-e[1]];
+    },
+
+    <div id="method-Ext.Element-setX"></div>/**
+     * Sets the X position of the element based on page coordinates.  Element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).
+     * @param {Number} The X position of the element
+     * @param {Boolean/Object} animate (optional) True for the default animation, or a standard Element animation config object
+     * @return {Ext.Element} this
+     */
+    setX : function(x, animate){           
+           return this.setXY([x, this.getY()], this.animTest(arguments, animate, 1));
+    },
+
+    <div id="method-Ext.Element-setY"></div>/**
+     * Sets the Y position of the element based on page coordinates.  Element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).
+     * @param {Number} The Y position of the element
+     * @param {Boolean/Object} animate (optional) True for the default animation, or a standard Element animation config object
+     * @return {Ext.Element} this
+     */
+    setY : function(y, animate){           
+           return this.setXY([this.getX(), y], this.animTest(arguments, animate, 1));
+    },
+
+    <div id="method-Ext.Element-setLeft"></div>/**
+     * Sets the element's left position directly using CSS style (instead of {@link #setX}).
+     * @param {String} left The left CSS property value
+     * @return {Ext.Element} this
+     */
+    setLeft : function(left){
+        this.setStyle(LEFT, this.addUnits(left));
+        return this;
+    },
+
+    <div id="method-Ext.Element-setTop"></div>/**
+     * Sets the element's top position directly using CSS style (instead of {@link #setY}).
+     * @param {String} top The top CSS property value
+     * @return {Ext.Element} this
+     */
+    setTop : function(top){
+        this.setStyle(TOP, this.addUnits(top));
+        return this;
+    },
+
+    <div id="method-Ext.Element-setRight"></div>/**
+     * Sets the element's CSS right style.
+     * @param {String} right The right CSS property value
+     * @return {Ext.Element} this
+     */
+    setRight : function(right){
+        this.setStyle(RIGHT, this.addUnits(right));
+        return this;
+    },
+
+    <div id="method-Ext.Element-setBottom"></div>/**
+     * Sets the element's CSS bottom style.
+     * @param {String} bottom The bottom CSS property value
+     * @return {Ext.Element} this
+     */
+    setBottom : function(bottom){
+        this.setStyle(BOTTOM, this.addUnits(bottom));
+        return this;
+    },
+
+    <div id="method-Ext.Element-setXY"></div>/**
+     * Sets the position of the element in page coordinates, regardless of how the element is positioned.
+     * The element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).
+     * @param {Array} pos Contains X & Y [x, y] values for new position (coordinates are page-based)
+     * @param {Boolean/Object} animate (optional) True for the default animation, or a standard Element animation config object
+     * @return {Ext.Element} this
+     */
+    setXY : function(pos, animate){
+           var me = this;
+        if(!animate || !me.anim){
+            D.setXY(me.dom, pos);
+        }else{
+            me.anim({points: {to: pos}}, me.preanim(arguments, 1), 'motion');
+        }
+        return me;
+    },
+
+    <div id="method-Ext.Element-setLocation"></div>/**
+     * Sets the position of the element in page coordinates, regardless of how the element is positioned.
+     * The element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).
+     * @param {Number} x X value for new position (coordinates are page-based)
+     * @param {Number} y Y value for new position (coordinates are page-based)
+     * @param {Boolean/Object} animate (optional) True for the default animation, or a standard Element animation config object
+     * @return {Ext.Element} this
+     */
+    setLocation : function(x, y, animate){
+        return this.setXY([x, y], this.animTest(arguments, animate, 2));
+    },
+
+    <div id="method-Ext.Element-moveTo"></div>/**
+     * Sets the position of the element in page coordinates, regardless of how the element is positioned.
+     * The element must be part of the DOM tree to have page coordinates (display:none or elements not appended return false).
+     * @param {Number} x X value for new position (coordinates are page-based)
+     * @param {Number} y Y value for new position (coordinates are page-based)
+     * @param {Boolean/Object} animate (optional) True for the default animation, or a standard Element animation config object
+     * @return {Ext.Element} this
+     */
+    moveTo : function(x, y, animate){
+        return this.setXY([x, y], this.animTest(arguments, animate, 2));        
+    },    
+    
+    <div id="method-Ext.Element-getLeft"></div>/**
+     * Gets the left X coordinate
+     * @param {Boolean} local True to get the local css position instead of page coordinate
+     * @return {Number}
+     */
+    getLeft : function(local){
+           return !local ? this.getX() : parseInt(this.getStyle(LEFT), 10) || 0;
+    },
+
+    <div id="method-Ext.Element-getRight"></div>/**
+     * Gets the right X coordinate of the element (element X position + element width)
+     * @param {Boolean} local True to get the local css position instead of page coordinate
+     * @return {Number}
+     */
+    getRight : function(local){
+           var me = this;
+           return !local ? me.getX() + me.getWidth() : (me.getLeft(true) + me.getWidth()) || 0;
+    },
+
+    <div id="method-Ext.Element-getTop"></div>/**
+     * Gets the top Y coordinate
+     * @param {Boolean} local True to get the local css position instead of page coordinate
+     * @return {Number}
+     */
+    getTop : function(local) {
+           return !local ? this.getY() : parseInt(this.getStyle(TOP), 10) || 0;
+    },
+
+    <div id="method-Ext.Element-getBottom"></div>/**
+     * Gets the bottom Y coordinate of the element (element Y position + element height)
+     * @param {Boolean} local True to get the local css position instead of page coordinate
+     * @return {Number}
+     */
+    getBottom : function(local){
+           var me = this;
+           return !local ? me.getY() + me.getHeight() : (me.getTop(true) + me.getHeight()) || 0;
+    },
+
+    <div id="method-Ext.Element-position"></div>/**
+    * Initializes positioning on this element. If a desired position is not passed, it will make the
+    * the element positioned relative IF it is not already positioned.
+    * @param {String} pos (optional) Positioning to use "relative", "absolute" or "fixed"
+    * @param {Number} zIndex (optional) The zIndex to apply
+    * @param {Number} x (optional) Set the page X position
+    * @param {Number} y (optional) Set the page Y position
+    */
+    position : function(pos, zIndex, x, y){
+           var me = this;
+           
+        if(!pos && me.isStyle(POSITION, STATIC)){           
+            me.setStyle(POSITION, RELATIVE);           
+        } else if(pos) {
+            me.setStyle(POSITION, pos);
+        }
+        if(zIndex){
+            me.setStyle(ZINDEX, zIndex);
+        }
+        if(x || y) me.setXY([x || false, y || false]);
+    },
+
+    <div id="method-Ext.Element-clearPositioning"></div>/**
+    * Clear positioning back to the default when the document was loaded
+    * @param {String} value (optional) The value to use for the left,right,top,bottom, defaults to '' (empty string). You could use 'auto'.
+    * @return {Ext.Element} this
+     */
+    clearPositioning : function(value){
+        value = value || '';
+        this.setStyle({
+            left : value,
+            right : value,
+            top : value,
+            bottom : value,
+            "z-index" : "",
+            position : STATIC
+        });
+        return this;
+    },
+
+    <div id="method-Ext.Element-getPositioning"></div>/**
+    * Gets an object with all CSS positioning properties. Useful along with setPostioning to get
+    * snapshot before performing an update and then restoring the element.
+    * @return {Object}
+    */
+    getPositioning : function(){
+        var l = this.getStyle(LEFT);
+        var t = this.getStyle(TOP);
+        return {
+            "position" : this.getStyle(POSITION),
+            "left" : l,
+            "right" : l ? "" : this.getStyle(RIGHT),
+            "top" : t,
+            "bottom" : t ? "" : this.getStyle(BOTTOM),
+            "z-index" : this.getStyle(ZINDEX)
+        };
+    },
+    
+    <div id="method-Ext.Element-setPositioning"></div>/**
+    * Set positioning with an object returned by getPositioning().
+    * @param {Object} posCfg
+    * @return {Ext.Element} this
+     */
+    setPositioning : function(pc){
+           var me = this,
+               style = me.dom.style;
+               
+        me.setStyle(pc);
+        
+        if(pc.right == AUTO){
+            style.right = "";
+        }
+        if(pc.bottom == AUTO){
+            style.bottom = "";
+        }
+        
+        return me;
+    },    
+       
+    <div id="method-Ext.Element-translatePoints"></div>/**
+     * Translates the passed page coordinates into left/top css values for this element
+     * @param {Number/Array} x The page x or an array containing [x, y]
+     * @param {Number} y (optional) The page y, required if x is not an array
+     * @return {Object} An object with left and top properties. e.g. {left: (value), top: (value)}
+     */
+    translatePoints : function(x, y){               
+           y = isNaN(x[1]) ? y : x[1];
+        x = isNaN(x[0]) ? x : x[0];
+        var me = this,
+               relative = me.isStyle(POSITION, RELATIVE),
+               o = me.getXY(),
+               l = parseInt(me.getStyle(LEFT), 10),
+               t = parseInt(me.getStyle(TOP), 10);
+        
+        l = !isNaN(l) ? l : (relative ? 0 : me.dom.offsetLeft);
+        t = !isNaN(t) ? t : (relative ? 0 : me.dom.offsetTop);        
+
+        return {left: (x - o[0] + l), top: (y - o[1] + t)}; 
+    },
+    
+    animTest : function(args, animate, i) {
+        return !!animate && this.preanim ? this.preanim(args, i) : false;
+    }
+});
+})();</pre>    
+</body>
 </html>
\ No newline at end of file