PageSourceSearch

https://www.cermf.org/Ext/Resources?a=5AImKiaXQzADMntIV4ay8tepI9Jf…g2gQyYnvkPTy1qMKIwnd5THro3B2WfbZsnMmYrJR-s2

js cermf.org collected 2026-09-25 06:07:13 UTC 9,716 bytes, 298 lines download raw bytes

1
2/**
3@class AjaxManager 
4@static
5**/
6var AjaxManager = (function ()
7{
8    // Constructor
9    var Class = function ()
10    {
11        this.Key = "";
12    };
13
14    // Private
15
16    var Events = $({});
17
18    var Manager = {
19        isReady: false,
20        on: Events.on.bind(Events),
21        trigger: Events.trigger.bind(Events)
22    };
23
24    // Public Methods
25    (function (Methods)
26    {
27        /**
28        @method Post
29        @static
30        @param {String} Url
31        @param {Object} [Data]
32        @param {Function} [Callback_Success]
33        @param {Function} [Callback_Error]
34        @param {Object} [Context] default value = window.
35        **/
36        Methods.Post = function (Url, Data, CallBack_Success, CallBack_Error, Context, Async)
37        {
38            Async = Async === false ? false : true;
39            AjaxCall.call(this, Url, "POST", Data, CallBack_Success, CallBack_Error, Context, Async);
40        };
41
42        Methods.PromisifiedPost = ((Url, Data, Context, Async) => {
43            Context.callbackInPromise = true;
44            return new Promise((resolve, reject) => {
45                AjaxManager.Post(Url, Data, resolve, reject, Context, Async)
46            });
47        });
48
49        /**
50        @method Get
51        @static
52        @param {String} Url
53        @param {Object} [Data]
54        @param {Function} [Callback_Success]
55        @param {Function} [Callback_Error]
56        @param {Object} [Context] default value = window.
57        **/
58        Methods.Get = function (Url, Data, CallBack_Success, CallBack_Error, Context, Async)
59        {
60            Async = Async === false ? false : true;
61            AjaxCall.call(this, Url, "GET", Data, CallBack_Success, CallBack_Error, Context, Async);
62        };
63
64        Methods.PromisifiedGet = ((Url, Data, Context, Async) => {
65            Context.callbackInPromise = true;
66            return new Promise((resolve, reject) => {
67                AjaxManager.Get(Url, Data, resolve, reject, Context, Async)
68            });
69        });
70
71        /**
72        @method SetKey
73        @static
74        @param {String} Key
75        **/
76        Methods.SetKey = function (Key)
77        {
78            this.Key = Key;
79            if (Key) {
80                Manager.isReady = true;
81                Manager.trigger('ready');
82            }
83        };
84
85        Methods.OnReady = function (Callback)
86        {
87            if (Manager.isReady) {
88                Callback(this);
89            } else {
90                Manager.on('ready', function () {
91                    Callback(this);
92                });
93            }
94        };
95
96    })(Class.prototype);
97
98    // Html action handlers
99    var HtmlActionHandlers = {
100
101        Create: function (Data)
102        {
103            if (!Data.Value) throw "Data value cannot be null.";
104
105            return $(Data.Value);
106        },
107
108        Add: function (Data)
109        {
110            if (!Data.Value) throw "must have content";
111            if (!Data.Selector) throw "must have Selector";
112            if (!Data.Position) throw "must have Position";
113
114            var el = $(Data.Value);
115            var Pos = Data.Position.toLowerCase();
116            if (Pos === "after") $(Data.Selector).after(el);
117            else if (Pos === "before") $(Data.Selector).before(el);
118            else if (Pos === "inside") $(Data.Selector).append(el);
119
120            return el;
121        },
122
123        "Delete": function (Data)
124        {
125            if (!Data.Selector) throw "must have Selector";
126            $(Data.Selector).remove();
127        },
128
129        Update: function (Data)
130        {
131            if (!Data.Value) throw "must have content";
132            if (!Data.Selector) throw "must have Selector";
133
134            var el = $(Data.Value);
135            $(Data.Selector).html(el);
136
137            return el;
138        },
139
140        Replace: function (Data)
141        {
142            if (!Data.Value) throw "must have content";
143            if (!Data.Selector) throw "must have Selector";
144
145            var el = $(Data.Value);
146            $(Data.Selector).replaceWith(el);
147
148            return el;
149        }
150    };
151
152    // Manager and Callers
153    var HtmlManager = function (Data, Elements)
154    {
155        if (!Data) throw "data must exist!";
156        if (!Data.Action) throw "must have an Action";
157
158        var handler = HtmlActionHandlers[Data.Action];
159        if (!handler) throw "Invalid Action type : '" + Data.Action + "'.";
160        var el = handler(Data);
161        if (el) Elements.push(el);
162    };
163
164    var ResourceManagerCall = function (Data, Elements, DataObj, Context)
165    {
166        if (!Data.Value) throw "ResourceManagerCall : value must exist!";
167        if (Data.IsUrl && !Data.IsRegisterCallBack) { ResourceManager.LoadFromUrl(Data.Name, Data.Value, Data.Type); }
168        else if (Data.IsRegisterCallBack)
169        {
170            if (Data.IsUrl) ResourceManager.RegisterCallBack(Data.Dependencies, function () { ResourceManager.LoadFromUrl(Data.Name, Data.Value, Data.Type); }, Context);
171            else ResourceManager.RegisterCallBack(Data.Name, function () { ResourceManager.Load.call(this, Data.Value, Elements, DataObj); }, Context);
172        }
173        else
174        {
175            ResourceManager.Load.call(Context, Data.Value, Elements, DataObj);
176        }
177    };
178
179    var DataManager = function (Data)
180    {
181        return (Data.Value ? Data.Value : null);
182    };
183
184    // Ajax data handlers
185    var AjaxDataHandlers = {
186
187        Html: function (Data, Elements)
188        {
189            HtmlManager(Data, Elements)
190        },
191
192        Script: function (Data, Elements, DataObj, Context)
193        {
194            ResourceManagerCall(Data, Elements, DataObj, Context)
195        },
196
197        Style: function (Data)
198        {
199            ResourceManagerCall(Data)
200        },
201
202        Data: function (Data)
203        {
204            return DataManager(Data)
205        }
206    };
207
208    var dataSortOrder = ["Html", "Data", "Style", "Script"];
209    var dataSortFunction = function (a, b)
210    {
211        return dataSortOrder.indexOf(a.Type) - dataSortOrder.indexOf(b.Type);
212    };
213
214    // Ajax Get,Post Request
215    var AjaxCall = function (Url, Type, Data, CallBack_Success, CallBack_Error, Context, Async)
216    {
217        var Me = this;
218        if (!Url) throw "url is necessary!";
219
220        if (Data)
221        {
222            if (typeof Data != "object") throw "Data must be a valid javascript object.";
223            if (Type === "POST") Data = JSON.stringify(Data);
224        }
225        Context = Context || window;
226        Async = Async === false ? false : true;
227
228        // Request
229        $.ajax({
230
231            url: Url,           // Url handler
232            data: Data,         // Data à envoyer au serveur, JSON pour POST, QueryString pour GET
233            type: Type,         // POST, GET
234            contentType: (Type === "POST" ? "application/json; charset=UTF-8" : "application/x-www-form-urlencoded; charset=UTF-8"), // format des données envoyées au serveur
235            headers: { 'x-key': Me.Key },
236            dataType: "json",    // format de retour du server : json utilisé (xml, json, script, or html)
237            async: Async
238
239        }).done(function (Data, TextStatus, jqXHR)
240        {
241            // Redirection
242            if (jqXHR.getResponseHeader("isRedir") && jqXHR.getResponseHeader("isRedir") == "1")
243            {
244                var str = Data[0].Value.split('|');
245                if (str[0] == "top") top.location.href = str[1];
246                else window.location.href = str[0];
247
248                return;
249            } 
250
251            Data.sort(dataSortFunction);
252            var Elements = [];
253            var HtmlDependencies = [];
254            var DataObj = null;
255            var dataTypeReturnCount = 0;
256
257            for (var i = 0; i < Data.length; i++) { if (Data[i].Type == "Html" && Data[i].Dependencies) HtmlDependencies[HtmlDependencies.length] = Data[i].Dependencies; }
258            for (var i = 0; i < Data.length; i++) { if (Data[i].Type == "Data") dataTypeReturnCount++; }
259            if (dataTypeReturnCount > 1) throw "Cannot have more than one data object in response!";
260
261            for (var i = 0; i < Data.length; i++)
262            {
263                var handler = AjaxDataHandlers[Data[i].Type];
264                if (!handler) throw "Invalid data Type : '" + Data[i].Type + "'.";
265                var obj = handler(Data[i], Elements, DataObj, Context);
266                if (Data[i].Type == "Data") DataObj = obj;
267            }
268
269            const sucessCallbackCall = Context.callbackInPromise
270                ? (() => { CallBack_Success(Elements); })
271                : (() => { CallBack_Success.call(Context, DataObj, Elements, jqXHR); });
272
273            if (HtmlDependencies.length > 0)
274            {
275                ResourceManager.RegisterCallBack(HtmlDependencies, function () {
276                    if (CallBack_Success && (typeof CallBack_Success == "function")) {
277                        sucessCallbackCall();
278                    }
279                }, Context);
280            }
281            else
282            {
283                if (CallBack_Success && (typeof CallBack_Success == "function")) {
284                    sucessCallbackCall();
285                }
286            }
287
288        }).fail(function (jqXHR, textStatus, errorThrown)
289        {
290            if (CallBack_Error && (typeof CallBack_Error == "function")) {
291                CallBack_Error.call(Context, jqXHR.responseText, jqXHR);
292            }
293        });
294    };
295
296
297    return new Class();
298})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.