src/cm/media/js/lib/yui/yui3.0.0/build/get/get-debug.js
author raph
Tue, 20 Apr 2010 11:14:21 +0200
branchpreserve_html
changeset 259 0371caf8bcc6
parent 0 40c8f766c9b8
permissions -rw-r--r--
always use pandoc but in raw mode for html->html convert
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
        Y.log("get failure: " + msg, "warn", "get");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   210
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   211
        var q = queues[id], sc;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   212
        if (q.timer) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   213
            // q.timer.cancel();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   214
            clearTimeout(q.timer);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   215
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   216
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   217
        // execute failure callback
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   218
        if (q.onFailure) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   219
            sc = q.context || q;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   220
            q.onFailure.call(sc, _returnData(q, msg));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   221
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   222
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   223
        _end(id, msg, 'failure');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   224
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   225
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   226
    _get = function(nId, tId) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   227
        var q = queues[tId],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   228
            n = (L.isString(nId)) ? q.win.document.getElementById(nId) : nId;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   229
        if (!n) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   230
            _fail(tId, "target node not found: " + nId);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   231
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   232
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   233
        return n;
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
     * The request is complete, so executing the requester's callback
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   238
     * @method _finish
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   239
     * @param id {string} the id of the request
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   240
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   241
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   242
    _finish = function(id) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   243
        Y.log("Finishing transaction " + id, "info", "get");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   244
        var q = queues[id], msg, sc;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   245
        if (q.timer) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   246
            // q.timer.cancel();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   247
            clearTimeout(q.timer);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   248
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   249
        q.finished = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   250
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   251
        if (q.aborted) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   252
            msg = "transaction " + id + " was aborted";
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   253
            _fail(id, msg);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   254
            return;
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
        // execute success callback
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   258
        if (q.onSuccess) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   259
            sc = q.context || q;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   260
            q.onSuccess.call(sc, _returnData(q));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   261
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   262
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   263
        _end(id, msg, 'OK');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   264
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   265
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   266
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   267
     * Timeout detected
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   268
     * @method _timeout
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   269
     * @param id {string} the id of the request
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   270
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   271
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   272
    _timeout = function(id) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   273
        Y.log("Timeout " + id, "info", "get");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   274
        var q = queues[id], sc;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   275
        if (q.onTimeout) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   276
            sc = q.context || q;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   277
            q.onTimeout.call(sc, _returnData(q));
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
        _end(id, 'timeout', 'timeout');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   281
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   282
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   283
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   284
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   285
     * Loads the next item for a given request
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   286
     * @method _next
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   287
     * @param id {string} the id of the request
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   288
     * @param loaded {string} the url that was just loaded, if any
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   289
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   290
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   291
    _next = function(id, loaded) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   292
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   293
        Y.log("_next: " + id + ", loaded: " + (loaded || "nothing"), "info", "get");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   294
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   295
        var q = queues[id], msg, w, d, h, n, url, s;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   296
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   297
        if (q.timer) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   298
            // Y.log('cancel timer');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   299
            // q.timer.cancel();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   300
            clearTimeout(q.timer);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   301
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   302
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   303
        if (q.aborted) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   304
            msg = "transaction " + id + " was aborted";
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   305
            _fail(id, msg);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   306
            return;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   307
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   308
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   309
        if (loaded) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   310
            q.url.shift(); 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   311
            if (q.varName) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   312
                q.varName.shift(); 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   313
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   314
        } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   315
            // This is the first pass: make sure the url is an array
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   316
            q.url = (L.isString(q.url)) ? [q.url] : q.url;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   317
            if (q.varName) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   318
                q.varName = (L.isString(q.varName)) ? [q.varName] : q.varName;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   319
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   320
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   321
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   322
        w = q.win; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   323
        d = w.document; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   324
        h = d.getElementsByTagName("head")[0];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   325
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   326
        if (q.url.length === 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   327
            _finish(id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   328
            return;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   329
        } 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   330
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   331
        url = q.url[0];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   332
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   333
        // 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
   334
        if (!url) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   335
            q.url.shift(); 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   336
            Y.log('skipping empty url');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   337
            return _next(id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   338
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   339
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   340
        Y.log("attempting to load " + url, "info", "get");
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.timeout) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   343
            // Y.log('create timer');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   344
            // q.timer = L.later(q.timeout, q, _timeout, id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   345
            q.timer = setTimeout(function() { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   346
                _timeout(id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   347
            }, q.timeout);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   348
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   349
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   350
        if (q.type === "script") {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   351
            n = _scriptNode(url, w, q.attributes);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   352
        } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   353
            n = _linkNode(url, w, q.attributes);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   354
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   355
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   356
        // track this node's load progress
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   357
        _track(q.type, n, id, url, w, q.url.length);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   358
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   359
        // 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
   360
        q.nodes.push(n);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   361
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   362
        // add it to the head or insert it before 'insertBefore'
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   363
        if (q.insertBefore) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   364
            s = _get(q.insertBefore, id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   365
            if (s) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   366
                s.parentNode.insertBefore(n, s);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   367
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   368
        } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   369
            h.appendChild(n);
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
        Y.log("Appending node: " + url, "info", "get");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   373
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   374
        // FireFox does not support the onload event for link nodes, so there is
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   375
        // no way to make the css requests synchronous. This means that the css 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   376
        // rules in multiple files could be applied out of order in this browser
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   377
        // if a later request returns before an earlier one.  Safari too.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   378
        if ((ua.webkit || ua.gecko) && q.type === "css") {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   379
            _next(id, url);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   380
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   381
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   382
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   383
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   384
     * Removes processed queues and corresponding nodes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   385
     * @method _autoPurge
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   386
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   387
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   388
    _autoPurge = function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   389
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   390
        if (purging) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   391
            return;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   392
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   393
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   394
        purging = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   395
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   396
        var i, q;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   397
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   398
        for (i in queues) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   399
            if (queues.hasOwnProperty(i)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   400
                q = queues[i];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   401
                if (q.autopurge && q.finished) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   402
                    _purge(q.tId);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   403
                    delete queues[i];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   404
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   405
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   406
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   407
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   408
        purging = false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   409
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   410
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   411
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   412
     * Saves the state for the request and begins loading
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   413
     * the requested urls
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   414
     * @method queue
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   415
     * @param type {string} the type of node to insert
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   416
     * @param url {string} the url to load
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   417
     * @param opts the hash of options for this request
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   418
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   419
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   420
    _queue = function(type, url, opts) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   421
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   422
        opts = opts || {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   423
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   424
        var id = "q" + (qidx++), q,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   425
            thresh = opts.purgethreshold || Y.Get.PURGE_THRESH;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   426
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   427
        if (qidx % thresh === 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   428
            _autoPurge();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   429
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   430
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   431
        queues[id] = Y.merge(opts, {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   432
            tId: id,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   433
            type: type,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   434
            url: url,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   435
            finished: false,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   436
            nodes: []
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   437
        });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   438
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   439
        q           = queues[id];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   440
        q.win       = q.win || Y.config.win;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   441
        q.context   = q.context || q;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   442
        q.autopurge = ("autopurge" in q) ? q.autopurge : 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   443
                      (type === "script") ? true : false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   444
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   445
        if (opts.charset) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   446
            q.attributes = q.attributes || {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   447
            q.attributes.charset = opts.charset;
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
        // L.later(0, q, _next, id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   451
        setTimeout(function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   452
            _next(id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   453
        }, 0);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   454
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   455
        return {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   456
            tId: id
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   457
        };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   458
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   459
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   460
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   461
     * Detects when a node has been loaded.  In the case of
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   462
     * script nodes, this does not guarantee that contained
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   463
     * script is ready to use.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   464
     * @method _track
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   465
     * @param type {string} the type of node to track
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   466
     * @param n {HTMLElement} the node to track
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   467
     * @param id {string} the id of the request
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   468
     * @param url {string} the url that is being loaded
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   469
     * @param win {Window} the targeted window
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   470
     * @param qlength the number of remaining items in the queue,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   471
     * including this one
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   472
     * @param trackfn {Function} function to execute when finished
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   473
     * the default is _next
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   474
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   475
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   476
    _track = function(type, n, id, url, win, qlength, trackfn) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   477
        var f = trackfn || _next;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   478
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   479
        // IE supports the readystatechange event for script and css nodes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   480
        // Opera only for script nodes.  Opera support onload for script
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   481
        // nodes, but this doesn't fire when there is a load failure.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   482
        // The onreadystatechange appears to be a better way to respond
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   483
        // to both success and failure.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   484
        if (ua.ie) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   485
            n.onreadystatechange = function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   486
                var rs = this.readyState;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   487
                if ("loaded" === rs || "complete" === rs) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   488
                    Y.log(id + " onreadstatechange " + url, "info", "get");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   489
                    n.onreadystatechange = null;
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
        // webkit prior to 3.x is no longer supported
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   495
        } else if (ua.webkit) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   496
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   497
            if (type === "script") {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   498
                // Safari 3.x supports the load event for script nodes (DOM2)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   499
                n.addEventListener("load", function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   500
                    Y.log(id + " DOM2 onload " + url, "info", "get");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   501
                    f(id, url);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   502
                });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   503
            } 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   504
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   505
        // FireFox and Opera support onload (but not DOM2 in FF) handlers for
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   506
        // script nodes.  Opera, but not FF, supports the onload event for link
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   507
        // nodes.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   508
        } else { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   509
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   510
            n.onload = function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   511
                Y.log(id + " onload " + url, "info", "get");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   512
                f(id, url);
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
            n.onerror = function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   516
                _fail(id, e + ": " + url);
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
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   520
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   521
    return {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   522
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   523
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   524
         * The number of request required before an automatic purge.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   525
         * Can be configured via the 'purgethreshold' config
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   526
         * property PURGE_THRESH
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   527
         * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   528
         * @type int
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   529
         * @default 20
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   530
         * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   531
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   532
        PURGE_THRESH: 20,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   533
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   534
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   535
         * Called by the the helper for detecting script load in Safari
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   536
         * @method _finalize
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   537
         * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   538
         * @param id {string} the transaction id
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   539
         * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   540
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   541
        _finalize: function(id) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   542
            Y.log(id + " finalized ", "info", "get");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   543
            // L.later(0, null, _finish, id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   544
            setTimeout(function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   545
                _finish(id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   546
            }, 0);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   547
        },
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
         * Abort a transaction
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   551
         * @method abort
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   552
         * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   553
         * @param o {string|object} Either the tId or the object returned from
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   554
         * script() or css()
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   555
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   556
        abort: function(o) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   557
            var id = (L.isString(o)) ? o : o.tId,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   558
                q = queues[id];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   559
            if (q) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   560
                Y.log("Aborting " + id, "info", "get");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   561
                q.aborted = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   562
            }
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
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   566
         * Fetches and inserts one or more script nodes into the head
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   567
         * of the current document or the document in a specified window.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   568
         *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   569
         * @method script
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   570
         * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   571
         * @param url {string|string[]} the url or urls to the script(s)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   572
         * @param opts {object} Options: 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   573
         * <dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   574
         * <dt>onSuccess</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   575
         * <dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   576
         * callback to execute when the script(s) are finished loading
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   577
         * The callback receives an object back with the following
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   578
         * data:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   579
         * <dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   580
         * <dt>win</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   581
         * <dd>the window the script(s) were inserted into</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   582
         * <dt>data</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   583
         * <dd>the data object passed in when the request was made</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   584
         * <dt>nodes</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   585
         * <dd>An array containing references to the nodes that were
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   586
         * inserted</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   587
         * <dt>purge</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   588
         * <dd>A function that, when executed, will remove the nodes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   589
         * that were inserted</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   590
         * <dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   591
         * </dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   592
         * </dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   593
         * <dt>onTimeout</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   594
         * <dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   595
         * callback to execute when a timeout occurs.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   596
         * The callback receives an object back with the following
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   597
         * data:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   598
         * <dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   599
         * <dt>win</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   600
         * <dd>the window the script(s) were inserted into</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   601
         * <dt>data</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   602
         * <dd>the data object passed in when the request was made</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   603
         * <dt>nodes</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   604
         * <dd>An array containing references to the nodes that were
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   605
         * inserted</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   606
         * <dt>purge</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   607
         * <dd>A function that, when executed, will remove the nodes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   608
         * that were inserted</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   609
         * <dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   610
         * </dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   611
         * </dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   612
         * <dt>onEnd</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   613
         * <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
   614
         * <dt>onFailure</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   615
         * <dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   616
         * callback to execute when the script load operation fails
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   617
         * The callback receives an object back with the following
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   618
         * data:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   619
         * <dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   620
         * <dt>win</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   621
         * <dd>the window the script(s) were inserted into</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   622
         * <dt>data</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   623
         * <dd>the data object passed in when the request was made</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   624
         * <dt>nodes</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   625
         * <dd>An array containing references to the nodes that were
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   626
         * inserted successfully</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   627
         * <dt>purge</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   628
         * <dd>A function that, when executed, will remove any nodes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   629
         * that were inserted</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   630
         * <dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   631
         * </dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   632
         * </dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   633
         * <dt>context</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   634
         * <dd>the execution context for the callbacks</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   635
         * <dt>win</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   636
         * <dd>a window other than the one the utility occupies</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   637
         * <dt>autopurge</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   638
         * <dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   639
         * setting to true will let the utilities cleanup routine purge 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   640
         * the script once loaded
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   641
         * </dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   642
         * <dt>purgethreshold</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   643
         * <dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   644
         * The number of transaction before autopurge should be initiated
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   645
         * </dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   646
         * <dt>data</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   647
         * <dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   648
         * data that is supplied to the callback when the script(s) are
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   649
         * loaded.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   650
         * </dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   651
         * <dt>insertBefore</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   652
         * <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
   653
         * </dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   654
         * <dt>charset</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   655
         * <dd>Node charset, default utf-8 (deprecated, use the attributes config)</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   656
         * <dt>attributes</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   657
         * <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
   658
         * <dt>timeout</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   659
         * <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
   660
         * <pre>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   661
         * &nbsp;&nbsp;Y.Get.script(
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   662
         * &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
   663
         * &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
   664
         * &nbsp;&nbsp;&nbsp;&nbsp;onSuccess: function(o) &#123;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   665
         * &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
   666
         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Y.log(o.data); // foo
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   667
         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Y.log(o.nodes.length === 2) // true
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   668
         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// o.purge(); // optionally remove the script nodes immediately
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   669
         * &nbsp;&nbsp;&nbsp;&nbsp;&#125;,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   670
         * &nbsp;&nbsp;&nbsp;&nbsp;onFailure: function(o) &#123;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   671
         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Y.log("transaction failed");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   672
         * &nbsp;&nbsp;&nbsp;&nbsp;&#125;,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   673
         * &nbsp;&nbsp;&nbsp;&nbsp;onTimeout: function(o) &#123;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   674
         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Y.log("transaction timed out");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   675
         * &nbsp;&nbsp;&nbsp;&nbsp;&#125;,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   676
         * &nbsp;&nbsp;&nbsp;&nbsp;data: "foo",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   677
         * &nbsp;&nbsp;&nbsp;&nbsp;timeout: 10000, // 10 second timeout
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   678
         * &nbsp;&nbsp;&nbsp;&nbsp;context: Y, // make the YUI instance
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   679
         * &nbsp;&nbsp;&nbsp;&nbsp;// win: otherframe // target another window/frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   680
         * &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
   681
         * &nbsp;&nbsp;&nbsp;&nbsp;purgetheshold: 1 // purge previous transaction before next transaction
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   682
         * &nbsp;&nbsp;&#125;);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   683
         * </pre>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   684
         * @return {tId: string} an object containing info about the transaction
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   685
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   686
        script: function(url, opts) { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   687
            return _queue("script", url, opts); 
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
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   691
         * Fetches and inserts one or more css link nodes into the 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   692
         * head of the current document or the document in a specified
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   693
         * window.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   694
         * @method css
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   695
         * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   696
         * @param url {string} the url or urls to the css file(s)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   697
         * @param opts Options: 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   698
         * <dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   699
         * <dt>onSuccess</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   700
         * <dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   701
         * callback to execute when the css file(s) are finished loading
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   702
         * The callback receives an object back with the following
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   703
         * data:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   704
         * <dl>win</dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   705
         * <dd>the window the link nodes(s) were inserted into</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   706
         * <dt>data</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   707
         * <dd>the data object passed in when the request was made</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   708
         * <dt>nodes</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   709
         * <dd>An array containing references to the nodes that were
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   710
         * inserted</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   711
         * <dt>purge</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   712
         * <dd>A function that, when executed, will remove the nodes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   713
         * that were inserted</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   714
         * <dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   715
         * </dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   716
         * </dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   717
         * <dt>context</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   718
         * <dd>the execution context for the callbacks</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   719
         * <dt>win</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   720
         * <dd>a window other than the one the utility occupies</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   721
         * <dt>data</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   722
         * <dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   723
         * data that is supplied to the callbacks when the nodes(s) are
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   724
         * loaded.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   725
         * </dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   726
         * <dt>insertBefore</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   727
         * <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
   728
         * <dt>charset</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   729
         * <dd>Node charset, default utf-8 (deprecated, use the attributes config)</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   730
         * <dt>attributes</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   731
         * <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
   732
         * </dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   733
         * <pre>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   734
         *      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
   735
         * </pre>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   736
         * <pre>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   737
         * &nbsp;&nbsp;Y.Get.css(
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   738
         * &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
   739
         * &nbsp;&nbsp;&nbsp;"http://yui.yahooapis.com/2.3.1/build/logger/assets/skins/sam/logger.css"], &#123;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   740
         * &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
   741
         * &nbsp;&nbsp;&#125;);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   742
         * </pre>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   743
         * @return {tId: string} an object containing info about the transaction
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   744
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   745
        css: function(url, opts) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   746
            return _queue("css", url, opts); 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   747
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   748
    };
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
})();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   752
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   753
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   754
}, '3.0.0' );