]> git.sur5r.net Git - bacula/bacula/blob - gui/baculum/debian/missing-sources/framework/Web/Javascripts/source/tinymce-405/classes/util/XHR.js
baculum: Add missing-sources directory in debian metadata structure
[bacula/bacula] / gui / baculum / debian / missing-sources / framework / Web / Javascripts / source / tinymce-405 / classes / util / XHR.js
1 /**
2  * XHR.js
3  *
4  * Copyright, Moxiecode Systems AB
5  * Released under LGPL License.
6  *
7  * License: http://www.tinymce.com/license
8  * Contributing: http://www.tinymce.com/contributing
9  */
10
11 /**
12  * This class enables you to send XMLHTTPRequests cross browser.
13  * @class tinymce.util.XHR
14  * @static
15  * @example
16  * // Sends a low level Ajax request
17  * tinymce.util.XHR.send({
18  *    url: 'someurl',
19  *    success: function(text) {
20  *       console.debug(text);
21  *    }
22  * });
23  */
24 define("tinymce/util/XHR", [], function() {
25         return {
26                 /**
27                  * Sends a XMLHTTPRequest.
28                  * Consult the Wiki for details on what settings this method takes.
29                  *
30                  * @method send
31                  * @param {Object} settings Object will target URL, callbacks and other info needed to make the request.
32                  */
33                 send: function(settings) {
34                         var xhr, count = 0;
35
36                         function ready() {
37                                 if (!settings.async || xhr.readyState == 4 || count++ > 10000) {
38                                         if (settings.success && count < 10000 && xhr.status == 200) {
39                                                 settings.success.call(settings.success_scope, '' + xhr.responseText, xhr, settings);
40                                         } else if (settings.error) {
41                                                 settings.error.call(settings.error_scope, count > 10000 ? 'TIMED_OUT' : 'GENERAL', xhr, settings);
42                                         }
43
44                                         xhr = null;
45                                 } else {
46                                         setTimeout(ready, 10);
47                                 }
48                         }
49
50                         // Default settings
51                         settings.scope = settings.scope || this;
52                         settings.success_scope = settings.success_scope || settings.scope;
53                         settings.error_scope = settings.error_scope || settings.scope;
54                         settings.async = settings.async === false ? false : true;
55                         settings.data = settings.data || '';
56
57                         xhr = new XMLHttpRequest();
58
59                         if (xhr) {
60                                 if (xhr.overrideMimeType) {
61                                         xhr.overrideMimeType(settings.content_type);
62                                 }
63
64                                 xhr.open(settings.type || (settings.data ? 'POST' : 'GET'), settings.url, settings.async);
65
66                                 if (settings.content_type) {
67                                         xhr.setRequestHeader('Content-Type', settings.content_type);
68                                 }
69
70                                 xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
71
72                                 xhr.send(settings.data);
73
74                                 // Syncronous request
75                                 if (!settings.async) {
76                                         return ready();
77                                 }
78
79                                 // Wait for response, onReadyStateChange can not be used since it leaks memory in IE
80                                 setTimeout(ready, 10);
81                         }
82                 }
83         };
84 });