src/cm/media/js/lib/yui/yui_3.0.0b1/build/io/io-debug.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 0 40c8f766c9b8
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     1
/*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     2
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     3
Code licensed under the BSD License:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     4
http://developer.yahoo.net/yui/license.txt
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     5
version: 3.0.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
   				Y.log('Configuration object.data added to serialized HTML form data. The string is: ' + f, 'info', 'io');
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
   			if (m === 'POST') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   218
   				d = f;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   219
   				_setHeader('Content-Type', 'application/x-www-form-urlencoded');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   220
   			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   221
   			else if (m === 'GET') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   222
   				uri = _concat(uri, f);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   223
   				Y.log('Configuration object.data added to serialized HTML form data. The querystring is: ' + uri, 'info', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   224
   			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   225
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   226
   		else if (d && m === 'POST') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   227
   			_setHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
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.xdr) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   231
   			Y.io._xdr(uri, o, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   232
   			return o;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   233
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   234
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   235
   		// If config.timeout is defined, and the request is standard XHR,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   236
   		// initialize timeout polling.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   237
   		if (c.timeout) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   238
   			_startTimeout(o, c.timeout);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   239
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   240
   		/* End Configuration Properties */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   241
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   242
   		o.c.onreadystatechange = function() { _readyState(o, c); };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   243
   		try { _open(o.c, m, uri); } catch (e0) {}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   244
   		_setHeaders(o.c, (c.headers || {}));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   245
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   246
   		// Do not pass null, in the absence of data, as this
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   247
   		// will result in a POST request with no Content-Length
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   248
   		// defined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   249
   		_async(o, (d || ''), c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   250
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   251
   		return o;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   252
   	}
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
   	* @description Method for creating and subscribing transaction events.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   256
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   257
   	* @method _tPubSub
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   258
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   259
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   260
   	* @param {string} e - event to be published
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   261
   	* @param {object} c - configuration data subset for event subscription.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   262
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   263
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   264
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   265
   	function _tPubSub(e, c){
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   266
   			var event = new Y.EventTarget().publish('transaction:' + e);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   267
   			event.subscribe(c.on[e], (c.context || this), c.arguments);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   268
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   269
   			return event;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   270
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   271
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   272
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   273
   	* @description Fires event "io:start" and creates, fires a
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   274
   	* transaction-specific start event, if config.on.start is
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   275
   	* defined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   276
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   277
   	* @method _ioStart
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   278
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   279
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   280
   	* @param {number} id - transaction id
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   281
   	* @param {object} c - configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   282
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   283
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   284
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   285
   	function _ioStart(id, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   286
   		var m = Y.io._fn || {},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   287
   			fn = (m && m[id]) ? m[id] : null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   288
   			event;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   289
   			// Set default value of argument c, property "on" to Object if
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   290
   			// the property is null or undefined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   291
   			c.on = c.on || {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   292
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   293
   		if (fn) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   294
   			c.on.start = fn.start;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   295
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   296
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   297
   		Y.fire(E_START, id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   298
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   299
   		if (c.on.start) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   300
   			event = _tPubSub('start', c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   301
   			event.fire(id);
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.log('Transaction ' + id + ' started.', 'info', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   304
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   305
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   306
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   307
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   308
   	* @description Fires event "io:complete" and creates, fires a
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   309
   	* transaction-specific "complete" event, if config.on.complete is
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   310
   	* defined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   311
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   312
   	* @method _ioComplete
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   313
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   314
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   315
   	* @param {object} o - transaction object.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   316
   	* @param {object} c - configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   317
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   318
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   319
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   320
   	function _ioComplete(o, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   321
   		var r, event;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   322
   			// Set default value of argument c, property "on" to Object if
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   323
   			// the property is null or undefined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   324
   			c.on = c.on || {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   325
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   326
		r = (o.status) ? _response(o.status) : o.c;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   327
   		Y.fire(E_COMPLETE, o.id, r);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   328
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   329
   		if (c.on.complete) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   330
   			event = _tPubSub('complete', c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   331
   			event.fire(o.id, r);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   332
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   333
   		Y.log('Transaction ' + o.id + ' completed.', 'info', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   334
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   335
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   336
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   337
   	* @description Fires event "io:success" and creates, fires a
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   338
   	* transaction-specific "success" event, if config.on.success is
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   339
   	* defined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   340
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   341
   	* @method _ioSuccess
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   342
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   343
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   344
   	* @param {object} o - transaction object.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   345
   	* @param {object} c - configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   346
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   347
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   348
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   349
   	function _ioSuccess(o, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   350
   		var m = Y.io._fn || {},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   351
   			fn = (m && m[o.id]) ? m[o.id] : null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   352
   			event;
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
   		if (fn) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   358
   			c.on.success = fn.success;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   359
   			//Decode the response from IO.swf
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   360
   			o.c.responseText = decodeURI(o.c.responseText);
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
   		Y.fire(E_SUCCESS, 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
   		if (c.on.success) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   366
   			event = _tPubSub('success', c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   367
   			event.fire(o.id, o.c);
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
   		Y.log('HTTP Status evaluates to Success. The transaction is: ' + o.id, 'info', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   371
   		_ioEnd(o, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   372
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   373
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   374
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   375
   	* @description Fires event "io:failure" and creates, fires a
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   376
   	* transaction-specific "failure" event, if config.on.failure is
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   377
   	* defined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   378
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   379
   	* @method _ioFailure
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   380
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   381
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   382
   	* @param {object} o - transaction object.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   383
   	* @param {object} c - configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   384
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   385
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   386
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   387
   	function _ioFailure(o, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   388
   		var m = Y.io._fn || {},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   389
   			fn = (m && m[o.id]) ? m[o.id] : null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   390
   			r, event;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   391
   			// Set default value of argument c, property "on" to Object if
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   392
   			// the property is null or undefined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   393
   			c.on = c.on || {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   394
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   395
   		if (fn) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   396
   			c.on.failure = fn.failure;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   397
   			//Decode the response from IO.swf
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   398
   			o.c.responseText = decodeURI(o.c.responseText);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   399
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   400
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   401
		r = (o.status) ? _response(o.status) : o.c;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   402
   		Y.fire(E_FAILURE, o.id, r);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   403
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   404
   		if (c.on.failure) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   405
   			event = _tPubSub('failure', c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   406
   			event.fire(o.id, r);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   407
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   408
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   409
   		Y.log('HTTP Status evaluates to Failure. The transaction is: ' + o.id, 'info', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   410
   		_ioEnd(o, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   411
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   412
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   413
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   414
   	* @description Fires event "io:end" and creates, fires a
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   415
   	* transaction-specific "end" event, if config.on.end is
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   416
   	* defined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   417
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   418
   	* @method _ioEnd
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   419
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   420
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   421
   	* @param {object} o - transaction object.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   422
   	* @param {object} c - configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   423
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   424
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   425
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   426
   	function _ioEnd(o, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   427
   		var m = Y.io._fn || {},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   428
   			fn = (m && m[o.id]) ? m[o.id] : null,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   429
   			event;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   430
   			// Set default value of argument c, property "on" to Object if
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   431
   			// the property is null or undefined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   432
   			c.on = c.on || {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   433
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   434
   		if (fn) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   435
   			c.on.end = fn.end;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   436
   			delete m[o.id];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   437
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   438
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   439
   		Y.fire(E_END, o.id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   440
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   441
   		if (c.on.end) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   442
   			event = _tPubSub('end', c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   443
   			event.fire(o.id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   444
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   445
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   446
   		_destroy(o, (c.xdr) ? true : false );
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   447
   		Y.log('Transaction ' + o.id + ' ended.', 'info', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   448
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   449
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   450
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   451
   	* @description Terminates a transaction due to an explicit abort or
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   452
   	* timeout.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   453
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   454
   	* @method _ioCancel
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   455
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   456
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   457
	* @param {object} o - Transaction object generated by _create().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   458
	* @param {object} c - Configuration object passed to YUI.io().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   459
	* @param {string} s - Identifies timed out or aborted transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   460
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   461
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   462
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   463
   	function _ioCancel(o, s) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   464
   		if (o && o.c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   465
   			o.status = s;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   466
   			o.c.abort();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   467
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   468
   		Y.log('Transaction cancelled due to time out or explicitly aborted. The transaction is: ' + o.id, 'info', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   469
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   470
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   471
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   472
   	* @description Determines if a cross-domain transaction is still
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   473
   	* in progress.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   474
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   475
   	* @method _isInProgress
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   476
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   477
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   478
	* @param {object} o - Transaction object generated by _create().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   479
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   480
    * @return boolean
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   481
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   482
	function _isInProgress(o) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   483
		return o.c.isInProgress(o.id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   484
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   485
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   486
	function _response(s) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   487
		return { status:0, statusText:s };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   488
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   489
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   490
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   491
   	* @description Method that increments _transactionId for each transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   492
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   493
   	* @method _id
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   494
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   495
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   496
    * @return int
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   497
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   498
   	function _id() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   499
   		var id = transactionId;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   500
   		transactionId++;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   501
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   502
   		Y.log('Transaction id generated. The id is: ' + id, 'info', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   503
   		return id;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   504
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   505
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   506
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   507
   	* @description Method that creates a unique transaction object for each
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   508
   	* request.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   509
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   510
   	* @method _create
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   511
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   512
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   513
	* @param {number} s - URI or root data.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   514
	* @param {number} c - configuration object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   515
	* @return object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   516
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   517
   	function _create(i, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   518
   		var o = {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   519
   		o.id = Y.Lang.isNumber(i) ? i : _id();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   520
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   521
   		if (c.xdr) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   522
   			o.c = Y.io._transport[c.xdr.use];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   523
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   524
   		else if (c.form && c.form.upload) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   525
   			o.c = {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   526
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   527
   		else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   528
   			o.c = _xhr();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   529
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   530
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   531
   		return o;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   532
   	};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   533
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   534
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   535
   	* @description Method that creates the XMLHttpRequest transport
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   536
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   537
   	* @method _xhr
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   538
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   539
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   540
	* @return object
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 _xhr() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   543
   		return (w.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   544
   	}
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
   	* @description Method that concatenates string data for HTTP GET transactions.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   548
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   549
   	* @method _concat
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   550
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   551
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   552
	* @param {string} s - URI or root data.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   553
	* @param {string} d - data to be concatenated onto URI.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   554
	* @return int
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   555
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   556
   	function _concat(s, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   557
   		s += ((s.indexOf('?') == -1) ? '?' : '&') + d;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   558
   		return s;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   559
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   560
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   561
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   562
   	* @description Method that stores default client headers for all transactions.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   563
   	* 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
   564
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   565
   	* @method _setHeader
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   566
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   567
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   568
	* @param {string} l - HTTP header
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   569
	* @param {string} v - HTTP header value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   570
	* @return int
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   571
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   572
   	function _setHeader(l, v) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   573
   		if (v) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   574
   			_headers[l] = v;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   575
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   576
   		else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   577
   			delete _headers[l];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   578
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   579
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   580
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   581
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   582
   	* @description Method that sets all HTTP headers to be sent in a transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   583
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   584
   	* @method _setHeaders
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   585
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   586
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   587
	* @param {object} o - XHR instance for the specific transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   588
	* @param {object} h - HTTP headers for the specific transaction, as defined
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   589
	*                     in the configuration object passed to YUI.io().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   590
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   591
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   592
   	function _setHeaders(o, h) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   593
   		var p;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   594
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   595
   		for (p in _headers) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   596
   			if (_headers.hasOwnProperty(p)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   597
   				if (h[p]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   598
   					// Configuration headers will supersede IO preset headers,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   599
   					// if headers match.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   600
   					Y.log('Matching configuration HTTP header: ' + p + ' found with value of ' + _headers[p], 'info', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   601
   					break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   602
   				}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   603
   				else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   604
   					h[p] = _headers[p];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   605
   					Y.log('HTTP header ' + p + ' found with value of ' + _headers[p], 'info', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   606
   				}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   607
   			}
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
   		for (p in h) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   611
   			if (h.hasOwnProperty(p)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   612
   				o.setRequestHeader(p, h[p]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   613
   				Y.log('HTTP Header ' + p + ' set with value of ' + h[p], 'info', 'io');
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
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   618
   	function _open(o, m, uri) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   619
   		o.open(m, uri, true);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   620
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   621
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   622
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   623
   	* @description Method that sends the transaction request.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   624
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   625
   	* @method _async
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   626
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   627
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   628
	* @param {object} o - Transaction object generated by _create().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   629
	* @param {string} d - Transaction data.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   630
	* @param {object} c - Configuration object passed to YUI.io().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   631
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   632
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   633
   	function _async(o, d, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   634
   		o.c.send(d);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   635
   		_ioStart(o.id, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   636
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   637
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   638
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   639
   	* @description Starts timeout count if the configuration object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   640
   	* has a defined timeout property.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   641
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   642
   	* @method _startTimeout
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   643
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   644
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   645
	* @param {object} o - Transaction object generated by _create().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   646
	* @param {object} c - Configuration object passed to YUI.io().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   647
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   648
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   649
   	function _startTimeout(o, timeout) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   650
   		_timeout[o.id] = w.setTimeout(function() { _ioCancel(o, 'timeout'); }, timeout);
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
   	* @description Clears the timeout interval started by _startTimeout().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   655
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   656
   	* @method _clearTimeout
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   657
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   658
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   659
	* @param {number} id - Transaction id.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   660
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   661
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   662
   	function _clearTimeout(id) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   663
   		w.clearTimeout(_timeout[id]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   664
   		delete _timeout[id];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   665
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   666
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   667
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   668
   	* @description Event handler bound to onreadystatechange.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   669
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   670
   	* @method _readyState
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   671
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   672
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   673
	* @param {object} o - Transaction object generated by _create().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   674
	* @param {object} c - Configuration object passed to YUI.io().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   675
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   676
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   677
   	function _readyState(o, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   678
   		if (o.c.readyState === 4) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   679
   			if (c.timeout) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   680
   				_clearTimeout(o.id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   681
   			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   682
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   683
   			w.setTimeout(
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   684
   				function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   685
   					_ioComplete(o, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   686
   					_handleResponse(o, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   687
   				}, 0);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   688
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   689
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   690
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   691
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   692
   	* @description Method that determines if a transaction response qualifies
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   693
   	* as success or failure, based on the response HTTP status code, and
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   694
   	* fires the appropriate success or failure events.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   695
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   696
   	* @method _handleResponse
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   697
   	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   698
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   699
	* @param {object} o - Transaction object generated by _create().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   700
	* @param {object} c - Configuration object passed to io().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   701
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   702
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   703
   	function _handleResponse(o, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   704
   		var status;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   705
   		try{
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   706
   			if (o.c.status && o.c.status !== 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   707
   				status = o.c.status;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   708
   			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   709
   			else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   710
   				status = 0;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   711
   			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   712
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   713
   		catch(e1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   714
   			status = 0;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   715
   			Y.log('HTTP status unreadable. The transaction is: ' + o.id, 'warn', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   716
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   717
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   718
   		// IE reports HTTP 204 as HTTP 1223.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   719
   		// But, the response data are still available.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   720
   		if (status >= 200 && status < 300 || status === 1223) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   721
   			_ioSuccess(o, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   722
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   723
   		else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   724
   			_ioFailure(o, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   725
   		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   726
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   727
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   728
   	function _destroy(o, isTransport) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   729
   		// IE, when using XMLHttpRequest as an ActiveX Object, will throw
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   730
   		// a "Type Mismatch" error if the event handler is set to "null".
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   731
   		if(w.XMLHttpRequest && !isTransport) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   732
   			if (o.c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   733
   				o.c.onreadystatechange = null;
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
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   737
   		o.c = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   738
   		o = null;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   739
   	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   740
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   741
   	_io.start = _ioStart;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   742
	_io.complete = _ioComplete;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   743
   	_io.success = _ioSuccess;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   744
   	_io.failure = _ioFailure;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   745
   	_io.isInProgress = _isInProgress;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   746
   	_io._id = _id;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   747
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   748
	//--------------------------------------
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   749
	//  Begin public interface definition
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   750
	//--------------------------------------
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   751
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   752
   	* @description Method that stores default client headers for all transactions.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   753
   	* 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
   754
   	* This is the interface for _setHeader().
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 header
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} l - HTTP header
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   760
	* @param {string} v - HTTP header value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   761
	* @return int
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   762
   	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   763
   	_io.header = _setHeader;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   764
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   765
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   766
   	* @description Method for requesting a transaction. This
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   767
   	* is the interface for _io().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   768
   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   769
   	* @method io
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   770
   	* @public
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   771
   	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   772
    * @param {string} uri - qualified path to transaction resource.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   773
    * @param {object} c - configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   774
    * @return object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   775
    */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   776
   	Y.io = _io;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   777
	Y.io.http = _io;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   778
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   779
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   780
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   781
}, '3.0.0b1' );
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   782
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   783
YUI.add('io-form', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   784
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   785
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   786
    * Extends the IO base class to enable HTML form data serialization, when specified
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   787
    * in the transaction's configuration object.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   788
    * @module io
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   789
    * @submodule io-form
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   790
    */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   791
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   792
    Y.mix(Y.io, {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   793
       /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   794
        * @description Method to enumerate through an HTML form's elements collection
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   795
        * and return a string comprised of key-value pairs.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   796
        *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   797
        * @method _serialize
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   798
        * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   799
        * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   800
        * @param {object} o - YUI form node or HTML form id.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   801
        * @return string
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   802
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   803
        _serialize: function(o) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   804
			var eUC = encodeURIComponent,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   805
            	data = [],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   806
            	useDf = o.useDisabled || false,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   807
            	item = 0,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   808
            	e, f, n, v, d, i, ilen, j, jlen, o,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   809
            	id = (typeof o.id === 'string') ? o.id : o.id.getAttribute('id');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   810
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   811
            	if (!id) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   812
					id = Y.guid('io:');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   813
					o.id.setAttribute('id', id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   814
				}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   815
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   816
            	f = Y.config.doc.getElementById(id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   817
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   818
            // Iterate over the form elements collection to construct the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   819
            // label-value pairs.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   820
            for (i = 0, ilen = f.elements.length; i < ilen; ++i) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   821
                e = f.elements[i];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   822
                d = e.disabled;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   823
                n = e.name;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   824
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   825
                if ((useDf) ? n : (n && !d)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   826
                    n = encodeURIComponent(n) + '=';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   827
                    v = encodeURIComponent(e.value);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   828
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   829
                    switch (e.type) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   830
                        // Safari, Opera, FF all default options.value from .text if
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   831
                        // value attribute not specified in markup
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   832
                        case 'select-one':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   833
                            if (e.selectedIndex > -1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   834
                                o = e.options[e.selectedIndex];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   835
                                data[item++] = n + eUC((o.attributes.value && o.attributes.value.specified) ? o.value : o.text);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   836
                            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   837
                            break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   838
                        case 'select-multiple':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   839
                            if (e.selectedIndex > -1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   840
                                for (j = e.selectedIndex, jlen = e.options.length; j < jlen; ++j) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   841
                                    o = e.options[j];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   842
                                    if (o.selected) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   843
                                      data[item++] = n + eUC((o.attributes.value && o.attributes.value.specified) ? o.value : o.text);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   844
                                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   845
                                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   846
                            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   847
                            break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   848
                        case 'radio':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   849
                        case 'checkbox':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   850
                            if(e.checked){
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   851
                                data[item++] = n + v;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   852
                            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   853
                            break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   854
                        case 'file':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   855
                            // stub case as XMLHttpRequest will only send the file path as a string.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   856
                        case undefined:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   857
                            // stub case for fieldset element which returns undefined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   858
                        case 'reset':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   859
                            // stub case for input type reset button.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   860
                        case 'button':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   861
                            // stub case for input type button elements.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   862
                            break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   863
                        case 'submit':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   864
                        default:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   865
                            data[item++] = n + v;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   866
                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   867
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   868
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   869
            Y.log('HTML form serialized. The value is: ' + data.join('&'), 'info', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   870
            return data.join('&');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   871
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   872
    }, true);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   873
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   874
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   875
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   876
}, '3.0.0b1' ,{requires:['io-base']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   877
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   878
YUI.add('io-xdr', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   879
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   880
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   881
    * Extends the IO base class to provide an alternate, Flash transport, for making
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   882
    * cross-domain requests.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   883
	* @module io
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   884
	* @submodule io-xdr
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   885
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   886
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   887
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   888
	* @event io:xdrReady
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   889
	* @description This event is fired by YUI.io when the specified transport is
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   890
	* ready for use.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   891
	* @type Event Custom
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   892
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   893
	var E_XDR_READY = 'io:xdrReady';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   894
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   895
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   896
	* @description Method that creates the Flash transport swf.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   897
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   898
	* @method _swf
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   899
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   900
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   901
	* @param {string} uri - location of IO.swf.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   902
	* @param {string} yid - YUI instance id.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   903
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   904
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   905
	function _swf(uri, yid) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   906
		var XDR_SWF = '<object id="yuiIoSwf" type="application/x-shockwave-flash" data="' +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   907
		              uri + '" width="0" height="0">' +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   908
		     		  '<param name="movie" value="' + uri + '">' +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   909
		     		  '<param name="FlashVars" value="yid=' + yid + '">' +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   910
                      '<param name="allowScriptAccess" value="sameDomain">' +
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   911
		    	      '</object>';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   912
		Y.get('body').appendChild(Y.Node.create(XDR_SWF));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   913
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   914
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   915
    Y.mix(Y.io, {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   916
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   917
	   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   918
		* @description Map of IO transports.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   919
		*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   920
		* @property _transport
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   921
		* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   922
		* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   923
		* @type object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   924
		*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   925
		_transport: {},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   926
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   927
	   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   928
		* @description Object that stores callback handlers for cross-domain requests
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   929
		* when using Flash as the transport.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   930
		*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   931
		* @property _fn
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   932
		* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   933
		* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   934
		* @type object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   935
		*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   936
		_fn: {},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   937
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   938
	   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   939
	   	* @description Method for accessing the transport's interface for making a
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   940
	   	* cross-domain transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   941
	   	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   942
		* @method _xdr
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   943
		* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   944
		* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   945
		* @param {string} uri - qualified path to transaction resource.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   946
    	* @param {object} o - Transaction object generated by _create() in io-base.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   947
		* @param {object} c - configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   948
		* @return object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   949
		*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   950
		_xdr: function(uri, o, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   951
			if (c.on) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   952
				this._fn[o.id] = c.on;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   953
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   954
			o.c.send(uri, c, o.id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   955
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   956
			return o;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   957
		},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   958
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   959
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   960
	   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   961
		* @description Fires event "io:xdrReady"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   962
		*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   963
		* @method xdrReady
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   964
		* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   965
		* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   966
		* @param {number} id - transaction id
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   967
		* @param {object} c - configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   968
		*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   969
		* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   970
		*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   971
		xdrReady: function(id) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   972
			Y.fire(E_XDR_READY, id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   973
		},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   974
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   975
	   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   976
		* @description Method to initialize the desired transport.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   977
		*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   978
		* @method transport
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   979
		* @public
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   980
		* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   981
		* @param {object} o - object of transport configurations.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   982
		* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   983
		*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   984
		transport: function(o) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   985
			switch (o.id) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   986
				case 'flash':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   987
					_swf(o.src, o.yid);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   988
					this._transport.flash = Y.config.doc.getElementById('yuiIoSwf');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   989
					break;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   990
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   991
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   992
	});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   993
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   994
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   995
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   996
}, '3.0.0b1' ,{requires:['io-base']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   997
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   998
YUI.add('io-upload-iframe', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   999
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1000
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1001
   	* Extends the IO base class to enable file uploads, with HTML forms,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1002
   	* using an iframe as the transport medium.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1003
	* @module io
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1004
	* @submodule io-upload-iframe
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1005
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1006
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1007
	var w = Y.config.win;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1008
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1009
	* @description Parses the POST data object and creates hidden form elements
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1010
	* for each key-value, and appends them to the HTML form object.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1011
	* @method appendData
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1012
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1013
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1014
	* @param {object} d The key-value hash map.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1015
	* @return {array} e Array of created fields.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1016
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1017
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1018
	function _addData(f, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1019
		var e = [],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1020
			p, i;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1021
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1022
		for (p in d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1023
			if (d.hasOwnProperty(d, p)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1024
				e[i] = document.createElement('input');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1025
				e[i].type = 'hidden';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1026
				e[i].name = p;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1027
				e[i].value = d[p].
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1028
				f.appendChild(e[i]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1029
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1030
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1031
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1032
		return e;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1033
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1034
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1035
	function _removeData(f, e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1036
		var i, l;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1037
		if (e && e.length > 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1038
			for(i = 0, l = e.length; i < l; i++){
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1039
				f.removeChild(e[i]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1040
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1041
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1042
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1043
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1044
	function _create(o, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1045
		var i = Y.Node.create('<iframe id="ioupload' + o.id + '" name="ioupload' + o.id + '" />'),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1046
			cfg = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1047
				position: 'absolute',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1048
				top: '-1000px',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1049
				left: '-1000px'
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1050
			};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1051
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1052
		i.setStyles(cfg);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1053
		Y.get('body').appendChild(i);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1054
		// Bind the onload handler to the iframe to detect the file upload response.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1055
		Y.on("load", function() { _handle(o, c) }, '#ioupload' + o.id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1056
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1057
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1058
	// Create the upload callback handler that fires when the iframe
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1059
	// receives the load event.  Subsequently, the event handler is detached
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1060
	// and the iframe removed from the document.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1061
	function _handle(o, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1062
		var p,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1063
		    b = Y.get('#ioupload' + o.id).get('contentWindow.document.body');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1064
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1065
		if (c.timeout) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1066
			_clearTimeout(o.id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1067
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1068
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1069
		// When a response Content-Type of "text/plain" is used, Firefox and Safari
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1070
		// will wrap the response string with <pre></pre>.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1071
		p = b.query('pre:first-child');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1072
		o.c.responseText = (p) ? p.get('innerHTML') : b.get('innerHTML');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1073
		Y.io.complete(o, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1074
		// The transaction is complete, so call _destroy to remove
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1075
		// the event listener bound to the iframe transport, and then
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1076
		// destroy the iframe.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1077
		setTimeout( function() { _destroy(o.id); }, 0);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1078
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1079
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1080
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1081
	* @description Starts timeout count if the configuration object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1082
	* has a defined timeout property.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1083
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1084
	* @method _startTimeout
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1085
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1086
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1087
    * @param {object} o Transaction object generated by _create().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1088
    * @param {object} c Configuration object passed to YUI.io().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1089
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1090
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1091
	function _startTimeout(o, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1092
		Y.io._timeout[o.id] = w.setTimeout(function() { Y.io.abort(o, c); }, c.timeout);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1093
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1094
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1095
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1096
	* @description Clears the timeout interval started by _startTimeout().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1097
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1098
	* @method _clearTimeout
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1099
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1100
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1101
    * @param {number} id - Transaction id.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1102
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1103
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1104
	function _clearTimeout(id) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1105
		w.clearTimeout(Y.io._timeout[id]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1106
		delete Y.io._timeout[id];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1107
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1108
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1109
	function _destroy(id) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1110
		Y.Event.purgeElement('#ioupload' + id, false);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1111
		Y.get('body').removeChild(Y.get('#ioupload' + id));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1112
        Y.log('The iframe transport for transaction ' + id + 'has been destroyed.', 'info', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1113
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1114
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1115
	Y.mix(Y.io, {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1116
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1117
	   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1118
		* @description Uploads HTML form, inclusive of files/attachments, using the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1119
		* iframe created in createFrame to facilitate the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1120
		* @method _upload
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1121
		* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1122
		* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1123
		* @param {o} o The transaction object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1124
		* @param {object} uri Qualified path to transaction resource.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1125
		* @param {object} c Configuration object for the transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1126
		* @return {void}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1127
		*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1128
		_upload: function(o, uri, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1129
			var f = (typeof c.form.id === 'string') ? document.getElementById(c.form.id) : c.form.id,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1130
				e, fields, i, p, attr;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1131
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1132
			_create(o, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1133
			// Track original HTML form attribute values.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1134
			attr = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1135
				action: f.getAttribute('action'),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1136
				target: f.getAttribute('target')
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1137
			};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1138
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1139
			// Initialize the HTML form properties in case they are
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1140
			// not defined in the HTML form.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1141
			f.setAttribute('action', uri);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1142
			f.setAttribute('method', 'POST');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1143
			f.setAttribute('target', 'ioupload' + o.id );
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1144
			f.setAttribute((Y.UA.ie && !document.documentMode) ? 'encoding' : 'enctype', 'multipart/form-data');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1145
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1146
			if (c.data) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1147
				fields = _addData(f, c.data);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1148
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1149
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1150
			// Start polling if a callback is present and the timeout
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1151
			// property has been defined.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1152
			if (c.timeout) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1153
				_startTimeout(o, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1154
        		Y.log('Transaction timeout started for transaction ' + id + '.', 'info', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1155
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1156
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1157
			// Start file upload.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1158
			f.submit();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1159
			Y.io.start(o.id, c);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1160
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1161
			if (c.data) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1162
				_removeData(f, fields);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1163
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1164
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1165
			// Restore HTML form attributes to their original
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1166
			// values prior to file upload.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1167
			for (p in attr) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1168
				if (attr.hasOwnProperty(attr, p)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1169
					if (attr[p]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1170
				  		f.setAttribute(p, f[prop]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1171
					}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1172
					else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1173
				  		f.removeAttribute(p);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1174
					}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1175
			  	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1176
			}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1177
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1178
	});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1179
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1180
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1181
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1182
}, '3.0.0b1' ,{requires:['io-base']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1183
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1184
YUI.add('io-queue', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1185
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1186
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1187
    * Extends the IO base class to implement Queue for synchronous
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1188
    * transaction processing.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1189
	* @module io
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1190
	* @submodule io-queue
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1191
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1192
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1193
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1194
	* @description Array of transactions queued for processing
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1195
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1196
	* @property _yQ
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1197
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1198
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1199
	* @type Object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1200
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1201
	var _q = new Y.Queue(),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1202
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1203
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1204
	* @description Reference to "io:complete" event handler.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1205
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1206
	* @property _e
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1207
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1208
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1209
	* @type Object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1210
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1211
	_e,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1212
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1213
	_activeId,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1214
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1215
	* @description Property to determine whether the queue is set to
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1216
	* 1 (active) or 0 (inactive).  When inactive, transactions
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1217
	* will be stored in the queue until the queue is set to active.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1218
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1219
	* @property _qState
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1220
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1221
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1222
	* @type int
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1223
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1224
	_qState = 1;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1225
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1226
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1227
	* @description Method for requesting a transaction, and queueing the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1228
	* request before it is sent to the resource.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1229
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1230
	* @method _queue
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1231
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1232
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1233
	* @return Object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1234
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1235
	function _queue(uri, c) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1236
		var o = { uri: uri, id: Y.io._id(), cfg:c };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1237
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1238
		_q.add(o);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1239
		if (_qState === 1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1240
			_shift();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1241
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1242
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1243
		Y.log('Object queued.  Transaction id is' + o.id, 'info', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1244
		return o;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1245
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1246
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1247
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1248
	* @description Method Process the first transaction from the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1249
	* queue in FIFO order.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1250
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1251
	* @method _shift
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1252
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1253
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1254
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1255
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1256
	function _shift() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1257
		var o = _q.next();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1258
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1259
		_activeId = o.id;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1260
		_qState = 0;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1261
		Y.io(o.uri, o.cfg, o.id);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1262
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1263
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1264
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1265
	* @description Method for promoting a transaction to the top of the queue.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1266
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1267
	* @method _unshift
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1268
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1269
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1270
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1271
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1272
	function _unshift(o) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1273
		_q.promote(o);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1274
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1275
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1276
	function _next(id) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1277
		_qState = 1;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1278
		if (_activeId === id && _q.size() > 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1279
			_shift();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1280
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1281
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1282
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1283
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1284
	* @description Method for removing a specific, pending transaction from
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1285
	* the queue.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1286
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1287
	* @method _remove
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1288
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1289
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1290
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1291
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1292
	function _remove(o) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1293
		_q.remove(o);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1294
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1295
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1296
	function _start() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1297
		_qState = 1;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1298
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1299
		if (_q.size() > 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1300
			_shift();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1301
		}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1302
		Y.log('Queue started.', 'info', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1303
	}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1304
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1305
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1306
	* @description Method for setting queue processing to inactive.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1307
	* Transaction requests to YUI.io.queue() will be stored in the queue, but
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1308
	* not processed until the queue is reset to "active".
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1309
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1310
	* @method _stop
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1311
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1312
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1313
	* @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1314
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1315
	function _stop() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1316
		_qState = 0;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1317
		Y.log('Queue stopped.', 'info', 'io');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1318
	};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1319
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1320
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1321
	* @description Method to query the current size of the queue.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1322
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1323
	* @method _size
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1324
	* @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1325
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1326
	* @return int
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1327
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1328
	function _size() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1329
		return _q.size();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1330
	};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1331
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1332
	_e = Y.on('io:complete', function(id) { _next(id); }, Y.io);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1333
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1334
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1335
	* @description Method to query the current size of the queue, or to
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1336
	* set a maximum queue size.  This is the interface for _size().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1337
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1338
	* @method size
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1339
	* @public
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1340
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1341
	* @param {number} i - Specified maximum size of queue.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1342
    * @return number
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1343
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1344
	_queue.size = _size;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1345
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1346
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1347
	* @description Method for setting the queue to active. If there are
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1348
	* transactions pending in the queue, they will be processed from the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1349
	* queue in FIFO order. This is the interface for _start().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1350
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1351
	* @method start
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1352
	* @public
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1353
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1354
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1355
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1356
	_queue.start = _start;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1357
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1358
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1359
	* @description Method for setting queue processing to inactive.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1360
	* Transaction requests to YUI.io.queue() will be stored in the queue, but
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1361
	* not processed until the queue is restarted. This is the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1362
	* interface for _stop().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1363
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1364
	* @method stop
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1365
	* @public
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1366
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1367
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1368
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1369
	_queue.stop = _stop;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1370
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1371
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1372
	* @description Method for promoting a transaction to the top of the queue.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1373
	* This is the interface for _unshift().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1374
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1375
	* @method promote
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1376
	* @public
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1377
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1378
	* @param {Object} o - Reference to queued transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1379
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1380
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1381
	_queue.promote = _unshift;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1382
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1383
   /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1384
	* @description Method for removing a specific, pending transaction from
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1385
	* the queue. This is the interface for _purge().
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1386
	*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1387
	* @method purge
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1388
	* @public
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1389
	* @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1390
	* @param {Object} o - Reference to queued transaction.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1391
    * @return void
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1392
	*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1393
	_queue.remove = _remove;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1394
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1395
    Y.mix(Y.io, {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1396
		queue: _queue
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1397
    }, true);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1398
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1399
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1400
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1401
}, '3.0.0b1' ,{requires:['io-base']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1402
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1403
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1404
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1405
YUI.add('io', function(Y){}, '3.0.0b1' ,{use:['io-base', 'io-form', 'io-xdr', 'io-upload-iframe', 'io-queue']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1406