| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 | 
							- <!DOCTYPE html>
 
- <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>
 
-   <style type="text/css">
 
-     .highlight { display: block; background-color: #ddd; }
 
-   </style>
 
-   <script type="text/javascript">
 
-     function highlight() {
 
-       document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
 
-     }
 
-   </script>
 
- </head>
 
- <body onload="prettyPrint(); highlight();">
 
-   <pre class="prettyprint lang-js"><span id='Ext-dom-AbstractElement'>/**
 
- </span> * @class Ext.dom.AbstractElement
 
-  */
 
- Ext.dom.AbstractElement.override({
 
- <span id='Ext-dom-AbstractElement-method-getAnchorXY'>    /**
 
- </span>     * Gets the x,y coordinates specified by the anchor position on the element.
 
-      * @param {String} [anchor] The specified anchor position (defaults to "c").  See {@link Ext.dom.Element#alignTo}
 
-      * for details on supported anchor positions.
 
-      * @param {Boolean} [local] True to get the local (element top/left-relative) anchor position instead
 
-      * of page coordinates
 
-      * @param {Object} [size] An object containing the size to use for calculating anchor position
 
-      * {width: (target width), height: (target height)} (defaults to the element's current size)
 
-      * @return {Array} [x, y] An array containing the element's x and y coordinates
 
-      */
 
-     getAnchorXY: function(anchor, local, size) {
 
-         //Passing a different size is useful for pre-calculating anchors,
 
-         //especially for anchored animations that change the el size.
 
-         anchor = (anchor || "tl").toLowerCase();
 
-         size = size || {};
 
-         var me = this,
 
-             vp = me.dom == document.body || me.dom == document,
 
-             width = size.width || vp ? window.innerWidth: me.getWidth(),
 
-             height = size.height || vp ? window.innerHeight: me.getHeight(),
 
-             xy,
 
-             rnd = Math.round,
 
-             myXY = me.getXY(),
 
-             extraX = vp ? 0: !local ? myXY[0] : 0,
 
-             extraY = vp ? 0: !local ? myXY[1] : 0,
 
-             hash = {
 
-                 c: [rnd(width * 0.5), rnd(height * 0.5)],
 
-                 t: [rnd(width * 0.5), 0],
 
-                 l: [0, rnd(height * 0.5)],
 
-                 r: [width, rnd(height * 0.5)],
 
-                 b: [rnd(width * 0.5), height],
 
-                 tl: [0, 0],
 
-                 bl: [0, height],
 
-                 br: [width, height],
 
-                 tr: [width, 0]
 
-             };
 
-         xy = hash[anchor];
 
-         return [xy[0] + extraX, xy[1] + extraY];
 
-     },
 
-     alignToRe: /^([a-z]+)-([a-z]+)(\?)?$/,
 
- <span id='Ext-dom-AbstractElement-method-getAlignToXY'>    /**
 
- </span>     * Gets the x,y coordinates to align this element with another element. See {@link Ext.dom.Element#alignTo} for more info on the
 
-      * supported position values.
 
-      * @param {Ext.Element/HTMLElement/String} element The element to align to.
 
-      * @param {String} [position="tl-bl?"] The position to align to.
 
-      * @param {Array} [offsets=[0,0]] Offset the positioning by [x, y]
 
-      * @return {Array} [x, y]
 
-      */
 
-     getAlignToXY: function(el, position, offsets, local) {
 
-         local = !!local;
 
-         el = Ext.get(el);
 
-         //<debug>
 
-         if (!el || !el.dom) {
 
-             throw new Error("Element.alignToXY with an element that doesn't exist");
 
-         }
 
-         //</debug>
 
-         offsets = offsets || [0, 0];
 
-         if (!position || position == '?') {
 
-             position = 'tl-bl?';
 
-         }
 
-         else if (! (/-/).test(position) && position !== "") {
 
-             position = 'tl-' + position;
 
-         }
 
-         position = position.toLowerCase();
 
-         var me = this,
 
-             matches = position.match(this.alignToRe),
 
-             dw = window.innerWidth,
 
-             dh = window.innerHeight,
 
-             p1 = "",
 
-             p2 = "",
 
-             a1,
 
-             a2,
 
-             x,
 
-             y,
 
-             swapX,
 
-             swapY,
 
-             p1x,
 
-             p1y,
 
-             p2x,
 
-             p2y,
 
-             width,
 
-             height,
 
-             region,
 
-             constrain;
 
-         if (!matches) {
 
-             throw "Element.alignTo with an invalid alignment " + position;
 
-         }
 
-         p1 = matches[1];
 
-         p2 = matches[2];
 
-         constrain = !!matches[3];
 
-         //Subtract the aligned el's internal xy from the target's offset xy
 
-         //plus custom offset to get the aligned el's new offset xy
 
-         a1 = me.getAnchorXY(p1, true);
 
-         a2 = el.getAnchorXY(p2, local);
 
-         x = a2[0] - a1[0] + offsets[0];
 
-         y = a2[1] - a1[1] + offsets[1];
 
-         if (constrain) {
 
-             width = me.getWidth();
 
-             height = me.getHeight();
 
-             region = el.getPageBox();
 
-             //If we are at a viewport boundary and the aligned el is anchored on a target border that is
 
-             //perpendicular to the vp border, allow the aligned el to slide on that border,
 
-             //otherwise swap the aligned el to the opposite border of the target.
 
-             p1y = p1.charAt(0);
 
-             p1x = p1.charAt(p1.length - 1);
 
-             p2y = p2.charAt(0);
 
-             p2x = p2.charAt(p2.length - 1);
 
-             swapY = ((p1y == "t" && p2y == "b") || (p1y == "b" && p2y == "t"));
 
-             swapX = ((p1x == "r" && p2x == "l") || (p1x == "l" && p2x == "r"));
 
-             if (x + width > dw) {
 
-                 x = swapX ? region.left - width: dw - width;
 
-             }
 
-             if (x < 0) {
 
-                 x = swapX ? region.right: 0;
 
-             }
 
-             if (y + height > dh) {
 
-                 y = swapY ? region.top - height: dh - height;
 
-             }
 
-             if (y < 0) {
 
-                 y = swapY ? region.bottom: 0;
 
-             }
 
-         }
 
-         return [x, y];
 
-     },
 
-     // private
 
-     getAnchor: function(){
 
-         var data = (this.$cache || this.getCache()).data,
 
-             anchor;
 
-             
 
-         if (!this.dom) {
 
-             return;
 
-         }
 
-         anchor = data._anchor;
 
-         if(!anchor){
 
-             anchor = data._anchor = {};
 
-         }
 
-         return anchor;
 
-     },
 
-     // private ==>  used outside of core
 
-     adjustForConstraints: function(xy, parent) {
 
-         var vector = this.getConstrainVector(parent, xy);
 
-         if (vector) {
 
-             xy[0] += vector[0];
 
-             xy[1] += vector[1];
 
-         }
 
-         return xy;
 
-     }
 
- });
 
- </pre>
 
- </body>
 
- </html>
 
 
  |