-<html>\r
-<head>\r
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> \r
- <title>The source code</title>\r
- <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />\r
- <script type="text/javascript" src="../resources/prettify/prettify.js"></script>\r
-</head>\r
-<body onload="prettyPrint();">\r
- <pre class="prettyprint lang-js">/*\r
-* Portions of this file are based on pieces of Yahoo User Interface Library\r
-* Copyright (c) 2007, Yahoo! Inc. All rights reserved.\r
-* YUI licensed under the BSD License:\r
-* http://developer.yahoo.net/yui/license.txt\r
-*/\r
-Ext.lib.Ajax = function() { \r
- var activeX = ['MSXML2.XMLHTTP.3.0',\r
- 'MSXML2.XMLHTTP',\r
- 'Microsoft.XMLHTTP'],\r
- CONTENTTYPE = 'Content-Type';\r
- \r
- // private\r
- function setHeader(o) {\r
- var conn = o.conn,\r
- prop;\r
- \r
- function setTheHeaders(conn, headers){\r
- for (prop in headers) {\r
- if (headers.hasOwnProperty(prop)) {\r
- conn.setRequestHeader(prop, headers[prop]);\r
- }\r
- } \r
- } \r
- \r
- if (pub.defaultHeaders) {\r
- setTheHeaders(conn, pub.defaultHeaders);\r
- }\r
-\r
- if (pub.headers) {\r
- setTheHeaders(conn, pub.headers);\r
- delete pub.headers; \r
- }\r
- } \r
- \r
- // private\r
- function createExceptionObject(tId, callbackArg, isAbort, isTimeout) { \r
- return {\r
- tId : tId,\r
- status : isAbort ? -1 : 0,\r
- statusText : isAbort ? 'transaction aborted' : 'communication failure',\r
- isAbort: isAbort,\r
- isTimeout: isTimeout,\r
- argument : callbackArg\r
- };\r
- } \r
- \r
- // private \r
- function initHeader(label, value) { \r
- (pub.headers = pub.headers || {})[label] = value; \r
- }\r
- \r
- // private\r
- function createResponseObject(o, callbackArg) {\r
- var headerObj = {},\r
- headerStr, \r
- conn = o.conn,\r
- t,\r
- s;\r
-\r
- try {\r
- headerStr = o.conn.getAllResponseHeaders(); \r
- Ext.each(headerStr.replace(/\r\n/g, '\n').split('\n'), function(v){\r
- t = v.indexOf(':');\r
- if(t >= 0){\r
- s = v.substr(0, t).toLowerCase();\r
- if(v.charAt(t + 1) == ' '){\r
- ++t;\r
- }\r
- headerObj[s] = v.substr(t + 1);\r
- }\r
- });\r
- } catch(e) {}\r
- \r
- return {\r
- tId : o.tId,\r
- status : conn.status,\r
- statusText : conn.statusText,\r
- getResponseHeader : function(header){return headerObj[header.toLowerCase()];},\r
- getAllResponseHeaders : function(){return headerStr},\r
- responseText : conn.responseText,\r
- responseXML : conn.responseXML,\r
- argument : callbackArg\r
- };\r
- }\r
- \r
- // private\r
- function releaseObject(o) {\r
- o.conn = null;\r
- o = null;\r
- } \r
- \r
- // private\r
- function handleTransactionResponse(o, callback, isAbort, isTimeout) {\r
- if (!callback) {\r
- releaseObject(o);\r
- return;\r
- }\r
-\r
- var httpStatus, responseObject;\r
-\r
- try {\r
- if (o.conn.status !== undefined && o.conn.status != 0) {\r
- httpStatus = o.conn.status;\r
- }\r
- else {\r
- httpStatus = 13030;\r
- }\r
- }\r
- catch(e) {\r
- httpStatus = 13030;\r
- }\r
-\r
- if ((httpStatus >= 200 && httpStatus < 300) || (Ext.isIE && httpStatus == 1223)) {\r
- responseObject = createResponseObject(o, callback.argument);\r
- if (callback.success) {\r
- if (!callback.scope) {\r
- callback.success(responseObject);\r
- }\r
- else {\r
- callback.success.apply(callback.scope, [responseObject]);\r
- }\r
- }\r
- }\r
- else {\r
- switch (httpStatus) {\r
- case 12002:\r
- case 12029:\r
- case 12030:\r
- case 12031:\r
- case 12152:\r
- case 13030:\r
- responseObject = createExceptionObject(o.tId, callback.argument, (isAbort ? isAbort : false), isTimeout);\r
- if (callback.failure) {\r
- if (!callback.scope) {\r
- callback.failure(responseObject);\r
- }\r
- else {\r
- callback.failure.apply(callback.scope, [responseObject]);\r
- }\r
- }\r
- break;\r
- default:\r
- responseObject = createResponseObject(o, callback.argument);\r
- if (callback.failure) {\r
- if (!callback.scope) {\r
- callback.failure(responseObject);\r
- }\r
- else {\r
- callback.failure.apply(callback.scope, [responseObject]);\r
- }\r
- }\r
- }\r
- }\r
-\r
- releaseObject(o);\r
- responseObject = null;\r
- } \r
- \r
- // private\r
- function handleReadyState(o, callback){\r
- callback = callback || {};\r
- var conn = o.conn,\r
- tId = o.tId,\r
- poll = pub.poll,\r
- cbTimeout = callback.timeout || null;\r
-\r
- if (cbTimeout) {\r
- pub.timeout[tId] = setTimeout(function() {\r
- pub.abort(o, callback, true);\r
- }, cbTimeout);\r
- }\r
-\r
- poll[tId] = setInterval(\r
- function() {\r
- if (conn && conn.readyState == 4) {\r
- clearInterval(poll[tId]);\r
- poll[tId] = null;\r
-\r
- if (cbTimeout) {\r
- clearTimeout(pub.timeout[tId]);\r
- pub.timeout[tId] = null;\r
- }\r
-\r
- handleTransactionResponse(o, callback);\r
- }\r
- },\r
- pub.pollInterval);\r
- }\r
- \r
- // private\r
- function asyncRequest(method, uri, callback, postData) {\r
- var o = getConnectionObject() || null;\r
-\r
- if (o) {\r
- o.conn.open(method, uri, true);\r
-\r
- if (pub.useDefaultXhrHeader) { \r
- initHeader('X-Requested-With', pub.defaultXhrHeader);\r
- }\r
-\r
- if(postData && pub.useDefaultHeader && (!pub.headers || !pub.headers[CONTENTTYPE])){\r
- initHeader(CONTENTTYPE, pub.defaultPostHeader);\r
- }\r
-\r
- if (pub.defaultHeaders || pub.headers) {\r
- setHeader(o);\r
- }\r
-\r
- handleReadyState(o, callback);\r
- o.conn.send(postData || null);\r
- }\r
- return o;\r
- }\r
- \r
- // private\r
- function getConnectionObject() {\r
- var o; \r
-\r
- try {\r
- if (o = createXhrObject(pub.transactionId)) {\r
- pub.transactionId++;\r
- }\r
- } catch(e) {\r
- } finally {\r
- return o;\r
- }\r
- }\r
- \r
- // private\r
- function createXhrObject(transactionId) {\r
- var http;\r
- \r
- try {\r
- http = new XMLHttpRequest(); \r
- } catch(e) {\r
- for (var i = 0; i < activeX.length; ++i) { \r
- try {\r
- http = new ActiveXObject(activeX[i]); \r
- break;\r
- } catch(e) {}\r
- }\r
- } finally {\r
- return {conn : http, tId : transactionId};\r
- }\r
- }\r
- \r
- var pub = {\r
- request : function(method, uri, cb, data, options) {\r
- if(options){\r
- var me = this, \r
- xmlData = options.xmlData,\r
- jsonData = options.jsonData,\r
- hs;\r
- \r
- Ext.applyIf(me, options); \r
- \r
- if(xmlData || jsonData){\r
- hs = me.headers;\r
- if(!hs || !hs[CONTENTTYPE]){\r
- initHeader(CONTENTTYPE, xmlData ? 'text/xml' : 'application/json');\r
- }\r
- data = xmlData || (!Ext.isPrimitive(jsonData) ? Ext.encode(jsonData) : jsonData);\r
- }\r
- } \r
- return asyncRequest(method || options.method || "POST", uri, cb, data);\r
- },\r
-\r
- serializeForm : function(form) {\r
- var fElements = form.elements || (document.forms[form] || Ext.getDom(form)).elements,\r
- hasSubmit = false,\r
- encoder = encodeURIComponent,\r
- element,\r
- options, \r
- name, \r
- val, \r
- data = '',\r
- type;\r
- \r
- Ext.each(fElements, function(element) { \r
- name = element.name; \r
- type = element.type;\r
- \r
- if (!element.disabled && name){\r
- if(/select-(one|multiple)/i.test(type)) {\r
- Ext.each(element.options, function(opt) {\r
- if (opt.selected) {\r
- data += String.format("{0}={1}&", encoder(name), encoder((opt.hasAttribute ? opt.hasAttribute('value') : opt.getAttribute('value') !== null) ? opt.value : opt.text));\r
- } \r
- });\r
- } else if(!/file|undefined|reset|button/i.test(type)) {\r
- if(!(/radio|checkbox/i.test(type) && !element.checked) && !(type == 'submit' && hasSubmit)){\r
- \r
- data += encoder(name) + '=' + encoder(element.value) + '&'; \r
- hasSubmit = /submit/i.test(type); \r
- } \r
- } \r
- }\r
- }); \r
- return data.substr(0, data.length - 1);\r
- },\r
- \r
- useDefaultHeader : true,\r
- defaultPostHeader : 'application/x-www-form-urlencoded; charset=UTF-8',\r
- useDefaultXhrHeader : true,\r
- defaultXhrHeader : 'XMLHttpRequest', \r
- poll : {},\r
- timeout : {},\r
- pollInterval : 50,\r
- transactionId : 0,\r
- \r
-// This is never called - Is it worth exposing this? \r
-// setProgId : function(id) {\r
-// activeX.unshift(id);\r
-// },\r
-\r
-// This is never called - Is it worth exposing this? \r
-// setDefaultPostHeader : function(b) {\r
-// this.useDefaultHeader = b;\r
-// },\r
- \r
-// This is never called - Is it worth exposing this? \r
-// setDefaultXhrHeader : function(b) {\r
-// this.useDefaultXhrHeader = b;\r
-// },\r
-\r
-// This is never called - Is it worth exposing this? \r
-// setPollingInterval : function(i) {\r
-// if (typeof i == 'number' && isFinite(i)) {\r
-// this.pollInterval = i;\r
-// }\r
-// },\r
- \r
-// This is never called - Is it worth exposing this?\r
-// resetDefaultHeaders : function() {\r
-// this.defaultHeaders = null;\r
-// },\r
- \r
- abort : function(o, callback, isTimeout) {\r
- var me = this,\r
- tId = o.tId,\r
- isAbort = false;\r
- \r
- if (me.isCallInProgress(o)) {\r
- o.conn.abort();\r
- clearInterval(me.poll[tId]);\r
- me.poll[tId] = null;\r
- clearTimeout(pub.timeout[tId]);\r
- me.timeout[tId] = null;\r
- \r
- handleTransactionResponse(o, callback, (isAbort = true), isTimeout); \r
- }\r
- return isAbort;\r
- },\r
- \r
- isCallInProgress : function(o) {\r
- // if there is a connection and readyState is not 0 or 4\r
- return o.conn && !{0:true,4:true}[o.conn.readyState]; \r
- }\r
- };\r
- return pub;\r
- }();</pre> \r
-</body>\r
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>The source code</title>
+ <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
+ <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
+</head>
+<body onload="prettyPrint();">
+ <pre class="prettyprint lang-js">/*!
+ * Ext JS Library 3.3.1
+ * Copyright(c) 2006-2010 Sencha Inc.
+ * licensing@sencha.com
+ * http://www.sencha.com/license
+ */
+/*
+* Portions of this file are based on pieces of Yahoo User Interface Library
+* Copyright (c) 2007, Yahoo! Inc. All rights reserved.
+* YUI licensed under the BSD License:
+* http://developer.yahoo.net/yui/license.txt
+*/
+Ext.lib.Ajax = function() {
+ var activeX = ['Msxml2.XMLHTTP.6.0',
+ 'Msxml2.XMLHTTP.3.0',
+ 'Msxml2.XMLHTTP'],
+ CONTENTTYPE = 'Content-Type';
+
+ // private
+ function setHeader(o) {
+ var conn = o.conn,
+ prop,
+ headers = {};
+
+ function setTheHeaders(conn, headers){
+ for (prop in headers) {
+ if (headers.hasOwnProperty(prop)) {
+ conn.setRequestHeader(prop, headers[prop]);
+ }
+ }
+ }
+
+ Ext.apply(headers, pub.headers, pub.defaultHeaders);
+ setTheHeaders(conn, headers);
+ delete pub.headers;
+ }
+
+ // private
+ function createExceptionObject(tId, callbackArg, isAbort, isTimeout) {
+ return {
+ tId : tId,
+ status : isAbort ? -1 : 0,
+ statusText : isAbort ? 'transaction aborted' : 'communication failure',
+ isAbort: isAbort,
+ isTimeout: isTimeout,
+ argument : callbackArg
+ };
+ }
+
+ // private
+ function initHeader(label, value) {
+ (pub.headers = pub.headers || {})[label] = value;
+ }
+
+ // private
+ function createResponseObject(o, callbackArg) {
+ var headerObj = {},
+ headerStr,
+ conn = o.conn,
+ t,
+ s,
+ // see: https://prototype.lighthouseapp.com/projects/8886/tickets/129-ie-mangles-http-response-status-code-204-to-1223
+ isBrokenStatus = conn.status == 1223;
+
+ try {
+ headerStr = o.conn.getAllResponseHeaders();
+ Ext.each(headerStr.replace(/\r\n/g, '\n').split('\n'), function(v){
+ t = v.indexOf(':');
+ if(t >= 0){
+ s = v.substr(0, t).toLowerCase();
+ if(v.charAt(t + 1) == ' '){
+ ++t;
+ }
+ headerObj[s] = v.substr(t + 1);
+ }
+ });
+ } catch(e) {}
+
+ return {
+ tId : o.tId,
+ // Normalize the status and statusText when IE returns 1223, see the above link.
+ status : isBrokenStatus ? 204 : conn.status,
+ statusText : isBrokenStatus ? 'No Content' : conn.statusText,
+ getResponseHeader : function(header){return headerObj[header.toLowerCase()];},
+ getAllResponseHeaders : function(){return headerStr;},
+ responseText : conn.responseText,
+ responseXML : conn.responseXML,
+ argument : callbackArg
+ };
+ }
+
+ // private
+ function releaseObject(o) {
+ if (o.tId) {
+ pub.conn[o.tId] = null;
+ }
+ o.conn = null;
+ o = null;
+ }
+
+ // private
+ function handleTransactionResponse(o, callback, isAbort, isTimeout) {
+ if (!callback) {
+ releaseObject(o);
+ return;
+ }
+
+ var httpStatus, responseObject;
+
+ try {
+ if (o.conn.status !== undefined && o.conn.status != 0) {
+ httpStatus = o.conn.status;
+ }
+ else {
+ httpStatus = 13030;
+ }
+ }
+ catch(e) {
+ httpStatus = 13030;
+ }
+
+ if ((httpStatus >= 200 && httpStatus < 300) || (Ext.isIE && httpStatus == 1223)) {
+ responseObject = createResponseObject(o, callback.argument);
+ if (callback.success) {
+ if (!callback.scope) {
+ callback.success(responseObject);
+ }
+ else {
+ callback.success.apply(callback.scope, [responseObject]);
+ }
+ }
+ }
+ else {
+ switch (httpStatus) {
+ case 12002:
+ case 12029:
+ case 12030:
+ case 12031:
+ case 12152:
+ case 13030:
+ responseObject = createExceptionObject(o.tId, callback.argument, (isAbort ? isAbort : false), isTimeout);
+ if (callback.failure) {
+ if (!callback.scope) {
+ callback.failure(responseObject);
+ }
+ else {
+ callback.failure.apply(callback.scope, [responseObject]);
+ }
+ }
+ break;
+ default:
+ responseObject = createResponseObject(o, callback.argument);
+ if (callback.failure) {
+ if (!callback.scope) {
+ callback.failure(responseObject);
+ }
+ else {
+ callback.failure.apply(callback.scope, [responseObject]);
+ }
+ }
+ }
+ }
+
+ releaseObject(o);
+ responseObject = null;
+ }
+
+ function checkResponse(o, callback, conn, tId, poll, cbTimeout){
+ if (conn && conn.readyState == 4) {
+ clearInterval(poll[tId]);
+ poll[tId] = null;
+
+ if (cbTimeout) {
+ clearTimeout(pub.timeout[tId]);
+ pub.timeout[tId] = null;
+ }
+ handleTransactionResponse(o, callback);
+ }
+ }
+
+ function checkTimeout(o, callback){
+ pub.abort(o, callback, true);
+ }
+
+
+ // private
+ function handleReadyState(o, callback){
+ callback = callback || {};
+ var conn = o.conn,
+ tId = o.tId,
+ poll = pub.poll,
+ cbTimeout = callback.timeout || null;
+
+ if (cbTimeout) {
+ pub.conn[tId] = conn;
+ pub.timeout[tId] = setTimeout(checkTimeout.createCallback(o, callback), cbTimeout);
+ }
+ poll[tId] = setInterval(checkResponse.createCallback(o, callback, conn, tId, poll, cbTimeout), pub.pollInterval);
+ }
+
+ // private
+ function asyncRequest(method, uri, callback, postData) {
+ var o = getConnectionObject() || null;
+
+ if (o) {
+ o.conn.open(method, uri, true);
+
+ if (pub.useDefaultXhrHeader) {
+ initHeader('X-Requested-With', pub.defaultXhrHeader);
+ }
+
+ if(postData && pub.useDefaultHeader && (!pub.headers || !pub.headers[CONTENTTYPE])){
+ initHeader(CONTENTTYPE, pub.defaultPostHeader);
+ }
+
+ if (pub.defaultHeaders || pub.headers) {
+ setHeader(o);
+ }
+
+ handleReadyState(o, callback);
+ o.conn.send(postData || null);
+ }
+ return o;
+ }
+
+ // private
+ function getConnectionObject() {
+ var o;
+
+ try {
+ if (o = createXhrObject(pub.transactionId)) {
+ pub.transactionId++;
+ }
+ } catch(e) {
+ } finally {
+ return o;
+ }
+ }
+
+ // private
+ function createXhrObject(transactionId) {
+ var http;
+
+ try {
+ http = new XMLHttpRequest();
+ } catch(e) {
+ for (var i = 0; i < activeX.length; ++i) {
+ try {
+ http = new ActiveXObject(activeX[i]);
+ break;
+ } catch(e) {}
+ }
+ } finally {
+ return {conn : http, tId : transactionId};
+ }
+ }
+
+ var pub = {
+ request : function(method, uri, cb, data, options) {
+ if(options){
+ var me = this,
+ xmlData = options.xmlData,
+ jsonData = options.jsonData,
+ hs;
+
+ Ext.applyIf(me, options);
+
+ if(xmlData || jsonData){
+ hs = me.headers;
+ if(!hs || !hs[CONTENTTYPE]){
+ initHeader(CONTENTTYPE, xmlData ? 'text/xml' : 'application/json');
+ }
+ data = xmlData || (!Ext.isPrimitive(jsonData) ? Ext.encode(jsonData) : jsonData);
+ }
+ }
+ return asyncRequest(method || options.method || "POST", uri, cb, data);
+ },
+
+ serializeForm : function(form) {
+ var fElements = form.elements || (document.forms[form] || Ext.getDom(form)).elements,
+ hasSubmit = false,
+ encoder = encodeURIComponent,
+ name,
+ data = '',
+ type,
+ hasValue;
+
+ Ext.each(fElements, function(element){
+ name = element.name;
+ type = element.type;
+
+ if (!element.disabled && name) {
+ if (/select-(one|multiple)/i.test(type)) {
+ Ext.each(element.options, function(opt){
+ if (opt.selected) {
+ hasValue = opt.hasAttribute ? opt.hasAttribute('value') : opt.getAttributeNode('value').specified;
+ data += String.format("{0}={1}&", encoder(name), encoder(hasValue ? opt.value : opt.text));
+ }
+ });
+ } else if (!(/file|undefined|reset|button/i.test(type))) {
+ if (!(/radio|checkbox/i.test(type) && !element.checked) && !(type == 'submit' && hasSubmit)) {
+ data += encoder(name) + '=' + encoder(element.value) + '&';
+ hasSubmit = /submit/i.test(type);
+ }
+ }
+ }
+ });
+ return data.substr(0, data.length - 1);
+ },
+
+ useDefaultHeader : true,
+ defaultPostHeader : 'application/x-www-form-urlencoded; charset=UTF-8',
+ useDefaultXhrHeader : true,
+ defaultXhrHeader : 'XMLHttpRequest',
+ poll : {},
+ timeout : {},
+ conn: {},
+ pollInterval : 50,
+ transactionId : 0,
+
+// This is never called - Is it worth exposing this?
+// setProgId : function(id) {
+// activeX.unshift(id);
+// },
+
+// This is never called - Is it worth exposing this?
+// setDefaultPostHeader : function(b) {
+// this.useDefaultHeader = b;
+// },
+
+// This is never called - Is it worth exposing this?
+// setDefaultXhrHeader : function(b) {
+// this.useDefaultXhrHeader = b;
+// },
+
+// This is never called - Is it worth exposing this?
+// setPollingInterval : function(i) {
+// if (typeof i == 'number' && isFinite(i)) {
+// this.pollInterval = i;
+// }
+// },
+
+// This is never called - Is it worth exposing this?
+// resetDefaultHeaders : function() {
+// this.defaultHeaders = null;
+// },
+
+ abort : function(o, callback, isTimeout) {
+ var me = this,
+ tId = o.tId,
+ isAbort = false;
+
+ if (me.isCallInProgress(o)) {
+ o.conn.abort();
+ clearInterval(me.poll[tId]);
+ me.poll[tId] = null;
+ clearTimeout(pub.timeout[tId]);
+ me.timeout[tId] = null;
+
+ handleTransactionResponse(o, callback, (isAbort = true), isTimeout);
+ }
+ return isAbort;
+ },
+
+ isCallInProgress : function(o) {
+ // if there is a connection and readyState is not 0 or 4
+ return o.conn && !{0:true,4:true}[o.conn.readyState];
+ }
+ };
+ return pub;
+}();</pre>
+</body>