src/cm/media/js/lib/yui/yui_3.0.0b1/build/get/get-debug.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.0b1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
build: 1163
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     7
*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     8
YUI.add('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;
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
                h.removeChild(n[i]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   147
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   148
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   149
        q.nodes = [];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   150
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   151
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   152
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   153
     * Returns the data payload for callback functions
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   154
     * @method _returnData
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   155
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   156
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   157
    _returnData = function(q, msg, result) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   158
        return {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   159
                tId: q.tId,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   160
                win: q.win,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   161
                data: q.data,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   162
                nodes: q.nodes,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   163
                msg: msg,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   164
                statusText: result,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   165
                purge: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   166
                    _purge(this.tId);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   167
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   168
            };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   169
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   170
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   171
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   172
     * The transaction is finished
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   173
     * @method _end
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   174
     * @param id {string} the id of the request
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   175
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   176
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   177
    _end = function(id, msg, result) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   178
        var q = queues[id], sc;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   179
        if (q && q.onEnd) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   180
            sc = q.context || q;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   181
            q.onEnd.call(sc, _returnData(q, msg, result));
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 request failed, execute fail handler with whatever
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   187
     * was accomplished.  There isn't a failure case at the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   188
     * moment unless you count aborted transactions
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   189
     * @method _fail
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   190
     * @param id {string} the id of the request
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   191
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   192
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   193
    _fail = function(id, msg) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   194
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   195
        Y.log("get failure: " + msg, "warn", "get");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   196
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   197
        var q = queues[id], sc;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   198
        if (q.timer) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   199
            q.timer.cancel();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   200
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   201
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   202
        // execute failure callback
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   203
        if (q.onFailure) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   204
            sc = q.context || q;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   205
            q.onFailure.call(sc, _returnData(q, msg));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   206
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   207
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   208
        _end(id, msg, 'failure');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   209
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   210
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   211
    _get = function(nId, tId) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   212
        var q = queues[tId],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   213
            n = (L.isString(nId)) ? q.win.document.getElementById(nId) : nId;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   214
        if (!n) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   215
            _fail(tId, "target node not found: " + nId);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   216
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   217
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   218
        return n;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   219
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   220
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   221
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   222
     * The request is complete, so executing the requester's callback
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   223
     * @method _finish
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   224
     * @param id {string} the id of the request
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   225
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   226
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   227
    _finish = function(id) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   228
        Y.log("Finishing transaction " + id, "info", "get");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   229
        var q = queues[id], msg, sc;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   230
        if (q.timer) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   231
            q.timer.cancel();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   232
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   233
        q.finished = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   234
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   235
        if (q.aborted) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   236
            msg = "transaction " + id + " was aborted";
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   237
            _fail(id, msg);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   238
            return;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   239
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   240
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   241
        // execute success callback
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   242
        if (q.onSuccess) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   243
            sc = q.context || q;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   244
            q.onSuccess.call(sc, _returnData(q));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   245
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   246
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   247
        _end(id, msg, 'OK');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   248
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   249
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   250
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   251
     * Timeout detected
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   252
     * @method _timeout
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   253
     * @param id {string} the id of the request
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   254
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   255
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   256
    _timeout = function(id) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   257
        Y.log("Timeout " + id, "info", "get");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   258
        var q = queues[id], sc;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   259
        if (q.onTimeout) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   260
            sc = q.context || q;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   261
            q.onTimeout.call(sc, _returnData(q));
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
        _end(id, 'timeout', 'timeout');
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
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   268
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   269
     * Loads the next item for a given request
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   270
     * @method _next
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   271
     * @param id {string} the id of the request
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   272
     * @param loaded {string} the url that was just loaded, if any
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   273
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   274
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   275
    _next = function(id, loaded) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   276
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   277
        Y.log("_next: " + id + ", loaded: " + (loaded || "nothing"), "info", "get");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   278
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   279
        var q = queues[id], msg, w, d, h, n, url, s;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   280
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   281
        if (q.timer) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   282
            // Y.log('cancel timer');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   283
            q.timer.cancel();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   284
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   285
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   286
        if (q.aborted) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   287
            msg = "transaction " + id + " was aborted";
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   288
            _fail(id, msg);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   289
            return;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   290
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   291
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   292
        if (loaded) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   293
            q.url.shift(); 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   294
            if (q.varName) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   295
                q.varName.shift(); 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   296
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   297
        } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   298
            // This is the first pass: make sure the url is an array
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   299
            q.url = (L.isString(q.url)) ? [q.url] : q.url;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   300
            if (q.varName) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   301
                q.varName = (L.isString(q.varName)) ? [q.varName] : q.varName;
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
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   305
        w = q.win; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   306
        d = w.document; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   307
        h = d.getElementsByTagName("head")[0];
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 (q.url.length === 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   310
            _finish(id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   311
            return;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   312
        } 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   313
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   314
        url = q.url[0];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   315
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   316
        // 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
   317
        if (!url) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   318
            q.url.shift(); 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   319
            Y.log('skipping empty url');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   320
            return _next(id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   321
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   322
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   323
        Y.log("attempting to load " + url, "info", "get");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   324
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   325
        if (q.timeout) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   326
            // Y.log('create timer');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   327
            q.timer = L.later(q.timeout, q, _timeout, id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   328
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   329
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   330
        if (q.type === "script") {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   331
            n = _scriptNode(url, w, q.attributes);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   332
        } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   333
            n = _linkNode(url, w, q.attributes);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   334
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   335
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   336
        // track this node's load progress
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   337
        _track(q.type, n, id, url, w, q.url.length);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   338
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   339
        // 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
   340
        q.nodes.push(n);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   341
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   342
        // add it to the head or insert it before 'insertBefore'
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   343
        if (q.insertBefore) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   344
            s = _get(q.insertBefore, id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   345
            if (s) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   346
                s.parentNode.insertBefore(n, s);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   347
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   348
        } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   349
            h.appendChild(n);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   350
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   351
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   352
        Y.log("Appending node: " + url, "info", "get");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   353
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   354
        // FireFox does not support the onload event for link nodes, so there is
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   355
        // no way to make the css requests synchronous. This means that the css 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   356
        // rules in multiple files could be applied out of order in this browser
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   357
        // if a later request returns before an earlier one.  Safari too.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   358
        if ((ua.webkit || ua.gecko) && q.type === "css") {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   359
            _next(id, url);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   360
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   361
    },
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
     * Removes processed queues and corresponding nodes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   365
     * @method _autoPurge
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   366
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   367
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   368
    _autoPurge = function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   369
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   370
        if (purging) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   371
            return;
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
        purging = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   375
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   376
        var i, q;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   377
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   378
        for (i in queues) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   379
            if (queues.hasOwnProperty(i)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   380
                q = queues[i];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   381
                if (q.autopurge && q.finished) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   382
                    _purge(q.tId);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   383
                    delete queues[i];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   384
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   385
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   386
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   387
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   388
        purging = false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   389
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   390
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   391
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   392
     * Saves the state for the request and begins loading
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   393
     * the requested urls
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   394
     * @method queue
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   395
     * @param type {string} the type of node to insert
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   396
     * @param url {string} the url to load
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   397
     * @param opts the hash of options for this request
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   398
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   399
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   400
    _queue = function(type, url, opts) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   401
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   402
        opts = opts || {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   403
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   404
        var id = "q" + (qidx++), q,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   405
            thresh = opts.purgethreshold || Y.Get.PURGE_THRESH;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   406
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   407
        if (qidx % thresh === 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   408
            _autoPurge();
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
        queues[id] = Y.merge(opts, {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   412
            tId: id,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   413
            type: type,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   414
            url: url,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   415
            finished: false,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   416
            nodes: []
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   417
        });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   418
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   419
        q           = queues[id];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   420
        q.win       = q.win || Y.config.win;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   421
        q.context   = q.context || q;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   422
        q.autopurge = ("autopurge" in q) ? q.autopurge : 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   423
                      (type === "script") ? true : false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   424
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   425
        if (opts.charset) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   426
            q.attributes = q.attributes || {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   427
            q.attributes.charset = opts.charset;
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
        L.later(0, q, _next, id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   431
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   432
        return {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   433
            tId: id
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   434
        };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   435
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   436
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   437
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   438
     * Detects when a node has been loaded.  In the case of
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   439
     * script nodes, this does not guarantee that contained
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   440
     * script is ready to use.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   441
     * @method _track
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   442
     * @param type {string} the type of node to track
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   443
     * @param n {HTMLElement} the node to track
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   444
     * @param id {string} the id of the request
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   445
     * @param url {string} the url that is being loaded
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   446
     * @param win {Window} the targeted window
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   447
     * @param qlength the number of remaining items in the queue,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   448
     * including this one
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   449
     * @param trackfn {Function} function to execute when finished
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   450
     * the default is _next
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   451
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   452
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   453
    _track = function(type, n, id, url, win, qlength, trackfn) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   454
        var f = trackfn || _next;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   455
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   456
        // IE supports the readystatechange event for script and css nodes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   457
        // Opera only for script nodes.  Opera support onload for script
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   458
        // nodes, but this doesn't fire when there is a load failure.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   459
        // The onreadystatechange appears to be a better way to respond
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   460
        // to both success and failure.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   461
        if (ua.ie) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   462
            n.onreadystatechange = function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   463
                var rs = this.readyState;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   464
                if ("loaded" === rs || "complete" === rs) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   465
                    Y.log(id + " onreadstatechange " + url, "info", "get");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   466
                    n.onreadystatechange = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   467
                    f(id, url);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   468
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   469
            };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   470
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   471
        // webkit prior to 3.x is no longer supported
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   472
        } else if (ua.webkit) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   473
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   474
            if (type === "script") {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   475
                // Safari 3.x supports the load event for script nodes (DOM2)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   476
                n.addEventListener("load", function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   477
                    Y.log(id + " DOM2 onload " + url, "info", "get");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   478
                    f(id, url);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   479
                });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   480
            } 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   481
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   482
        // FireFox and Opera support onload (but not DOM2 in FF) handlers for
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   483
        // script nodes.  Opera, but not FF, supports the onload event for link
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   484
        // nodes.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   485
        } else { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   486
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   487
            n.onload = function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   488
                Y.log(id + " onload " + url, "info", "get");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   489
                f(id, url);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   490
            };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   491
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   492
            n.onerror = function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   493
                _fail(id, e + ": " + url);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   494
            };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   495
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   496
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   497
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   498
    return {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   499
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   500
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   501
         * The number of request required before an automatic purge.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   502
         * Can be configured via the 'purgethreshold' config
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   503
         * property PURGE_THRESH
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   504
         * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   505
         * @type int
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   506
         * @default 20
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   507
         * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   508
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   509
        PURGE_THRESH: 20,
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
         * Called by the the helper for detecting script load in Safari
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   513
         * @method _finalize
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   514
         * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   515
         * @param id {string} the transaction id
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   516
         * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   517
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   518
        _finalize: function(id) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   519
            Y.log(id + " finalized ", "info", "get");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   520
            L.later(0, null, _finish, id);
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
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   524
         * Abort a transaction
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   525
         * @method abort
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   526
         * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   527
         * @param o {string|object} Either the tId or the object returned from
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   528
         * script() or css()
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   529
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   530
        abort: function(o) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   531
            var id = (L.isString(o)) ? o : o.tId,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   532
                q = queues[id];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   533
            if (q) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   534
                Y.log("Aborting " + id, "info", "get");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   535
                q.aborted = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   536
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   537
        }, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   538
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   539
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   540
         * Fetches and inserts one or more script nodes into the head
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   541
         * of the current document or the document in a specified window.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   542
         *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   543
         * @method script
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   544
         * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   545
         * @param url {string|string[]} the url or urls to the script(s)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   546
         * @param opts {object} Options: 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   547
         * <dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   548
         * <dt>onSuccess</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   549
         * <dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   550
         * callback to execute when the script(s) are finished loading
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   551
         * The callback receives an object back with the following
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   552
         * data:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   553
         * <dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   554
         * <dt>win</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   555
         * <dd>the window the script(s) were inserted into</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   556
         * <dt>data</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   557
         * <dd>the data object passed in when the request was made</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   558
         * <dt>nodes</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   559
         * <dd>An array containing references to the nodes that were
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   560
         * inserted</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   561
         * <dt>purge</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   562
         * <dd>A function that, when executed, will remove the nodes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   563
         * that were inserted</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   564
         * <dt>
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
         * </dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   567
         * <dt>onTimeout</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   568
         * <dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   569
         * callback to execute when a timeout occurs.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   570
         * The callback receives an object back with the following
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   571
         * data:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   572
         * <dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   573
         * <dt>win</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   574
         * <dd>the window the script(s) were inserted into</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   575
         * <dt>data</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   576
         * <dd>the data object passed in when the request was made</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   577
         * <dt>nodes</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   578
         * <dd>An array containing references to the nodes that were
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   579
         * inserted</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   580
         * <dt>purge</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   581
         * <dd>A function that, when executed, will remove the nodes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   582
         * that were inserted</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   583
         * <dt>
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
         * </dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   586
         * <dt>onEnd</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   587
         * <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
   588
         * <dt>onFailure</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   589
         * <dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   590
         * callback to execute when the script load operation fails
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   591
         * The callback receives an object back with the following
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   592
         * data:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   593
         * <dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   594
         * <dt>win</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   595
         * <dd>the window the script(s) were inserted into</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   596
         * <dt>data</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   597
         * <dd>the data object passed in when the request was made</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   598
         * <dt>nodes</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   599
         * <dd>An array containing references to the nodes that were
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   600
         * inserted successfully</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   601
         * <dt>purge</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   602
         * <dd>A function that, when executed, will remove any nodes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   603
         * that were inserted</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   604
         * <dt>
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
         * </dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   607
         * <dt>context</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   608
         * <dd>the execution context for the callbacks</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   609
         * <dt>win</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   610
         * <dd>a window other than the one the utility occupies</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   611
         * <dt>autopurge</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   612
         * <dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   613
         * setting to true will let the utilities cleanup routine purge 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   614
         * the script once loaded
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
         * <dt>purgethreshold</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   617
         * <dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   618
         * The number of transaction before autopurge should be initiated
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   619
         * </dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   620
         * <dt>data</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   621
         * <dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   622
         * data that is supplied to the callback when the script(s) are
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   623
         * loaded.
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
         * <dt>insertBefore</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   626
         * <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
   627
         * </dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   628
         * <dt>charset</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   629
         * <dd>Node charset, default utf-8 (deprecated, use the attributes config)</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   630
         * <dt>attributes</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   631
         * <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
   632
         * <dt>timeout</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   633
         * <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
   634
         * <pre>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   635
         * &nbsp;&nbsp;Y.Get.script(
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   636
         * &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
   637
         * &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
   638
         * &nbsp;&nbsp;&nbsp;&nbsp;onSuccess: function(o) &#123;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   639
         * &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
   640
         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Y.log(o.data); // foo
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   641
         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Y.log(o.nodes.length === 2) // true
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   642
         * &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
   643
         * &nbsp;&nbsp;&nbsp;&nbsp;&#125;,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   644
         * &nbsp;&nbsp;&nbsp;&nbsp;onFailure: function(o) &#123;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   645
         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Y.log("transaction failed");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   646
         * &nbsp;&nbsp;&nbsp;&nbsp;&#125;,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   647
         * &nbsp;&nbsp;&nbsp;&nbsp;onTimeout: function(o) &#123;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   648
         * &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Y.log("transaction timed out");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   649
         * &nbsp;&nbsp;&nbsp;&nbsp;&#125;,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   650
         * &nbsp;&nbsp;&nbsp;&nbsp;data: "foo",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   651
         * &nbsp;&nbsp;&nbsp;&nbsp;timeout: 10000, // 10 second timeout
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   652
         * &nbsp;&nbsp;&nbsp;&nbsp;context: Y, // make the YUI instance
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   653
         * &nbsp;&nbsp;&nbsp;&nbsp;// win: otherframe // target another window/frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   654
         * &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
   655
         * &nbsp;&nbsp;&nbsp;&nbsp;purgetheshold: 1 // purge previous transaction before next transaction
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   656
         * &nbsp;&nbsp;&#125;);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   657
         * </pre>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   658
         * @return {tId: string} an object containing info about the transaction
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   659
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   660
        script: function(url, opts) { 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   661
            return _queue("script", url, opts); 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   662
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   663
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   664
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   665
         * Fetches and inserts one or more css link nodes into the 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   666
         * head of the current document or the document in a specified
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   667
         * window.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   668
         * @method css
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   669
         * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   670
         * @param url {string} the url or urls to the css file(s)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   671
         * @param opts Options: 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   672
         * <dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   673
         * <dt>onSuccess</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   674
         * <dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   675
         * callback to execute when the css file(s) are finished loading
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   676
         * The callback receives an object back with the following
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   677
         * data:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   678
         * <dl>win</dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   679
         * <dd>the window the link nodes(s) were inserted into</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   680
         * <dt>data</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   681
         * <dd>the data object passed in when the request was made</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   682
         * <dt>nodes</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   683
         * <dd>An array containing references to the nodes that were
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   684
         * inserted</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   685
         * <dt>purge</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   686
         * <dd>A function that, when executed, will remove the nodes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   687
         * that were inserted</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   688
         * <dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   689
         * </dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   690
         * </dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   691
         * <dt>context</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   692
         * <dd>the execution context for the callbacks</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   693
         * <dt>win</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   694
         * <dd>a window other than the one the utility occupies</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   695
         * <dt>data</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   696
         * <dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   697
         * data that is supplied to the callbacks when the nodes(s) are
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   698
         * loaded.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   699
         * </dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   700
         * <dt>insertBefore</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   701
         * <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
   702
         * <dt>charset</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   703
         * <dd>Node charset, default utf-8 (deprecated, use the attributes config)</dd>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   704
         * <dt>attributes</dt>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   705
         * <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
   706
         * </dl>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   707
         * <pre>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   708
         *      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
   709
         * </pre>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   710
         * <pre>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   711
         * &nbsp;&nbsp;Y.Get.css(
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   712
         * &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
   713
         * &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
   714
         * &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
   715
         * &nbsp;&nbsp;&#125;);
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
         * @return {tId: string} an object containing info about the transaction
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   718
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   719
        css: function(url, opts) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   720
            return _queue("css", url, opts); 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   721
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   722
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   723
}();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   724
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   725
})();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   726
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   727
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   728
}, '3.0.0b1' );