src/cm/media/js/lib/yui/yui_3.0.0b1/build/dom/dom-style-debug.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.0b1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
build: 1163
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 TO_STRING = 'toString',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   164
    PARSE_INT = parseInt,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   165
    RE = RegExp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   166
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   167
Y.Color = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   168
    KEYWORDS: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   169
        black: '000',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   170
        silver: 'c0c0c0',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   171
        gray: '808080',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   172
        white: 'fff',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   173
        maroon: '800000',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   174
        red: 'f00',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   175
        purple: '800080',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   176
        fuchsia: 'f0f',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   177
        green: '008000',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   178
        lime: '0f0',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   179
        olive: '808000',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   180
        yellow: 'ff0',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   181
        navy: '000080',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   182
        blue: '00f',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   183
        teal: '008080',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   184
        aqua: '0ff'
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   185
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   186
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   187
    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
   188
    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
   189
    re_hex3: /([0-9A-F])/gi,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   190
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   191
    toRGB: function(val) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   192
        if (!Y.Color.re_RGB.test(val)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   193
            val = Y.Color.toHex(val);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   194
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   195
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   196
        if(Y.Color.re_hex.exec(val)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   197
            val = 'rgb(' + [
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   198
                PARSE_INT(RE.$1, 16),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   199
                PARSE_INT(RE.$2, 16),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   200
                PARSE_INT(RE.$3, 16)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   201
            ].join(', ') + ')';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   202
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   203
        return val;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   204
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   205
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   206
    toHex: function(val) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   207
        val = Y.Color.KEYWORDS[val] || val;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   208
        if (Y.Color.re_RGB.exec(val)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   209
            var r = (RE.$1.length === 1) ? '0' + RE.$1 : Number(RE.$1),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   210
                g = (RE.$2.length === 1) ? '0' + RE.$2 : Number(RE.$2),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   211
                b = (RE.$3.length === 1) ? '0' + RE.$3 : Number(RE.$3);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   212
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   213
            val = [
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   214
                r[TO_STRING](16),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   215
                g[TO_STRING](16),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   216
                b[TO_STRING](16)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   217
            ].join('');
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
        if (val.length < 6) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   221
            val = val.replace(Y.Color.re_hex3, '$1$1');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   222
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   223
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   224
        if (val !== 'transparent' && val.indexOf('#') < 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   225
            val = '#' + val;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   226
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   227
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   228
        return val.toLowerCase();
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
})(Y);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   232
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   233
(function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   234
var CLIENT_TOP = 'clientTop',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   235
    CLIENT_LEFT = 'clientLeft',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   236
    HAS_LAYOUT = 'hasLayout',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   237
    PX = 'px',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   238
    FILTER = 'filter',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   239
    FILTERS = 'filters',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   240
    OPACITY = 'opacity',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   241
    AUTO = 'auto',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   242
    BORDER_TOP_WIDTH = 'borderTopWidth',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   243
    BORDER_RIGHT_WIDTH = 'borderRightWidth',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   244
    BORDER_BOTTOM_WIDTH = 'borderBottomWidth',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   245
    BORDER_LEFT_WIDTH = 'borderLeftWidth',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   246
    WIDTH = 'width',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   247
    HEIGHT = 'height',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   248
    TRANSPARENT = 'transparent',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   249
    VISIBLE = 'visible',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   250
    GET_COMPUTED_STYLE = 'getComputedStyle',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   251
    UNDEFINED = undefined,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   252
    documentElement = document.documentElement,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   253
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   254
    // TODO: unit-less lineHeight (e.g. 1.22)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   255
    re_size = /^width|height$/,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   256
    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
   257
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   258
    _getStyleObj = function(node) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   259
        return node.currentStyle || node.style;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   260
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   261
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   262
    ComputedStyle = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   263
        CUSTOM_STYLES: {},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   264
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   265
        get: function(el, property) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   266
            var value = '',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   267
                current;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   268
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   269
            if (el) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   270
                    current = _getStyleObj(el)[property];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   271
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   272
                if (property === OPACITY) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   273
                    value = Y.DOM.CUSTOM_STYLES[OPACITY].get(el);        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   274
                } else if (!current || (current.indexOf && current.indexOf(PX) > -1)) { // no need to convert
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   275
                    value = current;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   276
                } else if (Y.DOM.IE.COMPUTED[property]) { // use compute function
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   277
                    value = Y.DOM.IE.COMPUTED[property](el, property);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   278
                } else if (re_unit.test(current)) { // convert to pixel
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   279
                    value = ComputedStyle.getPixel(el, property) + PX;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   280
                } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   281
                    value = current;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   282
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   283
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   284
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   285
            return value;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   286
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   287
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   288
        getOffset: function(el, prop) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   289
            var current = _getStyleObj(el)[prop],                     // value of "width", "top", etc.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   290
                capped = prop.charAt(0).toUpperCase() + prop.substr(1), // "Width", "Top", etc.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   291
                offset = 'offset' + capped,                             // "offsetWidth", "offsetTop", etc.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   292
                pixel = 'pixel' + capped,                               // "pixelWidth", "pixelTop", etc.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   293
                actual,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   294
                value = '';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   295
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   296
            if (current === AUTO) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   297
                actual = el[offset]; // offsetHeight/Top etc.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   298
                if (actual === UNDEFINED) { // likely "right" or "bottom"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   299
                    value = 0;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   300
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   301
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   302
                value = actual;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   303
                if (re_size.test(prop)) { // account for box model diff 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   304
                    el.style[prop] = actual;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   305
                    if (el[offset] > actual) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   306
                        // the difference is padding + border (works in Standards & Quirks modes)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   307
                        value = actual - (el[offset] - actual);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   308
                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   309
                    el.style[prop] = AUTO; // revert to auto
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   310
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   311
            } else { // convert units to px
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   312
                if (current.indexOf('%') > -1) { // IE pixelWidth incorrect for percent; manually compute 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   313
                    current = el.clientWidth - // offsetWidth - borderWidth
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   314
                            ComputedStyle.getPixel(el, 'paddingRight') -
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   315
                            ComputedStyle.getPixel(el, 'paddingLeft');
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 (!el.style[pixel] && !el.style[prop]) { // need to map style.width to currentStyle (no currentStyle.pixelWidth)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   318
                    el.style[prop] = current;              // no style.pixelWidth if no style.width
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   319
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   320
                value = el.style[pixel];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   321
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   322
            return value + PX;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   323
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   324
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   325
        getBorderWidth: function(el, property) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   326
            // clientHeight/Width = paddingBox (e.g. offsetWidth - borderWidth)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   327
            // clientTop/Left = borderWidth
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   328
            var value = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   329
            if (!el.currentStyle || !el.currentStyle[HAS_LAYOUT]) { // TODO: unset layout?
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   330
                el.style.zoom = 1; // need layout to measure client
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
            switch(property) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   334
                case BORDER_TOP_WIDTH:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   335
                    value = el[CLIENT_TOP];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   336
                    break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   337
                case BORDER_BOTTOM_WIDTH:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   338
                    value = el.offsetHeight - el.clientHeight - el[CLIENT_TOP];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   339
                    break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   340
                case BORDER_LEFT_WIDTH:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   341
                    value = el[CLIENT_LEFT];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   342
                    break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   343
                case BORDER_RIGHT_WIDTH:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   344
                    value = el.offsetWidth - el.clientWidth - el[CLIENT_LEFT];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   345
                    break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   346
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   347
            return value + PX;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   348
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   349
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   350
        getPixel: function(node, att) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   351
            // use pixelRight to convert to px
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   352
            var val = null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   353
                style = _getStyleObj(node),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   354
                styleRight = style.right,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   355
                current = style[att];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   356
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   357
            node.style.right = current;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   358
            val = node.style.pixelRight;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   359
            node.style.right = styleRight; // revert
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   360
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   361
            return val;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   362
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   363
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   364
        getMargin: function(node, att) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   365
            var val,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   366
                style = _getStyleObj(node);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   367
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   368
            if (style[att] == AUTO) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   369
                val = 0;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   370
            } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   371
                val = ComputedStyle.getPixel(node, att);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   372
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   373
            return val + PX;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   374
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   375
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   376
        getVisibility: function(node, att) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   377
            var current;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   378
            while ( (current = node.currentStyle) && current[att] == 'inherit') { // NOTE: assignment in test
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   379
                node = node.parentNode;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   380
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   381
            return (current) ? current[att] : VISIBLE;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   382
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   383
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   384
        getColor: function(node, att) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   385
            var current = _getStyleObj(node)[att];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   386
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   387
            if (!current || current === TRANSPARENT) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   388
                Y.DOM.elementByAxis(node, 'parentNode', null, function(parent) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   389
                    current = _getStyleObj(parent)[att];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   390
                    if (current && current !== TRANSPARENT) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   391
                        node = parent;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   392
                        return true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   393
                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   394
                });
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
            return Y.Color.toRGB(current);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   398
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   399
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   400
        getBorderColor: function(node, att) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   401
            var current = _getStyleObj(node),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   402
                val = current[att] || current.color;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   403
            return Y.Color.toRGB(Y.Color.toHex(val));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   404
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   405
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   406
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   407
    //fontSize: getPixelFont,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   408
    IEComputed = {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   409
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   410
// use alpha filter for IE opacity
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   411
if (documentElement.style[OPACITY] === UNDEFINED &&
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   412
        documentElement[FILTERS]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   413
    Y.DOM.CUSTOM_STYLES[OPACITY] = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   414
        get: function(node) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   415
            var val = 100;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   416
            try { // will error if no DXImageTransform
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   417
                val = node[FILTERS]['DXImageTransform.Microsoft.Alpha'][OPACITY];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   418
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   419
            } catch(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   420
                try { // make sure its in the document
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   421
                    val = node[FILTERS]('alpha')[OPACITY];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   422
                } catch(err) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   423
                    Y.log('getStyle: IE opacity filter not found; returning 1', 'warn', 'dom-style');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   424
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   425
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   426
            return val / 100;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   427
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   428
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   429
        set: function(node, val, style) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   430
            var current,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   431
                styleObj;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   432
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   433
            if (val === '') { // normalize inline style behavior
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   434
                styleObj = _getStyleObj(node);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   435
                current = (OPACITY in styleObj) ? styleObj[OPACITY] : 1; // revert to original opacity
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   436
                val = current;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   437
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   438
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   439
            if (typeof style[FILTER] == 'string') { // in case not appended
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   440
                style[FILTER] = 'alpha(' + OPACITY + '=' + val * 100 + ')';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   441
                
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   442
                if (!node.currentStyle || !node.currentStyle[HAS_LAYOUT]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   443
                    style.zoom = 1; // needs layout 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   444
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   445
            }
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
try {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   451
    document.createElement('div').style.height = '-1px';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   452
} catch(e) { // IE throws error on invalid style set; trap common cases
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   453
    Y.DOM.CUSTOM_STYLES.height = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   454
        set: function(node, val, style) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   455
            if (parseInt(val, 10) >= 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   456
                style.height = val;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   457
            } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   458
                Y.log('invalid style value for height: ' + val, 'warn', 'dom-style');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   459
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   460
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   461
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   462
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   463
    Y.DOM.CUSTOM_STYLES.width = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   464
        set: function(node, val, style) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   465
            if (parseInt(val, 10) >= 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   466
                style.width = val;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   467
            } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   468
                Y.log('invalid style value for width: ' + val, 'warn', 'dom-style');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   469
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   470
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   471
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   472
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   473
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   474
// TODO: top, right, bottom, left
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   475
IEComputed[WIDTH] = IEComputed[HEIGHT] = ComputedStyle.getOffset;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   476
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   477
IEComputed.color = IEComputed.backgroundColor = ComputedStyle.getColor;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   478
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   479
IEComputed[BORDER_TOP_WIDTH] = IEComputed[BORDER_RIGHT_WIDTH] =
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   480
        IEComputed[BORDER_BOTTOM_WIDTH] = IEComputed[BORDER_LEFT_WIDTH] =
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   481
        ComputedStyle.getBorderWidth;
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.marginTop = IEComputed.marginRight = IEComputed.marginBottom =
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   484
        IEComputed.marginLeft = ComputedStyle.getMargin;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   485
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   486
IEComputed.visibility = ComputedStyle.getVisibility;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   487
IEComputed.borderColor = IEComputed.borderTopColor =
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   488
        IEComputed.borderRightColor = IEComputed.borderBottomColor =
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   489
        IEComputed.borderLeftColor = ComputedStyle.getBorderColor;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   490
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   491
if (!Y.config.win[GET_COMPUTED_STYLE]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   492
    Y.DOM[GET_COMPUTED_STYLE] = ComputedStyle.get; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   493
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   494
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   495
Y.namespace('DOM.IE');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   496
Y.DOM.IE.COMPUTED = IEComputed;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   497
Y.DOM.IE.ComputedStyle = ComputedStyle;
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);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   500
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   501
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   502
}, '3.0.0b1' ,{skinnable:false, requires:['dom-base']});