src/cm/media/js/lib/yui/yui_3.0.0b1/build/io/io-base.js
author raph
Mon, 23 Nov 2009 15:14:29 +0100
changeset 0 40c8f766c9b8
permissions -rw-r--r--
import from internal svn r 4007
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     1
/*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     2
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     3
Code licensed under the BSD License:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     4
http://developer.yahoo.net/yui/license.txt
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     5
version: 3.0.0b1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
build: 1163
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     7
*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     8
YUI.add('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
	* @return object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   182
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   183
   	function _io(uri, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   184
   		var u, f,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   185
   			// Set default value of argument c to Object if
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   186
   			// configuration object "c" does not exist.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   187
   			c = c || {},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   188
   			o = _create((arguments.length === 3) ? arguments[2] : null, c),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   189
   			m = (c.method) ? c.method.toUpperCase() : 'GET',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   190
   			d = (c.data) ? c.data : null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   191
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   192
   		o.abort = function () {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   193
   			c.xdr ? o.c.abort(o.id, c) : _ioCancel(o, 'abort');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   194
   		};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   195
   		o.isInProgress = function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   196
   			var s = (c.xdr) ? _isInProgress(o) : (o.c.readyState !== 4 && o.c.readyState !== 0);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   197
   			return s;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   198
   		};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   199
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   200
   		/* Determine configuration properties */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   201
   		// If config.form is defined, perform data operations.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   202
   		if (c.form) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   203
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   204
   			if (c.form.upload) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   205
   				u = Y.io._upload(o, uri, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   206
   				return u;
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
   			// Serialize the HTML form into a string of name-value pairs.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   210
   			f = Y.io._serialize(c.form);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   211
   			// If config.data is defined, concatenate the data to the form string.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   212
   			if (d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   213
   				f += "&" + d;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   214
   			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   215
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   216
   			if (m === 'POST') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   217
   				d = f;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   218
   				_setHeader('Content-Type', 'application/x-www-form-urlencoded');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   219
   			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   220
   			else if (m === 'GET') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   221
   				uri = _concat(uri, f);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   222
   			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   223
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   224
   		else if (d && m === 'POST') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   225
   			_setHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   226
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   227
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   228
   		if (c.xdr) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   229
   			Y.io._xdr(uri, o, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   230
   			return o;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   231
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   232
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   233
   		// If config.timeout is defined, and the request is standard XHR,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   234
   		// initialize timeout polling.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   235
   		if (c.timeout) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   236
   			_startTimeout(o, c.timeout);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   237
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   238
   		/* End Configuration Properties */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   239
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   240
   		o.c.onreadystatechange = function() { _readyState(o, c); };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   241
   		try { _open(o.c, m, uri); } catch (e0) {}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   242
   		_setHeaders(o.c, (c.headers || {}));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   243
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   244
   		// Do not pass null, in the absence of data, as this
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   245
   		// will result in a POST request with no Content-Length
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   246
   		// defined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   247
   		_async(o, (d || ''), c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   248
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   249
   		return o;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   250
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   251
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   252
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   253
   	* @description Method for creating and subscribing transaction events.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   254
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   255
   	* @method _tPubSub
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   256
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   257
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   258
   	* @param {string} e - event to be published
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   259
   	* @param {object} c - configuration data subset for event subscription.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   260
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   261
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   262
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   263
   	function _tPubSub(e, c){
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   264
   			var event = new Y.EventTarget().publish('transaction:' + e);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   265
   			event.subscribe(c.on[e], (c.context || this), c.arguments);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   266
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   267
   			return event;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   268
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   269
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   270
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   271
   	* @description Fires event "io:start" and creates, fires a
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   272
   	* transaction-specific start event, if config.on.start is
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   273
   	* defined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   274
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   275
   	* @method _ioStart
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   276
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   277
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   278
   	* @param {number} id - transaction id
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   279
   	* @param {object} c - configuration object for the transaction.
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 void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   282
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   283
   	function _ioStart(id, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   284
   		var m = Y.io._fn || {},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   285
   			fn = (m && m[id]) ? m[id] : null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   286
   			event;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   287
   			// Set default value of argument c, property "on" to Object if
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   288
   			// the property is null or undefined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   289
   			c.on = c.on || {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   290
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   291
   		if (fn) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   292
   			c.on.start = fn.start;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   293
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   294
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   295
   		Y.fire(E_START, id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   296
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   297
   		if (c.on.start) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   298
   			event = _tPubSub('start', c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   299
   			event.fire(id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   300
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   301
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   302
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   303
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   304
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   305
   	* @description Fires event "io:complete" and creates, fires a
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   306
   	* transaction-specific "complete" event, if config.on.complete is
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   307
   	* defined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   308
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   309
   	* @method _ioComplete
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   310
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   311
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   312
   	* @param {object} o - transaction object.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   313
   	* @param {object} c - configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   314
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   315
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   316
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   317
   	function _ioComplete(o, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   318
   		var r, event;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   319
   			// Set default value of argument c, property "on" to Object if
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   320
   			// the property is null or undefined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   321
   			c.on = c.on || {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   322
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   323
		r = (o.status) ? _response(o.status) : o.c;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   324
   		Y.fire(E_COMPLETE, o.id, r);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   325
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   326
   		if (c.on.complete) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   327
   			event = _tPubSub('complete', c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   328
   			event.fire(o.id, r);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   329
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   330
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   331
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   332
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   333
   	* @description Fires event "io:success" and creates, fires a
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   334
   	* transaction-specific "success" event, if config.on.success is
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   335
   	* defined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   336
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   337
   	* @method _ioSuccess
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   338
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   339
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   340
   	* @param {object} o - transaction object.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   341
   	* @param {object} c - configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   342
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   343
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   344
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   345
   	function _ioSuccess(o, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   346
   		var m = Y.io._fn || {},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   347
   			fn = (m && m[o.id]) ? m[o.id] : null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   348
   			event;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   349
   			// Set default value of argument c, property "on" to Object if
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   350
   			// the property is null or undefined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   351
   			c.on = c.on || {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   352
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   353
   		if (fn) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   354
   			c.on.success = fn.success;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   355
   			//Decode the response from IO.swf
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   356
   			o.c.responseText = decodeURI(o.c.responseText);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   357
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   358
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   359
   		Y.fire(E_SUCCESS, o.id, o.c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   360
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   361
   		if (c.on.success) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   362
   			event = _tPubSub('success', c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   363
   			event.fire(o.id, 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
   		_ioEnd(o, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   367
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   368
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   369
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   370
   	* @description Fires event "io:failure" and creates, fires a
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   371
   	* transaction-specific "failure" event, if config.on.failure is
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   372
   	* defined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   373
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   374
   	* @method _ioFailure
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   375
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   376
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   377
   	* @param {object} o - transaction object.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   378
   	* @param {object} c - configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   379
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   380
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   381
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   382
   	function _ioFailure(o, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   383
   		var m = Y.io._fn || {},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   384
   			fn = (m && m[o.id]) ? m[o.id] : null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   385
   			r, event;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   386
   			// Set default value of argument c, property "on" to Object if
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   387
   			// the property is null or undefined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   388
   			c.on = c.on || {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   389
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   390
   		if (fn) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   391
   			c.on.failure = fn.failure;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   392
   			//Decode the response from IO.swf
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   393
   			o.c.responseText = decodeURI(o.c.responseText);
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
		r = (o.status) ? _response(o.status) : o.c;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   397
   		Y.fire(E_FAILURE, o.id, r);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   398
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   399
   		if (c.on.failure) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   400
   			event = _tPubSub('failure', c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   401
   			event.fire(o.id, r);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   402
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   403
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   404
   		_ioEnd(o, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   405
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   406
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   407
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   408
   	* @description Fires event "io:end" and creates, fires a
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   409
   	* transaction-specific "end" event, if config.on.end is
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   410
   	* defined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   411
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   412
   	* @method _ioEnd
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   413
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   414
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   415
   	* @param {object} o - transaction object.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   416
   	* @param {object} c - configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   417
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   418
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   419
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   420
   	function _ioEnd(o, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   421
   		var m = Y.io._fn || {},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   422
   			fn = (m && m[o.id]) ? m[o.id] : null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   423
   			event;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   424
   			// Set default value of argument c, property "on" to Object if
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   425
   			// the property is null or undefined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   426
   			c.on = c.on || {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   427
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   428
   		if (fn) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   429
   			c.on.end = fn.end;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   430
   			delete m[o.id];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   431
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   432
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   433
   		Y.fire(E_END, o.id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   434
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   435
   		if (c.on.end) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   436
   			event = _tPubSub('end', c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   437
   			event.fire(o.id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   438
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   439
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   440
   		_destroy(o, (c.xdr) ? true : false );
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
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   444
   	* @description Terminates a transaction due to an explicit abort or
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   445
   	* timeout.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   446
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   447
   	* @method _ioCancel
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   448
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   449
   	* @static
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 {object} c - Configuration object passed to YUI.io().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   452
	* @param {string} s - Identifies timed out or aborted 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 _ioCancel(o, s) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   457
   		if (o && o.c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   458
   			o.status = s;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   459
   			o.c.abort();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   460
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   461
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   462
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   463
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   464
   	* @description Determines if a cross-domain transaction is still
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   465
   	* in progress.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   466
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   467
   	* @method _isInProgress
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   468
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   469
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   470
	* @param {object} o - Transaction object generated by _create().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   471
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   472
    * @return boolean
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   473
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   474
	function _isInProgress(o) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   475
		return o.c.isInProgress(o.id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   476
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   477
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   478
	function _response(s) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   479
		return { status:0, statusText:s };
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
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   483
   	* @description Method that increments _transactionId for each transaction.
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 _id
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
    * @return int
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   489
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   490
   	function _id() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   491
   		var id = transactionId;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   492
   		transactionId++;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   493
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   494
   		return id;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   495
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   496
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   497
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   498
   	* @description Method that creates a unique transaction object for each
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   499
   	* request.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   500
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   501
   	* @method _create
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   502
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   503
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   504
	* @param {number} s - URI or root data.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   505
	* @param {number} c - configuration object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   506
	* @return object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   507
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   508
   	function _create(i, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   509
   		var o = {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   510
   		o.id = Y.Lang.isNumber(i) ? i : _id();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   511
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   512
   		if (c.xdr) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   513
   			o.c = Y.io._transport[c.xdr.use];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   514
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   515
   		else if (c.form && c.form.upload) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   516
   			o.c = {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   517
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   518
   		else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   519
   			o.c = _xhr();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   520
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   521
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   522
   		return o;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   523
   	};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   524
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   525
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   526
   	* @description Method that creates the XMLHttpRequest transport
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   527
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   528
   	* @method _xhr
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   529
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   530
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   531
	* @return object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   532
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   533
   	function _xhr() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   534
   		return (w.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   535
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   536
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   537
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   538
   	* @description Method that concatenates string data for HTTP GET transactions.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   539
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   540
   	* @method _concat
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   541
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   542
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   543
	* @param {string} s - URI or root data.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   544
	* @param {string} d - data to be concatenated onto URI.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   545
	* @return int
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   546
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   547
   	function _concat(s, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   548
   		s += ((s.indexOf('?') == -1) ? '?' : '&') + d;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   549
   		return s;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   550
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   551
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   552
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   553
   	* @description Method that stores default client headers for all transactions.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   554
   	* 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
   555
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   556
   	* @method _setHeader
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   557
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   558
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   559
	* @param {string} l - HTTP header
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   560
	* @param {string} v - HTTP header value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   561
	* @return int
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   562
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   563
   	function _setHeader(l, v) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   564
   		if (v) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   565
   			_headers[l] = v;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   566
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   567
   		else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   568
   			delete _headers[l];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   569
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   570
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   571
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   572
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   573
   	* @description Method that sets all HTTP headers to be sent in a transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   574
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   575
   	* @method _setHeaders
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   576
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   577
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   578
	* @param {object} o - XHR instance for the specific transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   579
	* @param {object} h - HTTP headers for the specific transaction, as defined
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   580
	*                     in the configuration object passed to YUI.io().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   581
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   582
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   583
   	function _setHeaders(o, h) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   584
   		var p;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   585
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   586
   		for (p in _headers) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   587
   			if (_headers.hasOwnProperty(p)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   588
   				if (h[p]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   589
   					// Configuration headers will supersede IO preset headers,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   590
   					// if headers match.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   591
   					break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   592
   				}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   593
   				else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   594
   					h[p] = _headers[p];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   595
   				}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   596
   			}
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
   		for (p in h) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   600
   			if (h.hasOwnProperty(p)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   601
   				o.setRequestHeader(p, h[p]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   602
   			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   603
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   604
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   605
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   606
   	function _open(o, m, uri) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   607
   		o.open(m, uri, true);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   608
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   609
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   610
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   611
   	* @description Method that sends the transaction request.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   612
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   613
   	* @method _async
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   614
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   615
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   616
	* @param {object} o - Transaction object generated by _create().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   617
	* @param {string} d - Transaction data.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   618
	* @param {object} c - Configuration object passed to YUI.io().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   619
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   620
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   621
   	function _async(o, d, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   622
   		o.c.send(d);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   623
   		_ioStart(o.id, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   624
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   625
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   626
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   627
   	* @description Starts timeout count if the configuration object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   628
   	* has a defined timeout property.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   629
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   630
   	* @method _startTimeout
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   631
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   632
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   633
	* @param {object} o - Transaction object generated by _create().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   634
	* @param {object} c - Configuration object passed to YUI.io().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   635
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   636
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   637
   	function _startTimeout(o, timeout) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   638
   		_timeout[o.id] = w.setTimeout(function() { _ioCancel(o, 'timeout'); }, timeout);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   639
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   640
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   641
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   642
   	* @description Clears the timeout interval started by _startTimeout().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   643
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   644
   	* @method _clearTimeout
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   645
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   646
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   647
	* @param {number} id - Transaction id.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   648
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   649
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   650
   	function _clearTimeout(id) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   651
   		w.clearTimeout(_timeout[id]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   652
   		delete _timeout[id];
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
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   656
   	* @description Event handler bound to onreadystatechange.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   657
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   658
   	* @method _readyState
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   659
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   660
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   661
	* @param {object} o - Transaction object generated by _create().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   662
	* @param {object} c - Configuration object passed to YUI.io().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   663
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   664
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   665
   	function _readyState(o, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   666
   		if (o.c.readyState === 4) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   667
   			if (c.timeout) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   668
   				_clearTimeout(o.id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   669
   			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   670
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   671
   			w.setTimeout(
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   672
   				function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   673
   					_ioComplete(o, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   674
   					_handleResponse(o, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   675
   				}, 0);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   676
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   677
   	}
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
   	* @description Method that determines if a transaction response qualifies
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   681
   	* as success or failure, based on the response HTTP status code, and
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   682
   	* fires the appropriate success or failure events.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   683
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   684
   	* @method _handleResponse
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   685
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   686
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   687
	* @param {object} o - Transaction object generated by _create().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   688
	* @param {object} c - Configuration object passed to io().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   689
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   690
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   691
   	function _handleResponse(o, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   692
   		var status;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   693
   		try{
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   694
   			if (o.c.status && o.c.status !== 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   695
   				status = o.c.status;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   696
   			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   697
   			else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   698
   				status = 0;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   699
   			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   700
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   701
   		catch(e1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   702
   			status = 0;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   703
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   704
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   705
   		// IE reports HTTP 204 as HTTP 1223.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   706
   		// But, the response data are still available.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   707
   		if (status >= 200 && status < 300 || status === 1223) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   708
   			_ioSuccess(o, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   709
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   710
   		else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   711
   			_ioFailure(o, c);
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
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   715
   	function _destroy(o, isTransport) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   716
   		// IE, when using XMLHttpRequest as an ActiveX Object, will throw
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   717
   		// a "Type Mismatch" error if the event handler is set to "null".
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   718
   		if(w.XMLHttpRequest && !isTransport) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   719
   			if (o.c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   720
   				o.c.onreadystatechange = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   721
   			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   722
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   723
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   724
   		o.c = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   725
   		o = null;
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
   	_io.start = _ioStart;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   729
	_io.complete = _ioComplete;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   730
   	_io.success = _ioSuccess;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   731
   	_io.failure = _ioFailure;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   732
   	_io.isInProgress = _isInProgress;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   733
   	_io._id = _id;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   734
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   735
	//--------------------------------------
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   736
	//  Begin public interface definition
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   737
	//--------------------------------------
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   738
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   739
   	* @description Method that stores default client headers for all transactions.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   740
   	* 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
   741
   	* This is the interface for _setHeader().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   742
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   743
   	* @method header
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   744
   	* @public
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   745
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   746
	* @param {string} l - HTTP header
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   747
	* @param {string} v - HTTP header value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   748
	* @return int
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   749
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   750
   	_io.header = _setHeader;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   751
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   752
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   753
   	* @description Method for requesting a transaction. This
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   754
   	* is the interface for _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
   	* @method io
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   757
   	* @public
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   758
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   759
    * @param {string} uri - qualified path to transaction resource.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   760
    * @param {object} c - configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   761
    * @return object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   762
    */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   763
   	Y.io = _io;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   764
	Y.io.http = _io;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   765
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   766
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   767
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   768
}, '3.0.0b1' );