src/cm/media/js/lib/yui/yui_3.0.0b1/build/loader/loader.js
author ymh <ymh.work@gmail.com>
Thu, 10 Apr 2014 17:30:29 +0200
changeset 630 36ef50b63372
parent 0 40c8f766c9b8
permissions -rw-r--r--
update karma config after test lib moves
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']});
&8;}zVTAo$pV;suG4Ze*b<*vE4R򅁒ń%+DKaФ@:NDL)\iP[Ǭq@39\~QQ{'4rR)щ[Y !-]7s'P` B4sc\usu]pJHF"iw+Ω4*:=Zjjdž2I 0|ڐ2:R:6m[A8]cȄd9gmK8SZ9EetC¡m9-_ ㆷ^nA/oB5VMnF.*tal2 tųNf<-gF]qoP a>}!h B;aՈiq{ )mFRps9P%N]C~TkK1yxf`ڻR\yєnI o]CgzźMby@Wx t )_$h2JB<,:Gt5w[pUu[>J F VE1 AG)V&n&0ݳ-ӑ :@R\ek ,K'J=n~Yqx"D?j~.:pa #g3Ē;7r=ԌiEӿ mu:8FgB>di;G&]CE+'-t'(jHegq7:1z@aXLGϧdțe,NC=h"[i+Rp&@*q+ֽ3CAU`*DX8n!|%Y=YK#K o8(Ky7ܦ';MZ(%a7PSiT>@ThfC'!"ax-(j8؏6z7cMp4Gg9-ޓ[Pv0/^ɔz{&n͙Fz }Fn)˭=`E[Q{JXҴp?vTf +MͫȤZȎ/j_MwxMn8ݎ5A+)Xi2ce Ap wRy<3bOBNaXszCוAl:ͱ}EbbFf:9zٴ6t6`~vVΘ!_풟3QOJ?Bt?cf3u&Ix(ziN @@ͷB$xtt}nU&EH+8<./@Zm LISgf?y*o֘Wݖ@:M%)]c#`^o\>тjH>4^*@ %-;uu 0 RU^ovlwʧuc6Q[B ^6LUG?W{e P5Ί0KL}Wm4'=.+iKh5OvIq dGY)eﰗ39D*Wu&>4_+9P\%HES4A^-6w/03h\p;T>㯦|{9 CýKv6"{eu=ӧ59I۸42XX\t!98DROG* $j3׋fԭ0|yW ^{C%ZNqNӱ3rf}yLiɅ~3sb};= ݲUB,|B7]:fLzMS'u9m 0"Lϥʬ#9)Զ߭veF0IZ﯑}׊!CZմ OpT}ݼqߤVF͓8KMx  ڧzfj}K`#@.gS@$*rz(EHk1qiƀ2LyQ ũjI֩IB( $ϳAeY~71e־5",\8vFu.f m !87BH YɥbNr!NVx{J6‹!;F)tĚdņ)-wY)UM7.F}Y$'c>2Ss%& E)4XzSQqfe\7N01?01N62K:Ϣk]7ˉ1 ҽ2c#PRey>Kmk6כm Od`P X^CSO45_׹܏M'kV羕(? 5a >˲v ܓ$|(Qf+D< ,^1v-p&џU]*ѳa^\Z9O|>wC;g+TnJ|2D.W@?T~$#AD?"C4 7PloA?[V6'h_$52b/:hnME7)I Uq3+H6O&OtĐ*31FՂuE7_΢2N)pvN%L'څPكi bX7!+J; ^݁!bQi,ZS\Tg=^FSވGհy5f{ijaչJ$]#ϣe拴&P"Alץkx\_(r ~҅2%[f5//Ta"UHxc.j-=փkL:aB~J>e@$1ӕ~nq&6}ɫM(?Hb/x泀Yky_[eXR?*Ms =}d#Y~19z3ɫRjGƬrѪEajibD^!ukU '[M#Fuqy6I$^GOL y4n?j'.Q'V)IpXo I;d" $;/umM#fhߛe ^WLL*Ng VSJ  geD^uqjmiQuh'=ܹVց幅VK(N]*7e[t?(;U+F>16>$ѣ]Jyh[L3L~c8 Nf` z{688P'~eVPvSAQ $}:aϝs.$ߤ 2:WHG<1~LDiC|8&]PE $Ná¯4U5z=&.uD7pyCY/x$0ڔD&Òv'5|]1 jW(̼*tK>b=ϛz$1n ~tGY^skok}0HQ'E߽4lDDI1=2; T/z eեg 6ޓF12Ur8Ć!"*X#=K>;w46Pk/\~(ʤ(q~{k8en8?FbÙ= Ooz6ֺ>>5Иm udgX,R|ae8;5bK]cмĠꊆ)#El.蘼:%b:dU-t u}. #l(pk xܦľ;Ϯb^N{R_A9 CzG~{bE cU W "_pf5D/c 90Oû8nxLeI~PJնg:zfS_t쿽Ej.8a铎EaBKDi0_?jnk-~R跬n1wv!tvPYd V-~>8ٿI8 TFG9L(CHFtJ\3h:6 B_F .b8?NBV7 Pa9I/P!;I"Ysx U!}ٖ*)귫X_/[ іPf# G!(nB :[{Wm @!I-"_G^"kO@)d!(넯([6.VCj'Gy R":U%EZ&VAcE%6,rmMHGso9T~7J9N !s?[թ0!^9Gex|nO_+F_ R˖g!UbQ$;M4es5 =:JSvꪊXEhiP_:@桿[@SW (!?c|`&ԧ%n3<0" _kP~ GVȹψ6_tTyrAs6(piٗ @j@ÃϺK8)icuE:KutwE5>^ ئ`R:= ?k: 7>4V=1{R}e@K.rteHZ/lVȎTO-Po兾ꦡpM˒Qt1L7.eV;ƶSn/`H!XXZKc_qvёu$o `3K{ &.?X^|qot-V" 2-sAN^Ds"6U ,#7\#~͂#Lӵ3R+g%41p\6@UapӘQQu ct*bdԳ{ y ՘J?a;Oa.Z @v`v5Bdq \zc},CKIBp--.ˢzs*яrmA!LG]b0d+~0\ CEHyu̙H S)g=ktk>e9E0i- J{{џzL`T8s;ژ9хyPLN_Ӆv iO6Ѐ!O\x^m?;L~J:!aqfwνWAhg@LyUϻ_)qVEOl%/WɌ#zFk/pO~r\x..Λ9x0++7*Zoge=_N!DD[S/P$D,Ii!w35=_G\|۷͇]<vXuZv(;}`t PoSۻ! XyoH"SlhFkuQ sd6!t4{,*ؑc(]_)<= %G&8q\:6tїPIlٱ蘜y%4}ʷbE&4(B$ 8gKi "Ne:f1VyH7Jt?c+.p$,m! Xr \:2ǥˀqu{(zc,ŴFt"Q ـoI,v}A8`V|=}u>mY}ފqՄuMWrN^k9* z:#^9L$Gզv5AˊX0rcN]\NF1;]`=8nwTF_0a3b{f%>`Ňg}9}ѤFi93`K}|3ʂPIu8}i,f##ʄw9k|VxUНac/YaLSLJR!Tqt@U&(el",Ϸd.\; uԅIU$bp=ZGTj0jES(COq1"*Jst:sae>)nK {Ʒ8;| 'zJ{Tc] ΃C fM;//;/J+u/Сfy~ԧ,nc#}p {j+&H$E߁-!c-Q'm?}b ٲs䕇52NE[]/x>M}->k: 1xWz'O fJ'לjJ,Ϋ$-2;eVβi {vUU l19 7';s$:VSU!gt֓\9J>~H? nG)2TcY 1470hN boF@3qD722,a -H Ke洈6e̔ ےuPHE#(#J&{V}!t'Fa-Hw+ 4lq:dBhRՐ_ٮ ry0sc_Rɂ[@\;|_uڙ+!c]N^dkxRw?e^aEl~O<9 N`N?ެQxof ݄yD"9Ӥu!Zi"V@? f-kq*[+hl&m*bd[r$r%g1xa Y|EaBI@ޫYV&6_оoW>m?R#ݤ B1mT(^ڸ'ז +͂87~~13psNFg4JKb%ZLz,4-Qlՠ!msq|T/AJ}\|HW`^(/x=ю[kUO`0k9 WQfJrPw-e"-fӈsǙRa$`#`Lj`H2~/.0g fL1rÃ`]) 3W`L˿{7 㠺r?Fo 98^(MI3=,}H+_ b:IS7MTDƐ7oimdPa#+(+wdRsOKĬ^s^_.M5GkJ@ 1>R !CVpBBXOٳBڅGV@1N'_4KK#;?T8.#BT%tx4HtS $˚l,;_O}toJ&,# ;A65uהg.F8NeO?`fW629:8@H:z`HM;R/<.p^ج)< s͇ZQ ^O:;x8aoMaAg'QpzslsTWzŀm|äX(]@ p5|{r; :=8Zb/%D*rch E3]YdDل8$c&4e[e#хMYWK6bl䫯VjYASh)Euotn{7:c??˘3zZrC~'.wljhUUjxG|F.(ҍXeޒbs{KS/Uu+s OKuvQ䗨9JbwΧNi (U\O UZN}٣nP wg6x@S,`91͟]좗|OXZćJ& e8CfvX*x-׺xyG]{ZPrirXtb/!"]!F:c>mP 2:?5FrSr츷9ACJv9 M HK[qLnJ]R[{ ]L-k9+%20Zagk7+xgy\' 7Ţ n'@R72q@d8#yDγ7*]a~h wa/_3?/7egE5JkC^"fzKٌ @r؏{ Zv&(7Oq+jHQWéo=on0MfcIC>aőhr6$8.\64-*x@y%`iBSRf Sga_$ɞD7EzFDqKҍ@U$f|lESX iqVtz^}Z!rD  V!3TF" & Ƕg/?nDDm9[צDƭ8,J8 C:A*<(W AWw(T^ IW@o02FUS/@Ś'f4_]oi1h癒X߮s:%k&-3w1Rc!+y|I [weBR1uNGQ+ $u6Ѿ|zq)E_ iì8-?mO3r` մOi6fZ¬[Lߝ773eҠN-ϥX 'w.H4%h,7#]υrRV7ioK/o(jU _ ۱ǩ裖C 9a9RԳR5[!` JyP5Cf^2$Rb[y?S ~1mذFИ3%E75@$ -]M:k,.=i(?#n`49$, \aSc%H- ~f5b׎;JD"sѐn7ҞWNip\Է[ bBX  ښP8T?]Aq5.q͢%sj&xڷa-R0_'~ߚXtCUJApߗ)aȳ87 eq> کM,_`GJdj$[x+,|j|3ꮉU#q~@7cC_XкǙ3e^pa:1's ?%*"PEe in(tEyOڙܘqnJ %H'Wݛ)mxw?σO qK?~FFRVM%oH+҂ z.E0= tMmAg$S2 ]i3} o;i8bOmq%ҽ7Tv~D bp k8=s~LJ &ےV_2`tb K#vyT饱<}Xn!@ۆL^Z; BgKĎ`8h< Rj3o ?EXphe6i\*İ%]>\D]_HYKr_*>] nb+@Obrk#G(EwSs]jE_8l\th7hSpKa> MJp p4nO^];p 8f8iH+dž:7"d TN>@ê퉵7G0ĸoFfgpy=Hߙڗ/r3̞>D7.5ך]˚~Z灿t,Ҿ m*PdqAbxxK[уԡ^Q[4U9p%[k2}8D-T"=s;Pp gr9l7"<|oEuF/ةͺ;ft㐐P^&RQԸ׼|h"1Я}nO>( va~U9ث(r|Q6rGQ6BE_6u䈒⟁.|w~!ٌ -ZpM*(oʿ 4gC w=D;{\B`ޕ[#XT/ߺ}dWdy*i[e) G lڅz45[9Ctض20h|V϶ø`v /Gݷ2KQa~(<^}m'`׿p{s3D_]HZ=+/j<zw=e~oH<'E%L+B3\KY%QneAkq`-б1V %' P"""+a+qy_Ik<Rs\V4jomT x)k; Ww{-S%(X$̵(X5;Y_dHVҢ874*XX!>Nw׿ Cv1XbȤY,q(uL-x"g'")sK4s6P(eeNb5Uڨ^u%9N` #)فV쑯dLNymޯ;>LO":I1K^t,p~3qJ/{~s\ܴJ7nωd́k#Tgi^dedvw-_n_E Jꋆ-u#OD`$GR/{R7{QTwr u40IRXq`[$( 0o4#@K}é,IwnۮŨwJEf{,0B %bj$WvHM,Wm!?__,ቨlxX6֞["qp^ѺM-+- jBlnL}vX5:]wԮh-4k` V++`"Rd6拏,iga&351pc2sB(}(O!1ד.mYWzH @2<#[8m;d;})mDDWYֲhbnn֫5ug[8x$*ncqjW!n84*qLr((|T+cF ArJR%>ҟzyM<*UՌ2U p< [k:LB l8LyV/~s;pP(ȃ(ji]WUX F#Fz]RCVn m!lɪjڪ6Pk6_%~}& ۗӿ4|݉RBzR+mFRrGر8NT&#(\J(e LBf,({8N3Z_A #Bk8SԋߵPbT,@+@]Hf*%hC&]?/Rao" AAw)/ ıLU?&y1TViznd7ZGA:_+NĽ&Ѻ&g랪@]|E i3=we@xS19IS`L|;ʁ.֪R$Ϯ u+@9r\x;-Dan^kȶJC=@{[U[}Җގ 7Ij+=73 |diҘ7>A/״=Oÿ[& | ȲH(߃UK@0}fftVx%>}l2IG(+_]D>LB.Dʉ m9آSxq DjqӗO^e*~~ 6mʘ}EJW6-_ZU&L]@ZUl.59tuk'etJN"c㶼6PyĞHBմQh^0_7 R|]A t?YS"!1TRX?j1VW%Yz;m=li^.]w-% M;,4%iXR0!L Bku- Z\1˻(IGW ,e+YR5l%*0$8?_&+$|S␅-X[ SZ%؄D#O8{&Xz>J59^nPt1'/d7bx{l "Hw zwc+wgBxW_ߊwcd8\݉ҧ-y GK' JE'DJ9v?<[͕t[ET$ rGFeXuʻDfdduSdZeb6l; YFj6T^9i 79'o17(/wIkI yYQAy 5F0~N#7+h!_# 7L߰wB),H@9;fغx0i6Kh]զB ?uWI7F~Aa_t?ÆdIML$Â$$0}Y]p IDc|0LV=/uk2*J[0.@U]p>AJjN\3 \3JhS |J- L0QĽjֹP]ܵ{"kH{zʆVf7~,H7j&FbRa9z,o 4uW^ߍ,]n͂j f! $\T-yſ8(6{G(LgL=G995_bF:E R2"vT_K4_ z =MվZW67#ׄ~ }! II_m)N=+抭br<횷#ƜƟIJ\S8<>R Nrm\~/[v~I;z"\"`>pK;Aԝ'^xuʖ)<--b 핁+ ys岤q+y"ʨznj]ڜ@ KIk@f!pԼ O:,`6;]*YE  }S{ ޯ*YN+f Hrz2|lӽ$CΒ2lŒj;*熍rֻ XܓZs,x7 M&YqȶspE .Fwѵ>(' sO caibAKs?`\M7sPNeơ bi5J|[=J6`҇xJEfv6g*p/dm4g-O4(I䳁6Eԕa"^$-w^~ |-A{{?}yGϾJT}+J\(+ySo2  +M$?FaReٔ'` O&\IVwL/'c$i=S})Ѽ;ޥz]pB ԃ!:"H $Y &mS%,͋3Ζ?;蠺򊈍{yV$I&lKCc8M"< ܓ[Tβ/Ȅ1x]jc#I V[ w(̗bdpe9K3AVS;DΤGmօJxsW2[P %px>hGtj*Nф6 (Y m7yD'K- vlJN:XQ!gx-WpVD>"d#M{,:d(:sx'^Zv68AX.Bn&`V (T9u"C*aUUqS}CQ=E7];XK<;'MBeM U :~˨ 6S!>JQ_#>0>4qQeL%20!#]&_ yU}t B+ 1k-Be65f:0)L7Bb#ڣ:4hW09S=NŊ%.nč3.Dl岞&>u?dZ-m$"&<{Z:J,[CHu_<鏖ңRzgD,3 TqnA7&%n ДeĨǤGsf9kjTKh{9VK%0@GS{O\2}_beodBOmvp%j*CK [pcb,9xqz\Ũ1Jۦ #RR.To0DqImUD VLGa!WgbǤYp9hYO*ˇX:o1c#sGpfnmxO!.~V x<d!RUOsAs(OQ9a v%6=xLJ V:WvqULn?obXf%r d'Tvo=gX̻oٍB}c}{}]cHyNYZXMP.ON )ӫ?'Wx˲Ş`f=:!'[4( uѭ"cԯ4]c.o 4NxmwRW:= 42-^Kz~ %yơM%CXK0c+g_#0`A4dJ AQ +#p\+]r2Pz09ZeYUFۛzubYlZ OGyGdo\]0Н&S  #/~u5˄ S c:95 K&֖$׿EW"5)_\6]CL#-* H:դЩizYS=]*ZSyƞ5bm.a 7)/XG@;`iت 2Ge:RͫIc'uIu:Ta(b.k]Tվ*P SܕxHq m^A>wŴawL'ʨDpyi-/~EHX݌.sVE9咍X^dF0hkI/JE\Eu^ 7'ʰI9[#I$Vp6k)/acV p M\ >{oٽ|ʎsLTe>7RU!kn:h,F$r W&r120d%꾀TH To^t-\W>C:n/ѧq}:TEs>iR!L90˴%f,mERE|~h7#ED g^јFd;~Wc3QU02>c.G3 WShr!4u)A`-wCY}B=Pw MՕړ!ezӘ5`<w"I5g̪iJ`/$0/y%CB3 T|$lrؚc(ňh2f Pk<][k]AX˖mJ*yz& v|Qx0VjywuNYlnQ*`0=o5B}Y#K#VD BbxU)hY#ʮ;Dm)RrR×yJ[)b[7>1Q԰(vsxnD$.ZVxdrJ {(AO [;E:&Q ;4DA/}oJhx'Ho,dL9ro뤷 ÿ+."[)>8o4%!FQBzSZAUy%.b6dX[pt( ҵw8> '36K9XO.`&kBL0JgN|ΦEm  $Rp{X/Pr@p}2vC"1WB:ڇ&ȿT3 Ty1eȟqɻJL؜?wSl#醸{Ko0KZ{t( Hg/i 41C]w۟<713͛v]f.?d3|-}}!-P}XY< SO*YCq2VYt@YhHR kEr )_)47W]$gw[GQ,cfDPr)lȨ#c(AkkR(뙱,3A14uM_d,l e:XP$mK9l^ߝRki~P UCRK-xGYzo |s ܡ̼+ncht?qiVŕF%X7}񾭺DIN;`KG?}]÷Om+1?֢~T Y0>5yGXpr#^WeYZ -+YF2@bjnqKhZ]ŕb4y d{Z>:V(aڊ%ɖqO[/ \*UG [W4c]b9T~>U؟ A#Aמ&疇ZVl?oa}?΄R)|&2aoX/[ 5؎/Gj ,$(; 72`gilTTeN2̧#mB64G&ɄB€A$Wp~az-_,6V_y?? tOuLi&(\kĈf3/gtR>Bv!EGmJd.#X pʡHس4H:/gfMS9O3HK*Y0*AL2z;Fij >/ҵMSA\셡䀑7]^0q'R(珬mҮ@ Z& ]g44Le7qn Q2 :VwQePQ?Ջ.ޕ"^ݍʩZTU|skeYB3XJJWz_s5\P/s^#H'/X++e$T[-<$qfV*Ƕ6n8d@%KMkdmġ`"$.e>- 䶕<`W @X_֠MR0^^r(lFD +ݓK^0?*!/ko|PS@ `|LO<%@P!g O/HRzHSm>UID(COv`fIEн'\1Xb"JԜ̖EV9N);v#G ܤoLbz?轐)W7\}AI#(ɝ#JU~f4br|dG'T m;gzu-Irg{(L#g(351) "_@WyR}5cuXxr'܋m2_pb囇K\@buVU?SoV em#:^R G!_oER"Rr3qޤ&CAjҀ^XĽ> i=<g4eb!oFЖoMR6[BH& !P}2<χk9t"uasKLtoxky2>4S\Z/c_vr% ޶E4Nnѓ,a&٣_H.gDd.F nѾrq2:Ik½xq:XAؾ? dzWJx 6OWˉBp^Ik4R'Ln"_ ;9@7J*gR,[ Ϥ|?QEd&Њl{eM^W Rk]ix=DhIU0"m`!#@k_TУ"?7QaT;4[F@FG%a<RUcwc=Q>.tbZCY0[ᱝC;<X}Іd=bVڴ6KԲ%B@lF =G6ffj0tnxil*:ް6`1J(Mc4Ӫ uG g>Fpd]G;&fjRH.5Km0iJX$! Y{G~Vg'b y-rg|k/Կ%GZi7H?2ggQXRtivR#hrB8m㖒!:whHMU[n㶐Dg<6ӳ" ]u5PC3y p5|i m(K Rf/a 5DkD? .lQdmeאTkyB? 9u)-{뫴`)ӉZ#(y`3mMW~PӹrԮ3lSk!Zs$[jtMB/e?uYkyT{V()fi'Ma:G+ɷ8?DƭX9\cWG~׮`wȣN6ּ8yqE@{er.5{ǁ)}a,L&okt=3PS!2#Of&A&ߵ^W|7ڟ_@&"+ʏ;*Qs'uNwo %F,6jzndz[M:~tqR\u +]?XaimC"UPRWXW`~wzW;f (TiJڐ ?fG!v I*}9FINf*RMMF<NRwT@"AXϸe( :0dn)EdLA_TlfMM7T5Eq :wJ}_Y^}#VXRkbg-T2Ƅkrh< M6S NI@,_*A6zrQl&T&!6_)dT߉/J:$ XNp4ߜizD1\XSTK-Tuvnzf|i3+.Uy`#7+ȳȄ*~nILޑ[𖴬۬@+9F򵂠GF{RauSg:{EAS }Bv^2& 5&t.^0|ݱKHTiH#ׇ81.,>)x9Ny=]w9;xzuc:L%!09!YY4 8ێe'tԍ`ji.i𱤦B=ӏ aC0aDc!my#Eav6Y'^GT³:)*\:%~m4ܱZ:PpjeBtQ-jtZ&e`~:E{׶X|n[''nO?#}bӗ<ВXDuWX'p6-: C\_ʊ^u>eJMA!c4JRXFU[|og3Tz@JK|>.7ɭWbIv! H&|q]Ł=@A^#@i:U]^SYGԯajB-[`ő\1]O3ӘGw|tD5~O[|@2@Tf-/0ՔSo,r\>o4S.TpoE#0/yA0ʳrC7`RyٿxIJ]mVba2 '#{R &ۄ+DdL2VLS#z,QY!w$w|jЄldzc SiL-WUnixi^zdoP9|'IN_ :<(miDw;BHB2^m޽j4rSV %Z#c6Γ;Jfo97 mcjw~ǃ.])og(B8bK-Ie6KEW{+^b2,#i0%"Q#;rn"r-T<[]X]s2rRX1T߮j!y+<IʵR٪2C-3Kg78?+7)=MUg*K(Hp&/ꖔi$A=s1=H P Ppq%t²{6{g\(VF[ 'j pD@_O3\q$zHe//Y2_aOCjLlhdWP~8&]YPUמy yȢ3 y$2驥7+lf vϬ'ԣ 966_`w Ɩș2xLO :sY`ɴM뤎2G7`w٫tK̘)|:ܜ> >0'<\, _ 4KE٢ի僙`x\$=Ųn@2УU|ND{otz VL=P]Ǩ̾t tac?옯E!5ТK#CO /z*k C_&=}P]P$X9syйfo}b@++ ~ֹ;޺ٱ؍Z#nA 1(2PPlG*qt, =4M<稄0ֻ17L$')e>o ڨ#ћlDه?W@1)Xh,9 8Iw*lO5hjbz//kJS8;]\/-4k_#u f܃ӓrGst~ Op\6QĬ!e xX嬛RA9vն@ (+>ؼKH;#72IE㛉BbyXUa\ XNjg8hBZf<1Ifnnq٨l8ɧSZ M4Vs)>y ܗӫ:++PN͜t6ǞWw{_;%b[i`ATg $?JQ4.`i̥Jp6!#*WycrcxjIYSg8_i70Ґ@X~חQId|EΦ!*8FZC.FjgǁsGE^tp/kDLr =M[7F:Uw2֊ǀ>4XiB;YqBW-*\U.Xzyygy]eKU]S Cc-~M%jf9A%g)38DK5^SRw߬A}6Eyѷ}6oeq;'F?sٹt2V3>nK2Mxn:̀ARÃ+~aR:Z軇(s(-iK7u0~Q 4i7%xD V_Ub3ZDWM ԝV8^2h!;/1zN:txD@.{cu$P!y@s;3Oۻ m^uܒ` Lc\@&JFu$#B!hyM2"PH_dY+mraFCEи*"Ĉ,ag1tOEApGf:>0:8J3]D;8S0AMt<-7 4U)ٓ-9uV֝Ӿ[3DD*VK눖A\ЭDvvst(kf5=ls箢[[,9B +8O&Xkޚkub%۽[1YZ-:(zC|1~Vg!) Q`D7?/As Hpѩ~S=m456i Fg~^{' MLݹpIRkk 2'bF^ và7W `"!5:G]afx;\'n |g9pVvm5_GM 1w@A2*+V10+׷q(Cs*Kmt,r}K`^GDny]rQմ>\Z81O׭R%)"P:Zhd{tY+cל98$ gDeȻۻQP͟ ڊR@-[" 3!v< 4yra5-A}`!ÌB_qX&ZRnJ,˸8 p'_àN`Y0{4<@U&-?UMU#ٜxAJX^vɈw5rsm߯q*KJS㱮<3Ie)/ZMc> +(`W(^U&sb)9oA9rJLTp`1mq; TĒWFqe"q, `./uX:ӧspg?}Ά2j 'ޓZ 4˸V*ũ¬U"qXj?I_p0&&J&H\sY̍G= d_| !}LJ| <5-  LcBnEukFdm׻`Y}!Jag/L̏k!8}Kdj|0i*zYΰt[wI0@LNP#$e_zz kk-J]ϭH6˽Gd1N7xN 8]9Pua&pc3]1+Q~'8hޅ; WG ~.ÄmhŤ2]_fKkߓ`?k `ĴUݫp>!0l0-dKkRR U&#,T?Bv_u7hdR):.non/-ue^/6K[\JHi]j>&>f p:D X7݄SG"ˆۖ1k|"?EOvE-SY\R,Q SW>)cE|%9xZev 578# oAEd&>^6Bv2D'' mNmOqJxi@q5qXPj\E+a#o;7}r0?NDh +ubRNE$$M{=C[&zfI62k.H}ZS@n]9Hhe\+cMȋ;&RYrah!5Q1T#6Ştp x/?l >R" UL={7$b͹wbHgҒ(lɧ]t*\W,hlv!kȼ/d|'Jؒ _2`Ϝ0g*θ*¶( a$Вbm6RpnN<c{صX8\ٲ7 IU cIP|Oȁ^`dKW(oo-K9"p 2!}aZ<9v7sێ`1 ;gHy- !^ `<ǣpV$lKҢilzr& ď`j ̄:)Sd3LR+kBK4K0O&F`6%bԾGS^ w.#gZsOw07!Υn` 2/SE4[9'hK(Ŗ*`pt:fFB2I=LQ>"`s.F) ,q'"/S-}7Eq15(*?T{(;0+ ιdPKn'fkc-K:E ik>IV :G`nS\&Ke A2LbG8eJءpQ'eXXL FE3&{|X4f}vwuÁG2K\;+%\5?:F87B+|W;ڄiO7EǯjސpsѬC6Ӯ 9k祍¦?]p=c.Yrό%8XZGڬ[2ͦ K" iObqaݸ1AtER;n -_$BFi8m ޏ靣mmZt*^?֌_W<,NkOZDuo]-'+L{. ^?9a*f۴$X_َnpb 6&֓V%x`j;.&{v5:oݳ`6eէ/eٓ|bCo3T tڊ6$k|'] fG&h9$2I,O=D{9ɪ΂BU}\ՔAi/VшЗ @v=ڛcՄX]pvJٯNyXl.1'#bU L]0PO?!ۇGE+spuh7!=FsV /ut [tb)@kdy`"E'F~x\l5 )Sg#dW, _mT\" DۅU5uo  :)_9r73]Xr_N H=iĬ%^ːe堷Usݠپ`ydVum9}-r%"1Ȯr'ۍ{w746p>v"LPϕn촔te֔*|uZ3*9?貂QrF|&}zZg= ,6:Y%uWp j GW4<WVidpLyjLJūՓHïӇ؛|ijDLf z669rMAWq0gnyWu q&mwH 3^MSlaR앸Τp&oXLR747KZ.A2}GotaRAW1&p`[^cg㍩ʭ6?+9u7C8+R_~yY$%Y9hgmMlSQ67Ngl)I~lԷR fщZ(T)F}DW X.[ɽ+ee# UXZ2+i7d,UnjUe5_rdU:y >=fqD6#Jn؀j ! T'c- wnOiFiUȍ4qxjt"y9@ 1sf_ruk}4bl7 ^1XxJ -&d}.y g| n~P yD>Ѡޛ5&<Xm fxkDBF4֙7XL}$~ψz1M!hRn`s Cg4g/81:}9r:,Kb6Së{rZ#򟦥 PD,0I*;EUL%פxc#|4$.ES\F1iUM咗^ȿht% %$t (̿?*!]macE8KB/)RMyZ\.0}^;ٙB oVs; *7ժ-kEM`%JSvWqţ+ gGP̩Pٹ! x, 3A P~mY"%Ԃg}οf]%^ctԞ ٻbmq҉,Dn%lsd93TeBT$ ǘ.;9^=dc4+=%#{bt69E/9 [ ţ$QHEY,pؙ^:J'%\#, A3 l{ȲP< s\6b7x$L3ג>R" [ˮ=O;8w (+m.R k '$h!$ryd{ʳ#X[b\gdV,RgrP^ecwN?0Oz(X4iQXߖz+%u *dW ?;iÍoyxI:D]ɚHk ϋGΩ[^S²TFV~ֻWH E[lss6pqXUMIj|WPIhBn.4N*ٷ3ny64C1,ٻ^#\`ruToc@.`}^&WLWs;>n8% { egw@|1\ZSxǓUeh 3Z.} Ka50-!7JW÷_Iq~! n\n($gp}Gߨbkw0q|&`6DJ~qI @E,GXR  %CLr1~v=r ;X0 oYʱĢʸp긻(N a[X|wjUSQN48)BcNq X'-u":Vaa{]1?$]2 9+ -f%!.!+q) I ! pggܳک6F"毲%vr1Zh=Q6=/}+y̯;V9l_ IU 3`&1Hkhe gKe9҆ZVlB:;'jyA:^]u)٨wL7{YQb4Nk 9|%R7rߠ;Y: `;@hN SX+yc(k]Aa19q=p6 9Yj0Z~弆$͚礦~}ژ ʜ%[U}z^ ڸ*WNl B<+]Jc r=$573yP"ZqI- ' x}S Hٲ?qHJ\6I=A+Hr᚜&~#dQJL#v]=>1WL g6}A9r:32tt=a(1^B> Lv".}y+Q2j?1\qden)ͮMrmA(6;/W89AIS=quz?XC1oz"Z9]ڴڱE<(2!%JnF ҉✼i }APWt' uLtIJ9,m7^?0=\A> j9b8O6oY].OEyBSY<#`/7ߎ*vaQ/#^QfqD;Q[۸1JORE ؟hR+wG ԾOGXxbj{ \Up0 0ǬmuM(BGh7]{W-h}#LEM]g]ښΔY#T 6%A `t-Vc9"Q-$8@gC=:$q]OR~'\%G}ȋ&H: ɔq |Ӵ0=6\c9NKtD<nAf0H$V0ݾs{NTB,(DgD${:L%*a(~dZ;Dr|<\;2p4T-}AZվ$EŒ) YZ_H>1͠haQ/'[7MTm;NވUCTTuZЃD#dl^V&nw'@(iw:4N2AC˰yoJ3￞pd@p?=Zb!6ژb 6jҹ 5 ɥ+^`haC8Ud A*CMBc h]} xACă44I7nzv3ZC@j7r,4"Ye"J31W)8 <Ήfzr>1j*:hE?U1 Z!F|X9>= T{IFUGП;hD0;F/>BmVvqwJAwlpIc꽬z =X3Xk!ԛݪygMǨB>.\N/j7[cCRh 7:cd\!H`4(iL<gW i);F#38eaY.m:t5-]N]ځ}uت0(@,6VX\b5 W*I.IԉMoviNV۫&q}ƊU@JcnES5`udzŠ\s-:0< c9EB'y>U2><BѮV!A0umnYJDtM3O1r 2b}7)܀,Ug7R+bQ/1x,?pe3%գ+Ҫ|D\z}!C%ۦ2o 'ல qotN&0"Qw<-cBbWc6,6&Ņ,&Z1L>0Cɘr#ؿO ~2"*,_Ꮫ a(̭y\OpD0VXԜ~ (~\X¹K_+k/ 7p"ݽ_a|i$u"–Q^oiգ+2V#\b+K}&jXkm&NUgm%\< Eb:EltLاOe5u}Ox{1Hgr(yHsf. "%?mλͰÊW_nO=5ۮ2?/Ȼz}[vCO¬؏mqbyAZO63>Bn?FMu4+Gd;I)Q7{e2 *d̈́nVjZ@aJfoxvDڽz,:i  (/EMYkG4 (;Bn :z$qe—t!39vhF@#"#ˤ$rt+J*H]Ėo Vkr *>R?6Xf5ohY1 jKŕ6*}fOBmKmҤ6udu@*n*>=Q$*=᫬L]BtI{Y{7nYMCo{50 @j0Z6AɮW@/s,D0ǎ4I2HZyׇ ȋ S*}:റ#JgM9Od$NyP5>ajF)}R2VRBW* rCzǷU\ĀQ~]L:H8yz U<{33 )lua|JZI7i/SǩaNEHt+L)6dva 6tVl;L1!n%w褋ީ|(]U?z:%J8R5lrNKנ)+A8SkƿG ?Hu^tQw {0 n4 Y!Ŏ_{GOu|=hgWN6)&"ƒ`xcajtud'dJ֝gKg_ıؚtG8Џ'RL/ y.=Il)^7xh"Զf ?"{R)Yf>f]l5W44 }y~^g-6сUWA(Zmqk FNGILttd&f ;ePU⥀x2l$@NU":q;qia8CtZ<Œt&晷lo3WGJUuFX{=;}Ԇn IAM]}AioqX ʆT:xC#XPU܅"chcde(IQ)?da[VmJi\. U~t,ja*8:2|2y~` ytU#xj[sE{ )wP^i?utf)tpoXF0\a' '(J6@0פ dοA9FNQRO-99Y $%_Irr*B;A%21a"*TGۦw"<7 ity cxnҶ`x^UvN?<#~-4Ӌ[ P;].lV d(YQΟ }/;vCjb)!Ri2YQX9PgU~,/eE^i&!b"\*)!{fJgg6/Ah-a,,EAc͟K W9I AY #T֟!tzrr /Ob(g 0]3 lZdϩjGLciLAd(n}ۘV3AmٱA)=i 0gf .uw=Bs^$\1}}ܧmP&eyq]& NTcWijTÿU_i~"4$7XW|T0HŤHߞ/JkR&t\#=M=m,tTMYL(i;|(&sbx(]YCt܌B\@rGҵX׊K;W@1rQ!]chNyT r9ҋ{X(jSpM q-}⫔JvN6ON o=;l@0v~E[|)=coh2}QJn 9.<ĝ=eD3ժ$jOA 7'vA RNͿ8aW;VEʝgnb9^:`,eͅյ~ ̕R.^!;M[A9mÌnhf(eoj]|Fmkޕ_~tPE(;.x"9xrd *BծOmcJw3Kgİ+D2mR $Ww4!=!{h;a/Mi ph&EȞ_ Ex}TNu|mST$|_r %i\&hmʰq/7Azlz;&<#Z1(\͑M#i}nV%"*shYߞxWs*ΥDOItAͯLсS!6~Spo;ªM%FJDv)k47jQ~jgMw 17Wa QhfxȉBU[ ۲9uFi?s£Kߝ?,$V{G0ΰ[KYrVKk tkN/b@tKAhKoEj#+Aļ+zýp} 㢽{Q3dwa\\H]N%:a]S~@l 7(JyѥwU~8G0}_hmȂY2D^rVSP&h̶wsE9jCdL5:Ȱbeeh>yo1yqRH9olC7,lj.UG_%44qX򃴠Q?(*ĹVQ <~Q/*~ߏAp <ؔb. li|58:EԳ24fSЄݓ1 lz7GA#6t3vv>bV%7Pb!\NM-r/ !IQ2Heyl |mvΩd]kH|{*?܊̉6aL!ueeeht!i͍]iYqsᶊc6רQ@B0FS?Άe_̭I.2U`C)OnH+!6'£J-X\' }ykzRp|09( n^ij|sAL6.8LVL6駬lq>}rXրEh _t緱<<bOjo`j fPW?C Y$n/7WJfp6}Wrl{%~f+Ka"~"#UYt31Au.w7@tiS~T|btz-bQdD ~uv'&$jì{,sDgQ|c>1/ڨ̿^TQ_d=2mCoOq$CK w$%Z8R{#]8SAOIk#4.U ⬂B)(,Pa W NB*s/e!ё i& 4dI&G6X+MIW({yCwՁHbW2ԭ$Nk ijAўXh`0+=2O`AڻqW':! GlLM01&Q*-آsE#*"kZZo,V&.fY6B+h(ooሂVUӁW,ELgj['3 DPG<ۂԗ66T62"Gބ^KCiMNaFQ7@a8bh` ၚ޳h3۞nCs_*fv zȦ~ P+Wi2sᘽO27ܟn3N+{FtG͏9sMP*Yv_ڷd'ނZ+o e0LVYPML, LY(åYZnpBu1VZMia ـ:}镹>2+dJ hC m)3BqBqdxn=>X?@&:n%u`%6jdBN2}DZS:Rr}ϴ!˚6N:2tya B c2;`tc˲xߪ-Sᄡ]$;gYҒXi (wҬ4'5;Jq"8:2+F Ͳ v=qtMeQ_rI:))eBm}cъtlH#Qx$dSa3 wWya~k83,d=λCh 77>Z,OĦ4j'H4/)\([Z/#}!+ Ob:}!>c_LmԧDdvvHGX@:$ oR=AI^H֞A>qk} #a繕=iM5%;K Fq0G iD^M.arL;!HoDW/HWl?H¤^|kgV9: cw*orݣ¾!!;*1.M'H ];pO j xU17zOa' {yH;rBBQ6ք%X"*!nvfzZt$6pee^#˪Yx vzW+ ör'8-d|Iב0fp̡L\[[#Kɳ091=d%㔃v[jH{RG >l&K}7-t FVrE˰kFL/rX}?Qֺ\,Ie0欰}_pK@Z՝(G؜56N UkS0?Z]hF{3+ 0y[LwEӟU덜\cÑ/l, Q AϵwaN $9\ u 6 zس0hN.G݅qI50(yfnZLT(i..w唘CXrnE~W룽Hmѵ` c/ުu.l!IU}RK=Fؗ_}L,CwO_O3N?R^1ƭA?C'Jeoe.~#^ܴ>_F {՛J+?ڊ4  ? d4WHCJ/8.:Á᭤2Fm#du-~̈,Kp t h{Pr8j?R$5 6Cq 8+l+fPNt21u۩<MxIO\V*jEQ7rPq9D)Pdc^IyWj Foѳ(č2 pC*\NnJd#~Q.NR|( [$)FcfOg%m׳YsG)Ia(¬89t;rzJ9n>ϼ華=qHS(Ews;`bPɔTF YSF5wܚGcE">f}?}8VHHr 8]P.2h%zݰEޤ}¢C]pH(HdoQ0G,bNCSV hFLU7DD|3QGs[xXv: iG B<>I7nYh'{ۿͷC&}-F}Y0"E\BjLb5tMczݮ[9ށX&{s"#}UMBdUY>Fu3}m]/<O0.aIg++0{ҩ|k^ZyiuH1!&c4*.Z9n;Yg({:Yv =3"eI%B@[pb}aPnDy9*.!Z9" ! qjs0DoNi^\7mQ$zbu>`JFdhk3&vޮAc*~p͍~M";@AE gr06|w5~OB2 #X ÿΆsA  S,>BKmYC#›WnmWrj&-O,Z|YGH7?uEOG+ ʈem2[lRT錦#+^_L!%?'ҖZ,\!v0-qooF"Z)v aw۽}. 'T{aO#/YxfG4P@*-3.LU|MuVҾ5co*BsJKl :m_:`Y&YJ6exz5+D_j[2j\J&ƈ.O$ 7 m!( Jbq/aJB=LRI6r{~N$/y5`; ۮ+E6_@*,8 ;%=7VzKeZN0Mz|8 e!$D^|>a׻;!X&XF3f¶ 7 ?:#_(\i2^iG$R&ZC"HOJ6hdM0"):-++yT-I%g&8L(dGm6SV6/%3ь]ڪN|@vx͋;o%^2IX:R'( 'bo3x቉ < zHUd|de6,:V;G#ަrRwoEA1LH)ǜrJOӄ^(p̯T@v9ab[ԷHbEBlQp; Mmcڙv[ćxEx8KT:7n>Q*mhӛ=Hװ>J[ s3jHIeΙ :Ihdh6Bf>IaSXl,G]Qmγr+2 ѭaTTî%*LxpxC, (`X!cwPH{p!yz虾qcOp|Q4ƞ5qf ‹/+ZZpT,V@=ZQL dOvU(& ~K*.[XR[eB=dJf+ƶޘ= #mt8ps$7\yF kBV~%Jy.1Y"UYbiabX~U4,Jtfd /wNU|-Z !ZAc˱*Cƛ;mG#vChCctR!oE*\r`wIU,n= (\r7:K 2 sᧄEFV0h?dftt;},9 7T\9ld s 5z6*lP maBKU#eꁡT՗v h0W,#Ն%b}L l'! ·91AN4MΠttO-K1}/Ny#}56J~0J 1?i df{r h$a%}) KO׌N`uhy6T=f>\旨lʡ"ۢ)Iur3IM>i'}A Q.z~;1DtV! [m66U g!-#u=1"(~m>FA68 ~? g}*-\`32qdzmҜ3dS(DNTWJ|T$*~X`L5CqUG<)~K7D_E``@iAgqY6~יXS{kM M\һgGmpJ!j8>9EN oӸM-~Mb(Im=.; Ow|Ew$ lӍLyP0ѿ9uz($cD1E3|h]ި0 w!6o;^4΄O .*ňBI T`r%Td&sP=@7"\!pl~OMʸxR uvq c%廴2_O\1<8hM.E*$y ԚNJ&!$hŇӒ텹n8/3\mylPxu~EOMq'nǥ .9V1!8ECآz07 Gs]4Yha~M)^dIע^;D>^M\ͦZݾ4AQe@tzNDzb4YI\U8ʺ5: 'OtƊ ޙ.c4B;]LtrabvVR/) oߡINS]Lq1v Pk5Xv>XH!m˂2wcn~-ᄺ+qp$i:N&cbx,^Cr4W؎ ӜA D$u:> fӌ57Gj SǓW{p9iFR_ϴ8^Phjؓޘ75>ugp96!7qAٔ\_ȼw#(xkN:QGY =PGV",}] MĉcpcbǰΟaIMwL4DFJب^,VB˩3knBf <"j J ,vFUX"ihZ-^ Q8M/M,Qc(W&TWyiڻ(y&ոR_%[¬Z3MQm> tz*+?c`۞Iu#-@]o?tXO!2B'@p;e=/b(tS>4:lB0uΝE\er @+#k668X i|q^XfU_4c6r \aC9 J85Ůu,X>e{@D4ަ. _c +SF*¤,f uODrXM(ߴHӗUEv0MI-(ƎX}=G$ }@ 364l׺0A }Ё=9AYb&eNJ3޺0@6p:7(5fzH:^=Ag~/gQ-O BqtAYk8P5o8ʁX#t5oytqhIgZukY yVzpi­jv ʅ [J*;NW?q(n/fynvj龭K]ܚoCt̘#Z_DߘBIQܿHm!\?}Gs=X\Q}O[+}rPʎm/E1٣!|7>dS킝;~k5CzW#&bYw`? vCe!telh K>|A~iTXq(q=$b}hC"9&uXDŽg^{8q[Gr߹Sp4Qvipg q)lI6<< f%&ɷQm}&6R[kE8ovsb**Cs[ RUu`(χAͱ,3Ԯ[,ƬBsTO("m-sfA9mD`K.n7y(0uBb)l<1:dTS! ~n^Y-%l/RJk -|F"ɧe-i]+*b(t)RвqZ,Yߢu&ے* _7](ݪ򞞟cS'l0`E TԤ,=jYU! ȓM^{-^W=#E}U83_Z"ޓ+%ጕᮠ(€pIǔ9܅N`@%D5_3_W+&K.s&Uvxt; EWg"fnF_s@4F|Y^ï)1 s! T8?ն,C nˤbJ]M[&bOQŖdwp- DGcGQ]H f37~R('~.+pW1 MDh|QDddb?u/x:b7X8v!X# l#e˾Df Q(P܆7>9JYyU^|H+2I*;ÈՓf,rnA01͜r_ySQqH%_8Y{~<)23,rRЈBa]dy ?{S_*K֥/x؛=u|^ ϵy{X߭VU|3Ҽrg9*fo [kӠtK$'HTŢ<z5CMw6o|^g!V 'ɳk֐~ P֑{ofxEq^Q!HQlnwQ S,IP!\&*1:ϱ> wYjh\zgGQIk>Xlb{Zy+C-+*Z6\@\w[M Baj nS7Y(<ƺ 3<6F:TwSϪ utj.QUJe3M:X&[T!b,YI ,Y&WMٙi-۴4Mz0AFw2ˤI)Ҙ'+hUn%竉նJ`` J~1A%"[*f|}/jbUnG-Mʡ3'XVH_|D6PUA~ӛY䲅G[S[!LM`2:|mٺe +*y£"5mUω t`M_\ت]vYV젘uhZvhƅaُ̎Qo:θJN~8..su8*z(>aﵓ p:,gɥ u&~NH_ ZnUJEQI+e+_HWz45*Ad[ã Ks]Ӡ1oZRծXO' s[r (EA ;4QR+(D2z42q(+% +OTNirzu >v\b 9>.qztvG}+ pE,eHO괰p`-9Pav8,Vٔfu1"qW;Cז'T"e ӵ֪}9"3d d>f~Ej(#BpT԰܉.MriO ;.D=Xa3&Hu2g6+WI { r&6KhES^W%Jz|~o QR)HǪyg c1i_P`!/~XE=D74ydnF3gL% C4POBO!bY+$Gݗ0O-i&71pIdAgphFxg{UhHmЭX`;knXbZOd*"$ħj:74dn6(/=U/WP!d>+BAk>up p2tKd M t08;7lp"X@cY1=G.ά-R׊,#qF#x&W$B4Mv V:~g2q-vjVt..셭SlS#f Xo &~4֭!Tƶ`D@º c,*~zɸ*:WW/zf˟!UzvŇ*@ݼ*{Agԓ1zo!~< C@~hz7̃ivY3(nJ2KlC.__1'24WnnՃO-vܾfRR O* [!;Ud /lL$CE…(>09iH@2[2ٻ@<@aq*Ȥzi;cj`VٴFCk*!x-Xnd%ڑliCˠB.owf9/Yo&\_sEe2I^NȪY} &c_~'F=j,>[4BipO_uaH9ښR^`A9(?[K!+Y1HTqꄆKM DBv}v8(X S"S(_6B`")CH5 wbzfz(_V 붉)I{Ⱥ[F;~?:3cNȘSEFL+ĜBrxK%[ea$Y@aN&zE)K&"F .p>S~VoƩ ؙz8 s&0Vk=?9:1n3ˍA ]j"Ϛ$k]k4*ʀ LO4iぅeLkG'tzrb:̗-t41lzN1}QU66 s2O3hE^kyk%P.\SW1XHcSig_XII(UH# ~ ؁&j?ט. =R@};&@6*U?P1<`zsÃB%A+z|J]SBF^~q*;H3z3" 7t+gBz|bo|eu$8U\sLx5 *aaUT#/ ]KQs)̢y(]6C~؀ '|.w+*Q$ ۈuu a$3)k]FgS0Ǫ֡]ml;0.b."I%B2UD+CT؎Jil]ҟKä3m\0W)+7}W=nV/K҃\ʘI}{Dg@͇Z ^Lrfu o[ Wd4wL.9~5H%Z] DX*2Բ{s;%¶Zr,|?5~\sBr~ʧ%x:>0b,|:~_XZ u8^AݭNfbjSd)IUG 귃v^pTWTO]vU7m]TT])D50t`¡I Iʥ׎E/J!\;|SOF{O=/'皦'eIp:})y+r) Nĵ/hGUt}(%#إ=6F~A6_sAZ_ZUR\;DXj?;h>'P":%r;z!K$\ƃMAW G=MW"Z[#]y/,R|E!߽8fVO9Z# %#%*O{2Ъe)[_]@W; q)He燻zAd<asjl7^v}媬ɥS}`GjMLGY[5+(jU|| EtIKalhIς2\ b̊2)I&%FwKR4_{hS%ג%=>$.Gh#aD`Z.01c9-l@# ҉閧*%ec'F68n =|5 iq%g;,>DS HtqK ,0@ne8d؁R{kBy, 1_{#2@ƪs>wGuxD}wؿ NvcK8ȍ:;\,7]7xC3ɟK} $jD*bC~"G2b=V?YM9KA]|a.#WQZXqGBwMӟr۱Էe[A&Lo+ 5/}A$I!ސ=4~ ^Tk #~BD˂ XEy0Uo2;gXp+ʜ|!nKNC|l1ٕYӈTsn;0HvI-,T03g }YekUXĶ3NNHjx5C4#-&1O]HKe‰y;ΦYQTԄ#~r#4h$D`7tQ.H7Y**GH/US֬Kp hn[ zCj)3"RtRkDaoM`2 ~4wjcc-m.ȁؓg^/PiB@ҁ^V/YVfwK75{W]?>rãr&5$bh82޸jI;}8vB9d%feɅ7erOG3S_S Oݧ"j" G՞f"ZܦMymVK'݉b8߀Y C?% 8[crټ򌥯R\([ut0CPG}NX1=5~~ݩS i(VS*ì|!P'u5C{|`m{ӌEp,TL]/PJ w{P͐j%]QLvsh;zFC!|=[~;/^*oq Nе.$c<9|r T\AUN6)@SYB!Q m|!]^a+W4F>#)4Kg-Vm/mUl38uqtdվ" CGalEQ9.'40RGqYf<W= 2'$s,xXeCU#zE. rw&諑XUeY(ʆ|u0.҉͟u+^Ԛ_h;VYB$]ݫ"j(99e"c~e~z*86%Kf /^ |C6?o֥zڨ rN+'7r{*51ShU0؏-ϼOGzst-nKU:vVhIqdF pn$ )7AsDG/%Zc"~_فc[MCw ,~=Z9F'ª{n#INئΞW~=N*he<24!n%IuUtѷ[͙stӥM/ a\g5L;CنN T}8rVyI+xrԓ!R1yp&X^x%28Oil9tF7|Nn+s}|:4=UdWܛ6nO7F͈F3ǽ@YFeXX85LmunFM'0xD}$JH8.0E%( 9_!!dexEBLJA6BS0Y&zPj%Z2v$.0T#j(m ,AP$l^1dQ֢P,Hf4^1>6M:_P: [ Y%:PLcM`~@=e͍Ę!|] n1NSˎO7C7W꿅q9(̯NqL wjWH;=K%X<gxY$ X3kEU|79+TU Bu@nӔF_;p[iӵZcbϜemn׌ J}MC`;y[YSD \Rt!n0pX}X:~731<}.l=B +C0Ͷ&8#Qm~py!(9ǐO3W!=D 3|GMt0PbK{\gJRӥEЁ8rB̌s%{0G,Ug^6 |Kpșlk6u>J\h,.{' #_-ZgS3-rʜX !:yy(oH,ipA{僂W! W2&zwCsFfq} %c;*|>- !\5ஹ\ Kn nE.Xc0]m&"}"/!Vub뙿IKmo:c(;v[ٚ~'m 1H\R4+q-zvZ$WDQ#+vvd1'^e~>o"jN@ӵӥ&0.H2uBO2ĕB:M(hў0#;z d:p)PTX-*Kk[D֔#MWCgıg1sPYte[Kp/`Eto1sax&TTg֟ ğ/me]5:{=`Oa҉t$$ԗ:N%0Gnl;"gf F~0C"]LXcOg; EK16'.cNweVFXkepB'k%!/羢 yذszr  =t/5E LPFXof)mHxq:]=դ{"M==-~K'wv 9z}6cm{՟.=zz@X aKz/?r1nz"2\|BLJ[9mTaMӖ 4ŕJhm4>SASts?Ol MI%?㕱ykB?lаBQǯD~uJ @eʃ)@NrԆFp8[,{Ps$8`(b5g[pgFqZN ~E7ɪKdyó1@ׯbbC=~˅6T*8U]{<7T`pY07"mTgrSH2n-t?:ZϑGQ7}/腾U.'j0ÌC{k,:^" XiD>4/#Rh~^a@ݥǞY+٘zeqIN_6*2Xaq11Æ£Wгͫ73zР}QS~BXi}F԰n${g3m;">sbu9Apb-݂DN:%e+9j"Yg> &L%Vvr7ryQf;όp횾j1һ-JSR11P^MDfhdɭ"`'FJF wEQK2ylV+zAkG<ɩz߀+Zpy Nq:?(VAO5qaSv84f'f$FوhdY_eP;-) !,c Ԕv2C*4jUa/S~`r`zsznk=o%i i5qHH'?n- d]_ЈdN'5>QX /PqQ/baB!< Pѓnw@>3'=ۏ9ipv5%(}0:0<[AЈP߇p:i0?kz֞N9|ԭY"Sk"^Z- F K˽J|Dtlr`kvo\e1=.QV-ڂyLyEVA o3T1*^(xq`J;>s/~V#Mm@a 77d4V  !>鹐MJs^s-5.nEOkk*,GaUƿMg!ΖLKg% 1_c VIãsO;:lO)6%'Eȴ[.:Dr˧.o-q(0?/z`F\JX.mݩ@@M-C:QI%JB(ц ݗnN;s?Si(⿯} :DP7G66Z}s=W{|RgGq˨\nLr_6K {䕝r7mϸmҕkwgސ8S Z全wE#K[jjh({;y޳*<ͫiQbH,ʗ7Ç$JDRklȧ۫ƴ ZxʽN-ֽj)WI2!_Jc@h OQ',$m (Tr d;^Č)ė[2F=QӠi P/3҄ʎKkϰ HrdBYY¬7 vk I'% yKE ZS< $,S(aCU#rR-U>n7ɑ^=7W#5e4KoY}YK"lއ\eq"Y(Z_[кѯb+Ѿݸ%)BjMtFBIo<ˆCHp[4=.ŕpr[|D `xdcm&в\.)=я68n$ID"DB-0A tnN(Ck5hըx׽XZ-D5? ;D`| rJDw HA`t){m)iԏb&R:oY^~Ez#7/X}L&{сpfnoZ?Ԥtv?b .M=SfuDQH:`D/;T]jUAߠC9GD3Fgq?Dgq  ߗ[kz<&+IJ6m:8 j }*Pl:*’ jwY f3y*duQt +r :f7taJ.!hWh~fD;8 FK?sUTɘXyect+F}Cgs׼d1$Cu-ahxѦed G.߼,G4 v3 Lrgmt٫X28Ip|rs,ЩjJwpz\>p V` ,jb 8+MOU^ hFfmO'ca~O_3,Y0#w;Jr;9%?Y"@q^Kp*7,Z05{@?Qwt&_ mma(;hae|F{(ƭ|qw Wi6+Ջ毱ujxЊ,VS5IHl_\1ۖ%okà 3)Ǯp-B^mJ49dω\gbT.]:κ汻֩ \VVt2l4f* XsoHC| j\'TFV9oF,( Qժ( }B$9eDom`[fV4}p#]8~ kЦTbc,H*[7\ђg[7 ^4~ ^e-|gzE {OW!Z$\cPQBw[ &hTct_ޗg튵bw=|(Pf^P@c"FSxGp0܀^TD#jv1.xRԞ}Xo7;<4N8)ܞ>b̧IjSlY?Xdkp(&AHvXarУWU_Q3 Q%QAG96={IWS;,?hk ^_?=bKmʜ(jH_ K5<;<ףes(ۨ]6mWbF{V+:[ ?RswB?e n<Cɝ)p0+F+$?⪛|, uS!^Fm2H,xصUrsE>+k_%J68v]3ٳ*>\}):C8wH2]}U&;:J-`;ϲ9bl@9߳@*X %QlUB%ֹJhkr{.Uu4N NɹhΞ/{~"7>zȕ {Sg̬%h)%&B+j^d`Oj#;AпZ 9<#Ӥ+WP(}i@娒lărbZf5k_ע%f(yǾmEZXDޠm^o,<~wʷU뙄 é&on!{Hzq/{LjB@.<x$$kMc!SH0B j渗,F&ff_qՉp~6myJ2Kڎg-;EmGXӒRi#ɣ8сj0[k- I9J 2Uh,iF}Er|s7ARgU6)((;論 +vpwß"_3Izce?*{[s0+HAhEu0>tI_-(uZt oC m?a" kF3`nz=.37Q X+4XKYwj,DXϱdn%O,}2Tt^X%Oʲhav aLqX3dxXBhS\Q_TCޤ2 2PI\^QZFsA o bq:WEP@5WkI[[k! yȦ劐3?V#Q߂̣isaA;e\(ͦn}>^OաFӃi,ɳ^=>Eh" |hpC78y)(҆CK=wK-|ԕvhb&̫4Yvp 4͑] B-FW@#7|mPx4_Vl emբOcRe[e[O/bݼׯ$fUpÒ _Ʈ-R-o>emTco;Dab9 (@ثtݥf+c^R7:q"˦)p/8IB$KQC޻[j׆{0ʸh\Q2u~t>(t=AT}j\Ӗk݊wNՋO{ GVv7 >fVaW.0:yaZɌe\z=Ԃ_7, SW xM 2ͮX/ wO>ݻ޽ϬGym[}{ۗ{}=6]^޽<}ﹾݖ})f2w}MuQOhovE&81=aB(2+qhH{F <']oӌ}L>YWBvmR]qvw[^ݛ^]tq{w xMU{&,1D`ZĘ~iG?r`R ^9g/$ZR:UF/S|WCݓ&+ib@ͅ JI@s٩({5\+0!'eGN-&@/d6:ŲXYvт%@ۋIwĮB8PKW #T`4`D,W/F7Yrk;vcNБ'?UJ #2Ǽ-bu4g#V<цdhn9>WZNd%_Uo⍽r,iQ@;(]-;/+óӸ7|\+û n. :4AZʧm4OR+iy9cb޴Cg 1}Ԁڬ兂j)ۚy/eT(ʴkEYVeO)nQ&a%>|J6ۂ&w3W};ALTO-ٳpv$]r QբxUT/Z5_c%` \EBߠfRkk; hS]nl{/7,N#ECUgeW_ttС! < QR8T9*&.ʬ]oI*1aAbjp'ݼv,ˊUE1j9UC?,8zЗ4qZ+̩ #-ȇ=j"t Wܟ|bF)%vpJX PYYk= ƌ5\P$6qOTVsiy[Uj9*wz])^}w w2ZF; @GfErwV8@csV \M]?ʁ;r0Q<!UK@(KҾGT$@KocA a1S`,y hOɬUE-K=ntF*?d|UwAjB4sSWPY1P]#tW<(3nc[\)os=?')Hv*IƆ Bfy]eB{# ◛οYK%@(VuQ\#!K5n_;`-ud{w9(T4ЋaD[jYu_m&;%\3G#)I7B랩ntx#w8>B)/<%)VʜfiU{sPL,UGtLE"(?N=5g?D%=?yI>v5Ulo6ԏ$ړސB )i`Id:ȤÍv$Ve%]$(={P<3ޗ-19+=^MYe|O-SIζ'"k6(+\߫PBcNzM**" >ϒ|R]K >riX~LjֳK9"$dsOCDuDTs u27n_|Mo]%,> k;WJ:)+lj>w;G mv$\ӹOfV JPžkdv8_mH#Ly0ikE-MGfVy߃) v!P`N66s_&hm(qY&a^y4.J>%6B9QMќ 2#+sLS2*n<vU:n(7x5nDYEJv 3։aMl`HhrQMc?A`V*4[n(O>evnEWbU>J\`;mnTcXzҶ7,YKi*B4MN׻pjqS.KU$ɖk6WP iNDZePݼސٔjf e#4ZkC6Bk1}g侩^8Aݥl(W$w'+ /x[ l9¸$1xa!Lp܃=a 1ݽsЬ>lmgvFe[F\ͣdM_`O FZ$dh^r6g)aa]VΫT\Cr*3aNwM5 5q_w|u N1`dcsiqCiJXt7 ї#2,g܋s2EBˎ.luƏZQbD<3X HN Wy=oL/ C`ǭ\E&/B\4-H|.?}~"PE؈ F;͇(@ݭ^;SS߼ %_uFD--"yxZm׎CmH4^C$ju ttaF&ĺ=^!8׆B_ ~3J.l>d  I+8@?.qo0jwރGƟ*r瓢iUkaLQ R`\s뛮jd}l[e v0{Wry"TsPd"vf="LRL(l&3Eo!8E$"gr_Ƞ'5 fμFm_kݣMQgd;b m {8C-fVo cCV}hu}@!M٥%HF&Ft{13k3EV̥l *ݦ}K=TݵHXZgf!74o bwZZhPW3/ 8sԤWdwGrMt}"e,4ڧvz`uSQn%ܦ~\ -{`E՛ 8,ɦ"T̽}{GJj3GuS=,zw+:-DFdj8S{ ^Ax#aΗ}x"aqUhR!]:r䀾ZS"x܍{PF؁lcuj.L<<~8zh9E.J 1M(pވM}p9O6fj6}.:փZq2XX^qX oι{l' #c0rhq )"ɂ>,jyY6DqʳœwS );wU\hN.#vyZ{f曉v?xiʯ_aD ;΍He.毸~l˽{5B:ϥ*1uQ ^j\/Cˆp_ 'dvQj.ښx@jBg^d*ڑ7hGq.]?:Tk66y2u:2ȒTc-0S9?y.>,CH+9z :|>nG"t[BDQ^5űBfogiP E=Q҆:CBV"#dW5ځkGgqۑ={u3"8q!K񚟻0@'H%%Ե$IB7(2bK.=P}h#Qeӌp }T<`n]hڂ7 SXVw/;Y[4FPJ9o'U~y2h>g"J}?<"Y~j|s[s z|\1y KVm&k7 nzj۵[(E|Ҍ`mGײzb~v#D*k]Ez$-f,C[hP`o`p+3704p~yNY㵘sK%Lwo$E\1* lqJM_?ߦn9oA<9R}x  =hfݜvM}2Zg 褍|etq–[e-SU4SV^n/т~cj덃0Ef ^0S,)GB1o#x/bs`A3˞ՎACTH rtnյdZ xc}*e" 1p|CAA!8&&(( a/N$K] L֯vLn9+]|W]w/gU=D*ؙGx^b~70C?[z_Oվ =͹BEl:pX\#E{!2}0RC5u7>.6Q570r_X~:| /~|cXAU"#&¤0HsK'45?Š*,bL0(ݪ;EqTӉH'Ŀ1\;Իw~0FR ,XgB5,i VT;vV`QV xOjRAvQ̛}ߒH~Uپ4^ك >|Fǫ oGL@yb=Z$ ]># wG]4SU/鬱+_|HDŽJWܲu! Stm_okτ'o"^e`S2Y>?*Qq `hjOrCFBiسPkY z+Iv$Udꪀbjn~1Sh|X}Ce$m _7zbXMgP} lAU 5E)+ g)r" ,uEvmTT$,8_}UCdi,H1p"V坳qy@6\)-G4B;8\&e_!XSWs \Y)K o!:hjҏЭrms̤j(~=ea0O嘪btg4A`/` 1I@`khQ 1n%uq@.ٵbJpӳ927e@ IlR;c/`C$+E]ɋ‚9'/#2e^+dA,Qm_o.3ϵ閳ӄɉ ;=|^ ~}fT_`Ou9sqV.7j@k/식S4,?߿t^n}s(j뒞8Hia1'*'`[T<) -)kuMm%\cWWLKz~ O_-{G/2LuURD\l;4uO@I;r:@?{N7 _|T%0S gFt|PSF-=|X%5jgՕrgG׉Dv0jiS,VM^ZNk3:Y򶅎ĞXu 8J\_B#KLa@ )ٮ8ArM0q4-Y&UJua~M0UtgL![[e75}6u6tXgw[ z>V.rk7ΨT6Pq2hRݟ!?j>'&Ge.-(}c?pD+Y;;%`SWjr) E ]Fe n z e\˨XMW| !BW!Q^|f8x+]i7f<L#( HĜ5E&_'횴IJR8Q}n٫+x &Y{TR|JKg㟥^v)dYOs BĐ]Z|,>0Skl`WKEj=}˪rwIAcrj|HHw)|/#]R>QW,gܹ}y{7{ ѩ!sG qFl?4S~+3AddZa](6︔3۷?py4֦%y{X.P=yA؄$z%@n:Фn6EFɁwC?¡$r)?"14Q>_1[L9mēv!TF) p ٘~}$_7ؗB8Tvba+wozs Bl9{oz%p~q ǚ!ƁO9m-/" 6ñR%xG5JMZ"T{?q :nq})45GD/I<Y؞gjU y⠇Y$cyEŴPZ{Owڧ:sKq*]pwu6və$%Tx(ݖw+UEپj՚JMiR7oC߅HNKZ"qm)2[uI.P悛dtفʥ #Iu*;qצ Y;Wr+sLCq !>&dG]bn]ۉ'Y s6Ƙu 8J8EV˚9`k/.AB?vGu}-^2ZRFSD,ɳśc' LE+s\RBE>bJh]qAhCFUJQȊ߸B}ƒwo$Ǝ\Nc"Hȟ}>euڙjt?/8Ucf2L\SCvh)[HSNfȣ}r!h/s{>ˣǖSU/_`BZT DZߤ횉w4;| ď2jx8kUi8Ue8[,c 3[{L' YKGDczPyM&^x6 ~t4VvM lA\M׿n'?*; l)|f@Euط/-CeLr$HУX;ỉT ^ۄl]1:KvduJZ߲mBЗ6EAC1u>g`M}^ֺ.펰 "qVv2yc\N<ju^UՙĿbgNۓ fJSFwkSё qh NC[D~}fqAGS+&M<Sku=:/A0N7c-cx|(mRik꾘ce1d tEcɴުa:pYlU`[npM_-cnIjІ6=_13E^vT"yAb"Osi'Wh zqaXk2ec2*(hӸ~,(z qs??AE]1Q8]iSi *xW ΐ ~g`6J ,KɒUC6oVV }ˀٽ&&=*&TVXWO_qn]j]zoKǰrH޲8~ Zv0xQ(u"CKyϘɍy Yuhﰟf`bdtss$= ʅBk[lWBZFJ űJ> e7oD @# T޿ڷC+)GS1w>+f T}^a[l@ {nKm2ʠy(|ʐtaQ8S~rΤW l&IR&N@ZOc~"9-N>9<ɺ'P4`~x nDZCjǴ+Lfnʚ6 >n=kd|4PIg̾N2Pܲ"gHvH&z,bU(z%fZT>~$oRF/Cs:1}DcOLmYyv[F\ Aj ލDC+ѭ;Ds< @/{ % OL &¾gLHgFEDl~rsilĪ5%C o;~f-ʇnŔH]J-J!6'qG'ɇK.ٯ$6"U%&q輅bQ @ҙ'_i?2s>:;LICݱY>Hm2;Rj:hA sY H݈\4޹λeF4lR|]BB{