src/cm/media/js/lib/yui/yui3.0.0/build/get/get.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 0 40c8f766c9b8
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     1
/*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     2
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     3
Code licensed under the BSD License:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     4
http://developer.yahoo.net/yui/license.txt
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     5
version: 3.0.0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
build: 1549
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     7
*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     8
YUI.add('get', 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
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
 * Provides a mechanism to fetch remote resources and
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    14
 * insert them into a document.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    15
 * @module yui
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
 * @submodule get
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    18
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    19
var ua         = Y.UA, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    20
    L          = Y.Lang,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    21
    // PREFIX     = Y.guid(),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    22
    TYPE_JS    = "text/javascript",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    23
    TYPE_CSS   = "text/css",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    24
    STYLESHEET = "stylesheet";
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    25
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    26
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    27
 * Fetches and inserts one or more script or link nodes into the document 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    28
 * @class Get
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    29
 * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    30
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    31
Y.Get = function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    32
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    33
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    34
     * hash of queues to manage multiple requests
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    35
     * @property queues
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    36
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    37
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    38
    var queues={}, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    39
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    40
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    41
     * queue index used to generate transaction ids
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    42
     * @property qidx
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    43
     * @type int
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    44
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    45
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    46
        qidx=0, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    47
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    48
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    49
     * interal property used to prevent multiple simultaneous purge 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    50
     * processes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    51
     * @property purging
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    52
     * @type boolean
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    53
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    54
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    55
        purging=false,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    56
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    57
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    58
    /** 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    59
     * Generates an HTML element, this is not appended to a document
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    60
     * @method _node
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    61
     * @param type {string} the type of element
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    62
     * @param attr {string} the attributes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    63
     * @param win {Window} optional window to create the element in
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    64
     * @return {HTMLElement} the generated node
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    65
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    66
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    67
    _node = function(type, attr, win) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    68
        var w = win || Y.config.win, d=w.document, n=d.createElement(type),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    69
            i;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    70
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    71
        for (i in attr) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    72
            if (attr[i] && attr.hasOwnProperty(i)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    73
                n.setAttribute(i, attr[i]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    74
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    75
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    76
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    77
        return n;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    78
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    79
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    80
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    81
     * Generates a link node
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    82
     * @method _linkNode
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    83
     * @param url {string} the url for the css file
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    84
     * @param win {Window} optional window to create the node in
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    85
     * @param attributes optional attributes collection to apply to the new node
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    86
     * @return {HTMLElement} the generated node
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    87
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    88
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    89
    _linkNode = function(url, win, attributes) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    90
        var o = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    91
            id:   Y.guid(),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    92
            type: TYPE_CSS,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    93
            rel:  STYLESHEET,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    94
            href: url
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    95
        };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    96
        if (attributes) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    97
            Y.mix(o, attributes);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    98
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    99
        return _node("link", o, win);
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
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   103
     * Generates a script node
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   104
     * @method _scriptNode
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   105
     * @param url {string} the url for the script file
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   106
     * @param win {Window} optional window to create the node in
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   107
     * @param attributes optional attributes collection to apply to the new node
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   108
     * @return {HTMLElement} the generated node
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   109
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   110
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   111
    _scriptNode = function(url, win, attributes) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   112
        var o = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   113
            id:   Y.guid(),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   114
            type: TYPE_JS,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   115
            src:  url
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   116
        };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   117
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   118
        if (attributes) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   119
            Y.mix(o, attributes);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   120
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   121
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   122
        return _node("script", o, win);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   123
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   124
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   125
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   126
     * Removes the nodes for the specified queue
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   127
     * @method _purge
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   128
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   129
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   130
    _purge = function(tId) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   131
        var q=queues[tId], n, l, d, h, s, i, node, attr;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   132
        if (q) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   133
            n = q.nodes; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   134
            l = n.length;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   135
            d = q.win.document;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   136
            h = d.getElementsByTagName("head")[0];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   137
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   138
            if (q.insertBefore) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   139
                s = _get(q.insertBefore, tId);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   140
                if (s) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   141
                    h = s.parentNode;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   142
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   143
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   144
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   145
            for (i=0; i<l; i=i+1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   146
                node = n[i];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   147
                if (node.clearAttributes) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   148
                    node.clearAttributes();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   149
                } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   150
                    // This is a hostile delete
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   151
                    // operation attempting to improve
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   152
                    // memory performance.  As such, the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   153
                    // hasOwnProperty check is intentionally
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   154
                    // ommitted.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   155
                    for (attr in node) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   156
                        delete node[attr];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   157
                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   158
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   159
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   160
                h.removeChild(node);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   161
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   162
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   163
        q.nodes = [];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   164
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   165
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   166
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   167
     * Returns the data payload for callback functions
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   168
     * @method _returnData
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   169
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   170
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   171
    _returnData = function(q, msg, result) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   172
        return {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   173
                tId: q.tId,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   174
                win: q.win,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   175
                data: q.data,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   176
                nodes: q.nodes,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   177
                msg: msg,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   178
                statusText: result,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   179
                purge: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   180
                    _purge(this.tId);
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
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   184
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   185
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   186
     * The transaction is finished
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   187
     * @method _end
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   188
     * @param id {string} the id of the request
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   189
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   190
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   191
    _end = function(id, msg, result) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   192
        var q = queues[id], sc;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   193
        if (q && q.onEnd) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   194
            sc = q.context || q;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   195
            q.onEnd.call(sc, _returnData(q, msg, result));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   196
        }
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
    /*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   200
     * The request failed, execute fail handler with whatever
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   201
     * was accomplished.  There isn't a failure case at the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   202
     * moment unless you count aborted transactions
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   203
     * @method _fail
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   204
     * @param id {string} the id of the request
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   205
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   206
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   207
    _fail = function(id, msg) {
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
        var q = queues[id], sc;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   211
        if (q.timer) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   212
            // q.timer.cancel();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   213
            clearTimeout(q.timer);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   214
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   215
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   216
        // execute failure callback
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   217
        if (q.onFailure) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   218
            sc = q.context || q;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   219
            q.onFailure.call(sc, _returnData(q, msg));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   220
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   221
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   222
        _end(id, msg, 'failure');
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
    _get = function(nId, tId) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   226
        var q = queues[tId],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   227
            n = (L.isString(nId)) ? q.win.document.getElementById(nId) : nId;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   228
        if (!n) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   229
            _fail(tId, "target node not found: " + nId);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   230
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   231
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   232
        return n;
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
     * The request is complete, so executing the requester's callback
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   237
     * @method _finish
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   238
     * @param id {string} the id of the request
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   239
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   240
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   241
    _finish = function(id) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   242
        var q = queues[id], msg, sc;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   243
        if (q.timer) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   244
            // q.timer.cancel();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   245
            clearTimeout(q.timer);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   246
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   247
        q.finished = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   248
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   249
        if (q.aborted) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   250
            msg = "transaction " + id + " was aborted";
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   251
            _fail(id, msg);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   252
            return;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   253
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   254
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   255
        // execute success callback
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   256
        if (q.onSuccess) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   257
            sc = q.context || q;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   258
            q.onSuccess.call(sc, _returnData(q));
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
        _end(id, msg, 'OK');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   262
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   263
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   264
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   265
     * Timeout detected
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   266
     * @method _timeout
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   267
     * @param id {string} the id of the request
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   268
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   269
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   270
    _timeout = function(id) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   271
        var q = queues[id], sc;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   272
        if (q.onTimeout) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   273
            sc = q.context || q;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   274
            q.onTimeout.call(sc, _returnData(q));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   275
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   276
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   277
        _end(id, 'timeout', 'timeout');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   278
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   279
    
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
     * Loads the next item for a given request
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   283
     * @method _next
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   284
     * @param id {string} the id of the request
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   285
     * @param loaded {string} the url that was just loaded, if any
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   286
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   287
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   288
    _next = function(id, loaded) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   289
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   290
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   291
        var q = queues[id], msg, w, d, h, n, url, s;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   292
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   293
        if (q.timer) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   294
            // q.timer.cancel();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   295
            clearTimeout(q.timer);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   296
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   297
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   298
        if (q.aborted) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   299
            msg = "transaction " + id + " was aborted";
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   300
            _fail(id, msg);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   301
            return;
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
        if (loaded) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   305
            q.url.shift(); 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   306
            if (q.varName) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   307
                q.varName.shift(); 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   308
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   309
        } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   310
            // This is the first pass: make sure the url is an array
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   311
            q.url = (L.isString(q.url)) ? [q.url] : q.url;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   312
            if (q.varName) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   313
                q.varName = (L.isString(q.varName)) ? [q.varName] : q.varName;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   314
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   315
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   316
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   317
        w = q.win; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   318
        d = w.document; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   319
        h = d.getElementsByTagName("head")[0];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   320
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   321
        if (q.url.length === 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   322
            _finish(id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   323
            return;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   324
        } 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   325
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   326
        url = q.url[0];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   327
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   328
        // if the url is undefined, this is probably a trailing comma problem in IE
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   329
        if (!url) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   330
            q.url.shift(); 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   331
            return _next(id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   332
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   333
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   334
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   335
        if (q.timeout) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   336
            // q.timer = L.later(q.timeout, q, _timeout, id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   337
            q.timer = setTimeout(function() { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   338
                _timeout(id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   339
            }, q.timeout);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   340
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   341
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   342
        if (q.type === "script") {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   343
            n = _scriptNode(url, w, q.attributes);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   344
        } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   345
            n = _linkNode(url, w, q.attributes);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   346
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   347
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   348
        // track this node's load progress
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   349
        _track(q.type, n, id, url, w, q.url.length);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   350
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   351
        // add the node to the queue so we can return it to the user supplied callback
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   352
        q.nodes.push(n);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   353
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   354
        // add it to the head or insert it before 'insertBefore'
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   355
        if (q.insertBefore) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   356
            s = _get(q.insertBefore, id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   357
            if (s) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   358
                s.parentNode.insertBefore(n, s);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   359
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   360
        } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   361
            h.appendChild(n);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   362
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   363
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   364
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   365
        // FireFox does not support the onload event for link nodes, so there is
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   366
        // no way to make the css requests synchronous. This means that the css 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   367
        // rules in multiple files could be applied out of order in this browser
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   368
        // if a later request returns before an earlier one.  Safari too.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   369
        if ((ua.webkit || ua.gecko) && q.type === "css") {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   370
            _next(id, url);
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
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   375
     * Removes processed queues and corresponding nodes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   376
     * @method _autoPurge
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   377
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   378
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   379
    _autoPurge = function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   380
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   381
        if (purging) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   382
            return;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   383
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   384
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   385
        purging = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   386
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   387
        var i, q;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   388
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   389
        for (i in queues) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   390
            if (queues.hasOwnProperty(i)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   391
                q = queues[i];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   392
                if (q.autopurge && q.finished) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   393
                    _purge(q.tId);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   394
                    delete queues[i];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   395
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   396
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   397
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   398
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   399
        purging = false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   400
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   401
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   402
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   403
     * Saves the state for the request and begins loading
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   404
     * the requested urls
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   405
     * @method queue
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   406
     * @param type {string} the type of node to insert
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   407
     * @param url {string} the url to load
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   408
     * @param opts the hash of options for this request
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   409
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   410
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   411
    _queue = function(type, url, opts) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   412
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   413
        opts = opts || {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   414
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   415
        var id = "q" + (qidx++), q,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   416
            thresh = opts.purgethreshold || Y.Get.PURGE_THRESH;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   417
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   418
        if (qidx % thresh === 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   419
            _autoPurge();
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
        queues[id] = Y.merge(opts, {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   423
            tId: id,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   424
            type: type,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   425
            url: url,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   426
            finished: false,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   427
            nodes: []
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   428
        });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   429
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   430
        q           = queues[id];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   431
        q.win       = q.win || Y.config.win;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   432
        q.context   = q.context || q;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   433
        q.autopurge = ("autopurge" in q) ? q.autopurge : 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   434
                      (type === "script") ? true : false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   435
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   436
        if (opts.charset) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   437
            q.attributes = q.attributes || {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   438
            q.attributes.charset = opts.charset;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   439
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   440
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   441
        // L.later(0, q, _next, id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   442
        setTimeout(function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   443
            _next(id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   444
        }, 0);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   445
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   446
        return {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   447
            tId: id
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   448
        };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   449
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   450
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   451
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   452
     * Detects when a node has been loaded.  In the case of
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   453
     * script nodes, this does not guarantee that contained
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   454
     * script is ready to use.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   455
     * @method _track
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   456
     * @param type {string} the type of node to track
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   457
     * @param n {HTMLElement} the node to track
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   458
     * @param id {string} the id of the request
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   459
     * @param url {string} the url that is being loaded
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   460
     * @param win {Window} the targeted window
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   461
     * @param qlength the number of remaining items in the queue,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   462
     * including this one
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   463
     * @param trackfn {Function} function to execute when finished
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   464
     * the default is _next
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   465
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   466
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   467
    _track = function(type, n, id, url, win, qlength, trackfn) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   468
        var f = trackfn || _next;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   469
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   470
        // IE supports the readystatechange event for script and css nodes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   471
        // Opera only for script nodes.  Opera support onload for script
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   472
        // nodes, but this doesn't fire when there is a load failure.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   473
        // The onreadystatechange appears to be a better way to respond
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   474
        // to both success and failure.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   475
        if (ua.ie) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   476
            n.onreadystatechange = function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   477
                var rs = this.readyState;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   478
                if ("loaded" === rs || "complete" === rs) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   479
                    n.onreadystatechange = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   480
                    f(id, url);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   481
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   482
            };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   483
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   484
        // webkit prior to 3.x is no longer supported
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   485
        } else if (ua.webkit) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   486
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   487
            if (type === "script") {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   488
                // Safari 3.x supports the load event for script nodes (DOM2)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   489
                n.addEventListener("load", function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   490
                    f(id, url);
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
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   494
        // FireFox and Opera support onload (but not DOM2 in FF) handlers for
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   495
        // script nodes.  Opera, but not FF, supports the onload event for link
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   496
        // nodes.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   497
        } else { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   498
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   499
            n.onload = function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   500
                f(id, url);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   501
            };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   502
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   503
            n.onerror = function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   504
                _fail(id, e + ": " + url);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   505
            };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   506
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   507
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   508
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   509
    return {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   510
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   511
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   512
         * The number of request required before an automatic purge.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   513
         * Can be configured via the 'purgethreshold' config
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   514
         * property PURGE_THRESH
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   515
         * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   516
         * @type int
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   517
         * @default 20
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   518
         * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   519
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   520
        PURGE_THRESH: 20,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   521
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   522
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   523
         * Called by the the helper for detecting script load in Safari
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   524
         * @method _finalize
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   525
         * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   526
         * @param id {string} the transaction id
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   527
         * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   528
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   529
        _finalize: function(id) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   530
            // L.later(0, null, _finish, id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   531
            setTimeout(function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   532
                _finish(id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   533
            }, 0);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   534
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   535
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   536
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   537
         * Abort a transaction
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   538
         * @method abort
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   539
         * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   540
         * @param o {string|object} Either the tId or the object returned from
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   541
         * script() or css()
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   542
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   543
        abort: function(o) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   544
            var id = (L.isString(o)) ? o : o.tId,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   545
                q = queues[id];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   546
            if (q) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   547
                q.aborted = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   548
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   549
        }, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   550
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   551
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   552
         * Fetches and inserts one or more script nodes into the head
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   553
         * of the current document or the document in a specified window.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   554
         *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   555
         * @method script
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   556
         * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   557
         * @param url {string|string[]} the url or urls to the script(s)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   558
         * @param opts {object} Options: 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   559
         * <dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   560
         * <dt>onSuccess</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   561
         * <dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   562
         * callback to execute when the script(s) are finished loading
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   563
         * The callback receives an object back with the following
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   564
         * data:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   565
         * <dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   566
         * <dt>win</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   567
         * <dd>the window the script(s) were inserted into</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   568
         * <dt>data</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   569
         * <dd>the data object passed in when the request was made</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   570
         * <dt>nodes</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   571
         * <dd>An array containing references to the nodes that were
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   572
         * inserted</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   573
         * <dt>purge</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   574
         * <dd>A function that, when executed, will remove the nodes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   575
         * that were inserted</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   576
         * <dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   577
         * </dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   578
         * </dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   579
         * <dt>onTimeout</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   580
         * <dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   581
         * callback to execute when a timeout occurs.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   582
         * The callback receives an object back with the following
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   583
         * data:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   584
         * <dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   585
         * <dt>win</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   586
         * <dd>the window the script(s) were inserted into</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   587
         * <dt>data</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   588
         * <dd>the data object passed in when the request was made</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   589
         * <dt>nodes</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   590
         * <dd>An array containing references to the nodes that were
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   591
         * inserted</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   592
         * <dt>purge</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   593
         * <dd>A function that, when executed, will remove the nodes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   594
         * that were inserted</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   595
         * <dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   596
         * </dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   597
         * </dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   598
         * <dt>onEnd</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   599
         * <dd>a function that executes when the transaction finishes, regardless of the exit path</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   600
         * <dt>onFailure</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   601
         * <dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   602
         * callback to execute when the script load operation fails
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   603
         * The callback receives an object back with the following
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   604
         * data:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   605
         * <dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   606
         * <dt>win</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   607
         * <dd>the window the script(s) were inserted into</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   608
         * <dt>data</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   609
         * <dd>the data object passed in when the request was made</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   610
         * <dt>nodes</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   611
         * <dd>An array containing references to the nodes that were
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   612
         * inserted successfully</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   613
         * <dt>purge</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   614
         * <dd>A function that, when executed, will remove any nodes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   615
         * that were inserted</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   616
         * <dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   617
         * </dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   618
         * </dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   619
         * <dt>context</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   620
         * <dd>the execution context for the callbacks</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   621
         * <dt>win</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   622
         * <dd>a window other than the one the utility occupies</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   623
         * <dt>autopurge</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   624
         * <dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   625
         * setting to true will let the utilities cleanup routine purge 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   626
         * the script once loaded
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   627
         * </dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   628
         * <dt>purgethreshold</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   629
         * <dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   630
         * The number of transaction before autopurge should be initiated
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   631
         * </dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   632
         * <dt>data</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   633
         * <dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   634
         * data that is supplied to the callback when the script(s) are
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   635
         * loaded.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   636
         * </dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   637
         * <dt>insertBefore</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   638
         * <dd>node or node id that will become the new node's nextSibling</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   639
         * </dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   640
         * <dt>charset</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   641
         * <dd>Node charset, default utf-8 (deprecated, use the attributes config)</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   642
         * <dt>attributes</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   643
         * <dd>An object literal containing additional attributes to add to the link tags</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   644
         * <dt>timeout</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   645
         * <dd>Number of milliseconds to wait before aborting and firing the timeout event</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   646
         * <pre>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   647
         * &nbsp;&nbsp;Y.Get.script(
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   648
         * &nbsp;&nbsp;["http://yui.yahooapis.com/2.5.2/build/yahoo/yahoo-min.js",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   649
         * &nbsp;&nbsp;&nbsp;"http://yui.yahooapis.com/2.5.2/build/event/event-min.js"], &#123;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   650
         * &nbsp;&nbsp;&nbsp;&nbsp;onSuccess: function(o) &#123;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   651
         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.log("won't cause error because Y is the context");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   652
         * &nbsp;&nbsp;&nbsp;&nbsp;&#125;,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   653
         * &nbsp;&nbsp;&nbsp;&nbsp;onFailure: function(o) &#123;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   654
         * &nbsp;&nbsp;&nbsp;&nbsp;&#125;,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   655
         * &nbsp;&nbsp;&nbsp;&nbsp;onTimeout: function(o) &#123;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   656
         * &nbsp;&nbsp;&nbsp;&nbsp;&#125;,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   657
         * &nbsp;&nbsp;&nbsp;&nbsp;data: "foo",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   658
         * &nbsp;&nbsp;&nbsp;&nbsp;timeout: 10000, // 10 second timeout
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   659
         * &nbsp;&nbsp;&nbsp;&nbsp;context: Y, // make the YUI instance
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   660
         * &nbsp;&nbsp;&nbsp;&nbsp;// win: otherframe // target another window/frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   661
         * &nbsp;&nbsp;&nbsp;&nbsp;autopurge: true // allow the utility to choose when to remove the nodes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   662
         * &nbsp;&nbsp;&nbsp;&nbsp;purgetheshold: 1 // purge previous transaction before next transaction
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   663
         * &nbsp;&nbsp;&#125;);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   664
         * </pre>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   665
         * @return {tId: string} an object containing info about the transaction
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   666
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   667
        script: function(url, opts) { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   668
            return _queue("script", url, opts); 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   669
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   670
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   671
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   672
         * Fetches and inserts one or more css link nodes into the 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   673
         * head of the current document or the document in a specified
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   674
         * window.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   675
         * @method css
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   676
         * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   677
         * @param url {string} the url or urls to the css file(s)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   678
         * @param opts Options: 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   679
         * <dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   680
         * <dt>onSuccess</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   681
         * <dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   682
         * callback to execute when the css file(s) are finished loading
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   683
         * The callback receives an object back with the following
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   684
         * data:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   685
         * <dl>win</dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   686
         * <dd>the window the link nodes(s) were inserted into</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   687
         * <dt>data</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   688
         * <dd>the data object passed in when the request was made</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   689
         * <dt>nodes</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   690
         * <dd>An array containing references to the nodes that were
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   691
         * inserted</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   692
         * <dt>purge</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   693
         * <dd>A function that, when executed, will remove the nodes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   694
         * that were inserted</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   695
         * <dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   696
         * </dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   697
         * </dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   698
         * <dt>context</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   699
         * <dd>the execution context for the callbacks</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   700
         * <dt>win</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   701
         * <dd>a window other than the one the utility occupies</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   702
         * <dt>data</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   703
         * <dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   704
         * data that is supplied to the callbacks when the nodes(s) are
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   705
         * loaded.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   706
         * </dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   707
         * <dt>insertBefore</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   708
         * <dd>node or node id that will become the new node's nextSibling</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   709
         * <dt>charset</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   710
         * <dd>Node charset, default utf-8 (deprecated, use the attributes config)</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   711
         * <dt>attributes</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   712
         * <dd>An object literal containing additional attributes to add to the link tags</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   713
         * </dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   714
         * <pre>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   715
         *      Y.Get.css("http://yui.yahooapis.com/2.3.1/build/menu/assets/skins/sam/menu.css");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   716
         * </pre>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   717
         * <pre>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   718
         * &nbsp;&nbsp;Y.Get.css(
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   719
         * &nbsp;&nbsp;["http://yui.yahooapis.com/2.3.1/build/menu/assets/skins/sam/menu.css",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   720
         * &nbsp;&nbsp;&nbsp;&nbsp;insertBefore: 'custom-styles' // nodes will be inserted before the specified node
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   721
         * &nbsp;&nbsp;&#125;);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   722
         * </pre>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   723
         * @return {tId: string} an object containing info about the transaction
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   724
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   725
        css: function(url, opts) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   726
            return _queue("css", url, opts); 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   727
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   728
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   729
}();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   730
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   731
})();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   732
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   733
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   734
}, '3.0.0' );