src/cm/media/js/lib/yui/yui3.0.0/build/io/io-base.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']});