src/cm/media/js/lib/yui/yui3.0.0/build/dom/dom-style.js
author raph
Mon, 23 Nov 2009 15:14:29 +0100
changeset 0 40c8f766c9b8
permissions -rw-r--r--
import from internal svn r 4007
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     1
/*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     2
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     3
Code licensed under the BSD License:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     4
http://developer.yahoo.net/yui/license.txt
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     5
version: 3.0.0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
build: 1549
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     7
*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     8
YUI.add('dom-style', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     9
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    10
(function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    11
/** 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    12
 * Add style management functionality to DOM.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
 * @module dom
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    14
 * @submodule dom-style
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    15
 * @for DOM
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    18
var DOCUMENT_ELEMENT = 'documentElement',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    19
    DEFAULT_VIEW = 'defaultView',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    20
    OWNER_DOCUMENT = 'ownerDocument',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    21
    STYLE = 'style',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    22
    FLOAT = 'float',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    23
    CSS_FLOAT = 'cssFloat',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    24
    STYLE_FLOAT = 'styleFloat',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    25
    TRANSPARENT = 'transparent',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    26
    GET_COMPUTED_STYLE = 'getComputedStyle',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    27
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    28
    DOCUMENT = Y.config.doc,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    29
    UNDEFINED = undefined,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    30
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    31
    re_color = /color$/i;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    32
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    33
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    34
Y.mix(Y.DOM, {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    35
    CUSTOM_STYLES: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    36
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    37
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    38
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    39
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    40
     * Sets a style property for a given element.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    41
     * @method setStyle
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    42
     * @param {HTMLElement} An HTMLElement to apply the style to.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    43
     * @param {String} att The style property to set. 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    44
     * @param {String|Number} val The value. 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    45
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    46
    setStyle: function(node, att, val, style) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    47
        style = style || node.style;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    48
        var CUSTOM_STYLES = Y.DOM.CUSTOM_STYLES;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    49
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    50
        if (style) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    51
            if (val === null) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    52
                val = ''; // normalize for unsetting
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    53
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    54
            if (att in CUSTOM_STYLES) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    55
                if (CUSTOM_STYLES[att].set) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    56
                    CUSTOM_STYLES[att].set(node, val, style);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    57
                    return; // NOTE: return
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    58
                } else if (typeof CUSTOM_STYLES[att] === 'string') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    59
                    att = CUSTOM_STYLES[att];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    60
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    61
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    62
            style[att] = val; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    63
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    64
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    65
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    66
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    67
     * Returns the current style value for the given property.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    68
     * @method getStyle
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    69
     * @param {HTMLElement} An HTMLElement to get the style from.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    70
     * @param {String} att The style property to get. 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    71
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    72
    getStyle: function(node, att) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    73
        var style = node[STYLE],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    74
            CUSTOM_STYLES = Y.DOM.CUSTOM_STYLES,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    75
            val = '';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    76
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    77
        if (style) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    78
            if (att in CUSTOM_STYLES) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    79
                if (CUSTOM_STYLES[att].get) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    80
                    return CUSTOM_STYLES[att].get(node, att, style); // NOTE: return
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    81
                } else if (typeof CUSTOM_STYLES[att] === 'string') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    82
                    att = CUSTOM_STYLES[att];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    83
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    84
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    85
            val = style[att];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    86
            if (val === '') { // TODO: is empty string sufficient?
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    87
                val = Y.DOM[GET_COMPUTED_STYLE](node, att);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    88
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    89
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    90
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    91
        return val;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    92
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    93
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    94
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    95
     * Sets multiple style properties.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    96
     * @method setStyles
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    97
     * @param {HTMLElement} node An HTMLElement to apply the styles to. 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    98
     * @param {Object} hash An object literal of property:value pairs. 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    99
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   100
    setStyles: function(node, hash) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   101
        var style = node.style;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   102
        Y.each(hash, function(v, n) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   103
            Y.DOM.setStyle(node, n, v, style);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   104
        }, Y.DOM);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   105
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   106
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   107
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   108
     * Returns the computed style for the given node.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   109
     * @method getComputedStyle
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   110
     * @param {HTMLElement} An HTMLElement to get the style from.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   111
     * @param {String} att The style property to get. 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   112
     * @return {String} The computed value of the style property. 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   113
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   114
    getComputedStyle: function(node, att) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   115
        var val = '',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   116
            doc = node[OWNER_DOCUMENT];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   117
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   118
        if (node[STYLE]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   119
            val = doc[DEFAULT_VIEW][GET_COMPUTED_STYLE](node, null)[att];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   120
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   121
        return val;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   122
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   123
});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   124
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   125
// normalize reserved word float alternatives ("cssFloat" or "styleFloat")
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   126
if (DOCUMENT[DOCUMENT_ELEMENT][STYLE][CSS_FLOAT] !== UNDEFINED) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   127
    Y.DOM.CUSTOM_STYLES[FLOAT] = CSS_FLOAT;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   128
} else if (DOCUMENT[DOCUMENT_ELEMENT][STYLE][STYLE_FLOAT] !== UNDEFINED) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   129
    Y.DOM.CUSTOM_STYLES[FLOAT] = STYLE_FLOAT;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   130
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   131
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   132
// fix opera computedStyle default color unit (convert to rgb)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   133
if (Y.UA.opera) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   134
    Y.DOM[GET_COMPUTED_STYLE] = function(node, att) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   135
        var view = node[OWNER_DOCUMENT][DEFAULT_VIEW],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   136
            val = view[GET_COMPUTED_STYLE](node, '')[att];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   137
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   138
        if (re_color.test(att)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   139
            val = Y.Color.toRGB(val);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   140
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   141
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   142
        return val;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   143
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   144
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   145
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   146
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   147
// safari converts transparent to rgba(), others use "transparent"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   148
if (Y.UA.webkit) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   149
    Y.DOM[GET_COMPUTED_STYLE] = function(node, att) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   150
        var view = node[OWNER_DOCUMENT][DEFAULT_VIEW],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   151
            val = view[GET_COMPUTED_STYLE](node, '')[att];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   152
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   153
        if (val === 'rgba(0, 0, 0, 0)') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   154
            val = TRANSPARENT; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   155
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   156
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   157
        return val;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   158
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   159
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   160
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   161
})(Y);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   162
(function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   163
var PARSE_INT = parseInt,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   164
    RE = RegExp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   165
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   166
Y.Color = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   167
    KEYWORDS: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   168
        black: '000',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   169
        silver: 'c0c0c0',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   170
        gray: '808080',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   171
        white: 'fff',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   172
        maroon: '800000',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   173
        red: 'f00',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   174
        purple: '800080',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   175
        fuchsia: 'f0f',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   176
        green: '008000',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   177
        lime: '0f0',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   178
        olive: '808000',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   179
        yellow: 'ff0',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   180
        navy: '000080',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   181
        blue: '00f',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   182
        teal: '008080',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   183
        aqua: '0ff'
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   184
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   185
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   186
    re_RGB: /^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   187
    re_hex: /^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   188
    re_hex3: /([0-9A-F])/gi,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   189
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   190
    toRGB: function(val) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   191
        if (!Y.Color.re_RGB.test(val)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   192
            val = Y.Color.toHex(val);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   193
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   194
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   195
        if(Y.Color.re_hex.exec(val)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   196
            val = 'rgb(' + [
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   197
                PARSE_INT(RE.$1, 16),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   198
                PARSE_INT(RE.$2, 16),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   199
                PARSE_INT(RE.$3, 16)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   200
            ].join(', ') + ')';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   201
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   202
        return val;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   203
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   204
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   205
    toHex: function(val) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   206
        val = Y.Color.KEYWORDS[val] || val;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   207
        if (Y.Color.re_RGB.exec(val)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   208
            val = [
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   209
                Number(RE.$1).toString(16),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   210
                Number(RE.$2).toString(16),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   211
                Number(RE.$3).toString(16)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   212
            ];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   213
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   214
            for (var i = 0; i < val.length; i++) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   215
                if (val[i].length < 2) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   216
                    val[i] = val[i].replace(Y.Color.re_hex3, '$1$1');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   217
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   218
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   219
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   220
            val = '#' + val.join('');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   221
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   222
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   223
        if (val.length < 6) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   224
            val = val.replace(Y.Color.re_hex3, '$1$1');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   225
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   226
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   227
        if (val !== 'transparent' && val.indexOf('#') < 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   228
            val = '#' + val;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   229
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   230
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   231
        return val.toLowerCase();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   232
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   233
};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   234
})(Y);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   235
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   236
(function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   237
var HAS_LAYOUT = 'hasLayout',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   238
    PX = 'px',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   239
    FILTER = 'filter',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   240
    FILTERS = 'filters',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   241
    OPACITY = 'opacity',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   242
    AUTO = 'auto',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   243
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   244
    BORDER_WIDTH = 'borderWidth',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   245
    BORDER_TOP_WIDTH = 'borderTopWidth',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   246
    BORDER_RIGHT_WIDTH = 'borderRightWidth',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   247
    BORDER_BOTTOM_WIDTH = 'borderBottomWidth',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   248
    BORDER_LEFT_WIDTH = 'borderLeftWidth',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   249
    WIDTH = 'width',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   250
    HEIGHT = 'height',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   251
    TRANSPARENT = 'transparent',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   252
    VISIBLE = 'visible',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   253
    GET_COMPUTED_STYLE = 'getComputedStyle',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   254
    UNDEFINED = undefined,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   255
    documentElement = document.documentElement,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   256
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   257
    // TODO: unit-less lineHeight (e.g. 1.22)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   258
    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,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   259
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   260
    _getStyleObj = function(node) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   261
        return node.currentStyle || node.style;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   262
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   263
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   264
    ComputedStyle = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   265
        CUSTOM_STYLES: {},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   266
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   267
        get: function(el, property) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   268
            var value = '',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   269
                current;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   270
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   271
            if (el) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   272
                    current = _getStyleObj(el)[property];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   273
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   274
                if (property === OPACITY && Y.DOM.CUSTOM_STYLES[OPACITY]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   275
                    value = Y.DOM.CUSTOM_STYLES[OPACITY].get(el);        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   276
                } else if (!current || (current.indexOf && current.indexOf(PX) > -1)) { // no need to convert
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   277
                    value = current;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   278
                } else if (Y.DOM.IE.COMPUTED[property]) { // use compute function
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   279
                    value = Y.DOM.IE.COMPUTED[property](el, property);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   280
                } else if (re_unit.test(current)) { // convert to pixel
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   281
                    value = ComputedStyle.getPixel(el, property) + PX;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   282
                } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   283
                    value = current;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   284
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   285
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   286
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   287
            return value;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   288
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   289
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   290
        sizeOffsets: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   291
            width: ['Left', 'Right'],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   292
            height: ['Top', 'Bottom'],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   293
            top: ['Top'],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   294
            bottom: ['Bottom']
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   295
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   296
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   297
        getOffset: function(el, prop) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   298
            var current = _getStyleObj(el)[prop],                     // value of "width", "top", etc.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   299
                capped = prop.charAt(0).toUpperCase() + prop.substr(1), // "Width", "Top", etc.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   300
                offset = 'offset' + capped,                             // "offsetWidth", "offsetTop", etc.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   301
                pixel = 'pixel' + capped,                               // "pixelWidth", "pixelTop", etc.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   302
                sizeOffsets = ComputedStyle.sizeOffsets[prop], 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   303
                value = '';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   304
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   305
            // IE pixelWidth incorrect for percent
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   306
            // manually compute by subtracting padding and border from offset size
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   307
            // NOTE: clientWidth/Height (size minus border) is 0 when current === AUTO so offsetHeight is used
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   308
            // reverting to auto from auto causes position stacking issues (old impl)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   309
            if (current === AUTO || current.indexOf('%') > -1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   310
                value = el['offset' + capped];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   311
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   312
                if (sizeOffsets[0]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   313
                    value -= ComputedStyle.getPixel(el, 'padding' + sizeOffsets[0]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   314
                    value -= ComputedStyle.getBorderWidth(el, 'border' + sizeOffsets[0] + 'Width', 1);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   315
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   316
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   317
                if (sizeOffsets[1]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   318
                    value -= ComputedStyle.getPixel(el, 'padding' + sizeOffsets[1]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   319
                    value -= ComputedStyle.getBorderWidth(el, 'border' + sizeOffsets[1] + 'Width', 1);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   320
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   321
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   322
            } else { // use style.pixelWidth, etc. to convert to pixels
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   323
                // need to map style.width to currentStyle (no currentStyle.pixelWidth)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   324
                if (!el.style[pixel] && !el.style[prop]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   325
                    el.style[prop] = current;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   326
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   327
                value = el.style[pixel];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   328
                
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   329
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   330
            return value + PX;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   331
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   332
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   333
        borderMap: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   334
            thin: '2px', 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   335
            medium: '4px', 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   336
            thick: '6px'
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   337
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   338
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   339
        getBorderWidth: function(el, property, omitUnit) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   340
            var unit = omitUnit ? '' : PX,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   341
                current = el.currentStyle[property];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   342
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   343
            if (current.indexOf(PX) < 0) { // look up keywords
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   344
                if (ComputedStyle.borderMap[current]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   345
                    current = ComputedStyle.borderMap[current];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   346
                } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   347
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   348
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   349
            return (omitUnit) ? parseFloat(current) : current;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   350
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   351
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   352
        getPixel: function(node, att) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   353
            // use pixelRight to convert to px
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   354
            var val = null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   355
                style = _getStyleObj(node),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   356
                styleRight = style.right,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   357
                current = style[att];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   358
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   359
            node.style.right = current;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   360
            val = node.style.pixelRight;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   361
            node.style.right = styleRight; // revert
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   362
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   363
            return val;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   364
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   365
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   366
        getMargin: function(node, att) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   367
            var val,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   368
                style = _getStyleObj(node);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   369
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   370
            if (style[att] == AUTO) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   371
                val = 0;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   372
            } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   373
                val = ComputedStyle.getPixel(node, att);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   374
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   375
            return val + PX;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   376
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   377
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   378
        getVisibility: function(node, att) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   379
            var current;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   380
            while ( (current = node.currentStyle) && current[att] == 'inherit') { // NOTE: assignment in test
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   381
                node = node.parentNode;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   382
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   383
            return (current) ? current[att] : VISIBLE;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   384
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   385
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   386
        getColor: function(node, att) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   387
            var current = _getStyleObj(node)[att];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   388
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   389
            if (!current || current === TRANSPARENT) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   390
                Y.DOM.elementByAxis(node, 'parentNode', null, function(parent) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   391
                    current = _getStyleObj(parent)[att];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   392
                    if (current && current !== TRANSPARENT) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   393
                        node = parent;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   394
                        return true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   395
                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   396
                });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   397
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   398
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   399
            return Y.Color.toRGB(current);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   400
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   401
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   402
        getBorderColor: function(node, att) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   403
            var current = _getStyleObj(node),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   404
                val = current[att] || current.color;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   405
            return Y.Color.toRGB(Y.Color.toHex(val));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   406
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   407
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   408
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   409
    //fontSize: getPixelFont,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   410
    IEComputed = {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   411
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   412
// use alpha filter for IE opacity
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   413
try {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   414
    if (documentElement.style[OPACITY] === UNDEFINED &&
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   415
            documentElement[FILTERS]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   416
        Y.DOM.CUSTOM_STYLES[OPACITY] = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   417
            get: function(node) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   418
                var val = 100;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   419
                try { // will error if no DXImageTransform
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   420
                    val = node[FILTERS]['DXImageTransform.Microsoft.Alpha'][OPACITY];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   421
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   422
                } catch(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   423
                    try { // make sure its in the document
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   424
                        val = node[FILTERS]('alpha')[OPACITY];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   425
                    } catch(err) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   426
                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   427
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   428
                return val / 100;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   429
            },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   430
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   431
            set: function(node, val, style) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   432
                var current,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   433
                    styleObj;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   434
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   435
                if (val === '') { // normalize inline style behavior
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   436
                    styleObj = _getStyleObj(node);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   437
                    current = (OPACITY in styleObj) ? styleObj[OPACITY] : 1; // revert to original opacity
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   438
                    val = current;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   439
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   440
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   441
                if (typeof style[FILTER] == 'string') { // in case not appended
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   442
                    style[FILTER] = 'alpha(' + OPACITY + '=' + val * 100 + ')';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   443
                    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   444
                    if (!node.currentStyle || !node.currentStyle[HAS_LAYOUT]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   445
                        style.zoom = 1; // needs layout 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   446
                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   447
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   448
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   449
        };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   450
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   451
} catch(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   452
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   453
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   454
try {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   455
    document.createElement('div').style.height = '-1px';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   456
} catch(e) { // IE throws error on invalid style set; trap common cases
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   457
    Y.DOM.CUSTOM_STYLES.height = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   458
        set: function(node, val, style) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   459
            var floatVal = parseFloat(val);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   460
            if (isNaN(floatVal) || floatVal >= 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   461
                style.height = val;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   462
            } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   463
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   464
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   465
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   466
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   467
    Y.DOM.CUSTOM_STYLES.width = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   468
        set: function(node, val, style) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   469
            var floatVal = parseFloat(val);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   470
            if (isNaN(floatVal) || floatVal >= 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   471
                style.width = val;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   472
            } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   473
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   474
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   475
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   476
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   477
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   478
// TODO: top, right, bottom, left
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   479
IEComputed[WIDTH] = IEComputed[HEIGHT] = ComputedStyle.getOffset;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   480
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   481
IEComputed.color = IEComputed.backgroundColor = ComputedStyle.getColor;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   482
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   483
IEComputed[BORDER_WIDTH] = IEComputed[BORDER_TOP_WIDTH] = IEComputed[BORDER_RIGHT_WIDTH] =
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   484
        IEComputed[BORDER_BOTTOM_WIDTH] = IEComputed[BORDER_LEFT_WIDTH] =
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   485
        ComputedStyle.getBorderWidth;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   486
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   487
IEComputed.marginTop = IEComputed.marginRight = IEComputed.marginBottom =
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   488
        IEComputed.marginLeft = ComputedStyle.getMargin;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   489
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   490
IEComputed.visibility = ComputedStyle.getVisibility;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   491
IEComputed.borderColor = IEComputed.borderTopColor =
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   492
        IEComputed.borderRightColor = IEComputed.borderBottomColor =
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   493
        IEComputed.borderLeftColor = ComputedStyle.getBorderColor;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   494
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   495
if (!Y.config.win[GET_COMPUTED_STYLE]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   496
    Y.DOM[GET_COMPUTED_STYLE] = ComputedStyle.get; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   497
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   498
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   499
Y.namespace('DOM.IE');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   500
Y.DOM.IE.COMPUTED = IEComputed;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   501
Y.DOM.IE.ComputedStyle = ComputedStyle;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   502
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   503
})(Y);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   504
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   505
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   506
}, '3.0.0' ,{requires:['dom-base']});