src/cm/media/js/lib/yui/yui_3.0.0b1/build/loader/loader.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('loader', 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() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    11
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    12
 * Loader dynamically loads script and css files.  It includes the dependency
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
 * info for the version of the library in use, and will automatically pull in
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    14
 * dependencies for the modules requested.  It supports rollup files and will
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    15
 * automatically use these when appropriate in order to minimize the number of
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
 * http connections required to load all of the dependencies.  It can load the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
 * files from the Yahoo! CDN, and it can utilize the combo service provided on
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    18
 * this network to reduce the number of http connections required to download 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    19
 * YUI files.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    20
 *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    21
 * @module yui
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    22
 * @submodule loader
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    23
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    24
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    25
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    26
 * Loader dynamically loads script and css files.  It includes the dependency
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    27
 * info for the version of the library in use, and will automatically pull in
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    28
 * dependencies for the modules requested.  It supports rollup files and will
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    29
 * automatically use these when appropriate in order to minimize the number of
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    30
 * http connections required to load all of the dependencies.  It can load the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    31
 * files from the Yahoo! CDN, and it can utilize the combo service provided on
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    32
 * this network to reduce the number of http connections required to download 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    33
 * YUI files.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    34
 * @class Loader
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    35
 * @constructor
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    36
 * @param o an optional set of configuration options.  Valid options:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    37
 * <ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    38
 *  <li>base:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    39
 *  The base dir</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    40
 *  <li>secureBase:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    41
 *  The secure base dir (not implemented)</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    42
 *  <li>comboBase:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    43
 *  The YUI combo service base dir. Ex: http://yui.yahooapis.com/combo?</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    44
 *  <li>root:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    45
 *  The root path to prepend to module names for the combo service. Ex: 2.5.2/build/</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    46
 *  <li>filter:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    47
 *  
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    48
 * A filter to apply to result urls.  This filter will modify the default
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    49
 * path for all modules.  The default path for the YUI library is the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    50
 * minified version of the files (e.g., event-min.js).  The filter property
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    51
 * can be a predefined filter or a custom filter.  The valid predefined 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    52
 * filters are:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    53
 * <dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    54
 *  <dt>DEBUG</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    55
 *  <dd>Selects the debug versions of the library (e.g., event-debug.js).
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    56
 *      This option will automatically include the Logger widget</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    57
 *  <dt>RAW</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    58
 *  <dd>Selects the non-minified version of the library (e.g., event.js).</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    59
 * </dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    60
 * You can also define a custom filter, which must be an object literal 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    61
 * containing a search expression and a replace string:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    62
 * <pre>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    63
 *  myFilter: &#123; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    64
 *      'searchExp': "-min\\.js", 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    65
 *      'replaceStr': "-debug.js"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    66
 *  &#125;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    67
 * </pre>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    68
 *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    69
 *  </li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    70
 *  <li>filters: per-component filter specification.  If specified for a given component, this overrides the filter config</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    71
 *  <li>combine:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    72
 *  Use the YUI combo service to reduce the number of http connections required to load your dependencies</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    73
 *  <li>ignore:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    74
 *  A list of modules that should never be dynamically loaded</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    75
 *  <li>force:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    76
 *  A list of modules that should always be loaded when required, even if already present on the page</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    77
 *  <li>insertBefore:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    78
 *  Node or id for a node that should be used as the insertion point for new nodes</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    79
 *  <li>charset:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    80
 *  charset for dynamic nodes (deprecated, use jsAttributes or cssAttributes)</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    81
 *  <li>jsAttributes: object literal containing attributes to add to script nodes</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    82
 *  <li>cssAttributes: object literal containing attributes to add to link nodes</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    83
 *  <li>timeout:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    84
 *  number of milliseconds before a timeout occurs when dynamically loading nodes.  in not set, there is no timeout</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    85
 *  <li>context:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    86
 *  execution context for all callbacks</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    87
 *  <li>onSuccess:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    88
 *  callback for the 'success' event</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    89
 *  <li>onFailure: callback for the 'failure' event</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    90
 *  <li>onCSS: callback for the 'CSSComplete' event.  When loading YUI components with CSS
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    91
 *  the CSS is loaded first, then the script.  This provides a moment you can tie into to improve
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    92
 *  the presentation of the page while the script is loading.</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    93
 *  <li>onTimeout:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    94
 *  callback for the 'timeout' event</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    95
 *  <li>onProgress:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    96
 *  callback executed each time a script or css file is loaded</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    97
 *  <li>modules:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    98
 *  A list of module definitions.  See Loader.addModule for the supported module metadata</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    99
 * </ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   100
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   101
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   102
// @TODO backed out the custom event changes so that the event system
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   103
// isn't required in the seed build.  If needed, we may want to 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   104
// add them back if the event system is detected.
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
 * Global loader queue
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   109
 * @property _loaderQueue
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   110
 * @type Queue
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   111
 * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   112
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   113
YUI.Env._loaderQueue = YUI.Env._loaderQueue || new Y.Queue();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   114
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   115
var GLOBAL_ENV = YUI.Env,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   116
    GLOBAL_LOADED,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   117
    BASE = 'base', 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   118
    CSS = 'css',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   119
    JS = 'js',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   120
    CSSRESET = 'cssreset',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   121
    CSSFONTS = 'cssfonts',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   122
    CSSGRIDS = 'cssgrids',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   123
    CSSBASE  = 'cssbase',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   124
    CSS_AFTER = [CSSRESET, CSSFONTS, CSSGRIDS, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   125
                 'cssreset-context', 'cssfonts-context', 'cssgrids-context'],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   126
    YUI_CSS = ['reset', 'fonts', 'grids', BASE],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   127
    VERSION = Y.version,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   128
    ROOT = VERSION + '/build/',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   129
    CONTEXT = '-context',
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
    ANIMBASE = 'anim-base',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   133
    DDDRAG = 'dd-drag',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   134
    DOM = 'dom',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   135
    DATASCHEMABASE = 'dataschema-base',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   136
    DATASOURCELOCAL = 'datasource-local',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   137
    DOMBASE = 'dom-base',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   138
    DOMSTYLE = 'dom-style',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   139
    DUMP = 'dump',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   140
    GET = 'get',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   141
    EVENT = 'event',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   142
    EVENTCUSTOM = 'event-custom',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   143
    IOBASE = 'io-base',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   144
    NODE = 'node',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   145
    NODEBASE = 'node-base',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   146
    OOP = 'oop',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   147
    SELECTORCSS2 = 'selector-css2',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   148
    SUBSTITUTE = 'substitute',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   149
    WIDGET = 'widget',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   150
    WIDGETPOSITION = 'widget-position',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   151
    YUIBASE = 'yui-base',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   152
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   153
	PLUGIN = 'plugin',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   154
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   155
    META = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   156
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   157
    version: VERSION,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   158
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   159
    root: ROOT,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   160
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   161
    base: 'http://yui.yahooapis.com/' + ROOT,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   162
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   163
    comboBase: 'http://yui.yahooapis.com/combo?',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   164
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   165
    skin: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   166
        defaultSkin: 'sam',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   167
        base: 'assets/skins/',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   168
        path: 'skin.css',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   169
        after: CSS_AFTER
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   170
        //rollup: 3
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   171
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   172
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   173
    modules: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   174
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   175
       dom: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   176
            requires: [OOP],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   177
            submodules: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   178
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   179
                'dom-base': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   180
                    requires: [OOP]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   181
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   182
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   183
                'dom-style': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   184
                    requires: [DOMBASE]
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
                'dom-screen': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   188
                    requires: [DOMBASE, DOMSTYLE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   189
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   190
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   191
                'selector-native': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   192
                    requires: [DOMBASE]
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
                'selector-css2': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   196
                    requires: ['selector-native']
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   197
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   198
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   199
                'selector': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   200
                    requires: [DOMBASE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   201
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   202
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
            plugins: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   206
                'selector-css3': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   207
                    requires: [SELECTORCSS2]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   208
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   209
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   210
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   211
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   212
        node: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   213
            requires: [DOM, BASE],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   214
            expound: EVENT,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   215
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   216
            submodules: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   217
                'node-base': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   218
                    requires: [DOMBASE, BASE, SELECTORCSS2]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   219
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   220
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   221
                'node-style': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   222
                    requires: [DOMSTYLE, NODEBASE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   223
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   224
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   225
                'node-screen': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   226
                    requires: ['dom-screen', NODEBASE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   227
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   228
            },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   229
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   230
            plugins: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   231
                'node-event-simulate': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   232
                    requires: [NODEBASE, 'event-simulate']
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   233
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   234
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   235
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   236
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   237
        anim: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   238
            requires: [BASE, NODE],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   239
            submodules: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   240
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   241
                'anim-base': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   242
                    requires: [BASE, 'node-style']
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   243
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   244
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   245
                'anim-color': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   246
                    requires: [ANIMBASE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   247
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   248
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   249
                'anim-curve': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   250
                    requires: ['anim-xy']
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   251
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   252
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   253
                'anim-easing': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   254
                    requires: [ANIMBASE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   255
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   256
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   257
                'anim-scroll': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   258
                    requires: [ANIMBASE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   259
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   260
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   261
                'anim-xy': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   262
                    requires: [ANIMBASE, 'node-screen']
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   263
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   264
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   265
                'anim-node-plugin': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   266
                     requires: [NODE, ANIMBASE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   267
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   268
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   269
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   270
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   271
        attribute: { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   272
            requires: [EVENTCUSTOM]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   273
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   274
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   275
        base: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   276
            submodules: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   277
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   278
                'base-base': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   279
                    requires: ['attribute']
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   280
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   281
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   282
                'base-build': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   283
                    requires: ['base-base']
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
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   288
        cache: { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   289
            requires: [PLUGIN]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   290
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   291
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   292
        compat: { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   293
            requires: [NODE, DUMP, SUBSTITUTE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   294
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   295
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   296
        classnamemanager: { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   297
            requires: [YUIBASE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   298
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   299
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   300
        collection: { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   301
            requires: [OOP]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   302
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   303
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   304
        console: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   305
            requires: [WIDGET, SUBSTITUTE],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   306
            skinnable: true,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   307
            plugins: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   308
                'console-filters': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   309
                    requires: [PLUGIN],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   310
                    skinnable: true
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   311
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   312
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   313
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   314
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   315
        cookie: { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   316
            requires: [YUIBASE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   317
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   318
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   319
        dataschema:{
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   320
            submodules: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   321
                'dataschema-base': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   322
                    requires: [BASE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   323
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   324
                'dataschema-array': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   325
                    requires: [DATASCHEMABASE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   326
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   327
                'dataschema-json': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   328
                    requires: [DATASCHEMABASE, 'json']
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   329
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   330
                'dataschema-text': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   331
                    requires: [DATASCHEMABASE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   332
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   333
                'dataschema-xml': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   334
                    requires: [DATASCHEMABASE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   335
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   336
            }
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
        datasource:{
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   340
            submodules: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   341
                'datasource-local': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   342
                    requires: [BASE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   343
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   344
                'datasource-arrayschema': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   345
                    requires: [DATASOURCELOCAL, PLUGIN, 'dataschema-array']
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   346
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   347
                'datasource-cache': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   348
                    requires: [DATASOURCELOCAL, 'cache']
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   349
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   350
                'datasource-function': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   351
                    requires: [DATASOURCELOCAL]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   352
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   353
                'datasource-jsonschema': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   354
                    requires: [DATASOURCELOCAL, PLUGIN, 'dataschema-json']
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   355
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   356
                'datasource-polling': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   357
                    requires: [DATASOURCELOCAL]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   358
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   359
                'datasource-get': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   360
                    requires: [DATASOURCELOCAL, GET]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   361
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   362
                'datasource-textschema': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   363
                    requires: [DATASOURCELOCAL, PLUGIN, 'dataschema-text']
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   364
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   365
                'datasource-io': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   366
                    requires: [DATASOURCELOCAL, IOBASE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   367
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   368
                'datasource-xmlschema': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   369
                    requires: [DATASOURCELOCAL, PLUGIN, 'dataschema-xml']
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   370
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   371
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   372
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   373
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   374
        datatype:{
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   375
            submodules: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   376
                'datatype-date': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   377
                    requires: [YUIBASE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   378
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   379
                'datatype-number': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   380
                    requires: [YUIBASE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   381
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   382
                'datatype-xml': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   383
                    requires: [YUIBASE]
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
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   387
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   388
        dd:{
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   389
            submodules: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   390
                'dd-ddm-base': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   391
                    requires: [NODE, BASE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   392
                }, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   393
                'dd-ddm':{
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   394
                    requires: ['dd-ddm-base']
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   395
                }, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   396
                'dd-ddm-drop':{
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   397
                    requires: ['dd-ddm']
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   398
                }, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   399
                'dd-drag':{
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   400
                    requires: ['dd-ddm-base']
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   401
                }, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   402
                'dd-drop':{
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   403
                    requires: ['dd-ddm-drop']
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   404
                }, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   405
                'dd-proxy':{
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   406
                    requires: [DDDRAG]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   407
                }, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   408
                'dd-constrain':{
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   409
                    requires: [DDDRAG]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   410
                }, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   411
                'dd-scroll':{
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   412
                    requires: [DDDRAG]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   413
                }, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   414
                'dd-plugin':{
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   415
                    requires: [DDDRAG],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   416
                    optional: ['dd-constrain', 'dd-proxy']
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   417
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   418
                'dd-drop-plugin':{
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   419
                    requires: ['dd-drop']
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   420
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   421
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   422
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   423
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   424
        dump: { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   425
            requires: [YUIBASE]
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
        event: { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   429
            requires: [EVENTCUSTOM, NODE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   430
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   431
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   432
        'event-custom': { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   433
            requires: [OOP]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   434
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   435
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   436
        'event-simulate': { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   437
            requires: [EVENT]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   438
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   439
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   440
        'node-focusmanager': { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   441
            requires: [NODE, PLUGIN]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   442
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   443
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   444
        get: { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   445
            requires: [YUIBASE]
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
        history: { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   449
            requires: [NODE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   450
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   451
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   452
        imageloader: { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   453
            requires: [NODE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   454
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   455
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   456
        io:{
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   457
            submodules: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   458
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   459
                'io-base': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   460
                    requires: [EVENTCUSTOM]
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
                'io-xdr': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   464
                    requires: [IOBASE]
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
                'io-form': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   468
                    requires: [IOBASE, NODE]
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
                'io-upload-iframe': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   472
                    requires: [IOBASE, NODE]
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
                'io-queue': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   476
                    requires: [IOBASE, 'queue-promote']
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   477
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   478
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   479
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   480
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   481
        json: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   482
            submodules: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   483
                'json-parse': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   484
                    requires: [YUIBASE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   485
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   486
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   487
                'json-stringify': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   488
                    requires: [YUIBASE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   489
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   490
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   491
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   492
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   493
        loader: { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   494
            requires: [GET]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   495
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   496
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   497
        'node-menunav': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   498
            requires: [NODE, 'classnamemanager', PLUGIN, 'node-focusmanager'],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   499
            skinnable: true
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
        oop: { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   503
            requires: [YUIBASE]
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
        overlay: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   507
            requires: [WIDGET, WIDGETPOSITION, 'widget-position-ext', 'widget-stack', 'widget-stdmod'],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   508
            skinnable: true
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   509
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   510
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   511
        plugin: { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   512
            requires: [BASE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   513
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   514
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   515
        profiler: { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   516
            requires: [YUIBASE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   517
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   518
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   519
        queue: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   520
            submodules: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   521
                'queue-base': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   522
                    requires: [YUIBASE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   523
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   524
                'queue-run': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   525
                    requires: ['queue-base', EVENTCUSTOM]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   526
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   527
            },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   528
            plugins: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   529
                'queue-promote': { }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   530
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   531
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   532
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   533
        slider: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   534
            requires: [WIDGET, 'dd-constrain'],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   535
            skinnable: true
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   536
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   537
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   538
        stylesheet: { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   539
            requires: [YUIBASE]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   540
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   541
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   542
        substitute: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   543
            optional: [DUMP]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   544
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   545
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   546
        widget: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   547
            requires: [BASE, NODE, 'classnamemanager'],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   548
            plugins: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   549
                'widget-position': { },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   550
                'widget-position-ext': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   551
                    requires: [WIDGETPOSITION]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   552
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   553
                'widget-stack': {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   554
                    skinnable: true
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   555
                },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   556
                'widget-stdmod': { }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   557
            },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   558
            skinnable: true
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   559
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   560
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   561
        yui: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   562
            supersedes: [YUIBASE, GET, 'loader', 'queue-base']
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   563
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   564
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   565
        'yui-base': { },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   566
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   567
        test: {                                                                                                                                                        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   568
            requires: [SUBSTITUTE, NODE, 'json', 'event-simulate']                                                                                                                     
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   569
        }  
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   570
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   571
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   572
},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   573
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   574
_path = function(dir, file, type) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   575
    return dir + '/' + file + '-min.' + (type || CSS);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   576
},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   577
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   578
_queue = YUI.Env._loaderQueue,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   579
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   580
mods  = META.modules, i, bname, mname, contextname,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   581
L     = Y.Lang, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   582
PROV  = "_provides", 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   583
SUPER = "_supersedes";
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   584
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   585
// Create the metadata for both the regular and context-aware
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   586
// versions of the YUI CSS foundation.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   587
for (i=0; i<YUI_CSS.length; i=i+1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   588
    bname = YUI_CSS[i];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   589
    mname = CSS + bname;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   590
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   591
    mods[mname] = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   592
        type: CSS,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   593
        path: _path(mname, bname)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   594
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   595
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   596
    // define -context module
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   597
    contextname = mname + CONTEXT;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   598
    bname = bname + CONTEXT;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   599
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   600
    mods[contextname] = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   601
        type: CSS,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   602
        path: _path(mname, bname)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   603
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   604
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   605
    if (mname == CSSGRIDS) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   606
        mods[mname].requires = [CSSFONTS];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   607
        mods[mname].optional = [CSSRESET];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   608
        mods[contextname].requires = [CSSFONTS + CONTEXT];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   609
        mods[contextname].optional = [CSSRESET + CONTEXT];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   610
    } else if (mname == CSSBASE) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   611
        mods[mname].after = CSS_AFTER;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   612
        mods[contextname].after = CSS_AFTER;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   613
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   614
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   615
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   616
Y.Env.meta = META;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   617
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   618
GLOBAL_LOADED = GLOBAL_ENV._loaded;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   619
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   620
Y.Loader = function(o) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   621
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   622
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   623
     * Internal callback to handle multiple internal insert() calls
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   624
     * so that css is inserted prior to js
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   625
     * @property _internalCallback
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   626
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   627
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   628
    this._internalCallback = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   629
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   630
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   631
     * Use the YUI environment listener to detect script load.  This
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   632
     * is only switched on for Safari 2.x and below.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   633
     * @property _useYahooListener
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   634
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   635
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   636
    this._useYahooListener = false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   637
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   638
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   639
     * Callback that will be executed when the loader is finished
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   640
     * with an insert
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   641
     * @method onSuccess
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   642
     * @type function
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   643
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   644
    this.onSuccess = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   645
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   646
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   647
     * Callback that will be executed if there is a failure
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   648
     * @method onFailure
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   649
     * @type function
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   650
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   651
    this.onFailure = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   652
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   653
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   654
     * Callback for the 'CSSComplete' event.  When loading YUI components with CSS
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   655
     * the CSS is loaded first, then the script.  This provides a moment you can tie into to improve
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   656
     * the presentation of the page while the script is loading.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   657
     * @method onCSS
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   658
     * @type function
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   659
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   660
    this.onCSS = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   661
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   662
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   663
     * Callback executed each time a script or css file is loaded
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   664
     * @method onProgress
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   665
     * @type function
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   666
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   667
    this.onProgress = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   668
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   669
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   670
     * Callback that will be executed if a timeout occurs
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   671
     * @method onTimeout
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   672
     * @type function
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   673
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   674
    this.onTimeout = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   675
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   676
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   677
     * The execution context for all callbacks
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   678
     * @property context
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   679
     * @default {YUI} the YUI instance
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   680
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   681
    this.context = Y;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   682
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   683
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   684
     * Data that is passed to all callbacks
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   685
     * @property data
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   686
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   687
    this.data = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   688
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   689
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   690
     * Node reference or id where new nodes should be inserted before
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   691
     * @property insertBefore
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   692
     * @type string|HTMLElement
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   693
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   694
    this.insertBefore = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   695
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   696
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   697
     * The charset attribute for inserted nodes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   698
     * @property charset
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   699
     * @type string
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   700
     * @deprecated, use cssAttributes or jsAttributes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   701
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   702
    this.charset = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   703
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   704
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   705
     * An object literal containing attributes to add to link nodes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   706
     * @property cssAttributes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   707
     * @type object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   708
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   709
    this.cssAttributes = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   710
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   711
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   712
     * An object literal containing attributes to add to script nodes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   713
     * @property jsAttributes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   714
     * @type object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   715
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   716
    this.jsAttributes = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   717
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   718
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   719
     * The base directory.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   720
     * @property base
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   721
     * @type string
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   722
     * @default http://yui.yahooapis.com/[YUI VERSION]/build/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   723
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   724
    this.base = Y.Env.meta.base;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   725
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   726
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   727
     * Base path for the combo service
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   728
     * @property comboBase
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   729
     * @type string
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   730
     * @default http://yui.yahooapis.com/combo?
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   731
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   732
    this.comboBase = Y.Env.meta.comboBase;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   733
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   734
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   735
     * If configured, YUI JS resources will use the combo
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   736
     * handler
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   737
     * @property combine
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   738
     * @type boolean
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   739
     * @default true if a base dir isn't in the config
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   740
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   741
    this.combine = (!(BASE in o));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   742
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   743
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   744
     * Ignore modules registered on the YUI global
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   745
     * @property ignoreRegistered
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   746
     * @default false
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   747
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   748
    this.ignoreRegistered = false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   749
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   750
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   751
     * Root path to prepend to module path for the combo
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   752
     * service
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   753
     * @property root
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   754
     * @type string
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   755
     * @default [YUI VERSION]/build/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   756
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   757
    this.root = Y.Env.meta.root;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   758
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   759
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   760
     * Timeout value in milliseconds.  If set, this value will be used by
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   761
     * the get utility.  the timeout event will fire if
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   762
     * a timeout occurs.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   763
     * @property timeout
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   764
     * @type int
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   765
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   766
    this.timeout = 0;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   767
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   768
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   769
     * A list of modules that should not be loaded, even if
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   770
     * they turn up in the dependency tree
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   771
     * @property ignore
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   772
     * @type string[]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   773
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   774
    this.ignore = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   775
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   776
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   777
     * A list of modules that should always be loaded, even
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   778
     * if they have already been inserted into the page.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   779
     * @property force
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   780
     * @type string[]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   781
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   782
    this.force = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   783
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   784
    this.forceMap = {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   785
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   786
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   787
     * Should we allow rollups
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   788
     * @property allowRollup
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   789
     * @type boolean
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   790
     * @default true
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   791
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   792
    this.allowRollup = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   793
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   794
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   795
     * A filter to apply to result urls.  This filter will modify the default
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   796
     * path for all modules.  The default path for the YUI library is the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   797
     * minified version of the files (e.g., event-min.js).  The filter property
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   798
     * can be a predefined filter or a custom filter.  The valid predefined 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   799
     * filters are:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   800
     * <dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   801
     *  <dt>DEBUG</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   802
     *  <dd>Selects the debug versions of the library (e.g., event-debug.js).
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   803
     *      This option will automatically include the Logger widget</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   804
     *  <dt>RAW</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   805
     *  <dd>Selects the non-minified version of the library (e.g., event.js).</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   806
     * </dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   807
     * You can also define a custom filter, which must be an object literal 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   808
     * containing a search expression and a replace string:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   809
     * <pre>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   810
     *  myFilter: &#123; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   811
     *      'searchExp': "-min\\.js", 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   812
     *      'replaceStr': "-debug.js"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   813
     *  &#125;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   814
     * </pre>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   815
     * @property filter
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   816
     * @type string|{searchExp: string, replaceStr: string}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   817
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   818
    this.filter = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   819
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   820
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   821
     * per-component filter specification.  If specified for a given component, this 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   822
     * overrides the filter config.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   823
     * @property filters
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   824
     * @type object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   825
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   826
    this.filters = {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   827
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   828
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   829
     * The list of requested modules
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   830
     * @property required
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   831
     * @type {string: boolean}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   832
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   833
    this.required = {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   834
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   835
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   836
     * The library metadata
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   837
     * @property moduleInfo
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   838
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   839
    // this.moduleInfo = Y.merge(Y.Env.meta.moduleInfo);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   840
    this.moduleInfo = {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   841
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   842
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   843
     * Provides the information used to skin the skinnable components.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   844
     * The following skin definition would result in 'skin1' and 'skin2'
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   845
     * being loaded for calendar (if calendar was requested), and
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   846
     * 'sam' for all other skinnable components:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   847
     *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   848
     *   <code>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   849
     *   skin: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   850
     *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   851
     *      // The default skin, which is automatically applied if not
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   852
     *      // overriden by a component-specific skin definition.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   853
     *      // Change this in to apply a different skin globally
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   854
     *      defaultSkin: 'sam', 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   855
     *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   856
     *      // This is combined with the loader base property to get
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   857
     *      // the default root directory for a skin. ex:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   858
     *      // http://yui.yahooapis.com/2.3.0/build/assets/skins/sam/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   859
     *      base: 'assets/skins/',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   860
     *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   861
     *      // The name of the rollup css file for the skin
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   862
     *      path: 'skin.css',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   863
     *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   864
     *      // The number of skinnable components requested that are
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   865
     *      // required before using the rollup file rather than the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   866
     *      // individual component css files
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   867
     *      rollup: 3,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   868
     *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   869
     *      // Any component-specific overrides can be specified here,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   870
     *      // making it possible to load different skins for different
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   871
     *      // components.  It is possible to load more than one skin
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   872
     *      // for a given component as well.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   873
     *      overrides: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   874
     *          calendar: ['skin1', 'skin2']
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   875
     *      }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   876
     *   }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   877
     *   </code>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   878
     *   @property skin
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   879
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   880
     this.skin = Y.merge(Y.Env.meta.skin);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   881
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   882
    var defaults = Y.Env.meta.modules, i;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   883
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   884
    for (i in defaults) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   885
        if (defaults.hasOwnProperty(i)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   886
            this._internal = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   887
            this.addModule(defaults[i], i);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   888
            this._internal = false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   889
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   890
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   891
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   892
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   893
     * List of rollup files found in the library metadata
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   894
     * @property rollups
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   895
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   896
    this.rollups = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   897
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   898
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   899
     * Whether or not to load optional dependencies for 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   900
     * the requested modules
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   901
     * @property loadOptional
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   902
     * @type boolean
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   903
     * @default false
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   904
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   905
    this.loadOptional = false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   906
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   907
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   908
     * All of the derived dependencies in sorted order, which
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   909
     * will be populated when either calculate() or insert()
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   910
     * is called
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   911
     * @property sorted
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   912
     * @type string[]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   913
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   914
    this.sorted = [];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   915
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   916
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   917
     * Set when beginning to compute the dependency tree. 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   918
     * Composed of what YUI reports to be loaded combined
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   919
     * with what has been loaded by any instance on the page
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   920
     * with the version number specified in the metadata.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   921
     * @propery loaded
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   922
     * @type {string: boolean}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   923
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   924
    this.loaded = GLOBAL_LOADED[VERSION];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   925
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   926
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   927
     * A list of modules to attach to the YUI instance when complete.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   928
     * If not supplied, the sorted list of dependencies are applied.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   929
     * @property attaching
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   930
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   931
    this.attaching = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   932
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   933
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   934
     * Flag to indicate the dependency tree needs to be recomputed
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   935
     * if insert is called again.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   936
     * @property dirty
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   937
     * @type boolean
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   938
     * @default true
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   939
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   940
    this.dirty = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   941
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   942
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   943
     * List of modules inserted by the utility
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   944
     * @property inserted
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   945
     * @type {string: boolean}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   946
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   947
    this.inserted = {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   948
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   949
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   950
     * List of skipped modules during insert() because the module
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   951
     * was not defined
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   952
     * @property skipped
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   953
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   954
    this.skipped = {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   955
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   956
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   957
    // Y.on('yui:load', this.loadNext, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   958
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   959
    this._config(o);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   960
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   961
};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   962
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   963
Y.Loader.prototype = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   964
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   965
    FILTER_DEFS: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   966
        RAW: { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   967
            'searchExp': "-min\\.js", 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   968
            'replaceStr': ".js"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   969
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   970
        DEBUG: { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   971
            'searchExp': "-min\\.js", 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   972
            'replaceStr': "-debug.js"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   973
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   974
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   975
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   976
    SKIN_PREFIX: "skin-",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   977
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   978
    _config: function(o) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   979
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   980
        var i, j, val, f;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   981
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   982
        // apply config values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   983
        if (o) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   984
            for (i in o) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   985
                if (o.hasOwnProperty(i)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   986
                    val = o[i];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   987
                    if (i == 'require') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   988
                        this.require(val);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   989
                    } else if (i == 'modules') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   990
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   991
                        // add a hash of module definitions
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   992
                        for (j in val) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   993
                            if (val.hasOwnProperty(j)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   994
                                this.addModule(val[j], j);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   995
                            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   996
                        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   997
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   998
                    } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   999
                        this[i] = val;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1000
                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1001
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1002
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1003
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1004
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1005
        // fix filter
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1006
        f = this.filter;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1007
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1008
        if (L.isString(f)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1009
            f = f.toUpperCase();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1010
            this.filterName = f;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1011
            this.filter = this.FILTER_DEFS[f];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1012
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1013
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1014
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1015
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1016
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1017
     * Returns the skin module name for the specified skin name.  If a
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1018
     * module name is supplied, the returned skin module name is 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1019
     * specific to the module passed in.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1020
     * @method formatSkin
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1021
     * @param skin {string} the name of the skin
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1022
     * @param mod {string} optional: the name of a module to skin
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1023
     * @return {string} the full skin module name
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1024
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1025
    formatSkin: function(skin, mod) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1026
        var s = this.SKIN_PREFIX + skin;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1027
        if (mod) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1028
            s = s + "-" + mod;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1029
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1030
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1031
        return s;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1032
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1033
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1034
    /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1035
     * Reverses <code>formatSkin</code>, providing the skin name and
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1036
     * module name if the string matches the pattern for skins.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1037
     * @method parseSkin
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1038
     * @param mod {string} the module name to parse
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1039
     * @return {skin: string, module: string} the parsed skin name 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1040
     * and module name, or null if the supplied string does not match
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1041
     * the skin pattern
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1042
     * 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1043
     * This isn't being used at the moment
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1044
     *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1045
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1046
    // parseSkin: function(mod) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1047
    //     
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1048
    //     if (mod.indexOf(this.SKIN_PREFIX) === 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1049
    //         var a = mod.split("-");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1050
    //         return {skin: a[1], module: a[2]};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1051
    //     } 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1052
    //     return null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1053
    // },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1054
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1055
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1056
     * Adds the skin def to the module info
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1057
     * @method _addSkin
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1058
     * @param skin {string} the name of the skin
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1059
     * @param mod {string} the name of the module
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1060
     * @param parent {string} parent module if this is a skin of a
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1061
     * submodule or plugin
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1062
     * @return {string} the module name for the skin
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1063
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1064
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1065
    _addSkin: function(skin, mod, parent) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1066
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1067
        var name = this.formatSkin(skin), 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1068
            info = this.moduleInfo,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1069
            sinf = this.skin, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1070
            ext  = info[mod] && info[mod].ext,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1071
            mdef, pkg;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1072
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1073
        /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1074
        // Add a module definition for the skin rollup css
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1075
        if (!info[name]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1076
            this.addModule({
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1077
                'name': name,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1078
                'type': 'css',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1079
                'path': sinf.base + skin + '/' + sinf.path,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1080
                //'supersedes': '*',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1081
                'after': sinf.after,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1082
                'rollup': sinf.rollup,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1083
                'ext': ext
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1084
            });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1085
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1086
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1087
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1088
        // Add a module definition for the module-specific skin css
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1089
        if (mod) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1090
            name = this.formatSkin(skin, mod);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1091
            if (!info[name]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1092
                mdef = info[mod];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1093
                pkg = mdef.pkg || mod;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1094
                this.addModule({
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1095
                    'name': name,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1096
                    'type': 'css',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1097
                    'after': sinf.after,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1098
                    'path': (parent || pkg) + '/' + sinf.base + skin + '/' + mod + '.css',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1099
                    'ext': ext
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1100
                });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1101
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1102
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1103
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1104
        return name;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1105
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1106
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1107
    /** Add a new module to the component metadata.         
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1108
     * <dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1109
     *     <dt>name:</dt>       <dd>required, the component name</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1110
     *     <dt>type:</dt>       <dd>required, the component type (js or css)</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1111
     *     <dt>path:</dt>       <dd>required, the path to the script from "base"</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1112
     *     <dt>requires:</dt>   <dd>array of modules required by this component</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1113
     *     <dt>optional:</dt>   <dd>array of optional modules for this component</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1114
     *     <dt>supersedes:</dt> <dd>array of the modules this component replaces</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1115
     *     <dt>after:</dt>      <dd>array of modules the components which, if present, should be sorted above this one</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1116
     *     <dt>rollup:</dt>     <dd>the number of superseded modules required for automatic rollup</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1117
     *     <dt>fullpath:</dt>   <dd>If fullpath is specified, this is used instead of the configured base + path</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1118
     *     <dt>skinnable:</dt>  <dd>flag to determine if skin assets should automatically be pulled in</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1119
     *     <dt>submodules:</dt> <dd>a has of submodules</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1120
     * </dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1121
     * @method addModule
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1122
     * @param o An object containing the module data
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1123
     * @param name the module name (optional), required if not in the module data
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1124
     * @return {boolean} true if the module was added, false if 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1125
     * the object passed in did not provide all required attributes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1126
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1127
    addModule: function(o, name) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1128
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1129
        name = name || o.name;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1130
        o.name = name;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1131
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1132
        if (!o || !o.name) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1133
            return false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1134
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1135
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1136
        if (!o.type) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1137
            o.type = JS;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1138
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1139
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1140
        if (!o.path && !o.fullpath) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1141
            // o.path = name + "/" + name + "-min." + o.type;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1142
            o.path = _path(name, name, o.type);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1143
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1144
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1145
        o.ext = ('ext' in o) ? o.ext : (this._internal) ? false : true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1146
        o.requires = o.requires || [];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1147
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1148
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1149
        this.moduleInfo[name] = o;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1150
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1151
        // Handle submodule logic
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1152
        var subs = o.submodules, i, l, sup, s, smod, plugins, plug;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1153
        if (subs) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1154
            sup = []; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1155
            l   = 0;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1156
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1157
            for (i in subs) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1158
                if (subs.hasOwnProperty(i)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1159
                    s = subs[i];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1160
                    s.path = _path(name, i, o.type);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1161
                    this.addModule(s, i);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1162
                    sup.push(i);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1163
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1164
                    if (o.skinnable) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1165
                        smod = this._addSkin(this.skin.defaultSkin, i, name);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1166
                        sup.push(smod.name);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1167
                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1168
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1169
                    l++;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1170
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1171
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1172
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1173
            o.supersedes = sup;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1174
            o.rollup = Math.min(l-1, 4);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1175
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1176
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1177
        plugins = o.plugins;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1178
        if (plugins) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1179
            for (i in plugins) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1180
                if (plugins.hasOwnProperty(i)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1181
                    plug = plugins[i];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1182
                    plug.path = _path(name, i, o.type);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1183
                    plug.requires = plug.requires || [];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1184
                    plug.requires.push(name);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1185
                    this.addModule(plug, i);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1186
                    if (o.skinnable) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1187
                        this._addSkin(this.skin.defaultSkin, i, name);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1188
                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1189
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1190
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1191
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1192
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1193
        this.dirty = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1194
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1195
        return o;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1196
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1197
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1198
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1199
     * Add a requirement for one or more module
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1200
     * @method require
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1201
     * @param what {string[] | string*} the modules to load
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1202
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1203
    require: function(what) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1204
        var a = (typeof what === "string") ? arguments : what;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1205
        this.dirty = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1206
        Y.mix(this.required, Y.Array.hash(a));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1207
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1208
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1209
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1210
     * Returns an object containing properties for all modules required
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1211
     * in order to load the requested module
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1212
     * @method getRequires
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1213
     * @param mod The module definition from moduleInfo
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1214
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1215
    getRequires: function(mod) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1216
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1217
        if (!mod) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1218
            return [];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1219
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1220
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1221
        if (!this.dirty && mod.expanded) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1222
            return mod.expanded;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1223
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1224
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1225
        var i, d=[], r=mod.requires, o=mod.optional, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1226
            info=this.moduleInfo, m, j, add;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1227
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1228
        for (i=0; i<r.length; i=i+1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1229
            d.push(r[i]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1230
            m = this.getModule(r[i]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1231
            add = this.getRequires(m);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1232
            for (j=0;j<add.length;j=j+1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1233
                d.push(add[j]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1234
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1235
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1236
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1237
        // get the requirements from superseded modules, if any
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1238
        r=mod.supersedes;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1239
        if (r) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1240
            for (i=0; i<r.length; i=i+1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1241
                d.push(r[i]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1242
                m = this.getModule(r[i]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1243
                add = this.getRequires(m);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1244
                for (j=0;j<add.length;j=j+1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1245
                    d.push(add[j]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1246
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1247
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1248
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1249
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1250
        if (o && this.loadOptional) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1251
            for (i=0; i<o.length; i=i+1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1252
                d.push(o[i]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1253
                add = this.getRequires(info[o[i]]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1254
                for (j=0;j<add.length;j=j+1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1255
                    d.push(add[j]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1256
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1257
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1258
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1259
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1260
        mod.expanded = Y.Object.keys(Y.Array.hash(d));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1261
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1262
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1263
        return mod.expanded;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1264
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1265
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1266
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1267
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1268
     * Returns an object literal of the modules the supplied module satisfies
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1269
     * @method getProvides
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1270
     * @param name{string} The name of the module
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1271
     * @param notMe {string} don't add this module name, only include superseded modules
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1272
     * @return what this module provides
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1273
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1274
    getProvides: function(name, notMe) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1275
        var addMe = !(notMe), ckey = (addMe) ? PROV : SUPER,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1276
            m = this.getModule(name), o = {},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1277
            s, done, me, i,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1278
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1279
            // use worker to break cycles
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1280
            add = function(mm) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1281
                if (!done[mm]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1282
                    done[mm] = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1283
                    // we always want the return value normal behavior 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1284
                    // (provides) for superseded modules.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1285
                    Y.mix(o, me.getProvides(mm));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1286
                } 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1287
                
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1288
                // else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1289
                // }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1290
            };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1291
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1292
        if (!m) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1293
            return o;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1294
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1295
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1296
        if (m[ckey]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1297
            return m[ckey];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1298
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1299
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1300
        s    = m.supersedes;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1301
        done = {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1302
        me   = this;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1303
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1304
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1305
        // calculate superseded modules
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1306
        if (s) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1307
            for (i=0; i<s.length; i=i+1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1308
                add(s[i]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1309
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1310
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1311
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1312
        // supersedes cache
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1313
        m[SUPER] = o;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1314
        // provides cache
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1315
        m[PROV] = Y.merge(o);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1316
        m[PROV][name] = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1317
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1318
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1319
        return m[ckey];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1320
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1321
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1322
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1323
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1324
     * Calculates the dependency tree, the result is stored in the sorted 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1325
     * property
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1326
     * @method calculate
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1327
     * @param o optional options object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1328
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1329
    calculate: function(o) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1330
        if (o || this.dirty) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1331
            this._config(o);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1332
            this._setup();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1333
            this._explode();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1334
            if (this.allowRollup && !this.combine) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1335
                this._rollup();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1336
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1337
            this._reduce();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1338
            this._sort();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1339
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1340
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1341
            this.dirty = false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1342
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1343
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1344
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1345
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1346
     * Investigates the current YUI configuration on the page.  By default,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1347
     * modules already detected will not be loaded again unless a force
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1348
     * option is encountered.  Called by calculate()
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1349
     * @method _setup
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1350
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1351
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1352
    _setup: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1353
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1354
        var info = this.moduleInfo, name, i, j, m, o, l, smod;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1355
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1356
        // Create skin modules
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1357
        for (name in info) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1358
            if (info.hasOwnProperty(name)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1359
                m = info[name];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1360
                if (m && m.skinnable) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1361
                    o = this.skin.overrides;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1362
                    if (o && o[name]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1363
                        for (i=0; i<o[name].length; i=i+1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1364
                            smod = this._addSkin(o[name][i], name);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1365
                        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1366
                    } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1367
                        smod = this._addSkin(this.skin.defaultSkin, name);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1368
                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1369
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1370
                    m.requires.push(smod);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1371
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1372
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1373
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1374
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1375
        l = Y.merge(this.inserted); // shallow clone
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1376
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1377
        // available modules
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1378
        if (!this.ignoreRegistered) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1379
            Y.mix(l, GLOBAL_ENV.mods);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1380
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1381
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1382
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1383
        // add the ignore list to the list of loaded packages
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1384
        if (this.ignore) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1385
            // OU.appendArray(l, this.ignore);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1386
            Y.mix(l, Y.Array.hash(this.ignore));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1387
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1388
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1389
        // expand the list to include superseded modules
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1390
        for (j in l) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1391
            if (l.hasOwnProperty(j)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1392
                Y.mix(l, this.getProvides(j));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1393
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1394
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1395
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1396
        // remove modules on the force list from the loaded list
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1397
        if (this.force) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1398
            for (i=0; i<this.force.length; i=i+1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1399
                if (this.force[i] in l) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1400
                    delete l[this.force[i]];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1401
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1402
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1403
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1404
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1405
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1406
        Y.mix(this.loaded, l);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1407
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1408
        // this.loaded = l;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1409
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1410
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1411
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1412
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1413
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1414
     * Inspects the required modules list looking for additional 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1415
     * dependencies.  Expands the required list to include all 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1416
     * required modules.  Called by calculate()
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1417
     * @method _explode
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1418
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1419
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1420
    _explode: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1421
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1422
        var r=this.required, i, mod, req, me = this, f = function(name) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1423
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1424
                mod = me.getModule(name);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1425
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1426
                var expound = mod && mod.expound;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1427
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1428
                if (mod) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1429
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1430
                    if (expound) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1431
                        r[expound] = me.getModule(expound);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1432
                        req = me.getRequires(r[expound]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1433
                        Y.mix(r, Y.Array.hash(req));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1434
                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1435
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1436
                    req = me.getRequires(mod);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1437
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1438
                    Y.mix(r, Y.Array.hash(req));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1439
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1440
            };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1441
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1442
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1443
        for (i in r) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1444
            if (r.hasOwnProperty(i)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1445
                f(i);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1446
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1447
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1448
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1449
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1450
    getModule: function(name) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1451
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1452
        var m = this.moduleInfo[name];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1453
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1454
        // create the default module
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1455
        // if (!m) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1456
            // m = this.addModule({ext: false}, name);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1457
        // }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1458
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1459
        return m;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1460
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1461
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1462
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1463
     * Look for rollup packages to determine if all of the modules a
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1464
     * rollup supersedes are required.  If so, include the rollup to
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1465
     * help reduce the total number of connections required.  Called
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1466
     * by calculate()
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1467
     * @method _rollup
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1468
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1469
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1470
    _rollup: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1471
        var i, j, m, s, rollups={}, r=this.required, roll,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1472
            info = this.moduleInfo, rolled, c;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1473
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1474
        // find and cache rollup modules
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1475
        if (this.dirty || !this.rollups) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1476
            for (i in info) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1477
                if (info.hasOwnProperty(i)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1478
                    m = this.getModule(i);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1479
                    // if (m && m.rollup && m.supersedes) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1480
                    if (m && m.rollup) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1481
                        rollups[i] = m;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1482
                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1483
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1484
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1485
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1486
            this.rollups = rollups;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1487
            this.forceMap = (this.force) ? Y.Array.hash(this.force) : {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1488
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1489
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1490
        // make as many passes as needed to pick up rollup rollups
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1491
        for (;;) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1492
            rolled = false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1493
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1494
            // go through the rollup candidates
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1495
            for (i in rollups) { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1496
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1497
                if (rollups.hasOwnProperty(i)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1498
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1499
                    // there can be only one, unless forced
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1500
                    if (!r[i] && ((!this.loaded[i]) || this.forceMap[i])) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1501
                        m = this.getModule(i); 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1502
                        s = m.supersedes || []; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1503
                        roll = false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1504
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1505
                        // @TODO remove continue
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1506
                        if (!m.rollup) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1507
                            continue;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1508
                        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1509
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1510
                        c = 0;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1511
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1512
                        // check the threshold
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1513
                        for (j=0;j<s.length;j=j+1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1514
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1515
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1516
                            // if the superseded module is loaded, we can't load the rollup
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1517
                            // unless it has been forced
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1518
                            if (this.loaded[s[j]] && !this.forceMap[s[j]]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1519
                                roll = false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1520
                                break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1521
                            // increment the counter if this module is required.  if we are
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1522
                            // beyond the rollup threshold, we will use the rollup module
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1523
                            } else if (r[s[j]]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1524
                                c++;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1525
                                roll = (c >= m.rollup);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1526
                                if (roll) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1527
                                    break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1528
                                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1529
                            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1530
                        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1531
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1532
                        if (roll) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1533
                            // add the rollup
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1534
                            r[i] = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1535
                            rolled = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1536
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1537
                            // expand the rollup's dependencies
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1538
                            this.getRequires(m);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1539
                        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1540
                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1541
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1542
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1543
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1544
            // if we made it here w/o rolling up something, we are done
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1545
            if (!rolled) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1546
                break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1547
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1548
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1549
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1550
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1551
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1552
     * Remove superceded modules and loaded modules.  Called by
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1553
     * calculate() after we have the mega list of all dependencies
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1554
     * @method _reduce
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1555
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1556
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1557
    _reduce: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1558
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1559
        var i, j, s, m, r=this.required;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1560
        for (i in r) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1561
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1562
            if (r.hasOwnProperty(i)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1563
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1564
                // remove if already loaded
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1565
                if (this.loaded[i] && (!this.forceMap[i]) && !this.ignoreRegistered) { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1566
                    delete r[i];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1567
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1568
                // remove anything this module supersedes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1569
                } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1570
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1571
                     m = this.getModule(i);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1572
                     s = m && m.supersedes;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1573
                     if (s) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1574
                         for (j=0; j<s.length; j=j+1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1575
                             if (s[j] in r) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1576
                                 delete r[s[j]];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1577
                             }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1578
                         }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1579
                     }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1580
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1581
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1582
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1583
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1584
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1585
    _attach: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1586
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1587
        // this is the full list of items the YUI needs attached,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1588
        // which is needed if some dependencies are already on
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1589
        // the page without their dependencies.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1590
        if (this.attaching) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1591
            Y._attach(this.attaching);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1592
        } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1593
            Y._attach(this.sorted);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1594
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1595
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1596
        // this._pushEvents();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1597
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1598
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1599
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1600
    _finish: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1601
        _queue.running = false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1602
        this._continue();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1603
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1604
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1605
    _onSuccess: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1606
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1607
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1608
        this._attach();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1609
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1610
        var skipped = this.skipped, i, f;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1611
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1612
        for (i in skipped) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1613
            if (skipped.hasOwnProperty(i)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1614
                delete this.inserted[i];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1615
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1616
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1617
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1618
        this.skipped = {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1619
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1620
        f = this.onSuccess;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1621
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1622
        if (f) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1623
            f.call(this.context, {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1624
                msg: 'success',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1625
                data: this.data,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1626
                success: true
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1627
            });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1628
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1629
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1630
        this._finish();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1631
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1632
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1633
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1634
    _onFailure: function(o) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1635
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1636
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1637
        this._attach();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1638
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1639
        var f = this.onFailure;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1640
        if (f) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1641
            f.call(this.context, {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1642
                msg: 'failure: ' + o.msg,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1643
                data: this.data,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1644
                success: false
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1645
            });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1646
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1647
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1648
        this._finish();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1649
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1650
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1651
    _onTimeout: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1652
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1653
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1654
        this._attach();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1655
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1656
        var f = this.onTimeout;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1657
        if (f) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1658
            f.call(this.context, {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1659
                msg: 'timeout',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1660
                data: this.data,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1661
                success: false
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1662
            });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1663
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1664
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1665
        this._finish();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1666
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1667
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1668
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1669
     * Sorts the dependency tree.  The last step of calculate()
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1670
     * @method _sort
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1671
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1672
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1673
    _sort: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1674
        // create an indexed list
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1675
        var s=Y.Object.keys(this.required), info=this.moduleInfo, loaded=this.loaded,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1676
            p, l, a, b, j, k, moved,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1677
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1678
        // returns true if b is not loaded, and is required
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1679
        // directly or by means of modules it supersedes.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1680
            requires = function(aa, bb) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1681
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1682
                var mm = info[aa], ii, rr, after, other, ss;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1683
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1684
                if (loaded[bb] || !mm) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1685
                    return false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1686
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1687
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1688
                rr    = mm.expanded;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1689
                after = mm.after; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1690
                other = info[bb];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1691
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1692
                // check if this module requires the other directly
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1693
                if (rr && Y.Array.indexOf(rr, bb) > -1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1694
                    return true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1695
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1696
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1697
                // check if this module should be sorted after the other
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1698
                if (after && Y.Array.indexOf(after, bb) > -1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1699
                    return true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1700
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1701
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1702
                // check if this module requires one the other supersedes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1703
                ss = info[bb] && info[bb].supersedes;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1704
                if (ss) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1705
                    for (ii=0; ii<ss.length; ii=ii+1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1706
                        if (requires(aa, ss[ii])) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1707
                            return true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1708
                        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1709
                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1710
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1711
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1712
                // external css files should be sorted below yui css
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1713
                if (mm.ext && mm.type == CSS && !other.ext && other.type == CSS) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1714
                    return true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1715
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1716
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1717
                return false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1718
            };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1719
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1720
        // pointer to the first unsorted item
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1721
        p = 0; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1722
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1723
        // keep going until we make a pass without moving anything
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1724
        for (;;) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1725
           
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1726
            l     = s.length; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1727
            moved = false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1728
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1729
            // start the loop after items that are already sorted
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1730
            for (j=p; j<l; j=j+1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1731
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1732
                // check the next module on the list to see if its
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1733
                // dependencies have been met
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1734
                a = s[j];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1735
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1736
                // check everything below current item and move if we
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1737
                // find a requirement for the current item
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1738
                for (k=j+1; k<l; k=k+1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1739
                    if (requires(a, s[k])) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1740
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1741
                        // extract the dependency so we can move it up
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1742
                        b = s.splice(k, 1);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1743
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1744
                        // insert the dependency above the item that 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1745
                        // requires it
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1746
                        s.splice(j, 0, b[0]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1747
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1748
                        moved = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1749
                        break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1750
                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1751
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1752
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1753
                // jump out of loop if we moved something
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1754
                if (moved) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1755
                    break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1756
                // this item is sorted, move our pointer and keep going
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1757
                } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1758
                    p = p + 1;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1759
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1760
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1761
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1762
            // when we make it here and moved is false, we are 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1763
            // finished sorting
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1764
            if (!moved) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1765
                break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1766
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1767
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1768
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1769
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1770
        this.sorted = s;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1771
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1772
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1773
    _insert: function(source, o, type) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1774
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1775
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1776
        // restore the state at the time of the request
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1777
        if (source) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1778
            this._config(source);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1779
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1780
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1781
        // build the dependency list
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1782
        this.calculate(o);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1783
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1784
        if (!type) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1785
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1786
            var self = this;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1787
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1788
            this._internalCallback = function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1789
                        var f = self.onCSS;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1790
                        if (f) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1791
                            f.call(self.context, Y);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1792
                        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1793
                        self._internalCallback = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1794
                        self._insert(null, null, JS);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1795
                    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1796
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1797
            // _queue.running = false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1798
            this._insert(null, null, CSS);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1799
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1800
            return;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1801
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1802
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1803
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1804
        // set a flag to indicate the load has started
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1805
        this._loading = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1806
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1807
        // flag to indicate we are done with the combo service
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1808
        // and any additional files will need to be loaded
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1809
        // individually
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1810
        this._combineComplete = {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1811
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1812
        // keep the loadType (js, css or undefined) cached
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1813
        this.loadType = type;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1814
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1815
        // start the load
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1816
        this.loadNext();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1817
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1818
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1819
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1820
    _continue: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1821
        if (!(_queue.running) && _queue.size() > 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1822
            _queue.running = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1823
            _queue.next()();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1824
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1825
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1826
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1827
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1828
     * inserts the requested modules and their dependencies.  
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1829
     * <code>type</code> can be "js" or "css".  Both script and 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1830
     * css are inserted if type is not provided.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1831
     * @method insert
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1832
     * @param o optional options object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1833
     * @param type {string} the type of dependency to insert
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1834
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1835
    insert: function(o, type) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1836
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1837
        var self = this, copy;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1838
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1839
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1840
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1841
        copy = Y.merge(this, true);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1842
        delete copy.require;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1843
        delete copy.dirty;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1844
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1845
        _queue.add(function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1846
            self._insert(copy, o, type);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1847
        });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1848
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1849
        this._continue();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1850
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1851
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1852
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1853
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1854
     * Executed every time a module is loaded, and if we are in a load
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1855
     * cycle, we attempt to load the next script.  Public so that it
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1856
     * is possible to call this if using a method other than
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1857
     * Y.register to determine when scripts are fully loaded
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1858
     * @method loadNext
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1859
     * @param mname {string} optional the name of the module that has
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1860
     * been loaded (which is usually why it is time to load the next
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1861
     * one)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1862
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1863
    loadNext: function(mname) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1864
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1865
        // It is possible that this function is executed due to something
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1866
        // else one the page loading a YUI module.  Only react when we
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1867
        // are actively loading something
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1868
        if (!this._loading) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1869
            return;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1870
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1871
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1872
        var s, len, i, m, url, self=this, type=this.loadType, fn, msg, attr,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1873
            callback=function(o) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1874
                this._combineComplete[type] = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1875
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1876
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1877
                var c=this._combining, len=c.length, i;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1878
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1879
                for (i=0; i<len; i=i+1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1880
                    this.inserted[c[i]] = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1881
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1882
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1883
                this.loadNext(o.data);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1884
            },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1885
            onsuccess=function(o) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1886
                self.loadNext(o.data);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1887
            };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1888
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1889
        // @TODO this will need to handle the two phase insert when
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1890
        // CSS support is added
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1891
        if (this.combine && (!this._combineComplete[type])) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1892
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1893
            this._combining = []; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1894
            s=this.sorted;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1895
            len=s.length;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1896
            url=this.comboBase;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1897
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1898
            for (i=0; i<len; i=i+1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1899
                m = this.getModule(s[i]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1900
                // Do not try to combine non-yui JS
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1901
                if (m && m.type === this.loadType && !m.ext) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1902
                    url += this.root + m.path;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1903
                    if (i < len-1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1904
                        url += '&';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1905
                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1906
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1907
                    this._combining.push(s[i]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1908
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1909
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1910
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1911
            if (this._combining.length) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1912
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1913
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1914
                // if (m.type === CSS) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1915
                if (this.loadType === CSS) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1916
                    fn = Y.Get.css;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1917
                    attr = this.cssAttributes;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1918
                } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1919
                    fn = Y.Get.script;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1920
                    attr = this.jsAttributes;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1921
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1922
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1923
                // @TODO get rid of the redundant Get code
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1924
                fn(this._filter(url), {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1925
                    data: this._loading,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1926
                    onSuccess: callback,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1927
                    onFailure: this._onFailure,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1928
                    onTimeout: this._onTimeout,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1929
                    insertBefore: this.insertBefore,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1930
                    charset: this.charset,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1931
                    attributes: attr,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1932
                    timeout: this.timeout,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1933
                    autopurge: false,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1934
                    context: self 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1935
                });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1936
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1937
                return;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1938
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1939
            } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1940
                this._combineComplete[type] = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1941
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1942
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1943
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1944
        if (mname) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1945
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1946
            // if the module that was just loaded isn't what we were expecting,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1947
            // continue to wait
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1948
            if (mname !== this._loading) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1949
                return;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1950
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1951
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1952
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1953
            // The global handler that is called when each module is loaded
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1954
            // will pass that module name to this function.  Storing this
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1955
            // data to avoid loading the same module multiple times
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1956
            this.inserted[mname] = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1957
            this.loaded[mname] = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1958
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1959
            if (this.onProgress) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1960
                this.onProgress.call(this.context, {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1961
                        name: mname,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1962
                        data: this.data
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1963
                    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1964
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1965
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1966
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1967
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1968
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1969
        s=this.sorted;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1970
        len=s.length;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1971
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1972
        for (i=0; i<len; i=i+1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1973
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1974
            // this.inserted keeps track of what the loader has loaded.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1975
            // move on if this item is done.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1976
            if (s[i] in this.inserted) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1977
                continue;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1978
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1979
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1980
            // Because rollups will cause multiple load notifications
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1981
            // from Y, loadNext may be called multiple times for
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1982
            // the same module when loading a rollup.  We can safely
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1983
            // skip the subsequent requests
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1984
            if (s[i] === this._loading) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1985
                return;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1986
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1987
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1988
            // log("inserting " + s[i]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1989
            m = this.getModule(s[i]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1990
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1991
            if (!m) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1992
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1993
                msg = "Undefined module " + s[i] + " skipped";
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1994
                this.inserted[s[i]] = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1995
                this.skipped[s[i]] = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1996
                continue;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1997
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1998
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1999
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2000
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2001
            // The load type is stored to offer the possibility to load
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2002
            // the css separately from the script.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2003
            if (!type || type === m.type) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2004
                this._loading = s[i];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2005
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2006
                if (m.type === CSS) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2007
                    fn = Y.Get.css;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2008
                    attr = this.cssAttributes;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2009
                } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2010
                    fn = Y.Get.script;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2011
                    attr = this.jsAttributes;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2012
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2013
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2014
                url = (m.fullpath) ? this._filter(m.fullpath, s[i]) : this._url(m.path, s[i]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2015
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2016
                fn(url, {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2017
                    data: s[i],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2018
                    onSuccess: onsuccess,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2019
                    insertBefore: this.insertBefore,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2020
                    charset: this.charset,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2021
                    attributes: attr,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2022
                    onFailure: this._onFailure,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2023
                    onTimeout: this._onTimeout,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2024
                    timeout: this.timeout,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2025
                    autopurge: false,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2026
                    context: self 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2027
                });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2028
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2029
                return;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2030
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2031
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2032
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2033
        // we are finished
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2034
        this._loading = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2035
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2036
        fn = this._internalCallback;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2037
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2038
        // internal callback for loading css first
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2039
        if (fn) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2040
            this._internalCallback = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2041
            fn.call(this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2042
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2043
        // } else if (this.onSuccess) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2044
        } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2045
            // call Y.use passing this instance. Y will use the sorted
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2046
            // dependency list.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2047
            this._onSuccess();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2048
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2049
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2050
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2051
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2052
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2053
     * Apply filter defined for this instance to a url/path
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2054
     * method _filter
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2055
     * @param u {string} the string to filter
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2056
     * @param name {string} the name of the module, if we are processing
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2057
     * a single module as opposed to a combined url
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2058
     * @return {string} the filtered string
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2059
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2060
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2061
    _filter: function(u, name) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2062
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2063
        var f = this.filter, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2064
            hasFilter = name && (name in this.filters),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2065
            modFilter = hasFilter && this.filters[name];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2066
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2067
        if (u) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2068
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2069
            if (hasFilter) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2070
                f = (L.isString(modFilter)) ? this.FILTER_DEFS[modFilter.toUpperCase()] || null : modFilter;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2071
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2072
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2073
            if (f) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2074
                u = u.replace(new RegExp(f.searchExp, 'g'), f.replaceStr);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2075
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2076
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2077
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2078
        return u;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2079
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2080
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2081
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2082
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2083
     * Generates the full url for a module
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2084
     * method _url
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2085
     * @param path {string} the path fragment
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2086
     * @return {string} the full url
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2087
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2088
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2089
    _url: function(path, name) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2090
        return this._filter((this.base || "") + path, name);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2091
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2092
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2093
};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2094
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2095
})();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2096
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2097
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2098
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  2099
}, '3.0.0b1' ,{requires:['queue-base']});