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