src/cm/media/js/lib/yui/yui_3.10.3/build/dom-style-ie/dom-style-ie.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 525 89ef5ed3c48b
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
/*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
YUI 3.10.3 (build 2fb5187)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
Copyright 2013 Yahoo! Inc. All rights reserved.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
Licensed under the BSD License.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
http://yuilibrary.com/license/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
YUI.add('dom-style-ie', function (Y, NAME) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
(function(Y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
var HAS_LAYOUT = 'hasLayout',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
    PX = 'px',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
    FILTER = 'filter',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
    FILTERS = 'filters',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
    OPACITY = 'opacity',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
    AUTO = 'auto',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
    BORDER_WIDTH = 'borderWidth',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
    BORDER_TOP_WIDTH = 'borderTopWidth',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
    BORDER_RIGHT_WIDTH = 'borderRightWidth',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
    BORDER_BOTTOM_WIDTH = 'borderBottomWidth',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
    BORDER_LEFT_WIDTH = 'borderLeftWidth',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
    WIDTH = 'width',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
    HEIGHT = 'height',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
    TRANSPARENT = 'transparent',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
    VISIBLE = 'visible',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
    GET_COMPUTED_STYLE = 'getComputedStyle',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
    UNDEFINED = undefined,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
    documentElement = Y.config.doc.documentElement,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
    testFeature = Y.Features.test,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
    addFeature = Y.Features.add,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
    // TODO: unit-less lineHeight (e.g. 1.22)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
    re_unit = /^(\d[.\d]*)+(em|ex|px|gd|rem|vw|vh|vm|ch|mm|cm|in|pt|pc|deg|rad|ms|s|hz|khz|%){1}?/i,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
    isIE8 = (Y.UA.ie >= 8),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
    _getStyleObj = function(node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
        return node.currentStyle || node.style;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
    ComputedStyle = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
        CUSTOM_STYLES: {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
        get: function(el, property) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
            var value = '',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
                current;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
            if (el) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
                    current = _getStyleObj(el)[property];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
                if (property === OPACITY && Y.DOM.CUSTOM_STYLES[OPACITY]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
                    value = Y.DOM.CUSTOM_STYLES[OPACITY].get(el);        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
                } else if (!current || (current.indexOf && current.indexOf(PX) > -1)) { // no need to convert
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
                    value = current;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
                } else if (Y.DOM.IE.COMPUTED[property]) { // use compute function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
                    value = Y.DOM.IE.COMPUTED[property](el, property);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
                } else if (re_unit.test(current)) { // convert to pixel
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
                    value = ComputedStyle.getPixel(el, property) + PX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
                    value = current;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
            return value;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
        sizeOffsets: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
            width: ['Left', 'Right'],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
            height: ['Top', 'Bottom'],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
            top: ['Top'],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
            bottom: ['Bottom']
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
        getOffset: function(el, prop) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
            var current = _getStyleObj(el)[prop],                     // value of "width", "top", etc.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
                capped = prop.charAt(0).toUpperCase() + prop.substr(1), // "Width", "Top", etc.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
                offset = 'offset' + capped,                             // "offsetWidth", "offsetTop", etc.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
                pixel = 'pixel' + capped,                               // "pixelWidth", "pixelTop", etc.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
                sizeOffsets = ComputedStyle.sizeOffsets[prop], 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
                mode = el.ownerDocument.compatMode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
                value = '';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
            // IE pixelWidth incorrect for percent
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
            // manually compute by subtracting padding and border from offset size
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
            // NOTE: clientWidth/Height (size minus border) is 0 when current === AUTO so offsetHeight is used
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
            // reverting to auto from auto causes position stacking issues (old impl)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
            if (current === AUTO || current.indexOf('%') > -1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
                value = el['offset' + capped];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
                if (mode !== 'BackCompat') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
                    if (sizeOffsets[0]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
                        value -= ComputedStyle.getPixel(el, 'padding' + sizeOffsets[0]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
                        value -= ComputedStyle.getBorderWidth(el, 'border' + sizeOffsets[0] + 'Width', 1);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
                    if (sizeOffsets[1]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
                        value -= ComputedStyle.getPixel(el, 'padding' + sizeOffsets[1]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
                        value -= ComputedStyle.getBorderWidth(el, 'border' + sizeOffsets[1] + 'Width', 1);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
            } else { // use style.pixelWidth, etc. to convert to pixels
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
                // need to map style.width to currentStyle (no currentStyle.pixelWidth)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
                if (!el.style[pixel] && !el.style[prop]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
                    el.style[prop] = current;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
                value = el.style[pixel];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
            return value + PX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
        borderMap: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
            thin: (isIE8) ? '1px' : '2px',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
            medium: (isIE8) ? '3px': '4px', 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
            thick: (isIE8) ? '5px' : '6px'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
        getBorderWidth: function(el, property, omitUnit) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
            var unit = omitUnit ? '' : PX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
                current = el.currentStyle[property];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
            if (current.indexOf(PX) < 0) { // look up keywords if a border exists
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
                if (ComputedStyle.borderMap[current] &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
                        el.currentStyle.borderStyle !== 'none') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
                    current = ComputedStyle.borderMap[current];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
                } else { // otherwise no border (default is "medium")
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
                    current = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
            return (omitUnit) ? parseFloat(current) : current;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
        getPixel: function(node, att) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
            // use pixelRight to convert to px
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
            var val = null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
                style = _getStyleObj(node),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
                styleRight = style.right,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
                current = style[att];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
            node.style.right = current;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
            val = node.style.pixelRight;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
            node.style.right = styleRight; // revert
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
            return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
        getMargin: function(node, att) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
            var val,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
                style = _getStyleObj(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
            if (style[att] == AUTO) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
                val = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
                val = ComputedStyle.getPixel(node, att);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
            return val + PX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
        getVisibility: function(node, att) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
            var current;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
            while ( (current = node.currentStyle) && current[att] == 'inherit') { // NOTE: assignment in test
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
                node = node.parentNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
            return (current) ? current[att] : VISIBLE;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
        getColor: function(node, att) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
            var current = _getStyleObj(node)[att];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
            if (!current || current === TRANSPARENT) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
                Y.DOM.elementByAxis(node, 'parentNode', null, function(parent) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
                    current = _getStyleObj(parent)[att];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
                    if (current && current !== TRANSPARENT) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
                        node = parent;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
                        return true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
                });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
            return Y.Color.toRGB(current);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
        getBorderColor: function(node, att) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
            var current = _getStyleObj(node),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
                val = current[att] || current.color;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
            return Y.Color.toRGB(Y.Color.toHex(val));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
    //fontSize: getPixelFont,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
    IEComputed = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
addFeature('style', 'computedStyle', {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
    test: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
        return 'getComputedStyle' in Y.config.win;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
addFeature('style', 'opacity', {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
    test: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
        return 'opacity' in documentElement.style;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
addFeature('style', 'filter', {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
    test: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
        return 'filters' in documentElement;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
// use alpha filter for IE opacity
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
if (!testFeature('style', 'opacity') && testFeature('style', 'filter')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
    Y.DOM.CUSTOM_STYLES[OPACITY] = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
        get: function(node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
            var val = 100;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
            try { // will error if no DXImageTransform
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
                val = node[FILTERS]['DXImageTransform.Microsoft.Alpha'][OPACITY];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
            } catch(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
                try { // make sure its in the document
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
                    val = node[FILTERS]('alpha')[OPACITY];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
                } catch(err) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
            return val / 100;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
        set: function(node, val, style) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
            var current,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
                styleObj = _getStyleObj(node),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
                currentFilter = styleObj[FILTER];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
            style = style || node.style;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
            if (val === '') { // normalize inline style behavior
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
                current = (OPACITY in styleObj) ? styleObj[OPACITY] : 1; // revert to original opacity
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
                val = current;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
            if (typeof currentFilter == 'string') { // in case not appended
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
                style[FILTER] = currentFilter.replace(/alpha([^)]*\))/gi, '') +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
                        ((val < 1) ? 'alpha(' + OPACITY + '=' + val * 100 + ')' : '');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
                if (!style[FILTER]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
                    style.removeAttribute(FILTER);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
                if (!styleObj[HAS_LAYOUT]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
                    style.zoom = 1; // needs layout 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
try {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
    Y.config.doc.createElement('div').style.height = '-1px';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
} catch(e) { // IE throws error on invalid style set; trap common cases
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
    Y.DOM.CUSTOM_STYLES.height = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
        set: function(node, val, style) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
            var floatVal = parseFloat(val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
            if (floatVal >= 0 || val === 'auto' || val === '') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
                style.height = val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
    Y.DOM.CUSTOM_STYLES.width = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
        set: function(node, val, style) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
            var floatVal = parseFloat(val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
            if (floatVal >= 0 || val === 'auto' || val === '') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
                style.width = val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
if (!testFeature('style', 'computedStyle')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
    // TODO: top, right, bottom, left
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
    IEComputed[WIDTH] = IEComputed[HEIGHT] = ComputedStyle.getOffset;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
    IEComputed.color = IEComputed.backgroundColor = ComputedStyle.getColor;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
    IEComputed[BORDER_WIDTH] = IEComputed[BORDER_TOP_WIDTH] = IEComputed[BORDER_RIGHT_WIDTH] =
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
            IEComputed[BORDER_BOTTOM_WIDTH] = IEComputed[BORDER_LEFT_WIDTH] =
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
            ComputedStyle.getBorderWidth;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
    IEComputed.marginTop = IEComputed.marginRight = IEComputed.marginBottom =
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
            IEComputed.marginLeft = ComputedStyle.getMargin;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
    IEComputed.visibility = ComputedStyle.getVisibility;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
    IEComputed.borderColor = IEComputed.borderTopColor =
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
            IEComputed.borderRightColor = IEComputed.borderBottomColor =
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
            IEComputed.borderLeftColor = ComputedStyle.getBorderColor;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
    Y.DOM[GET_COMPUTED_STYLE] = ComputedStyle.get; 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
    Y.namespace('DOM.IE');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
    Y.DOM.IE.COMPUTED = IEComputed;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
    Y.DOM.IE.ComputedStyle = ComputedStyle;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
})(Y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
}, '3.10.3', {"requires": ["dom-style"]});