src/cm/media/js/lib/yui/yui3-3.15.0/build/dom-style/dom-style.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 602 e16a97fb364a
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
602
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     1
YUI.add('dom-style', function (Y, NAME) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     3
(function(Y) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     4
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     5
 * Add style management functionality to DOM.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     6
 * @module dom
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     7
 * @submodule dom-style
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     8
 * @for DOM
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     9
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    10
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    11
var DOCUMENT_ELEMENT = 'documentElement',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
    DEFAULT_VIEW = 'defaultView',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    13
    OWNER_DOCUMENT = 'ownerDocument',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    14
    STYLE = 'style',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
    FLOAT = 'float',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    16
    CSS_FLOAT = 'cssFloat',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    17
    STYLE_FLOAT = 'styleFloat',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    18
    TRANSPARENT = 'transparent',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
    GET_COMPUTED_STYLE = 'getComputedStyle',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
    GET_BOUNDING_CLIENT_RECT = 'getBoundingClientRect',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
    WINDOW = Y.config.win,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
    DOCUMENT = Y.config.doc,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
    UNDEFINED = undefined,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
    Y_DOM = Y.DOM,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
    TRANSFORM = 'transform',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
    TRANSFORMORIGIN = 'transformOrigin',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
    VENDOR_TRANSFORM = [
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
        'WebkitTransform',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
        'MozTransform',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
        'OTransform',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
        'msTransform'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
    ],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
    re_color = /color$/i,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
    re_unit = /width|height|top|left|right|bottom|margin|padding/i;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
Y.Array.each(VENDOR_TRANSFORM, function(val) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
    if (val in DOCUMENT[DOCUMENT_ELEMENT].style) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
        TRANSFORM = val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
        TRANSFORMORIGIN = val + "Origin";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
Y.mix(Y_DOM, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
    DEFAULT_UNIT: 'px',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
    CUSTOM_STYLES: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
     * Sets a style property for a given element.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
     * @method setStyle
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
     * @param {HTMLElement} An HTMLElement to apply the style to.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    58
     * @param {String} att The style property to set.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    59
     * @param {String|Number} val The value.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    60
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    61
    setStyle: function(node, att, val, style) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
        style = style || node.style;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
        var CUSTOM_STYLES = Y_DOM.CUSTOM_STYLES;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
        if (style) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
            if (val === null || val === '') { // normalize unsetting
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
                val = '';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
            } else if (!isNaN(new Number(val)) && re_unit.test(att)) { // number values may need a unit
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
                val += Y_DOM.DEFAULT_UNIT;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
            if (att in CUSTOM_STYLES) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
                if (CUSTOM_STYLES[att].set) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
                    CUSTOM_STYLES[att].set(node, val, style);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
                    return; // NOTE: return
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
                } else if (typeof CUSTOM_STYLES[att] === 'string') {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
                    att = CUSTOM_STYLES[att];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
            } else if (att === '') { // unset inline styles
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
                att = 'cssText';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
                val = '';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
            style[att] = val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    86
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    87
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    88
     * Returns the current style value for the given property.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    89
     * @method getStyle
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    90
     * @param {HTMLElement} An HTMLElement to get the style from.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    91
     * @param {String} att The style property to get.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    92
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    93
    getStyle: function(node, att, style) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    94
        style = style || node.style;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    95
        var CUSTOM_STYLES = Y_DOM.CUSTOM_STYLES,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    96
            val = '';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    97
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    98
        if (style) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    99
            if (att in CUSTOM_STYLES) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   100
                if (CUSTOM_STYLES[att].get) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   101
                    return CUSTOM_STYLES[att].get(node, att, style); // NOTE: return
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   102
                } else if (typeof CUSTOM_STYLES[att] === 'string') {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   103
                    att = CUSTOM_STYLES[att];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   104
                }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   105
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   106
            val = style[att];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   107
            if (val === '') { // TODO: is empty string sufficient?
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   108
                val = Y_DOM[GET_COMPUTED_STYLE](node, att);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   109
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   110
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   111
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   112
        return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   113
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   114
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   115
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   116
     * Sets multiple style properties.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   117
     * @method setStyles
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   118
     * @param {HTMLElement} node An HTMLElement to apply the styles to.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   119
     * @param {Object} hash An object literal of property:value pairs.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   120
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   121
    setStyles: function(node, hash) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   122
        var style = node.style;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   123
        Y.each(hash, function(v, n) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   124
            Y_DOM.setStyle(node, n, v, style);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   125
        }, Y_DOM);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   126
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   127
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   128
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   129
     * Returns the computed style for the given node.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   130
     * @method getComputedStyle
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   131
     * @param {HTMLElement} An HTMLElement to get the style from.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   132
     * @param {String} att The style property to get.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   133
     * @return {String} The computed value of the style property.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   134
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   135
    getComputedStyle: function(node, att) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   136
        var val = '',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   137
            doc = node[OWNER_DOCUMENT],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   138
            computed;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   139
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   140
        if (node[STYLE] && doc[DEFAULT_VIEW] && doc[DEFAULT_VIEW][GET_COMPUTED_STYLE]) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   141
            computed = doc[DEFAULT_VIEW][GET_COMPUTED_STYLE](node, null);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   142
            if (computed) { // FF may be null in some cases (ticket #2530548)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   143
                val = computed[att];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   144
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   145
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   146
        return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   147
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   148
});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   149
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   150
// normalize reserved word float alternatives ("cssFloat" or "styleFloat")
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   151
if (DOCUMENT[DOCUMENT_ELEMENT][STYLE][CSS_FLOAT] !== UNDEFINED) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   152
    Y_DOM.CUSTOM_STYLES[FLOAT] = CSS_FLOAT;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   153
} else if (DOCUMENT[DOCUMENT_ELEMENT][STYLE][STYLE_FLOAT] !== UNDEFINED) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   154
    Y_DOM.CUSTOM_STYLES[FLOAT] = STYLE_FLOAT;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   155
}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   156
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   157
// fix opera computedStyle default color unit (convert to rgb)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   158
if (Y.UA.opera) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   159
    Y_DOM[GET_COMPUTED_STYLE] = function(node, att) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   160
        var view = node[OWNER_DOCUMENT][DEFAULT_VIEW],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   161
            val = view[GET_COMPUTED_STYLE](node, '')[att];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   162
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   163
        if (re_color.test(att)) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   164
            val = Y.Color.toRGB(val);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   165
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   166
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   167
        return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   168
    };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   169
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   170
}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   171
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   172
// safari converts transparent to rgba(), others use "transparent"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   173
if (Y.UA.webkit) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   174
    Y_DOM[GET_COMPUTED_STYLE] = function(node, att) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   175
        var view = node[OWNER_DOCUMENT][DEFAULT_VIEW],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   176
            val = view[GET_COMPUTED_STYLE](node, '')[att];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   177
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   178
        if (val === 'rgba(0, 0, 0, 0)') {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   179
            val = TRANSPARENT;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   180
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   181
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   182
        return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   183
    };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   184
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   185
}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   186
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   187
Y.DOM._getAttrOffset = function(node, attr) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   188
    var val = Y.DOM[GET_COMPUTED_STYLE](node, attr),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   189
        offsetParent = node.offsetParent,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   190
        position,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   191
        parentOffset,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   192
        offset;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   193
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   194
    if (val === 'auto') {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   195
        position = Y.DOM.getStyle(node, 'position');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   196
        if (position === 'static' || position === 'relative') {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   197
            val = 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   198
        } else if (offsetParent && offsetParent[GET_BOUNDING_CLIENT_RECT]) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   199
            parentOffset = offsetParent[GET_BOUNDING_CLIENT_RECT]()[attr];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   200
            offset = node[GET_BOUNDING_CLIENT_RECT]()[attr];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   201
            if (attr === 'left' || attr === 'top') {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   202
                val = offset - parentOffset;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   203
            } else {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   204
                val = parentOffset - node[GET_BOUNDING_CLIENT_RECT]()[attr];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   205
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   206
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   207
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   208
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   209
    return val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   210
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   211
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   212
Y.DOM._getOffset = function(node) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   213
    var pos,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   214
        xy = null;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   215
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   216
    if (node) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   217
        pos = Y_DOM.getStyle(node, 'position');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   218
        xy = [
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   219
            parseInt(Y_DOM[GET_COMPUTED_STYLE](node, 'left'), 10),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   220
            parseInt(Y_DOM[GET_COMPUTED_STYLE](node, 'top'), 10)
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   221
        ];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   222
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   223
        if ( isNaN(xy[0]) ) { // in case of 'auto'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   224
            xy[0] = parseInt(Y_DOM.getStyle(node, 'left'), 10); // try inline
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   225
            if ( isNaN(xy[0]) ) { // default to offset value
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   226
                xy[0] = (pos === 'relative') ? 0 : node.offsetLeft || 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   227
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   228
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   229
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   230
        if ( isNaN(xy[1]) ) { // in case of 'auto'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   231
            xy[1] = parseInt(Y_DOM.getStyle(node, 'top'), 10); // try inline
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   232
            if ( isNaN(xy[1]) ) { // default to offset value
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   233
                xy[1] = (pos === 'relative') ? 0 : node.offsetTop || 0;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   234
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   235
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   236
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   237
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   238
    return xy;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   239
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   240
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   241
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   242
Y_DOM.CUSTOM_STYLES.transform = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   243
    set: function(node, val, style) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   244
        style[TRANSFORM] = val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   245
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   246
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   247
    get: function(node, style) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   248
        return Y_DOM[GET_COMPUTED_STYLE](node, TRANSFORM);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   249
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   250
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   251
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   252
Y_DOM.CUSTOM_STYLES.transformOrigin = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   253
    set: function(node, val, style) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   254
        style[TRANSFORMORIGIN] = val;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   255
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   256
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   257
    get: function(node, style) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   258
        return Y_DOM[GET_COMPUTED_STYLE](node, TRANSFORMORIGIN);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   259
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   260
};
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   261
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   262
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   263
})(Y);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   264
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   265
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   266
}, '@VERSION@', {"requires": ["dom-base", "color-base"]});