src/cm/media/js/lib/yui/yui3.0.0/build/io/io-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.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('io-base', 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
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    11
   	* Base IO functionality. Provides basic XHR transport support.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    12
   	* @module io
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
   	* @submodule io-base
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    14
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    15
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
	* The io class is a utility that brokers HTTP requests through a simplified
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    18
	* interface.  Specifically, it allows JavaScript to make HTTP requests to
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    19
	* a resource without a page reload.  The underlying transport for making
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    20
	* same-domain requests is the XMLHttpRequest object.  YUI.io can also use
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    21
	* Flash, if specified as a transport, for cross-domain requests.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    22
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    23
   	* @class io
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    24
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    25
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    26
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    27
   	* @event io:start
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    28
   	* @description This event is fired by YUI.io when a transaction is initiated.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    29
   	* @type Event Custom
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    30
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    31
   	var E_START = 'io:start',
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
   	* @event io:complete
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    35
   	* @description This event is fired by YUI.io when a transaction is complete.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    36
   	* Response status and data are accessible, if available.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    37
   	* @type Event Custom
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    38
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    39
   	E_COMPLETE = 'io:complete',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    40
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    41
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    42
   	* @event io:success
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    43
   	* @description This event is fired by YUI.io when a transaction is complete, and
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    44
   	* the HTTP status resolves to HTTP2xx.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    45
   	* @type Event Custom
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    46
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    47
   	E_SUCCESS = 'io:success',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    48
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    49
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    50
   	* @event io:failure
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    51
   	* @description This event is fired by YUI.io when a transaction is complete, and
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    52
   	* the HTTP status resolves to HTTP4xx, 5xx and above.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    53
   	* @type Event Custom
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    54
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    55
   	E_FAILURE = 'io:failure',
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
   	* @event io:end
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    59
   	* @description This event signifies the end of the transaction lifecycle.  The
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    60
   	* transaction transport is destroyed.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    61
   	* @type Event Custom
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    62
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    63
   	E_END = 'io:end',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    64
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    65
   	//--------------------------------------
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    66
   	//  Properties
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    67
   	//--------------------------------------
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    68
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    69
   	* @description A transaction counter that increments for each transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    70
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    71
   	* @property transactionId
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    72
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    73
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    74
   	* @type int
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    75
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    76
   	transactionId = 0,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    77
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    78
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    79
   	* @description Object of default HTTP headers to be initialized and sent
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    80
   	* for all transactions.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    81
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    82
   	* @property _headers
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    83
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    84
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    85
   	* @type object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    86
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    87
   	_headers = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    88
   		'X-Requested-With' : 'XMLHttpRequest'
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    89
   	},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    90
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    91
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    92
   	* @description Object that stores timeout values for any transaction with
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    93
   	* a defined "timeout" configuration property.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    94
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    95
   	* @property _timeout
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    96
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    97
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    98
   	* @type object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    99
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   100
   	_timeout = {},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   101
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   102
   	// Window reference
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   103
   	w = Y.config.win;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   104
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   105
   	//--------------------------------------
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   106
   	//  Methods
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   107
   	//--------------------------------------
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   108
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   109
   	* @description Method for requesting a transaction. _io() is implemented as
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   110
   	* yui.io().  Each transaction may include a configuration object.  Its
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   111
   	* properties are:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   112
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   113
   	* method: HTTP method verb (e.g., GET or POST). If this property is not
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   114
   	*         not defined, the default value will be GET.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   115
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   116
   	* data: This is the name-value string that will be sent as the transaction
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   117
    *		data.  If the request is HTTP GET, the data become part of
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   118
    *		querystring. If HTTP POST, the data are sent in the message body.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   119
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   120
   	* xdr: Defines the transport to be used for cross-domain requests.  By
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   121
   	*      setting this property, the transaction will use the specified
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   122
   	*      transport instead of XMLHttpRequest.  Currently, the only alternate
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   123
   	*      transport supported is Flash (e.g., { xdr: 'flash' }).
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   124
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   125
   	* form: This is a defined object used to process HTML form as data.  The
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   126
   	*       properties are:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   127
   	*       {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   128
   	*	      id: object, //HTML form object or id of HTML form
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   129
   	*         useDisabled: boolean, //Allow disabled HTML form field values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   130
   	*                      to be sent as part of the data.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   131
	*       }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   132
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   133
	* on: This is a defined object used to create and handle specific
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   134
	*     events during a transaction lifecycle.  These events will fire in
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   135
	*     addition to the global io events. The events are:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   136
	*	  start - This event is fired when a request is sent to a resource.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   137
	*     complete - This event fires when the transaction is complete.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   138
	*     success - This event fires when the response status resolves to
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   139
	*               HTTP 2xx.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   140
	*     failure - This event fires when the response status resolves to
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   141
	*               HTTP 4xx, 5xx; and, for all transaction exceptions,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   142
	*               including aborted transactions and transaction timeouts.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   143
	*	  end -  This even is fired at the conclusion of the transaction
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   144
   	*			 lifecycle, after a success or failure resolution.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   145
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   146
	*     The properties are:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   147
	*     {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   148
   	*       start: function(id, args){},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   149
   	*       complete: function(id, responseobject, args){},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   150
   	*       success: function(id, responseobject, args){},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   151
   	*       failure: function(id, responseobject, args){},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   152
   	*       end: function(id, args){}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   153
   	*     }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   154
   	*	  Each property can reference a function or be written as an
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   155
   	*     inline function.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   156
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   157
   	*     context: Object reference for an event handler when it is implemented
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   158
   	*              as a method of a base object. Defining "context" will preserve
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   159
   	*              the proper reference of "this" used in the event handler.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   160
   	*     headers: This is a defined object of client headers, as many as.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   161
   	*              desired for the transaction.  These headers are sentThe object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   162
   	*              pattern is:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   163
   	*              {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   164
   	*		         header: value
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
   	* timeout: This value, defined as milliseconds, is a time threshold for the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   168
   	*          transaction. When this threshold is reached, and the transaction's
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   169
   	*          Complete event has not yet fired, the transaction will be aborted.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   170
   	* arguments: Object, array, string, or number passed to all registered
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   171
   	*            event handlers.  This value is available as the second
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   172
   	*            argument in the "start" and "abort" event handlers; and, it is
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   173
   	*            the third argument in the "complete", "success", and "failure"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   174
   	*            event handlers.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   175
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   176
   	* @method _io
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   177
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   178
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   179
	* @param {string} uri - qualified path to transaction resource.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   180
	* @param {object} c - configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   181
	* @param {number} i - transaction id, if already set by queue.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   182
	* @return object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   183
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   184
   	function _io(uri, c, i) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   185
   		var f, o, m;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   186
   			c = c || {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   187
   			o = _create(c.xdr || c.form, i);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   188
   			m = c.method ? c.method.toUpperCase() : 'GET';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   189
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   190
   		if (c.form) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   191
   			if (c.form.upload) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   192
   				return Y.io._upload(o, uri, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   193
   			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   194
   			else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   195
				f = Y.io._serialize(c.form, c.data);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   196
				if (m === 'POST') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   197
					c.data = f;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   198
					_setHeader('Content-Type', 'application/x-www-form-urlencoded');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   199
				}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   200
				else if (m === 'GET') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   201
					uri = _concat(uri, f);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   202
				}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   203
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   204
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   205
		else if (c.data && m === 'GET') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   206
			uri = _concat(uri, c.data);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   207
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   208
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   209
   		if (c.xdr) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   210
			if (c.xdr.use === 'native' && window.XDomainRequest || c.xdr.use === 'flash') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   211
   				return Y.io.xdr(uri, o, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   212
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   213
			if (c.xdr.credentials) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   214
				o.c.withCredentials = true;
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
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   218
   		o.c.onreadystatechange = function() { _readyState(o, c); };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   219
   		try {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   220
			o.c.open(m, uri, true);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   221
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   222
   		catch(e0){
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   223
			if (c.xdr) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   224
				// This exception is usually thrown by browsers
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   225
				// that do not support native XDR transactions.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   226
				return _resend(o, uri, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   227
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   228
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   229
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   230
   		if (c.data && m === 'POST') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   231
   			_setHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   232
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   233
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   234
   		_setHeaders(o.c, c.headers || {});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   235
		try {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   236
			// Using "null" will result in a POST request with
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   237
			// no Content-Length defined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   238
	   		o.c.send(c.data || '');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   239
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   240
   		catch(e1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   241
			if (c.xdr) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   242
				// This exception is usually thrown by browsers
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   243
				// that do not support native XDR transactions.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   244
				return _resend(o, uri, c);
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
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   248
   		_ioStart(o.id, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   249
   		// If config.timeout is defined, and the request is standard XHR,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   250
   		// initialize timeout polling.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   251
   		if (c.timeout) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   252
   			_startTimeout(o, c.timeout);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   253
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   254
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   255
		return {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   256
			id: o.id,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   257
			abort: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   258
				return o.c ? _ioCancel(o, 'abort') : false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   259
			},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   260
			isInProgress: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   261
				return o.c ? o.c.readyState !== 4 && o.c.readyState !== 0 : false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   262
	   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   263
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   264
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   265
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   266
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   267
   	* @description Method for creating and subscribing transaction events.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   268
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   269
   	* @method _subscribe
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
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   272
   	* @param {string} e - event to be published
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   273
   	* @param {object} c - configuration data subset for event subscription.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   274
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   275
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   276
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   277
   	function _subscribe(e, c){
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   278
   		var evt = new Y.EventTarget().publish('transaction:' + e);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   279
		evt.subscribe(c.on[e], (c.context || Y), c.arguments);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   280
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   281
   		return evt;
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
   	* @description Fires event "io:start" and creates, fires a
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   286
   	* transaction-specific start event, if config.on.start is
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   287
   	* defined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   288
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   289
   	* @method _ioStart
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   290
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   291
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   292
   	* @param {number} id - transaction id
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   293
   	* @param {object} c - configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   294
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   295
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   296
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   297
   	function _ioStart(id, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   298
   		var evt;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   299
   			// Set default value of argument c, property "on" to Object if
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   300
   			// the property is null or undefined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   301
   			c.on = c.on || {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   302
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   303
   		Y.fire(E_START, id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   304
   		if (c.on.start) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   305
   			evt = _subscribe('start', c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   306
   			evt.fire(id);
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
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   310
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   311
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   312
   	* @description Fires event "io:complete" and creates, fires a
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   313
   	* transaction-specific "complete" event, if config.on.complete is
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   314
   	* defined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   315
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   316
   	* @method _ioComplete
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   317
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   318
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   319
   	* @param {object} o - transaction object.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   320
   	* @param {object} c - configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   321
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   322
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   323
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   324
   	function _ioComplete(o, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   325
   		var evt,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   326
			r = o.status ? { status: 0, statusText: o.status } : o.c;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   327
   			// Set default value of argument c, property "on" to Object if
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   328
   			// the property is null or undefined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   329
   			c.on = c.on || {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   330
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   331
   		Y.fire(E_COMPLETE, o.id, r);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   332
   		if (c.on.complete) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   333
   			evt = _subscribe('complete', c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   334
   			evt.fire(o.id, r);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   335
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   336
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   337
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   338
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   339
   	* @description Fires event "io:success" and creates, fires a
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   340
   	* transaction-specific "success" event, if config.on.success is
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   341
   	* defined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   342
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   343
   	* @method _ioSuccess
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   344
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   345
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   346
   	* @param {object} o - transaction object.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   347
   	* @param {object} c - configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   348
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   349
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   350
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   351
   	function _ioSuccess(o, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   352
   		var evt;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   353
   			// Set default value of argument c, property "on" to Object if
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   354
   			// the property is null or undefined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   355
   			c.on = c.on || {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   356
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   357
   		Y.fire(E_SUCCESS, o.id, o.c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   358
   		if (c.on.success) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   359
   			evt = _subscribe('success', c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   360
   			evt.fire(o.id, o.c);
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
   		_ioEnd(o, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   364
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   365
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   366
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   367
   	* @description Fires event "io:failure" and creates, fires a
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   368
   	* transaction-specific "failure" event, if config.on.failure is
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   369
   	* defined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   370
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   371
   	* @method _ioFailure
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   372
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   373
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   374
   	* @param {object} o - transaction object.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   375
   	* @param {object} c - configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   376
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   377
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   378
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   379
   	function _ioFailure(o, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   380
   		var evt,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   381
 			r = o.status ? { status: 0, statusText: o.status } : o.c;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   382
   			// Set default value of argument c, property "on" to Object if
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   383
   			// the property is null or undefined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   384
   			c.on = c.on || {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   385
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   386
   		Y.fire(E_FAILURE, o.id, r);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   387
   		if (c.on.failure) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   388
   			evt = _subscribe('failure', c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   389
   			evt.fire(o.id, r);
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
   		_ioEnd(o, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   393
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   394
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   395
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   396
   	* @description Fires event "io:end" and creates, fires a
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   397
   	* transaction-specific "end" event, if config.on.end is
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   398
   	* defined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   399
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   400
   	* @method _ioEnd
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   401
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   402
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   403
   	* @param {object} o - transaction object.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   404
   	* @param {object} c - configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   405
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   406
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   407
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   408
   	function _ioEnd(o, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   409
   		var evt;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   410
   			// Set default value of argument c, property "on" to Object if
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   411
   			// the property is null or undefined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   412
   			c.on = c.on || {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   413
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   414
   		Y.fire(E_END, o.id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   415
   		if (c.on.end) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   416
   			evt = _subscribe('end', c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   417
   			evt.fire(o.id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   418
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   419
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   420
   		_destroy(o, c.xdr ? true : false );
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   421
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   422
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   423
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   424
   	* @description Terminates a transaction due to an explicit abort or
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   425
   	* timeout.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   426
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   427
   	* @method _ioCancel
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   428
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   429
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   430
	* @param {object} o - Transaction object generated by _create().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   431
	* @param {string} s - Identifies timed out or aborted transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   432
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   433
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   434
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   435
   	function _ioCancel(o, s) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   436
   		if (o && o.c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   437
   			o.status = s;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   438
   			o.c.abort();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   439
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   440
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   441
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   442
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   443
   	* @description Resends an XDR transaction, using the Flash tranport,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   444
   	* if the native transport fails.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   445
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   446
   	* @method _resend
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   447
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   448
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   449
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   450
	* @param {object} o - Transaction object generated by _create().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   451
	* @param {string} uri - qualified path to transaction resource.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   452
   	* @param {object} c - configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   453
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   454
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   455
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   456
	function _resend(o, uri, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   457
		var id = parseInt(o.id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   458
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   459
		_destroy(o);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   460
		c.xdr.use = 'flash';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   461
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   462
		return Y.io(uri, c, id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   463
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   464
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   465
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   466
   	* @description Method that increments _transactionId for each transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   467
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   468
   	* @method _id
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   469
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   470
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   471
    * @return int
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   472
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   473
   	function _id() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   474
   		var id = transactionId;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   475
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   476
   		transactionId++;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   477
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   478
   		return id;
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
   	* @description Method that creates a unique transaction object for each
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   483
   	* request.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   484
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   485
   	* @method _create
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   486
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   487
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   488
	* @param {number} c - configuration object subset to determine if
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   489
	*                     the transaction is an XDR or file upload,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   490
	*                     requiring an alternate transport.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   491
	* @param {number} i - transaction id
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   492
	* @return object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   493
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   494
   	function _create(c, i) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   495
   		var o = {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   496
	   		o.id = Y.Lang.isNumber(i) ? i : _id();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   497
	   		c = c || {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   498
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   499
		if (!c.use && !c.upload) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   500
   			o.c = _xhr();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   501
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   502
   		else if (c.use) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   503
			if (c.use === 'flash') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   504
   				o.c = Y.io._transport[c.use];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   505
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   506
			else if (c.use === 'native' && window.XDomainRequest) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   507
				o.c = new XDomainRequest();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   508
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   509
			else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   510
				o.c = _xhr();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   511
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   512
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   513
   		else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   514
   			o.c = {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   515
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   516
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   517
   		return o;
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
   	* @description Method that creates the XMLHttpRequest transport
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   522
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   523
   	* @method _xhr
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   524
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   525
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   526
	* @return object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   527
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   528
   	function _xhr() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   529
   		return w.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   530
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   531
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   532
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   533
   	* @description Method that concatenates string data for HTTP GET transactions.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   534
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   535
   	* @method _concat
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   536
   	* @private
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 {string} s - URI or root data.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   539
	* @param {string} d - data to be concatenated onto URI.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   540
	* @return int
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   541
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   542
   	function _concat(s, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   543
   		s += ((s.indexOf('?') == -1) ? '?' : '&') + d;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   544
   		return s;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   545
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   546
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   547
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   548
   	* @description Method that stores default client headers for all transactions.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   549
   	* If a label is passed with no value argument, the header will be deleted.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   550
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   551
   	* @method _setHeader
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   552
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   553
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   554
	* @param {string} l - HTTP header
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   555
	* @param {string} v - HTTP header value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   556
	* @return int
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   557
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   558
   	function _setHeader(l, v) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   559
   		if (v) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   560
   			_headers[l] = v;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   561
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   562
   		else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   563
   			delete _headers[l];
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
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   567
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   568
   	* @description Method that sets all HTTP headers to be sent in a transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   569
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   570
   	* @method _setHeaders
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   571
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   572
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   573
	* @param {object} o - XHR instance for the specific transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   574
	* @param {object} h - HTTP headers for the specific transaction, as defined
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   575
	*                     in the configuration object passed to YUI.io().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   576
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   577
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   578
   	function _setHeaders(o, h) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   579
   		var p;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   580
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   581
   		for (p in _headers) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   582
   			if (_headers.hasOwnProperty(p)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   583
   				if (h[p]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   584
   					// Configuration headers will supersede IO preset headers,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   585
   					// if headers match.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   586
   					break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   587
   				}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   588
   				else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   589
   					h[p] = _headers[p];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   590
   				}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   591
   			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   592
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   593
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   594
   		for (p in h) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   595
   			if (h.hasOwnProperty(p)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   596
   				o.setRequestHeader(p, h[p]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   597
   			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   598
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   599
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   600
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   601
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   602
   	* @description Starts timeout count if the configuration object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   603
   	* has a defined timeout property.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   604
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   605
   	* @method _startTimeout
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   606
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   607
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   608
	* @param {object} o - Transaction object generated by _create().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   609
	* @param {object} c - Configuration object passed to YUI.io().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   610
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   611
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   612
   	function _startTimeout(o, timeout) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   613
   		_timeout[o.id] = w.setTimeout(function() { _ioCancel(o, 'timeout'); }, timeout);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   614
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   615
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   616
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   617
   	* @description Clears the timeout interval started by _startTimeout().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   618
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   619
   	* @method _clearTimeout
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   620
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   621
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   622
	* @param {number} id - Transaction id.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   623
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   624
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   625
   	function _clearTimeout(id) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   626
   		w.clearTimeout(_timeout[id]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   627
   		delete _timeout[id];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   628
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   629
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   630
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   631
   	* @description Event handler bound to onreadystatechange.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   632
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   633
   	* @method _readyState
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   634
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   635
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   636
	* @param {object} o - Transaction object generated by _create().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   637
	* @param {object} c - Configuration object passed to YUI.io().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   638
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   639
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   640
   	function _readyState(o, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   641
   		if (o.c.readyState === 4) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   642
   			if (c.timeout) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   643
   				_clearTimeout(o.id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   644
   			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   645
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   646
   			w.setTimeout(
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   647
   				function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   648
   					_ioComplete(o, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   649
   					_handleResponse(o, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   650
   				}, 0);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   651
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   652
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   653
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   654
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   655
   	* @description Method that determines if a transaction response qualifies
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   656
   	* as success or failure, based on the response HTTP status code, and
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   657
   	* fires the appropriate success or failure events.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   658
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   659
   	* @method _handleResponse
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   660
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   661
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   662
	* @param {object} o - Transaction object generated by _create().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   663
	* @param {object} c - Configuration object passed to io().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   664
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   665
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   666
   	function _handleResponse(o, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   667
   		var status;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   668
   		try{
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   669
   			if (o.c.status && o.c.status !== 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   670
   				status = o.c.status;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   671
   			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   672
   			else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   673
   				status = 0;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   674
   			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   675
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   676
   		catch(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   677
   			status = 0;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   678
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   679
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   680
   		// IE reports HTTP 204 as HTTP 1223.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   681
   		if (status >= 200 && status < 300 || status === 1223) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   682
   			_ioSuccess(o, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   683
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   684
   		else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   685
   			_ioFailure(o, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   686
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   687
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   688
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   689
   	function _destroy(o, transport) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   690
   		// IE, when using XMLHttpRequest as an ActiveX Object, will throw
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   691
   		// a "Type Mismatch" error if the event handler is set to "null".
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   692
   		if(w.XMLHttpRequest && !transport) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   693
   			if (o.c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   694
   				o.c.onreadystatechange = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   695
   			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   696
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   697
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   698
   		o.c = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   699
   		o = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   700
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   701
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   702
   	_io.start = _ioStart;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   703
	_io.complete = _ioComplete;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   704
   	_io.success = _ioSuccess;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   705
   	_io.failure = _ioFailure;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   706
   	_io.end = _ioEnd;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   707
   	_io._id = _id;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   708
   	_io._timeout = _timeout;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   709
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   710
	//--------------------------------------
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   711
	//  Begin public interface definition
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   712
	//--------------------------------------
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   713
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   714
   	* @description Method that stores default client headers for all transactions.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   715
   	* If a label is passed with no value argument, the header will be deleted.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   716
   	* This is the interface for _setHeader().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   717
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   718
   	* @method header
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   719
   	* @public
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   720
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   721
	* @param {string} l - HTTP header
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   722
	* @param {string} v - HTTP header value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   723
	* @return int
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   724
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   725
   	_io.header = _setHeader;
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
   	* @description Method for requesting a transaction. This
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   729
   	* is the interface for _io().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   730
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   731
   	* @method io
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   732
   	* @public
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   733
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   734
    * @param {string} uri - qualified path to transaction resource.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   735
    * @param {object} c - configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   736
    * @return object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   737
    */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   738
   	Y.io = _io;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   739
	Y.io.http = _io;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   740
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   741
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   742
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   743
}, '3.0.0' ,{requires:['event-custom-base']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   744
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   745
YUI.add('io-form', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   746
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   747
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   748
    * Extends the IO base class to enable HTML form data serialization, when specified
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   749
    * in the transaction's configuration object.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   750
    * @module io
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   751
    * @submodule io-form
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
    Y.mix(Y.io, {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   755
       /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   756
        * @description Method to enumerate through an HTML form's elements collection
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   757
        * and return a string comprised of key-value pairs.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   758
        *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   759
        * @method _serialize
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   760
        * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   761
        * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   762
        * @param {object} c - YUI form node or HTML form id.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   763
        * @param {string} s - Transaction data defined in the configuration.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   764
        * @return string
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   765
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   766
        _serialize: function(c, s) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   767
			var eUC = encodeURIComponent,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   768
            	data = [],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   769
            	useDf = c.useDisabled || false,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   770
            	item = 0,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   771
            	id = (typeof c.id === 'string') ? c.id : c.id.getAttribute('id'),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   772
            	e, f, n, v, d, i, il, j, jl, o;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   773
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   774
            	if (!id) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   775
					id = Y.guid('io:');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   776
					c.id.setAttribute('id', id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   777
				}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   778
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   779
            	f = Y.config.doc.getElementById(id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   780
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   781
            // Iterate over the form elements collection to construct the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   782
            // label-value pairs.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   783
            for (i = 0, il = f.elements.length; i < il; ++i) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   784
                e = f.elements[i];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   785
                d = e.disabled;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   786
                n = e.name;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   787
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   788
                if ((useDf) ? n : (n && !d)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   789
                    n = encodeURIComponent(n) + '=';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   790
                    v = encodeURIComponent(e.value);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   791
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   792
                    switch (e.type) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   793
                        // Safari, Opera, FF all default options.value from .text if
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   794
                        // value attribute not specified in markup
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   795
                        case 'select-one':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   796
                            if (e.selectedIndex > -1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   797
                                o = e.options[e.selectedIndex];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   798
                                data[item++] = n + eUC((o.attributes.value && o.attributes.value.specified) ? o.value : o.text);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   799
                            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   800
                            break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   801
                        case 'select-multiple':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   802
                            if (e.selectedIndex > -1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   803
                                for (j = e.selectedIndex, jl = e.options.length; j < jl; ++j) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   804
                                    o = e.options[j];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   805
                                    if (o.selected) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   806
                                      data[item++] = n + eUC((o.attributes.value && o.attributes.value.specified) ? o.value : o.text);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   807
                                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   808
                                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   809
                            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   810
                            break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   811
                        case 'radio':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   812
                        case 'checkbox':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   813
                            if(e.checked){
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   814
                                data[item++] = n + v;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   815
                            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   816
                            break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   817
                        case 'file':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   818
                            // stub case as XMLHttpRequest will only send the file path as a string.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   819
                        case undefined:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   820
                            // stub case for fieldset element which returns undefined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   821
                        case 'reset':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   822
                            // stub case for input type reset button.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   823
                        case 'button':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   824
                            // stub case for input type button elements.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   825
                            break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   826
                        case 'submit':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   827
                        default:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   828
                            data[item++] = n + v;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   829
                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   830
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   831
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   832
            Y.log('HTML form serialized. The value is: ' + data.join('&'), 'info', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   833
            return s ? data.join('&') + "&" + s : data.join('&');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   834
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   835
    }, true);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   836
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   837
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   838
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   839
}, '3.0.0' ,{requires:['io-base','node-base','node-style']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   840
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   841
YUI.add('io-xdr', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   842
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   843
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   844
    * Extends the IO base class to provide an alternate, Flash transport, for making
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   845
    * cross-domain requests.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   846
	* @module io
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   847
	* @submodule io-xdr
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   848
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   849
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   850
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   851
	* @event io:xdrReady
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   852
	* @description This event is fired by YUI.io when the specified transport is
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   853
	* ready for use.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   854
	* @type Event Custom
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   855
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   856
	var E_XDR_READY = 'io:xdrReady',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   857
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   858
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   859
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   860
	* @description Object that stores callback handlers for cross-domain requests
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   861
	* when using Flash as the transport.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   862
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   863
	* @property _fn
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   864
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   865
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   866
	* @type object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   867
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   868
	_fn = {},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   869
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   870
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   871
	* @description Map of transaction state used when XDomainRequest is the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   872
	* XDR transport.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   873
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   874
	* @property _rS
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   875
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   876
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   877
	* @type object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   878
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   879
	_rS = {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   880
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   881
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   882
	* @description Method that creates the Flash transport swf.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   883
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   884
	* @method _swf
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   885
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   886
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   887
	* @param {string} uri - location of io.swf.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   888
	* @param {string} yid - YUI instance id.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   889
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   890
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   891
	function _swf(uri, yid) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   892
		var o = '<object id="yuiIoSwf" type="application/x-shockwave-flash" data="' +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   893
		        uri + '" width="0" height="0">' +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   894
		     	'<param name="movie" value="' + uri + '">' +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   895
		     	'<param name="FlashVars" value="yid=' + yid + '">' +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   896
                '<param name="allowScriptAccess" value="always">' +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   897
		    	'</object>',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   898
		    c = document.createElement('div');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   899
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   900
		document.body.appendChild(c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   901
		c.innerHTML = o;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   902
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   903
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   904
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   905
	* @description Sets event handlers for XDomainRequest transactions.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   906
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   907
	* @method _xdr
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   908
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   909
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   910
    * @param {object} o - Transaction object generated by _create() in io-base.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   911
	* @param {object} c - configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   912
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   913
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   914
	function _xdr(o, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   915
		o.c.onprogress = function() { _rS[o.id] = 3; }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   916
		o.c.onload = function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   917
			_rS[o.id] = 4;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   918
			Y.io.xdrResponse(o, c, 'success');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   919
		};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   920
		o.c.onerror = function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   921
			_rS[o.id] = 4;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   922
			Y.io.xdrResponse(o, c, 'failure');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   923
		};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   924
		if (c.timeout) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   925
			o.c.ontimeout = function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   926
				_rS[o.id] = 4;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   927
				Y.io.xdrResponse(o, c, 'timeout');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   928
			};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   929
			o.c.timeout = c.timeout;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   930
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   931
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   932
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   933
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   934
	* @description Creates a response object for XDR transactions, for success
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   935
	* and failure cases.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   936
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   937
	* @method _data
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   938
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   939
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   940
    * @param {object} o - Transaction object generated by _create() in io-base.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   941
	* @param {boolean} isFlash - True if Flash was used as the transport.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   942
	* @param {boolean} isXML - True if the response data are XML.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   943
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   944
	* @return object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   945
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   946
	function _data(o, isFlash, isXML) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   947
		var text, xml;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   948
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   949
		if (!o.status) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   950
			text = isFlash ? decodeURI(o.c.responseText) : o.c.responseText;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   951
			xml = isXML ? Y.DataType.XML.parse(text) : null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   952
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   953
			return { id: o.id, c: { responseText: text, responseXML: xml } };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   954
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   955
		else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   956
			return { id: o.id, status: o.status };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   957
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   958
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   959
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   960
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   961
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   962
	* @description Method for intiating an XDR transaction abort.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   963
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   964
	* @method _abort
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   965
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   966
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   967
	* @param {object} o - Transaction object generated by _create() in io-base.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   968
	* @param {object} c - configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   969
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   970
	function _abort(o, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   971
		return c.xdr.use === 'flash' ? o.c.abort(o.id, c) : o.c.abort();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   972
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   973
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   974
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   975
	* @description Method for determining if an XDR transaction has completed
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   976
	* and all data are received.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   977
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   978
	* @method _isInProgress.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   979
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   980
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   981
	* @param {object} o - Transaction object generated by _create() in io-base.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   982
	* @param {object} c - configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   983
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   984
	function _isInProgress(o, t) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   985
		return (t === 'flash' && o.c) ? o.c.isInProgress(o.id) : _rS[o.id] !== 4;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   986
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   987
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   988
    Y.mix(Y.io, {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   989
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   990
	   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   991
		* @description Map of io transports.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   992
		*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   993
		* @property _transport
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   994
		* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   995
		* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   996
		* @type object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   997
		*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   998
		_transport: {},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   999
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1000
	   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1001
	   	* @description Method for accessing the transport's interface for making a
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1002
	   	* cross-domain transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1003
	   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1004
		* @method _xdr
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1005
		* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1006
		* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1007
		* @param {string} uri - qualified path to transaction resource.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1008
    	* @param {object} o - Transaction object generated by _create() in io-base.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1009
		* @param {object} c - configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1010
		*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1011
		xdr: function(uri, o, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1012
			if (c.on && c.xdr.use === 'flash') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1013
				_fn[o.id] = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1014
					on: c.on,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1015
					context: c.context,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1016
					arguments: c.arguments
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1017
				};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1018
				// These nodes do not need to be serialized across Flash's
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1019
				// ExternalInterface.  Doing so will result in exceptions.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1020
				c.context = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1021
				c.form = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1022
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1023
				o.c.send(uri, c, o.id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1024
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1025
			else if (window.XDomainRequest) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1026
				_xdr(o, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1027
				o.c.open(c.method || 'GET', uri);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1028
				o.c.send(c.data);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1029
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1030
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1031
			return {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1032
				id: o.id,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1033
				abort: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1034
					return o.c ? _abort(o, c) : false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1035
				},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1036
				isInProgress: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1037
					return o.c ? _isInProgress(o, c.xdr.use) : false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1038
				}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1039
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1040
		},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1041
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1042
	   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1043
	   	* @description Response controller for cross-domain requests when using the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1044
	   	* Flash transport or IE8's XDomainRequest object.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1045
	   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1046
		* @method xdrResponse
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1047
		* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1048
		* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1049
    	* @param {object} o - Transaction object generated by _create() in io-base.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1050
		* @param {object} c - configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1051
		* @param {string} e - Event name
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1052
		* @return object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1053
		*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1054
		xdrResponse: function(o, c, e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1055
   			var m, fn,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1056
   				isFlash = c.xdr.use === 'flash' ? true : false,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1057
   				isXML = c.xdr.dataType === 'xml' ? true : false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1058
   				c.on = c.on || {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1059
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1060
   			if (isFlash) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1061
   				m = _fn || {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1062
   				fn = m[o.id] ? m[o.id] : null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1063
   				if (fn) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1064
	   				c.on = fn.on;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1065
	   				c.context = fn.context;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1066
	   				c.arguments = fn.arguments;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1067
				}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1068
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1069
			if (e === ('abort' || 'timeout')) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1070
				o.status = e;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1071
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1072
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1073
			switch (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1074
				case 'start':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1075
					Y.io.start(o.id, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1076
					break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1077
				case 'success':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1078
					Y.io.success(_data(o, isFlash, isXML), c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1079
					isFlash ? delete m[o.id] : delete _rS[o.id];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1080
					break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1081
				case 'timeout':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1082
				case 'abort':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1083
				case 'failure':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1084
					Y.io.failure(_data(o, isFlash, isXML), c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1085
					isFlash ? delete m[o.id] : delete _rS[o.id];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1086
					break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1087
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1088
		},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1089
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1090
	   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1091
		* @description Fires event "io:xdrReady"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1092
		*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1093
		* @method xdrReady
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1094
		* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1095
		* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1096
		* @param {number} id - transaction id
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1097
		* @param {object} c - configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1098
		*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1099
		* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1100
		*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1101
		xdrReady: function(id) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1102
			Y.fire(E_XDR_READY, id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1103
		},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1104
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1105
	   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1106
		* @description Method to initialize the desired transport.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1107
		*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1108
		* @method transport
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1109
		* @public
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1110
		* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1111
		* @param {object} o - object of transport configurations.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1112
		* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1113
		*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1114
		transport: function(o) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1115
			var id = o.yid ? o.yid : Y.id;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1116
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1117
			_swf(o.src, id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1118
			this._transport.flash = Y.config.doc.getElementById('yuiIoSwf');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1119
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1120
	});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1121
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1122
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1123
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1124
}, '3.0.0' ,{requires:['io-base','datatype-xml']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1125
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1126
YUI.add('io-upload-iframe', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1127
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1128
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1129
   	* Extends the IO base class to enable file uploads, with HTML forms,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1130
   	* using an iframe as the transport medium.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1131
	* @module io
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1132
	* @submodule io-upload-iframe
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1133
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1134
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1135
	var w = Y.config.win;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1136
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1137
	* @description Parses the POST data object and creates hidden form elements
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1138
	* for each key-value, and appends them to the HTML form object.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1139
	* @method appendData
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1140
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1141
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1142
	* @param {object} f HTML form object.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1143
	* @param {string} s The key-value POST data.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1144
	* @return {array} o Array of created fields.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1145
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1146
	function _addData(f, s) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1147
		var o = [],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1148
			m = s.split('='),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1149
			i, l;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1150
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1151
		for (i = 0, l = m.length - 1; i < l; i++) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1152
			o[i] = document.createElement('input');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1153
			o[i].type = 'hidden';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1154
			o[i].name = m[i].substring(m[i].lastIndexOf('&') + 1);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1155
			o[i].value = (i + 1 === l) ? m[i + 1] : m[i + 1].substring(0, (m[i + 1].lastIndexOf('&')));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1156
			f.appendChild(o[i]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1157
			Y.log('key: ' +  o[i].name + ' and value: ' + o[i].value + ' added as form data.', 'info', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1158
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1159
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1160
		return o;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1161
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1162
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1163
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1164
	* @description Removes the custom fields created to pass additional POST
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1165
	* data, along with the HTML form fields.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1166
	* @method f
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1167
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1168
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1169
	* @param {object} f HTML form object.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1170
	* @param {object} o HTML form fields created from configuration.data.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1171
	* @return {void}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1172
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1173
	function _removeData(f, o) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1174
		var i, l;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1175
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1176
		for(i = 0, l = o.length; i < l; i++){
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1177
			f.removeChild(o[i]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1178
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1179
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1180
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1181
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1182
	* @description Sets the appropriate attributes and values to the HTML
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1183
	* form, in preparation of a file upload transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1184
	* @method _setAttrs
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1185
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1186
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1187
	* @param {object} f HTML form object.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1188
	* @param {object} id The Transaction ID.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1189
	* @param {object} uri Qualified path to transaction resource.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1190
	* @return {void}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1191
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1192
	function _setAttrs(f, id, uri) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1193
		var ie8 = (document.documentMode && document.documentMode === 8) ? true : false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1194
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1195
		f.setAttribute('action', uri);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1196
		f.setAttribute('method', 'POST');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1197
		f.setAttribute('target', 'ioupload' + id );
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1198
		f.setAttribute(Y.UA.ie && !ie8 ? 'encoding' : 'enctype', 'multipart/form-data');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1199
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1200
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1201
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1202
	* @description Sets the appropriate attributes and values to the HTML
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1203
	* form, in preparation of a file upload transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1204
	* @method _resetAttrs
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1205
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1206
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1207
	* @param {object} f HTML form object.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1208
	* @param {object} a Object of original attributes.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1209
	* @return {void}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1210
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1211
	function _resetAttrs(f, a){
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1212
		var p;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1213
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1214
		for (p in a) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1215
			if (a.hasOwnProperty(a, p)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1216
				if (a[p]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1217
					f.setAttribute(p, f[p]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1218
				}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1219
				else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1220
					f.removeAttribute(p);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1221
				}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1222
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1223
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1224
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1225
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1226
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1227
	* @description Creates the iframe transported used in file upload
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1228
	* transactions, and binds the response event handler.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1229
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1230
	* @method _create
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1231
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1232
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1233
    * @param {object} o Transaction object generated by _create().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1234
    * @param {object} c Configuration object passed to YUI.io().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1235
    * @return {void}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1236
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1237
	function _create(o, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1238
		var i = Y.Node.create('<iframe id="ioupload' + o.id + '" name="ioupload' + o.id + '" />');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1239
			i._node.style.position = 'absolute';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1240
			i._node.style.top = '-1000px';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1241
			i._node.style.left = '-1000px';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1242
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1243
		Y.one('body').appendChild(i);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1244
		// Bind the onload handler to the iframe to detect the file upload response.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1245
		Y.on("load", function() { _handle(o, c) }, '#ioupload' + o.id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1246
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1247
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1248
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1249
	* @description Bound to the iframe's Load event and processes
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1250
	* the response data.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1251
	* @method _handle
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1252
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1253
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1254
	* @param {o} o The transaction object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1255
	* @param {object} c Configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1256
	* @return {void}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1257
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1258
	function _handle(o, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1259
		var d = Y.one('#ioupload' + o.id).get('contentWindow.document'),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1260
			b = d.one('body'),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1261
			xml = (d._node.nodeType === 9),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1262
			p;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1263
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1264
		if (c.timeout) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1265
			_clearTimeout(o.id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1266
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1267
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1268
		if (b) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1269
			// When a response Content-Type of "text/plain" is used, Firefox and Safari
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1270
			// will wrap the response string with <pre></pre>.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1271
			p = b.query('pre:first-child');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1272
			o.c.responseText = p ? p.get('innerHTML') : b.get('innerHTML');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1273
			Y.log('The responseText value for transaction ' + o.id + ' is: ' + o.c.responseText + '.', 'info', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1274
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1275
		else if (xml) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1276
			o.c.responseXML =  d._node;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1277
			Y.log('The response for transaction ' + o.id + ' is an XML document.', 'info', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1278
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1279
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1280
		Y.io.complete(o, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1281
		Y.io.end(o, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1282
		// The transaction is complete, so call _destroy to remove
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1283
		// the event listener bound to the iframe transport, and then
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1284
		// destroy the iframe.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1285
		w.setTimeout( function() { _destroy(o.id); }, 0);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1286
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1287
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1288
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1289
	* @description Starts timeout count if the configuration object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1290
	* has a defined timeout property.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1291
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1292
	* @method _startTimeout
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1293
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1294
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1295
    * @param {object} o Transaction object generated by _create().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1296
    * @param {object} c Configuration object passed to YUI.io().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1297
    * @return {void}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1298
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1299
	function _startTimeout(o, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1300
		Y.io._timeout[o.id] = w.setTimeout(
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1301
			function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1302
				var r = { id: o.id, status: 'timeout' };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1303
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1304
				Y.io.complete(r, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1305
				Y.io.end(r, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1306
				Y.log('Transaction ' + o.id + ' timeout.', 'info', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1307
			}, c.timeout);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1308
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1309
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1310
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1311
	* @description Clears the timeout interval started by _startTimeout().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1312
	* @method _clearTimeout
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1313
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1314
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1315
    * @param {number} id - Transaction ID.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1316
    * @return {void}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1317
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1318
	function _clearTimeout(id) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1319
		w.clearTimeout(Y.io._timeout[id]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1320
		delete Y.io._timeout[id];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1321
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1322
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1323
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1324
	* @description
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1325
	* @method _destroy
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1326
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1327
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1328
	* @param {o} o The transaction object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1329
	* @param {object} uri Qualified path to transaction resource.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1330
	* @param {object} c Configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1331
	* @return {void}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1332
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1333
	function _destroy(id) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1334
		Y.Event.purgeElement('#ioupload' + id, false);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1335
		Y.one('body').removeChild(Y.one('#ioupload' + id));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1336
        Y.log('The iframe transport for transaction ' + id + ' has been destroyed.', 'info', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1337
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1338
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1339
	Y.mix(Y.io, {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1340
	   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1341
		* @description Uploads HTML form data, inclusive of files/attachments,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1342
		* using the iframe created in _create to facilitate the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1343
		* @method _upload
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1344
		* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1345
		* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1346
		* @param {o} o The transaction object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1347
		* @param {object} uri Qualified path to transaction resource.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1348
		* @param {object} c Configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1349
		* @return {void}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1350
		*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1351
		_upload: function(o, uri, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1352
			var f = (typeof c.form.id === 'string') ? Y.config.doc.getElementById(c.form.id) : c.form.id,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1353
				fields,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1354
				// Track original HTML form attribute values.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1355
				attr = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1356
					action: f.getAttribute('action'),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1357
					target: f.getAttribute('target')
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1358
				};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1359
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1360
			_create(o, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1361
			// Initialize the HTML form properties in case they are
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1362
			// not defined in the HTML form.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1363
			_setAttrs(f, o.id, uri);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1364
			if (c.data) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1365
				fields = _addData(f, c.data);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1366
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1367
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1368
			// Start polling if a callback is present and the timeout
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1369
			// property has been defined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1370
			if (c.timeout) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1371
				_startTimeout(o, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1372
        		Y.log('Transaction timeout started for transaction ' + o.id + '.', 'info', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1373
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1374
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1375
			// Start file upload.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1376
			f.submit();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1377
			Y.io.start(o.id, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1378
			if (c.data) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1379
				_removeData(f, fields);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1380
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1381
			// Restore HTML form attributes to their original values.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1382
			_resetAttrs(f, attr);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1383
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1384
			return {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1385
				id: o.id,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1386
				abort: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1387
					var r = { id: o.id, status: 'abort' };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1388
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1389
					if (Y.one('#ioupload' + o.id)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1390
						_destroy(o.id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1391
						Y.io.complete(r, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1392
						Y.io.end(r, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1393
        				Y.log('Transaction ' + o.id + ' aborted.', 'info', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1394
					}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1395
					else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1396
        				Y.log('Attempted to abort transaction ' + o.id + ' but transaction has completed.', 'info', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1397
						return false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1398
					}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1399
				},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1400
				isInProgress: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1401
					return Y.one('#ioupload' + o.id) ? true : false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1402
				}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1403
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1404
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1405
	});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1406
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1407
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1408
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1409
}, '3.0.0' ,{requires:['io-base','node-base','event-base']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1410
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1411
YUI.add('io-queue', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1412
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1413
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1414
    * Extends the IO base class to implement Queue for synchronous
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1415
    * transaction processing.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1416
	* @module io
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1417
	* @submodule io-queue
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1418
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1419
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1420
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1421
	* @description Array of transactions queued for processing
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1422
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1423
	* @property _yQ
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1424
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1425
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1426
	* @type Object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1427
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1428
	var _q = new Y.Queue(),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1429
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1430
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1431
	* @description Reference to "io:complete" event handler.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1432
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1433
	* @property _e
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1434
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1435
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1436
	* @type Object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1437
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1438
	_e,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1439
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1440
	_activeId,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1441
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1442
	* @description Property to determine whether the queue is set to
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1443
	* 1 (active) or 0 (inactive).  When inactive, transactions
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1444
	* will be stored in the queue until the queue is set to active.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1445
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1446
	* @property _qState
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1447
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1448
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1449
	* @type int
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1450
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1451
	_qState = 1;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1452
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1453
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1454
	* @description Method for requesting a transaction, and queueing the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1455
	* request before it is sent to the resource.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1456
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1457
	* @method _queue
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1458
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1459
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1460
	* @return Object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1461
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1462
	function _queue(uri, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1463
		var o = { uri: uri, id: Y.io._id(), cfg:c };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1464
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1465
		_q.add(o);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1466
		if (_qState === 1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1467
			_shift();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1468
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1469
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1470
		Y.log('Object queued.  Transaction id is ' + o.id, 'info', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1471
		return o;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1472
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1473
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1474
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1475
	* @description Method Process the first transaction from the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1476
	* queue in FIFO order.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1477
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1478
	* @method _shift
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1479
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1480
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1481
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1482
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1483
	function _shift() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1484
		var o = _q.next();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1485
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1486
		_activeId = o.id;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1487
		_qState = 0;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1488
		Y.io(o.uri, o.cfg, o.id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1489
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1490
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1491
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1492
	* @description Method for promoting a transaction to the top of the queue.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1493
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1494
	* @method _unshift
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1495
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1496
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1497
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1498
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1499
	function _unshift(o) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1500
		_q.promote(o);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1501
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1502
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1503
	function _next(id) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1504
		_qState = 1;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1505
		if (_activeId === id && _q.size() > 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1506
			_shift();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1507
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1508
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1509
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1510
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1511
	* @description Method for removing a specific, pending transaction from
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1512
	* the queue.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1513
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1514
	* @method _remove
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1515
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1516
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1517
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1518
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1519
	function _remove(o) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1520
		_q.remove(o);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1521
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1522
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1523
	function _start() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1524
		_qState = 1;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1525
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1526
		if (_q.size() > 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1527
			_shift();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1528
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1529
		Y.log('Queue started.', 'info', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1530
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1531
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1532
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1533
	* @description Method for setting queue processing to inactive.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1534
	* Transaction requests to YUI.io.queue() will be stored in the queue, but
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1535
	* not processed until the queue is reset to "active".
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1536
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1537
	* @method _stop
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1538
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1539
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1540
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1541
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1542
	function _stop() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1543
		_qState = 0;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1544
		Y.log('Queue stopped.', 'info', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1545
	};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1546
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1547
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1548
	* @description Method to query the current size of the queue.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1549
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1550
	* @method _size
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1551
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1552
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1553
	* @return int
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1554
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1555
	function _size() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1556
		return _q.size();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1557
	};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1558
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1559
	_e = Y.on('io:complete', function(id) { _next(id); }, Y.io);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1560
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1561
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1562
	* @description Method to query the current size of the queue, or to
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1563
	* set a maximum queue size.  This is the interface for _size().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1564
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1565
	* @method size
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1566
	* @public
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1567
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1568
	* @param {number} i - Specified maximum size of queue.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1569
    * @return number
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1570
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1571
	_queue.size = _size;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1572
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1573
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1574
	* @description Method for setting the queue to active. If there are
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1575
	* transactions pending in the queue, they will be processed from the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1576
	* queue in FIFO order. This is the interface for _start().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1577
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1578
	* @method start
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1579
	* @public
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1580
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1581
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1582
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1583
	_queue.start = _start;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1584
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1585
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1586
	* @description Method for setting queue processing to inactive.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1587
	* Transaction requests to YUI.io.queue() will be stored in the queue, but
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1588
	* not processed until the queue is restarted. This is the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1589
	* interface for _stop().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1590
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1591
	* @method stop
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1592
	* @public
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1593
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1594
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1595
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1596
	_queue.stop = _stop;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1597
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1598
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1599
	* @description Method for promoting a transaction to the top of the queue.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1600
	* This is the interface for _unshift().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1601
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1602
	* @method promote
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1603
	* @public
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1604
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1605
	* @param {Object} o - Reference to queued transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1606
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1607
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1608
	_queue.promote = _unshift;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1609
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1610
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1611
	* @description Method for removing a specific, pending transaction from
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1612
	* the queue. This is the interface for _remove().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1613
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1614
	* @method remove
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1615
	* @public
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1616
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1617
	* @param {Object} o - Reference to queued transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1618
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1619
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1620
	_queue.remove = _remove;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1621
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1622
    Y.mix(Y.io, {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1623
		queue: _queue
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1624
    }, true);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1625
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1626
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1627
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1628
}, '3.0.0' ,{requires:['io-base','queue-promote']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1629
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1630
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1631
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1632
YUI.add('io', function(Y){}, '3.0.0' ,{use:['io-base', 'io-form', 'io-xdr', 'io-upload-iframe', 'io-queue']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1633