Passed
Push — master ( ef3387...d0a4bc )
by Anthony
07:14
created

libs/ckfinder/ckfinder.js   F

Complexity

Total Complexity 3719
Complexity/F 2.79

Size

Lines of Code 11236
Function Count 1332

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 0
nc 0
dl 0
loc 11236
rs 2.4
c 0
b 0
f 0
wmc 3719
mnd 10
bc 2055
fnc 1332
bpm 1.5427
cpm 2.7919
noi 289

How to fix   Complexity   

Complexity

Complex classes like libs/ckfinder/ckfinder.js often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.

Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.

1
(function () {
2
    var a = (function () {
3
        var e = {
4
            jY: 'A519',
5
            version: '2.0',
6
            uR: '1093',
7
            _: {},
8
            status: 'unloaded',
9
            basePath: (function () {
10
                var h = window.CKFINDER_BASEPATH || '';
11
                if (!h) {
12
                    var i = document.getElementsByTagName('script');
13
                    for (var j = 0; j < i.length; j++) {
14
                        var k = i[j].src.match(/(^|.*[\\\/])CKFINDER(?:_basic)?(?:_v2)?(?:_source)?.js(?:\?.*)?$/i);
15
                        if (k) {
16
                            h = k[1];
17
                            break;
18
                        }
19
                    }
20
                }
21
                if (h.indexOf('://') == -1) if (h.indexOf('/') === 0) h = location.href.match(/^.*?:\/\/[^\/]*/)[0] + h;
22
                else h = location.href.match(/^[^\?]*\/(?:)/)[0] + h;
23
                return h;
24
            })(),
25
            getUrl: function (h) {
26
                if (h.indexOf('://') == -1 && h.indexOf('/') !== 0) h = this.basePath + h;
27
                if (this.jY && h.charAt(h.length - 1) != '/') h += (h.indexOf('?') >= 0 ? '&' : '?') + 't=' + this.jY;
28
                return h;
29
            }
30
        },
31
            f = window.CKFINDER_GETURL;
32
        if (f) {
33
            var g = e.getUrl;
34
            e.getUrl = function (h) {
35
                return f.call(e, h) || g.call(e, h);
36
            };
37
        }
38
        return e;
39
    })();
40
41
    function b(e) {
42
        return a.instances[e];
43
    };
44
    var c = {
45
        callback: 1,
46
        selectThumbnailActionFunction: 1,
47
        selectActionFunction: 1
48
    };
49
    a.jd = function () {
50
        var g = this;
51
        var e = {};
52
        for (var f in g) {
53
            if (!g.hasOwnProperty(f)) continue;
54
            if (typeof g[f] == 'function' && !c[f]) continue;
55
            e[f] = g[f];
56
        }
57
        if (g.callback) e.callback = g.callback;
58
        return e;
59
    };
60
    a.lj = function (e) {
61
        var h = this;
62
        e = e || h.basePath;
63
        var f = '';
64
        if (!e || e.length === 0) e = CKFinder.DEFAULT_basePath;
65
        if (e.substr(e.length - 1, 1) != '/') e += '/';
66
        e += 'ckfinder.html';
67
        var g;
68
        if (h.hh) {
69
            g = h.hh;
70
            if (typeof g == 'function') g = g.toString().match(/function ([^(]+)/)[1];
71
            f += '?action=js&amp;func=' + g;
72
        }
73
        if (h.jx) {
74
            f += f ? '&amp;' : '?';
75
            f += 'data=' + encodeURIComponent(h.jx);
76
        }
77
        if (h.disableThumbnailSelection) {
78
            f += f ? '&amp;' : '?';
79
            f += 'dts=1';
80
        } else if (h.lH || h.hh) {
81
            g = h.lH || h.hh;
82
            if (typeof g == 'function') g = g.toString().match(/function ([^(]+)/)[1];
83
            f += f ? '&amp;' : '?';
84
            f += 'thumbFunc=' + g;
85
            if (h.nm) f += '&amp;tdata=' + encodeURIComponent(h.nm);
86
            else if (!h.lH && h.jx) f += '&amp;tdata=' + encodeURIComponent(h.jx);
87
        }
88
        if (h.startupPath) {
89
            f += f ? '&amp;' : '?';
90
            f += 'start=' + encodeURIComponent(h.startupPath + (h.startupFolderExpanded ? ':1' : ':0'));
91
        }
92
        if (!h.rememberLastFolder) {
93
            f += f ? '&amp;' : '?';
94
            f += 'rlf=0';
95
        }
96
        if (h.id) {
97
            f += f ? '&amp;' : '?';
98
            f += 'id=' + encodeURIComponent(h.id);
99
        }
100
        if (h.skin) {
101
            f += f ? '&amp;' : '?';
102
            f += 'skin=' + encodeURIComponent(h.skin);
103
        }
104
        return e + f;
105
    };
106
107
    function d(e, f) {
108
        this.id = e.name;
109
        var g = e.ax.getDocument().aU().$,
110
            h = a.oC.aU().$;
111
        this.inPopup = !!(g && g.opener);
112
        this.inIframe = !this.inPopup && g != h.top;
113
        this.inUrlPopup = !!(this.inPopup && h.opener);
114
        e.on('appReady', function (i) {
115
            i.aF();
116
            this.document = e.document.$;
117
            this.folders = e.folders;
118
            this.files = e.aG['filesview.filesview'][0].data().files;
119
            this.basketFiles = e.basketFiles;
120
            this.resourceTypes = e.resourceTypes;
121
            this.connector = e.connector;
122
            this.lang = e.lang;
123
            this.langCode = e.langCode;
124
            this.config = e.config;
125
            e.aG['foldertree.foldertree'][0].on('afterAddFolder', function (j) {
126
                j.aF();
127
                if (f) f(this);
128
            }, this);
129
        }, this, null, 999);
130
    };
131
    d.prototype = {
132
        _: {},
133
        addFileContextMenuOption: function (e, f, g) {
134
            var h = b(this.id),
135
                i = 'FileContextMenu_' + e.command;
136
            h.bD(i, {
137
                exec: function (l) {
138
                    var m = l.aG['filesview.filesview'][0].tools.dH();
139
                    f(l.cg, m);
140
                }
141
            });
142
            e.command = i;
143
            if (!e.group) e.group = 'file1';
144
            h.gp(i, e);
145
            var j = h.aG['filesview.filesview'];
146
            for (var k = 0; k < j.length; k++) j[k].on('beforeContextMenu', function ld(l) {
147
                if (g) {
148
                    var m = g(this.tools.dH());
149
                    if (m) l.data.bj[i] = m == -1 ? a.aY : a.aS;
150
                } else l.data.bj[i] = a.aS;
151
            });
152
        },
153
        disableFileContextMenuOption: function (e, f) {
154
            var g = b(this.id),
155
                h = f ? 'FileContextMenu_' + e : e,
156
                i = g.aG['filesview.filesview'],
157
                j = [];
158
            for (var k = 0; k < i.length; k++) {
159
                var l = j.push(function tF(m) {
160
                    delete m.data.bj[h];
161
                });
162
                i[k].on('beforeContextMenu', j[l - 1]);
163
            }
164
            return function () {
165
                for (var m = 0; m < j.length; m++) g.aG['foldertree.foldertree'][m].aF('beforeContextMenu', j[m]);
166
            };
167
        },
168
        addFolderContextMenuOption: function (e, f, g) {
169
            var h = b(this.id),
170
                i = 'FolderContextMenu_' + e.command;
171
            h.bD(i, {
172
                exec: function (l) {
173
                    f(l.cg, l.aV);
174
                }
175
            });
176
            e.command = i;
177
            if (!e.group) e.group = 'folder1';
178
            h.gp(i, e);
179
            var j = h.aG['foldertree.foldertree'];
180
            for (var k = 0; k < j.length; k++) j[k].on('beforeContextMenu', function ld(l) {
181
                if (g) {
182
                    var m = g(this.app.aV);
183
                    if (m) l.data.bj[i] = m == -1 ? a.aY : a.aS;
184
                } else l.data.bj[i] = a.aS;
185
            });
186
        },
187
        disableFolderContextMenuOption: function (e, f) {
188
            var g = b(this.id),
189
                h = f ? 'FolderContextMenu_' + e : e,
190
                i = g.aG['foldertree.foldertree'],
191
                j = [];
192
            for (var k = 0; k < i.length; k++) {
193
                var l = j.push(function tD(m) {
194
                    delete m.data.bj[h];
195
                });
196
                i[k].on('beforeContextMenu', j[l - 1]);
197
            }
198
            return function () {
199
                for (var m = 0; m < j.length; m++) g.aG['foldertree.foldertree'][m].aF('beforeContextMenu', j[m]);
200
            };
201
        },
202
        getSelectedFile: function () {
203
            return b(this.id).aG['filesview.filesview'][0].tools.dH();
204
        },
205
        getSelectedFolder: function () {
206
            return b(this.id).aV;
207
        },
208
        setUiColor: function (e) {
209
            return b(this.id).setUiColor(e);
210
        },
211
        openDialog: function (e, f) {
212
            var i = this;
213
            var g = new a.dom.document(window.document).eD(),
214
                h = b(i.id).document.aU();
215
            if (i.inIframe) a.document = new a.dom.document(a.oC.aU().$.parent.document);
216
            else if (i.inPopup) a.document = b(i.id).document;
217
            return b(i.id).openDialog(e, f, g);
218
        },
219
        openMsgDialog: function (e, f) {
220
            b(this.id).msgDialog(e, f);
221
        },
222
        openConfirmDialog: function (e, f, g) {
223
            b(this.id).fe(e, f, g);
224
        },
225
        openInputDialog: function (e, f, g, h) {
226
            b(this.id).hs(e, f, g, h);
227
        },
228
        addTool: function (e) {
229
            return b(this.id).plugins.tools.addTool(e);
230
        },
231
        addToolPanel: function (e) {
232
            return b(this.id).plugins.tools.addToolPanel(e);
233
        },
234
        removeTool: function (e) {
235
            b(this.id).plugins.tools.removeTool(e);
236
        },
237
        showTool: function (e) {
238
            b(this.id).plugins.tools.showTool(e);
239
        },
240
        hideTool: function (e) {
241
            b(this.id).plugins.tools.hideTool(e);
242
        },
243
        getResourceType: function (e) {
244
            return b(this.id).getResourceType(e);
245
        },
246
        log: function (e) {
247
            a.log.apply(a.log, arguments);
248
        },
249
        getLog: function () {
250
            return a.mZ();
251
        },
252
        emptyBasket: function () {
253
            b(this.id).execCommand('TruncateBasket');
254
        },
255
        replaceUploadForm: function (e) {
256
            var f = b(this.id);
257
            f.aG['formpanel.formpanel'][0].on('ib', function (g) {
258
                if (g.data.step != 2) return;
259
                g.cancel(true);
260
                var h = this.data(),
261
                    i = g.data.folder;
262
                try {
263
                    if (h.dc == 'upload') this.oW('requestUnloadForm', function () {
264
                        this.app.cS('upload').bR(a.aS);
265
                    });
266
                    else {
267
                        if (this.data().dc) this.oW('requestUnloadForm');
268
                        this.oW('requestLoadForm', {
269
                            html: e,
270
                            command: 'upload'
271
                        });
272
                    }
273
                } catch (j) {
274
                    this.oW('failedUploadFileForm', g.data);
275
                    this.oW('afterUploadFileForm', g.data);
276
                    throw a.ba(j);
277
                }
278
            });
279
            return {
280
                hide: function () {
281
                    f.oW('requestUnloadForm', function () {
282
                        f.cS('upload').bR(a.aS);
283
                    });
284
                }
285
            };
286
        },
287
        refreshOpenedFolder: function () {
288
            var e = b(this.id),
289
                f = e.aG['filesview.filesview'][0].tools.currentFolder();
290
            e.oW('requestSelectFolder', {
291
                folder: f
292
            });
293
        }
294
    };
295
    (function () {
296
        window.CKFinder = function (e, f) {
297
            if (e) for (var g in e) {
298
                if (!e.hasOwnProperty(g)) continue;
299
                if (typeof e[g] == 'function' && g != 'callback') continue;
300
                this[g] = e[g];
301
            }
302
            this.callback = f;
303
        };
304
        CKFinder.prototype = {
305
            create: function (e) {
306
                var f = 'ckf' + Math.random().toString().substr(2, 4);
307
                document.write('<span id="' + f + '"></span>');
308
                e = a.tools.extend(a.jd.call(this), e, true);
309
                var g = a.replace(f, e);
310
                this.lN = g.cg;
311
                return g.cg;
312
            },
313
            appendTo: function (e, f) {
314
                f = a.tools.extend(a.jd.call(this), f, true);
315
                var g = a.appendTo(e, f);
316
                this.lN = g.cg;
317
                return g.cg;
318
            },
319
            replace: function (e, f) {
320
                f = a.tools.extend(a.jd.call(this), f, true);
321
                var g = a.replace(e, f);
322
                this.lN = g.cg;
323
                return g.cg;
324
            },
325
            popup: function (e, f) {
326
                e = e || '80%';
327
                f = f || '70%';
328
                if (typeof e == 'string' && e.length > 1 && e.substr(e.length - 1, 1) == '%') e = parseInt(window.screen.width * parseInt(e, 10) / 100, 10);
329
                if (typeof f == 'string' && f.length > 1 && f.substr(f.length - 1, 1) == '%') f = parseInt(window.screen.height * parseInt(f, 10) / 100, 10);
330
                if (e < 200) e = 200;
331
                if (f < 200) f = 200;
332
                var g = parseInt((window.screen.height - f) / 2, 10),
333
                    h = parseInt((window.screen.width - e) / 2, 10),
334
                    i = 'location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,jy=yes,width=' + e + ',height=' + f + ',top=' + g + ',left=' + h,
335
                    j = a.env.webkit ? 'about:blank' : '',
336
                    k = window.open(j, 'CKFinderpopup', i, true);
337
                if (!k) return false;
338
                this.width = this.height = '100%';
339
                var l = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><title>CKFinder 2</title><style type="text/css">body, html, iframe, #ckfinder { margin: 0; padding: 0; border: 0; width: 100%; height: 100%; overflow: hidden; }</style></head><body></body></html>';
340
                a.env.isCustomDomain = function () {
341
                    return a.env.ie;
342
                };
343
                var m = new a.dom.document(k.document);
344
                m.$.open();
345
                if (a.env.isCustomDomain()) m.$.domain = window.document.domain;
346
                m.$.write(l);
347
                m.$.close();
348
                try {
349
                    k.moveTo(h, g);
350
                    k.resizeTo(e, f);
351
                    k.focus();
352
                    return this.appendTo(m.bH());
353
                } catch (n) {
354
                    return this.appendTo(m.bH());
355
                }
356
                return false;
357
            }
358
        };
359
        CKFinder._ = {};
360
        CKFinder.lang = {};
361
        CKFinder.addPlugin = function (e, f, g) {
362
            var h = {
363
                bM: g || []
364
            };
365
            if (typeof f == 'function') f = {
366
                appReady: f
367
            };
368
            for (var i in f) {
369
                if (!f.hasOwnProperty(i)) continue;
370
                if (i != 'connectorInitialized' && i != 'uiReady') h[i] = f[i];
371
            }
372
            h.bz = function (j) {
373
                if (f.connectorInitialized) j.on('connectorInitialized', function (k) {
374
                    var l = f.connectorInitialized;
375
                    if (l) l.call(l, j.cg, k.data.xml);
376
                }, null, null, 1000);
377
                if (f.uiReady) j.on('uiReady', function () {
378
                    var k = f.uiReady;
379
                    k.call(k, j.cg);
380
                }, null, null, 1000);
381
                if (f.appReady) j.on('appReady', function () {
382
                    var k = f.appReady;
383
                    k.call(k, j.cg);
384
                }, null, null, 1000);
385
            };
386
            a.plugins.add(e, h);
387
        };
388
        CKFinder.getPluginPath = function (e) {
389
            return a.plugins.getPath(e);
390
        };
391
        CKFinder.addExternalPlugin = function (e, f, g) {
392
            a.plugins.tR(e, f, g);
393
        };
394
        CKFinder.setPluginLang = function (e, f, g) {
395
            a.plugins.rX(e, f, g);
396
        };
397
        CKFinder.dialog = {
398
            add: function (e, f) {
399
                if (typeof f == 'function') f = a.tools.override(f, function (g) {
400
                    return function (h) {
401
                        return g(h.cg);
402
                    };
403
                });
404
                a.dialog.add(e, f);
405
            }
406
        };
407
        CKFinder.tools = {};
408
        CKFinder.env = {};
409
        CKFinder.dom = {};
410
        CKFinder.create = function (e, f, g, h, i) {
411
            var j;
412
            if (e !== null && typeof e === 'object') {
413
                j = new CKFinder();
414
                for (var k in e) j[k] = e[k];
415
            } else {
416
                j = new CKFinder();
417
                j.basePath = e;
418
                if (f) j.width = f;
419
                if (g) j.height = f;
420
                if (h) j.selectActionFunction = h;
421
                if (i) j.callback = i;
422
            }
423
            return j.create();
424
        };
425
        CKFinder.popup = function (e, f, g, h, i) {
426
            var j;
427
            if (e !== null && typeof e === 'object') {
428
                j = new CKFinder();
429
                for (var k in e) j[k] = e[k];
430
            } else {
431
                j = new CKFinder();
432
                j.basePath = e;
433
                if (h) j.selectActionFunction = h;
434
                if (i) j.callback = i;
435
            }
436
            return j.popup(f, g);
437
        };
438
        CKFinder.setupFCKeditor = function (e, f, g, h) {
439
            var i;
440
            if (f !== null && typeof f === 'object') {
441
                i = new CKFinder();
442
                for (var j in f) {
443
                    i[j] = f[j];
444
                    if (j == 'width') {
445
                        var k = i[j] || 800;
446
                        if (typeof k == 'string' && k.length > 1 && k.substr(k.length - 1, 1) == '%') k = parseInt(window.screen.width * parseInt(k, 10) / 100, 10);
447
                        e.Config.LinkBrowserWindowWidth = k;
448
                        e.Config.ImageBrowserWindowWidth = k;
449
                        e.Config.FlashBrowserWindowWidth = k;
450
                    } else if (j == 'height') {
451
                        var l = i[j] || 600;
452
                        if (typeof l == 'string' && l.length > 1 && l.substr(l.length - 1, 1) == '%') l = parseInt(window.screen.height * parseInt(l, 10) / 100, 10);
453
                        e.Config.LinkBrowserWindowHeight = l;
454
                        e.Config.ImageBrowserWindowHeight = l;
455
                        e.Config.FlashBrowserWindowHeight = l;
456
                    }
457
                }
458
            } else {
459
                i = new CKFinder();
460
                i.basePath = f;
461
            }
462
            var m = i.basePath;
463
            if (m.substr(0, 1) != '/' && m.indexOf('://') == -1) m = document.location.pathname.substring(0, document.location.pathname.lastIndexOf('/') + 1) + m;
464
            m = a.lj.call(i, m);
465
            var n = m.indexOf('?') !== -1 ? '&amp;' : '?';
466
            e.Config.LinkBrowserURL = m;
467
            e.Config.ImageBrowserURL = m + n + 'type=' + (g || 'Images');
468
            e.Config.FlashBrowserURL = m + n + 'type=' + (h || 'Flash');
469
            var o = m.substring(0, 1 + m.lastIndexOf('/'));
470
            e.Config.LinkUploadURL = o + 'core/connector/' + CKFinder.config.connectorLanguage + '/connector.' + CKFinder.config.connectorLanguage + '?command=QuickUpload&type=Files';
471
            e.Config.ImageUploadURL = o + 'core/connector/' + CKFinder.config.connectorLanguage + '/connector.' + CKFinder.config.connectorLanguage + '?command=QuickUpload&type=' + (g || 'Images');
472
            e.Config.FlashUploadURL = o + 'core/connector/' + CKFinder.config.connectorLanguage + '/connector.' + CKFinder.config.connectorLanguage + '?command=QuickUpload&type=' + (h || 'Flash');
473
        };
474
        CKFinder.setupCKEditor = function (e, f, g, h) {
475
            if (e === null) {
476
                for (var i in CKEDITOR.instances) CKFinder.setupCKEditor(CKEDITOR.instances[i], f, g, h);
477
                CKEDITOR.on('instanceCreated', function (q) {
478
                    CKFinder.setupCKEditor(q.editor, f, g, h);
479
                });
480
                return;
481
            }
482
            var j;
483
            if (f !== null && typeof f === 'object') {
484
                j = new CKFinder();
485
                for (var k in f) {
486
                    j[k] = f[k];
487
                    if (k == 'width') {
488
                        var l = j[k] || 800;
489
                        if (typeof l == 'string' && l.length > 1 && l.substr(l.length - 1, 1) == '%') l = parseInt(window.screen.width * parseInt(l, 10) / 100, 10);
490
                        e.config.filebrowserWindowWidth = l;
491
                    } else if (k == 'height') {
492
                        var m = j[k] || 600;
493
                        if (typeof m == 'string' && m.length > 1 && m.substr(m.length - 1, 1) == '%') m = parseInt(window.screen.height * parseInt(m, 10) / 100, 10);
494
                        e.config.filebrowserWindowHeight = l;
495
                    }
496
                }
497
            } else {
498
                j = new CKFinder();
499
                j.basePath = f;
500
            }
501
            var n = j.basePath;
502
            if (n.substr(0, 1) != '/' && n.indexOf('://') == -1) n = document.location.pathname.substring(0, document.location.pathname.lastIndexOf('/') + 1) + n;
503
            n = a.lj.call(j, n);
504
            var o = n.indexOf('?') !== -1 ? '&amp;' : '?';
505
            e.config.filebrowserBrowseUrl = n;
506
            e.config.filebrowserImageBrowseUrl = n + o + 'type=' + (g || 'Images');
507
            e.config.filebrowserFlashBrowseUrl = n + o + 'type=' + (h || 'Flash');
508
            var p = n.substring(0, 1 + n.lastIndexOf('/'));
509
            e.config.filebrowserUploadUrl = p + 'core/connector/' + CKFinder.config.connectorLanguage + '/connector.' + CKFinder.config.connectorLanguage + '?command=QuickUpload&type=Files';
510
            e.config.filebrowserImageUploadUrl = p + 'core/connector/' + CKFinder.config.connectorLanguage + '/connector.' + CKFinder.config.connectorLanguage + '?command=QuickUpload&type=' + (g || 'Images');
511
            e.config.filebrowserFlashUploadUrl = p + 'core/connector/' + CKFinder.config.connectorLanguage + '/connector.' + CKFinder.config.connectorLanguage + '?command=QuickUpload&type=' + (h || 'Flash');
512
        };
513
    })();
514
    if (!a.event) {
515
        a.event = function () {};
516
        a.event.du = function (e, f) {
517
            var g = a.event.prototype;
518
            for (var h in g) {
519
                if (e[h] == undefined) e[h] = g[h];
520
            }
521
        };
522
        a.event.prototype = (function () {
523
            var e = function (g) {
524
                var h = g.kk && g.kk() || g._ || (g._ = {});
525
                return h.cC || (h.cC = {});
526
            },
527
                f = function (g) {
528
                    this.name = g;
529
                    this.dF = [];
530
                };
531
            f.prototype = {
532
                mi: function (g) {
533
                    for (var h = 0, i = this.dF; h < i.length; h++) {
534
                        if (i[h].gg == g) return h;
535
                    }
536
                    return -1;
537
                }
538
            };
539
            return {
540
                on: function (g, h, i, j, k) {
541
                    var l = e(this),
542
                        m = l[g] || (l[g] = new f(g));
543
                    if (m.mi(h) < 0) {
544
                        var n = m.dF;
545
                        if (!i) i = this;
546
                        if (isNaN(k)) k = 10;
547
                        var o = this,
548
                            p = function (r, s, t, u) {
549
                                var v = {
550
                                    name: g,
551
                                    jN: this,
552
                                    application: r,
553
                                    data: s,
554
                                    jO: j,
555
                                    stop: t,
556
                                    cancel: u,
557
                                    aF: function () {
558
                                        o.aF(g, h);
559
                                    }
560
                                };
561
                                h.call(i, v);
562
                                return v.data;
563
                            };
564
                        p.gg = h;
565
                        p.nT = k;
566
                        for (var q = n.length - 1; q >= 0; q--) {
567
                            if (n[q].nT <= k) {
568
                                n.splice(q + 1, 0, p);
569
                                return;
570
                            }
571
                        }
572
                        n.unshift(p);
573
                    }
574
                },
575
                oW: (function () {
576
                    var g = false,
577
                        h = function () {
578
                            g = true;
579
                        },
580
                        i = false,
581
                        j = function (k) {
582
                            i = k ? 2 : true;
583
                        };
584
                    return function oW(k, l, m, n) {
585
                        if (typeof l == 'function') {
586
                            n = l;
587
                            l = null;
588
                        } else if (typeof m == 'function') {
589
                            n = m;
590
                            m = null;
591
                        }
592
                        if (k != 'mousemove') a.log('[EVENT] ' + k, l, n);
593
                        var o = e(this)[k],
594
                            p = g,
595
                            q = i;
596
                        g = i = false;
597
                        if (o) {
598
                            var r = o.dF;
599
                            if (r.length) {
600
                                r = r.slice(0);
601
                                for (var s = 0; s < r.length; s++) {
602
                                    var t = r[s].call(this, m, l, h, j);
603
                                    if (typeof t != 'undefined') l = t;
604
                                    if (g || i && i != 2) break;
605
                                }
606
                            }
607
                        }
608
                        var u = i || (typeof l == 'undefined' ? false : !l || typeof l.result == 'undefined' ? l : l.result);
609
                        if (typeof n === 'function' && i != 2) u = n.call(this, i, l) || u;
610
                        g = p;
611
                        i = q;
612
                        return u;
613
                    };
614
                })(),
615
                cr: function (g, h, i) {
616
                    var j = this.oW(g, h, i);
617
                    delete e(this)[g];
618
                    return j;
619
                },
620
                aF: function (g, h) {
621
                    var i = e(this)[g];
622
                    if (i) {
623
                        var j = i.mi(h);
624
                        if (j >= 0) i.dF.splice(j, 1);
625
                    }
626
                },
627
                mF: function () {
628
                    var g = e(this);
629
                    for (var h = 0; h < g.length; h++) g[h].dF = [];
630
                },
631
                rC: function (g) {
632
                    var h = e(this)[g];
633
                    return h && h.dF.length > 0;
634
                }
635
            };
636
        })();
637
    }
638
    if (!a.application) {
639
        a.kZ = 0;
640
        a.fc = 1;
641
        a.qE = 2;
642
        a.application = function (e, f, g) {
643
            var h = this;
644
            h._ = {
645
                kw: e,
646
                ax: f
647
            };
648
            h.ff = g || a.kZ;
649
            a.event.call(h);
650
            h.iI();
651
        };
652
        a.application.replace = function (e, f) {
653
            var g = e;
654
            if (typeof g != 'object') {
655
                g = document.getElementById(e);
656
                if (!g) {
657
                    var h = 0,
658
                        i = document.getElementsByName(e);
659
                    while ((g = i[h++]) && g.tagName.toLowerCase() != 'textarea') {}
660
                }
661
                if (!g) throw '[CKFINDER.application.replace] The ax with id or name "' + e + '" was not found.';
662
            }
663
            return new a.application(f, g, a.fc);
664
        };
665
        a.application.appendTo = function (e, f) {
666
            if (typeof e != 'object') {
667
                e = document.getElementById(e);
668
                if (!e) throw '[CKFINDER.application.appendTo] The ax with id "' + e + '" was not found.';
669
            }
670
            return new a.application(f, e, a.qE);
671
        };
672
        a.application.prototype = {
673
            iI: function () {
674
                var e = a.application.eb || (a.application.eb = []);
675
                e.push(this);
676
            },
677
            oW: function (e, f, g) {
678
                return a.event.prototype.oW.call(this, e, f, this, g);
679
            },
680
            cr: function (e, f, g) {
681
                return a.event.prototype.cr.call(this, e, f, this, g);
682
            }
683
        };
684
        a.event.du(a.application.prototype, true);
685
    }
686
    if (!a.env) {
687
        a.env = (function () {
688
            var e = navigator.userAgent.toLowerCase(),
689
                f = window.opera,
690
                g = {
691
                    ie: /*@cc_on!@*/
692
                    false,
693
                    opera: !!f && f.version,
694
                    webkit: e.indexOf(' applewebkit/') > -1,
695
                    air: e.indexOf(' adobeair/') > -1,
696
                    mac: e.indexOf('macintosh') > -1,
697
                    quirks: document.compatMode == 'BackCompat',
698
                    isCustomDomain: function () {
699
                        return this.ie && document.domain != window.location.hostname;
700
                    }
701
                };
702
            g.gecko = navigator.product == 'Gecko' && !g.webkit && !g.opera;
703
            var h = 0;
704
            if (g.ie) {
705
                h = parseFloat(e.match(/msie (\d+)/)[1]);
706
                g.ie8 = !!document.documentMode;
707
                g.ie8Compat = document.documentMode == 8;
708
                g.ie7Compat = h == 7 && !document.documentMode || document.documentMode == 7;
709
                g.ie6Compat = h < 7 || g.quirks;
710
            }
711
            if (g.gecko) {
712
                var i = e.match(/rv:([\d\.]+)/);
713
                if (i) {
714
                    i = i[1].split('.');
715
                    h = i[0] * 10000 + (i[1] || 0) * 100 + +(i[2] || 0);
716
                }
717
            }
718
            if (g.opera) h = parseFloat(f.version());
719
            if (g.air) h = parseFloat(e.match(/ adobeair\/(\d+)/)[1]);
720
            if (g.webkit) h = parseFloat(e.match(/ applewebkit\/(\d+)/)[1]);
721
            g.version = h;
722
            g.isCompatible = g.ie && h >= 6 || g.gecko && h >= 10801 || g.opera && h >= 9.5 || g.air && h >= 1 || g.webkit && h >= 522 || false;
723
            g.cssClass = 'browser_' + (g.ie ? 'ie' : g.gecko ? 'gecko' : g.opera ? 'opera' : g.air ? 'air' : g.webkit ? 'webkit' : 'unknown');
724
            if (g.quirks) g.cssClass += ' browser_quirks';
725
            if (g.ie) {
726
                g.cssClass += ' browser_ie' + (g.version < 7 ? '6' : g.version >= 8 ? '8' : '7');
727
                if (g.quirks) g.cssClass += ' browser_iequirks';
728
            }
729
            if (g.gecko && h < 10900) g.cssClass += ' browser_gecko18';
730
            return g;
731
        })();
732
        CKFinder.env = a.env;
733
    }
734
    var e = a.env;
735
    var f = e.ie;
736
    if (a.status == 'unloaded')(function () {
737
        a.event.du(a);
738
        a.dO = function () {
739
            if (a.status != 'basic_ready') {
740
                a.dO.qr = true;
741
                return;
742
            }
743
            delete a.dO;
744
            var h = document.createElement('script');
745
            h.type = 'text/javascript';
746
            h.src = a.basePath + 'ckfinder.js';
747
            document.getElementsByTagName('head')[0].appendChild(h);
748
        };
749
        a.mS = 0;
750
        a.uQ = 'ckfinder';
751
        a.uM = true;
752
        var g = function (h, i, j) {
753
            if (e.isCompatible) {
754
                if (a.dO) a.dO();
755
                var k = j(h, i);
756
                a.add(k);
757
                return k;
758
            }
759
            return null;
760
        };
761
        a.replace = function (h, i) {
762
            return g(h, i, a.application.replace);
763
        };
764
        a.appendTo = function (h, i) {
765
            return g(h, i, a.application.appendTo);
766
        };
767
        a.add = function (h) {
768
            var i = this._.io || (this._.io = []);
769
            i.push(h);
770
        };
771
        a.uL = function () {
772
            var h = document.getElementsByTagName('textarea');
773
            for (var i = 0; i < h.length; i++) {
774
                var j = null,
775
                    k = h[i],
776
                    l = k.name;
777
                if (!k.name && !k.id) continue;
778
                if (typeof arguments[0] == 'string') {
779
                    var m = new RegExp('(?:^| )' + arguments[0] + '(?:$| )');
780
                    if (!m.test(k.className)) continue;
781
                } else if (typeof arguments[0] == 'function') {
782
                    j = {};
783
                    if (arguments[0](k, j) === false) continue;
784
                }
785
                this.replace(k, j);
786
            }
787
        };
788
        (function () {
789
            var h = function () {
790
                var i = a.dO,
791
                    j = a.mS;
792
                a.status = 'basic_ready';
793
                if (i && i.qr) i();
794
                else if (j) setTimeout(function () {
795
                    if (a.dO) a.dO();
796
                }, j * 1000);
797
            };
798
            if (window.addEventListener) window.addEventListener('load', h, false);
799
            else if (window.attachEvent) window.attachEvent('onload', h);
800
        })();
801
        a.status = 'basic_loaded';
802
    })();
803
    a.dom = {};
804
    CKFinder.dom = a.dom;
805
    var g = a.dom;
806
    a.ajax = (function () {
807
        var h = function () {
808
            if (!f || location.protocol != 'file:') try {
809
                return new XMLHttpRequest();
810
            } catch (m) {}
811
            try {
812
                return new ActiveXObject('Msxml2.XMLHTTP');
813
            } catch (n) {}
814
            try {
815
                return new ActiveXObject('Microsoft.XMLHTTP');
816
            } catch (o) {}
817
            return null;
818
        },
819
            i = function (m) {
820
                return m.readyState == 4 && (m.status >= 200 && m.status < 300 || m.status == 304 || m.status === 0 || m.status == 1223);
821
            },
822
            j = function (m) {
823
                if (i(m)) return m.responseText;
824
                return null;
825
            },
826
            k = function (m) {
827
                if (i(m)) {
828
                    var n = m.responseXML,
829
                        o = new a.xml(n && n.firstChild && n.documentElement && n.documentElement.nodeName != 'parsererror' ? n : m.responseText.replace(/^[^<]+/, '').replace(/[^>]+$/, ''));
830
                    if (o && o.mq && o.mq.documentElement && o.mq.documentElement.nodeName != 'parsererror' && o.mq.documentElement.nodeName != 'html' && o.mq.documentElement.nodeName != 'br') return o;
831
                }
832
                var p = a.eq || a.jt;
833
                p.msgDialog(p.lang.SysErrorDlgTitle, m.responseText);
834
                return {};
835
            },
836
            l = function (m, n, o, p) {
837
                var q = !!n;
838
                a.log('[AJAX] POST ' + m);
839
                var r = h();
840
                if (!r) return null;
841
                if (!p) r.open('GET', m, q);
842
                else r.open('POST', m, q);
843
                if (q) r.onreadystatechange = function () {
844
                    if (r.readyState == 4) {
845
                        n(o(r));
846
                        r = null;
847
                    }
848
                };
849
                if (p) {
850
                    r.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
851
                    r.send(p);
852
                } else r.send(null);
853
                return q ? '' : o(r);
854
            };
855
        return {
856
            load: function (m, n, o) {
857
                return l(m, n, j, o);
858
            },
859
            loadXml: function (m, n, o) {
860
                return l(m, n, k, o);
861
            }
862
        };
863
    })();
864
    CKFinder.ajax = a.ajax;
865
    (function () {
866
        var h = [];
867
        a.tools = {
868
            arrayCompare: function (i, j) {
869
                if (!i && !j) return true;
870
                if (!i || !j || i.length != j.length) return false;
871
                for (var k = 0; k < i.length; k++) {
872
                    if (i[k] != j[k]) return false;
873
                }
874
                return true;
875
            },
876
            clone: function (i) {
877
                var j;
878
                if (i && i instanceof Array) {
879
                    j = [];
880
                    for (var k = 0; k < i.length; k++) j[k] = this.clone(i[k]);
881
                    return j;
882
                }
883
                if (i === null || typeof i != 'object' || i instanceof String || i instanceof Number || i instanceof Boolean || i instanceof Date) return i;
884
                j = new i.constructor();
885
                for (var l in i) {
886
                    var m = i[l];
887
                    j[l] = this.clone(m);
888
                }
889
                return j;
890
            },
891
            extend: function (i) {
892
                var j = arguments.length,
893
                    k, l;
894
                if (typeof(k = arguments[j - 1]) == 'boolean') j--;
895
                else if (typeof(k = arguments[j - 2]) == 'boolean') {
896
                    l = arguments[j - 1];
897
                    j -= 2;
898
                }
899
                for (var m = 1; m < j; m++) {
900
                    var n = arguments[m];
901
                    for (var o in n) {
902
                        if (k === true || i[o] == undefined) if (!l || o in l) i[o] = n[o];
903
                    }
904
                }
905
                return i;
906
            },
907
            prototypedCopy: function (i) {
908
                var j = function () {};
909
                j.prototype = i;
910
                return new j();
911
            },
912
            isArray: function (i) {
913
                return !!i && i instanceof Array;
914
            },
915
            cssStyleToDomStyle: (function () {
916
                var i = document.createElement('div').style,
917
                    j = typeof i.cssFloat != 'undefined' ? 'cssFloat' : typeof i.styleFloat != 'undefined' ? 'styleFloat' : 'float';
918
                return function (k) {
919
                    if (k == 'float') return j;
920
                    else return k.replace(/-./g, function (l) {
921
                        return l.substr(1).toUpperCase();
922
                    });
923
                };
924
            })(),
925
            htmlEncode: function (i) {
926
                var j = function (n) {
927
                    var o = new g.ax('span');
928
                    o.setText(n);
929
                    return o.getHtml();
930
                },
931
                    k = j('\n').toLowerCase() == '<br>' ?
932
                    function (n) {
933
                        return j(n).replace(/<br>/gi, '\n');
934
                    } : j,
935
                    l = j('>') == '>' ?
936
                    function (n) {
937
                        return k(n).replace(/>/g, '&gt;');
938
                    } : k,
939
                    m = j('  ') == '&nbsp; ' ?
940
                    function (n) {
941
                        return l(n).replace(/&nbsp;/g, ' ');
942
                    } : l;
943
                this.htmlEncode = m;
944
                return this.htmlEncode(i);
945
            },
946
            getNextNumber: (function () {
947
                var i = 0;
948
                return function () {
949
                    return ++i;
950
                };
951
            })(),
952
            override: function (i, j) {
953
                return j(i);
954
            },
955
            setTimeout: function (i, j, k, l, m) {
956
                if (!m) m = window;
957
                if (!k) k = m;
958
                return m.setTimeout(function () {
959
                    if (l) i.apply(k, [].concat(l));
960
                    else i.apply(k);
961
                }, j || 0);
962
            },
963
            trim: (function () {
964
                var i = /(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g;
965
                return function (j) {
966
                    return j ? j.replace(i, '') : null;
967
                };
968
            })(),
969
            ltrim: (function () {
970
                var i = /^[ \t\n\r]+/g;
971
                return function (j) {
972
                    return j ? j.replace(i, '') : null;
973
                };
974
            })(),
975
            rtrim: (function () {
976
                var i = /[ \t\n\r]+$/g;
977
                return function (j) {
978
                    return j ? j.replace(i, '') : null;
979
                };
980
            })(),
981
            indexOf: Array.prototype.indexOf ?
982
            function (i, j) {
983
                return i.indexOf(j);
984
            } : function (i, j) {
985
                for (var k = 0, l = i.length; k < l; k++) {
986
                    if (i[k] === j) return k;
987
                }
988
                return -1;
989
            },
990
            bind: function (i, j) {
991
                return function () {
992
                    return i.apply(j, arguments);
993
                };
994
            },
995
            createClass: function (i) {
996
                var j = i.$,
997
                    k = i.base,
998
                    l = i.vd || i._,
999
                    m = i.ej,
1000
                    n = i.statics;
1001
                if (l) {
1002
                    var o = j;
1003
                    j = function () {
1004
                        var s = this;
1005
                        var p = s._ || (s._ = {});
1006
                        for (var q in l) {
1007
                            var r = l[q];
1008
                            p[q] = typeof r == 'function' ? a.tools.bind(r, s) : r;
1009
                        }
1010
                        o.apply(s, arguments);
1011
                    };
1012
                }
1013
                if (k) {
1014
                    j.prototype = this.prototypedCopy(k.prototype);
1015
                    j.prototype['constructor'] = j;
1016
                    j.prototype.base = function () {
1017
                        this.base = k.prototype.base;
1018
                        k.apply(this, arguments);
1019
                        this.base = arguments.callee;
1020
                    };
1021
                }
1022
                if (m) this.extend(j.prototype, m, true);
1023
                if (n) this.extend(j, n, true);
1024
                return j;
1025
            },
1026
            addFunction: function (i, j) {
1027
                return h.push(function () {
1028
                    i.apply(j || this, arguments);
1029
                }) - 1;
1030
            },
1031
            callFunction: function (i) {
1032
                var j = h[i];
1033
                return j.apply(window, Array.prototype.slice.call(arguments, 1));
1034
            },
1035
            cssLength: (function () {
1036
                var i = /^\d+(?:\.\d+)?$/;
1037
                return function (j) {
1038
                    return j + (i.test(j) ? 'px' : '');
1039
                };
1040
            })(),
1041
            repeat: function (i, j) {
1042
                return new Array(j + 1).join(i);
1043
            },
1044
            deepCopy: function (i) {
1045
                var j = {};
1046
                if (typeof i == 'object') {
1047
                    if (typeof i.length != 'undefined') j = [];
1048
                    for (var k in i) {
1049
                        if (i[k] === null) j[k] = i[k];
1050
                        else if (typeof i[k] == 'object') j[k] = a.tools.deepCopy(i[k]);
1051
                        else if (typeof i[k] == 'string') j[k] = i[k];
1052
                        else if (typeof i[k] == 'number') j[k] = i[k];
1053
                        else if (typeof i[k] == 'boolean') i[k] === true ? j[k] = true : j[k] = false;
1054
                    }
1055
                }
1056
                return j;
1057
            },
1058
            getUrlParam: function (i, j) {
1059
                var k = new RegExp('(?:[?&]|&amp;)' + i + '=([^&]+)', 'i'),
1060
                    l = (j || window).location.search.match(k);
1061
                return l && l.length > 1 ? l[1] : null;
1062
            },
1063
            htmlEncode: function (i) {
1064
                if (!i) return '';
1065
                i = typeof i != 'string' ? i.toString() : i;
1066
                i = i.replace(/&/g, '&amp;');
1067
                i = i.replace(/</g, '&lt;');
1068
                i = i.replace(/>/g, '&gt;');
1069
                return i;
1070
            },
1071
            setCookie: function (i, j, k) {
1072
                document.cookie = i + '=' + j + (!k ? '; expires=Thu, 6 Oct 2016 01:00:00 UTC; path=/' : '');
1073
            },
1074
            getCookie: function (i) {
1075
                var j = document.cookie.match(new RegExp('(^|\\s|;)' + i + '=([^;]*)'));
1076
                return j && j.length > 0 ? j[2] : '';
1077
            }
1078
        };
1079
        CKFinder._.callFunction = a.tools.callFunction;
1080
        CKFinder.tools = a.tools;
1081
    })();
1082
    var h = a.tools;
1083
    g.event = function (i) {
1084
        this.$ = i;
1085
    };
1086
    g.event.prototype = {
1087
        oV: function () {
1088
            return this.$.keyCode || this.$.which;
1089
        },
1090
        db: function () {
1091
            var j = this;
1092
            var i = j.oV();
1093
            if (j.$.ctrlKey || j.$.metaKey) i += a.bP;
1094
            if (j.$.shiftKey) i += a.dy;
1095
            if (j.$.altKey) i += a.eJ;
1096
            return i;
1097
        },
1098
        preventDefault: function (i) {
1099
            var j = this.$;
1100
            if (j.preventDefault) j.preventDefault();
1101
            else j.returnValue = false;
1102
            if (i) this.stopPropagation();
1103
        },
1104
        stopPropagation: function () {
1105
            var i = this.$;
1106
            if (i.stopPropagation) i.stopPropagation();
1107
            else i.cancelBubble = true;
1108
        },
1109
        bK: function () {
1110
            var i = this.$.target || this.$.srcElement;
1111
            return i ? new g.bi(i) : null;
1112
        }
1113
    };
1114
    a.bP = 1000;
1115
    a.dy = 2000;
1116
    a.eJ = 4000;
1117
    g.dE = function (i) {
1118
        if (i) this.$ = i;
1119
    };
1120
    g.dE.prototype = (function () {
1121
        var i = function (j, k) {
1122
            return function (l) {
1123
                if (typeof a != 'undefined') j.oW(k, new g.event(l));
1124
            };
1125
        };
1126
        return {
1127
            kk: function () {
1128
                var j;
1129
                if (!(j = this.dw('_'))) this.fL('_', j = {});
1130
                return j;
1131
            },
1132
            on: function (j) {
1133
                var m = this;
1134
                var k = m.dw('_cke_nativeListeners');
1135
                if (!k) {
1136
                    k = {};
1137
                    m.fL('_cke_nativeListeners', k);
1138
                }
1139
                if (!k[j]) {
1140
                    var l = k[j] = i(m, j);
1141
                    if (m.$.addEventListener) m.$.addEventListener(j, l, !!a.event.jP);
1142
                    else if (m.$.attachEvent) m.$.attachEvent('on' + j, l);
1143
                }
1144
                return a.event.prototype.on.apply(m, arguments);
1145
            },
1146
            aF: function (j) {
1147
                var m = this;
1148
                a.event.prototype.aF.apply(m, arguments);
1149
                if (!m.rC(j)) {
1150
                    var k = m.dw('_cke_nativeListeners'),
1151
                        l = k && k[j];
1152
                    if (l) {
1153
                        if (m.$.removeEventListener) m.$.removeEventListener(j, l, false);
1154
                        else if (m.$.detachEvent) m.$.detachEvent('on' + j, l);
1155
                        delete k[j];
1156
                    }
1157
                }
1158
            }
1159
        };
1160
    })();
1161
    (function (i) {
1162
        var j = {};
1163
        i.equals = function (k) {
1164
            return k && k.$ === this.$;
1165
        };
1166
        i.fL = function (k, l) {
1167
            var m = this.iY(),
1168
                n = j[m] || (j[m] = {});
1169
            n[k] = l;
1170
            return this;
1171
        };
1172
        i.dw = function (k) {
1173
            var l = this.$.dj,
1174
                m = l && j[l];
1175
            return m && m[k];
1176
        };
1177
        i.jF = function (k) {
1178
            var l = this.$.dj,
1179
                m = l && j[l],
1180
                n = m && m[k];
1181
            if (typeof n != 'undefined') delete m[k];
1182
            return n || null;
1183
        };
1184
        i.iY = function () {
1185
            return this.$.dj || (this.$.dj = h.getNextNumber());
1186
        };
1187
        a.event.du(i);
1188
    })(g.dE.prototype);
1189
    g.window = function (i) {
1190
        g.dE.call(this, i);
1191
    };
1192
    g.window.prototype = new g.dE();
1193
    h.extend(g.window.prototype, {
1194
        focus: function () {
1195
            if (e.webkit && this.$.parent) this.$.parent.focus();
1196
            this.$.focus();
1197
        },
1198
        eR: function () {
1199
            var i = this.$.document,
1200
                j = i.compatMode == 'CSS1Compat';
1201
            return {
1202
                width: (j ? i.documentElement.clientWidth : i.body.clientWidth) || 0,
1203
                height: (j ? i.documentElement.clientHeight : i.body.clientHeight) || 0
1204
            };
1205
        },
1206
        hV: function () {
1207
            var i = this.$;
1208
            if ('pageXOffset' in i) return {
1209
                x: i.pageXOffset || 0,
1210
                y: i.pageYOffset || 0
1211
            };
1212
            else {
1213
                var j = i.document;
1214
                return {
1215
                    x: j.documentElement.scrollLeft || j.body.scrollLeft || 0,
1216
                    y: j.documentElement.scrollTop || j.body.scrollTop || 0
1217
                };
1218
            }
1219
        }
1220
    });
1221
    g.document = function (i) {
1222
        g.dE.call(this, i);
1223
    };
1224
    var i = g.document;
1225
    i.prototype = new g.dE();
1226
    h.extend(i.prototype, {
1227
        pb: function (j) {
1228
            if (this.$.createStyleSheet) this.$.createStyleSheet(j);
1229
            else {
1230
                var k = new g.ax('link');
1231
                k.setAttributes({
1232
                    rel: 'stylesheet',
1233
                    type: 'text/css',
1234
                    href: j
1235
                });
1236
                this.eD().append(k);
1237
            }
1238
        },
1239
        createElement: function (j, k) {
1240
            var l = new g.ax(j, this);
1241
            if (k) {
1242
                if (k.attributes) l.setAttributes(k.attributes);
1243
                if (k.gS) l.setStyles(k.gS);
1244
            }
1245
            return l;
1246
        },
1247
        jT: function (j) {
1248
            return new g.text(j, this);
1249
        },
1250
        focus: function () {
1251
            this.aU().focus();
1252
        },
1253
        getById: function (j) {
1254
            var k = this.$.getElementById(j);
1255
            return k ? new g.ax(k) : null;
1256
        },
1257
        vu: function (j, k) {
1258
            var l = this.$.documentElement;
1259
            for (var m = 0; l && m < j.length; m++) {
1260
                var n = j[m];
1261
                if (!k) {
1262
                    l = l.childNodes[n];
1263
                    continue;
1264
                }
1265
                var o = -1;
1266
                for (var p = 0; p < l.childNodes.length; p++) {
1267
                    var q = l.childNodes[p];
1268
                    if (k === true && q.nodeType == 3 && q.previousSibling && q.previousSibling.nodeType == 3) continue;
1269
                    o++;
1270
                    if (o == n) {
1271
                        l = q;
1272
                        break;
1273
                    }
1274
                }
1275
            }
1276
            return l ? new g.bi(l) : null;
1277
        },
1278
        eG: function (j, k) {
1279
            if (!f && k) j = k + ':' + j;
1280
            return new g.iT(this.$.getElementsByTagName(j));
1281
        },
1282
        eD: function () {
1283
            var j = this.$.getElementsByTagName('head')[0];
1284
            j = new g.ax(j);
1285
            return (this.eD = function () {
1286
                return j;
1287
            })();
1288
        },
1289
        bH: function () {
1290
            var j = new g.ax(this.$.body);
1291
            return (this.bH = function () {
1292
                return j;
1293
            })();
1294
        },
1295
        gT: function () {
1296
            var j = new g.ax(this.$.documentElement);
1297
            return (this.gT = function () {
1298
                return j;
1299
            })();
1300
        },
1301
        aU: function () {
1302
            var j = new g.window(this.$.parentWindow || this.$.defaultView);
1303
            return (this.aU = function () {
1304
                return j;
1305
            })();
1306
        }
1307
    });
1308
    g.bi = function (j) {
1309
        if (j) {
1310
            switch (j.nodeType) {
1311
            case a.cv:
1312
                return new g.ax(j);
1313
            case a.fl:
1314
                return new g.text(j);
1315
            }
1316
            g.dE.call(this, j);
1317
        }
1318
        return this;
1319
    };
1320
    g.bi.prototype = new g.dE();
1321
    a.cv = 1;
1322
    a.fl = 3;
1323
    a.va = 8;
1324
    a.om = 11;
1325
    a.oh = 0;
1326
    a.op = 1;
1327
    a.gW = 2;
1328
    a.gX = 4;
1329
    a.mo = 8;
1330
    a.lF = 16;
1331
    h.extend(g.bi.prototype, {
1332
        appendTo: function (j, k) {
1333
            j.append(this, k);
1334
            return j;
1335
        },
1336
        clone: function (j, k) {
1337
            var l = this.$.cloneNode(j);
1338
            if (!k) {
1339
                var m = function (n) {
1340
                    if (n.nodeType != a.cv) return;
1341
                    n.removeAttribute('id', false);
1342
                    n.removeAttribute('dj', false);
1343
                    var o = n.childNodes;
1344
                    for (var p = 0; p < o.length; p++) m(o[p]);
1345
                };
1346
                m(l);
1347
            }
1348
            return new g.bi(l);
1349
        },
1350
        gE: function () {
1351
            return !!this.$.previousSibling;
1352
        },
1353
        ge: function () {
1354
            return !!this.$.nextSibling;
1355
        },
1356
        kB: function (j) {
1357
            j.$.parentNode.insertBefore(this.$, j.$.nextSibling);
1358
            return j;
1359
        },
1360
        insertBefore: function (j) {
1361
            j.$.parentNode.insertBefore(this.$, j.$);
1362
            return j;
1363
        },
1364
        vP: function (j) {
1365
            this.$.parentNode.insertBefore(j.$, this.$);
1366
            return j;
1367
        },
1368
        lU: function (j) {
1369
            var k = [],
1370
                l = this.getDocument().$.documentElement,
1371
                m = this.$;
1372
            while (m && m != l) {
1373
                var n = m.parentNode,
1374
                    o = -1;
1375
                for (var p = 0; p < n.childNodes.length; p++) {
1376
                    var q = n.childNodes[p];
1377
                    if (j && q.nodeType == 3 && q.previousSibling && q.previousSibling.nodeType == 3) continue;
1378
                    o++;
1379
                    if (q == m) break;
1380
                }
1381
                k.unshift(o);
1382
                m = m.parentNode;
1383
            }
1384
            return k;
1385
        },
1386
        getDocument: function () {
1387
            var j = new i(this.$.ownerDocument || this.$.parentNode.ownerDocument);
1388
            return (this.getDocument = function () {
1389
                return j;
1390
            })();
1391
        },
1392
        vA: function () {
1393
            var j = this.$,
1394
                k = j.parentNode && j.parentNode.firstChild,
1395
                l = -1;
1396
            while (k) {
1397
                l++;
1398
                if (k == j) return l;
1399
                k = k.nextSibling;
1400
            }
1401
            return -1;
1402
        },
1403
        hL: function (j, k, l) {
1404
            if (l && !l.call) {
1405
                var m = l;
1406
                l = function (p) {
1407
                    return !p.equals(m);
1408
                };
1409
            }
1410
            var n = !j && this.getFirst && this.getFirst(),
1411
                o;
1412
            if (!n) {
1413
                if (this.type == a.cv && l && l(this, true) === false) return null;
1414
                n = this.dG();
1415
            }
1416
            while (!n && (o = (o || this).getParent())) {
1417
                if (l && l(o, true) === false) return null;
1418
                n = o.dG();
1419
            }
1420
            if (!n) return null;
1421
            if (l && l(n) === false) return null;
1422
            if (k && k != n.type) return n.hL(false, k, l);
1423
            return n;
1424
        },
1425
        hZ: function (j, k, l) {
1426
            if (l && !l.call) {
1427
                var m = l;
1428
                l = function (p) {
1429
                    return !p.equals(m);
1430
                };
1431
            }
1432
            var n = !j && this.dB && this.dB(),
1433
                o;
1434
            if (!n) {
1435
                if (this.type == a.cv && l && l(this, true) === false) return null;
1436
                n = this.cf();
1437
            }
1438
            while (!n && (o = (o || this).getParent())) {
1439
                if (l && l(o, true) === false) return null;
1440
                n = o.cf();
1441
            }
1442
            if (!n) return null;
1443
            if (l && l(n) === false) return null;
1444
            if (k && n.type != k) return n.hZ(false, k, l);
1445
            return n;
1446
        },
1447
        cf: function (j) {
1448
            var k = this.$,
1449
                l;
1450
            do {
1451
                k = k.previousSibling;
1452
                l = k && new g.bi(k);
1453
            } while (l && j && !j(l)) return l;
1454
        },
1455
        vs: function () {
1456
            return this.cf(function (j) {
1457
                return j.$.nodeType == 1;
1458
            });
1459
        },
1460
        dG: function (j) {
1461
            var k = this.$,
1462
                l;
1463
            do {
1464
                k = k.nextSibling;
1465
                l = k && new g.bi(k);
1466
            } while (l && j && !j(l)) return l;
1467
        },
1468
        vk: function () {
1469
            return this.dG(function (j) {
1470
                return j.$.nodeType == 1;
1471
            });
1472
        },
1473
        getParent: function () {
1474
            var j = this.$.parentNode;
1475
            return j && j.nodeType == 1 ? new g.bi(j) : null;
1476
        },
1477
        vn: function (j) {
1478
            var k = this,
1479
                l = [];
1480
            do l[j ? 'push' : 'unshift'](k);
1481
            while (k = k.getParent()) return l;
1482
        },
1483
        vv: function (j) {
1484
            var l = this;
1485
            if (j.equals(l)) return l;
1486
            if (j.contains && j.contains(l)) return j;
1487
            var k = l.contains ? l : l.getParent();
1488
            do {
1489
                if (k.contains(j)) return k;
1490
            } while (k = k.getParent()) return null;
1491
        },
1492
        gz: function (j) {
1493
            var k = this.$,
1494
                l = j.$;
1495
            if (k.compareDocumentPosition) return k.compareDocumentPosition(l);
1496
            if (k == l) return a.oh;
1497
            if (this.type == a.cv && j.type == a.cv) {
1498
                if (k.contains) {
1499
                    if (k.contains(l)) return a.lF + a.gX;
1500
                    if (l.contains(k)) return a.mo + a.gW;
1501
                }
1502
                if ('sourceIndex' in k) return k.sourceIndex < 0 || l.sourceIndex < 0 ? a.op : k.sourceIndex < l.sourceIndex ? a.gX : a.gW;
1503
            }
1504
            var m = this.lU(),
1505
                n = j.lU(),
1506
                o = Math.min(m.length, n.length);
1507
            for (var p = 0; p <= o - 1; p++) {
1508
                if (m[p] != n[p]) {
1509
                    if (p < o) return m[p] < n[p] ? a.gX : a.gW;
1510
                    break;
1511
                }
1512
            }
1513
            return m.length < n.length ? a.lF + a.gX : a.mo + a.gW;
1514
        },
1515
        vw: function (j, k) {
1516
            var l = this.$;
1517
            if (!k) l = l.parentNode;
1518
            while (l) {
1519
                if (l.nodeName && l.nodeName.toLowerCase() == j) return new g.bi(l);
1520
                l = l.parentNode;
1521
            }
1522
            return null;
1523
        },
1524
        vX: function (j, k) {
1525
            var l = this.$;
1526
            if (!k) l = l.parentNode;
1527
            while (l) {
1528
                if (l.nodeName && l.nodeName.toLowerCase() == j) return true;
1529
                l = l.parentNode;
1530
            }
1531
            return false;
1532
        },
1533
        move: function (j, k) {
1534
            j.append(this.remove(), k);
1535
        },
1536
        remove: function (j) {
1537
            var k = this.$,
1538
                l = k.parentNode;
1539
            if (l) {
1540
                if (j) for (var m; m = k.firstChild;) l.insertBefore(k.removeChild(m), k);
1541
                l.removeChild(k);
1542
            }
1543
            return this;
1544
        },
1545
        replace: function (j) {
1546
            this.insertBefore(j);
1547
            j.remove();
1548
        },
1549
        trim: function () {
1550
            this.ltrim();
1551
            this.rtrim();
1552
        },
1553
        ltrim: function () {
1554
            var m = this;
1555
            var j;
1556
            while (m.getFirst && (j = m.getFirst())) {
1557
                if (j.type == a.fl) {
1558
                    var k = h.ltrim(j.getText()),
1559
                        l = j.hJ();
1560
                    if (!k) {
1561
                        j.remove();
1562
                        continue;
1563
                    } else if (k.length < l) {
1564
                        j.split(l - k.length);
1565
                        m.$.removeChild(m.$.firstChild);
1566
                    }
1567
                }
1568
                break;
1569
            }
1570
        },
1571
        rtrim: function () {
1572
            var m = this;
1573
            var j;
1574
            while (m.dB && (j = m.dB())) {
1575
                if (j.type == a.fl) {
1576
                    var k = h.rtrim(j.getText()),
1577
                        l = j.hJ();
1578
                    if (!k) {
1579
                        j.remove();
1580
                        continue;
1581
                    } else if (k.length < l) {
1582
                        j.split(k.length);
1583
                        m.$.lastChild.parentNode.removeChild(m.$.lastChild);
1584
                    }
1585
                }
1586
                break;
1587
            }
1588
            if (!f && !e.opera) {
1589
                j = m.$.lastChild;
1590
                if (j && j.type == 1 && j.nodeName.toLowerCase() == 'br') j.parentNode.removeChild(j);
1591
            }
1592
        }
1593
    });
1594
    g.iT = function (j) {
1595
        this.$ = j;
1596
    };
1597
    g.iT.prototype = {
1598
        count: function () {
1599
            return this.$.length;
1600
        },
1601
        getItem: function (j) {
1602
            var k = this.$[j];
1603
            return k ? new g.bi(k) : null;
1604
        }
1605
    };
1606
    g.ax = function (j, k) {
1607
        if (typeof j == 'string') j = (k ? k.$ : document).createElement(j);
1608
        g.dE.call(this, j);
1609
    };
1610
    var j = g.ax;
1611
    j.eB = function (k) {
1612
        return k && (k.$ ? k : new j(k));
1613
    };
1614
    j.prototype = new g.bi();
1615
    j.et = function (k, l) {
1616
        var m = new j('div', l);
1617
        m.setHtml(k);
1618
        return m.getFirst().remove();
1619
    };
1620
    j.rS = function (k, l, m, n) {
1621
        var o = l.dw('list_marker_id') || l.fL('list_marker_id', h.getNextNumber()).dw('list_marker_id'),
1622
            p = l.dw('list_marker_names') || l.fL('list_marker_names', {}).dw('list_marker_names');
1623
        k[o] = l;
1624
        p[m] = 1;
1625
        return l.fL(m, n);
1626
    };
1627
    j.sM = function (k) {
1628
        for (var l in k) j.qZ(k, k[l], true);
1629
    };
1630
    j.qZ = function (k, l, m) {
1631
        var n = l.dw('list_marker_names'),
1632
            o = l.dw('list_marker_id');
1633
        for (var p in n) l.jF(p);
1634
        l.jF('list_marker_names');
1635
        if (m) {
1636
            l.jF('list_marker_id');
1637
            delete k[o];
1638
        }
1639
    };
1640
    h.extend(j.prototype, {
1641
        type: a.cv,
1642
        addClass: function (k) {
1643
            var l = this.$.className;
1644
            if (l) {
1645
                var m = new RegExp('(?:^|\\s)' + k + '(?:\\s|$)', '');
1646
                if (!m.test(l)) l += ' ' + k;
1647
            }
1648
            this.$.className = l || k;
1649
        },
1650
        removeClass: function (k) {
1651
            var l = this.getAttribute('class');
1652
            if (l) {
1653
                var m = new RegExp('(?:^|\\s+)' + k + '(?=\\s|$)', 'i');
1654
                if (m.test(l)) {
1655
                    l = l.replace(m, '').replace(/^\s+/, '');
1656
                    if (l) this.setAttribute('class', l);
1657
                    else this.removeAttribute('class');
1658
                }
1659
            }
1660
        },
1661
        hasClass: function (k) {
1662
            var l = new RegExp('(?:^|\\s+)' + k + '(?=\\s|$)', '');
1663
            return l.test(this.getAttribute('class'));
1664
        },
1665
        append: function (k, l) {
1666
            var m = this;
1667
            if (typeof k == 'string') k = m.getDocument().createElement(k);
1668
            if (l) m.$.insertBefore(k.$, m.$.firstChild);
1669
            else m.$.appendChild(k.$);
1670
            a.log('[DOM] DOM flush into ' + m.getName());
1671
            return k;
1672
        },
1673
        appendHtml: function (k) {
1674
            var m = this;
1675
            if (!m.$.childNodes.length) m.setHtml(k);
1676
            else {
1677
                var l = new j('div', m.getDocument());
1678
                l.setHtml(k);
1679
                l.jg(m);
1680
            }
1681
        },
1682
        appendText: function (k) {
1683
            if (this.$.text != undefined) this.$.text += k;
1684
            else this.append(new g.text(k));
1685
        },
1686
        pd: function () {
1687
            var l = this;
1688
            var k = l.dB();
1689
            while (k && k.type == a.fl && !h.rtrim(k.getText())) k = k.cf();
1690
            if (!k || !k.is || !k.is('br')) l.append(e.opera ? l.getDocument().jT('') : l.getDocument().createElement('br'));
1691
        },
1692
        tV: function (k) {
1693
            var n = this;
1694
            var l = new g.mk(n.getDocument());
1695
            l.setStartAfter(n);
1696
            l.setEndAfter(k);
1697
            var m = l.extractContents();
1698
            l.insertNode(n.remove());
1699
            m.kA(n);
1700
        },
1701
        contains: f || e.webkit ?
1702
        function (k) {
1703
            var l = this.$;
1704
            return k.type != a.cv ? l.contains(k.getParent().$) : l != k.$ && l.contains(k.$);
1705
        } : function (k) {
1706
            return !!(this.$.compareDocumentPosition(k.$) & 16);
1707
        },
1708
        focus: function () {
1709
            try {
1710
                this.$.focus();
1711
            } catch (k) {}
1712
        },
1713
        getHtml: function () {
1714
            return this.$.innerHTML;
1715
        },
1716
        vi: function () {
1717
            var l = this;
1718
            if (l.$.outerHTML) return l.$.outerHTML.replace(/<\?[^>]*>/, '');
1719
            var k = l.$.ownerDocument.createElement('div');
1720
            k.appendChild(l.$.cloneNode(true));
1721
            return k.innerHTML;
1722
        },
1723
        setHtml: function (k) {
1724
            a.log('[DOM] DOM flush into ' + this.getName());
1725
            return this.$.innerHTML = k;
1726
        },
1727
        setText: function (k) {
1728
            j.prototype.setText = this.$.innerText != undefined ?
1729
            function (l) {
1730
                a.log('[DOM] Text flush');
1731
                return this.$.innerText = l;
1732
            } : function (l) {
1733
                a.log('[DOM] Text flush');
1734
                return this.$.textContent = l;
1735
            };
1736
            return this.setText(k);
1737
        },
1738
        getAttribute: (function () {
1739
            var k = function (l) {
1740
                return this.$.getAttribute(l, 2);
1741
            };
1742
            if (f && (e.ie7Compat || e.ie6Compat)) return function (l) {
1743
                var n = this;
1744
                switch (l) {
1745
                case 'class':
1746
                    l = 'className';
1747
                    break;
1748
                case 'tabindex':
1749
                    var m = k.call(n, l);
1750
                    if (m !== 0 && n.$.tabIndex === 0) m = null;
1751
                    return m;
1752
                    break;
1753
                case 'checked':
1754
                    return n.$.checked;
1755
                    break;
1756
                case 'style':
1757
                    return n.$.style.cssText;
1758
                }
1759
                return k.call(n, l);
1760
            };
1761
            else return k;
1762
        })(),
1763
        getChildren: function () {
1764
            return new g.iT(this.$.childNodes);
1765
        },
1766
        getComputedStyle: f ?
1767
        function (k) {
1768
            return this.$.currentStyle[h.cssStyleToDomStyle(k)];
1769
        } : function (k) {
1770
            return this.aU().$.getComputedStyle(this.$, '').getPropertyValue(k);
1771
        },
1772
        pf: function () {
1773
            var k = a.ga[this.getName()];
1774
            this.pf = function () {
1775
                return k;
1776
            };
1777
            return k;
1778
        },
1779
        eG: i.prototype.eG,
1780
        vp: f ?
1781
        function () {
1782
            var k = this.$.tabIndex;
1783
            if (k === 0 && !a.ga.ug[this.getName()] && parseInt(this.getAttribute('tabindex'), 10) !== 0) k = -1;
1784
            return k;
1785
        } : e.webkit ?
1786
        function () {
1787
            var k = this.$.tabIndex;
1788
            if (k == undefined) {
1789
                k = parseInt(this.getAttribute('tabindex'), 10);
1790
                if (isNaN(k)) k = -1;
1791
            }
1792
            return k;
1793
        } : function () {
1794
            return this.$.tabIndex;
1795
        },
1796
        getText: function () {
1797
            return this.$.textContent || this.$.innerText || '';
1798
        },
1799
        aU: function () {
1800
            return this.getDocument().aU();
1801
        },
1802
        dS: function () {
1803
            return this.$.id || null;
1804
        },
1805
        vm: function () {
1806
            return this.$.name || null;
1807
        },
1808
        getName: function () {
1809
            var k = this.$.nodeName.toLowerCase();
1810
            if (f) {
1811
                var l = this.$.scopeName;
1812
                if (l != 'HTML') k = l.toLowerCase() + ':' + k;
1813
            }
1814
            return (this.getName = function () {
1815
                return k;
1816
            })();
1817
        },
1818
        getValue: function () {
1819
            return this.$.value;
1820
        },
1821
        getFirst: function () {
1822
            var k = this.$.firstChild;
1823
            return k ? new g.bi(k) : null;
1824
        },
1825
        dB: function (k) {
1826
            var l = this.$.lastChild,
1827
                m = l && new g.bi(l);
1828
            if (m && k && !k(m)) m = m.cf(k);
1829
            return m;
1830
        },
1831
        rd: function (k) {
1832
            return this.$.style[h.cssStyleToDomStyle(k)];
1833
        },
1834
        is: function () {
1835
            var k = this.getName();
1836
            for (var l = 0; l < arguments.length; l++) {
1837
                if (arguments[l] == k) return true;
1838
            }
1839
            return false;
1840
        },
1841
        vL: function () {
1842
            var k = this.getName(),
1843
                l = !a.ga.uj[k] && (a.ga[k] || a.ga.span);
1844
            return l && l['#'];
1845
        },
1846
        isIdentical: function (k) {
1847
            if (this.getName() != k.getName()) return false;
1848
            var l = this.$.attributes,
1849
                m = k.$.attributes,
1850
                n = l.length,
1851
                o = m.length;
1852
            if (!f && n != o) return false;
1853
            for (var p = 0; p < n; p++) {
1854
                var q = l[p];
1855
                if ((!f || q.specified && q.nodeName != 'dj') && q.nodeValue != k.getAttribute(q.nodeName)) return false;
1856
            }
1857
            if (f) for (p = 0; p < o; p++) {
1858
                q = m[p];
1859
                if ((!f || q.specified && q.nodeName != 'dj') && q.nodeValue != l.getAttribute(q.nodeName)) return false;
1860
            }
1861
            return true;
1862
        },
1863
        isVisible: function () {
1864
            return this.$.offsetWidth && this.$.style.visibility != 'hidden';
1865
        },
1866
        hasAttributes: f && (e.ie7Compat || e.ie6Compat) ?
1867
        function () {
1868
            var k = this.$.attributes;
1869
            for (var l = 0; l < k.length; l++) {
1870
                var m = k[l];
1871
                switch (m.nodeName) {
1872
                case 'class':
1873
                    if (this.getAttribute('class')) return true;
1874
                case 'dj':
1875
                    continue;
1876
                default:
1877
                    if (m.specified) return true;
1878
                }
1879
            }
1880
            return false;
1881
        } : function () {
1882
            var k = this.$.attributes;
1883
            return k.length > 1 || k.length == 1 && k[0].nodeName != 'dj';
1884
        },
1885
        hasAttribute: function (k) {
1886
            var l = this.$.attributes.getNamedItem(k);
1887
            return !!(l && l.specified);
1888
        },
1889
        hide: function () {
1890
            this.setStyle('display', 'none');
1891
        },
1892
        jg: function (k, l) {
1893
            var m = this.$;
1894
            k = k.$;
1895
            if (m == k) return;
1896
            var n;
1897
            if (l) while (n = m.lastChild) k.insertBefore(m.removeChild(n), k.firstChild);
1898
            else while (n = m.firstChild) k.appendChild(m.removeChild(n));
1899
        },
1900
        show: function () {
1901
            this.setStyles({
1902
                display: '',
1903
                visibility: ''
1904
            });
1905
        },
1906
        setAttribute: (function () {
1907
            var k = function (l, m) {
1908
                this.$.setAttribute(l, m);
1909
                return this;
1910
            };
1911
            if (f && (e.ie7Compat || e.ie6Compat)) return function (l, m) {
1912
                var n = this;
1913
                if (l == 'class') n.$.className = m;
1914
                else if (l == 'style') n.$.style.cssText = m;
1915
                else if (l == 'tabindex') n.$.tabIndex = m;
1916
                else if (l == 'checked') n.$.checked = m;
1917
                else k.apply(n, arguments);
1918
                return n;
1919
            };
1920
            else return k;
1921
        })(),
1922
        setAttributes: function (k) {
1923
            for (var l in k) this.setAttribute(l, k[l]);
1924
            return this;
1925
        },
1926
        setValue: function (k) {
1927
            this.$.value = k;
1928
            return this;
1929
        },
1930
        removeAttribute: (function () {
1931
            var k = function (l) {
1932
                this.$.removeAttribute(l);
1933
            };
1934
            if (f && (e.ie7Compat || e.ie6Compat)) return function (l) {
1935
                if (l == 'class') l = 'className';
1936
                else if (l == 'tabindex') l = 'tabIndex';
1937
                k.call(this, l);
1938
            };
1939
            else return k;
1940
        })(),
1941
        uW: function (k) {
1942
            for (var l = 0; l < k.length; l++) this.removeAttribute(k[l]);
1943
        },
1944
        removeStyle: function (k) {
1945
            var l = this;
1946
            if (l.$.style.removeAttribute) l.$.style.removeAttribute(h.cssStyleToDomStyle(k));
1947
            else l.setStyle(k, '');
1948
            if (!l.$.style.cssText) l.removeAttribute('style');
1949
        },
1950
        setStyle: function (k, l) {
1951
            this.$.style[h.cssStyleToDomStyle(k)] = l;
1952
            return this;
1953
        },
1954
        setStyles: function (k) {
1955
            for (var l in k) this.setStyle(l, k[l]);
1956
            return this;
1957
        },
1958
        setOpacity: function (k) {
1959
            if (f) {
1960
                k = Math.round(k * 100);
1961
                this.setStyle('filter', k >= 100 ? '' : 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + k + ')');
1962
            } else this.setStyle('opacity', k);
1963
        },
1964
        unselectable: e.gecko ?
1965
        function () {
1966
            this.$.style.MozUserSelect = 'none';
1967
        } : e.webkit ?
1968
        function () {
1969
            this.$.style.uE = 'none';
1970
        } : function () {
1971
            if (f || e.opera) {
1972
                var k = this.$,
1973
                    l, m = 0;
1974
                k.unselectable = 'on';
1975
                while (l = k.all[m++]) switch (l.tagName.toLowerCase()) {
1976
                case 'iframe':
1977
                case 'textarea':
1978
                case 'input':
1979
                case 'select':
1980
                    break;
1981
                default:
1982
                    l.unselectable = 'on';
1983
                }
1984
            }
1985
        },
1986
        vr: function () {
1987
            var k = this;
1988
            while (k.getName() != 'html') {
1989
                if (k.getComputedStyle('position') != 'static') return k;
1990
                k = k.getParent();
1991
            }
1992
            return null;
1993
        },
1994
        ir: function (k) {
1995
            var F = this;
1996
            var l = 0,
1997
                m = 0,
1998
                n = F.getDocument().bH(),
1999
                o = F.getDocument().$.compatMode == 'BackCompat',
2000
                p = F.getDocument();
2001
            if (document.documentElement.getBoundingClientRect) {
2002
                var q = F.$.getBoundingClientRect(),
2003
                    r = p.$,
2004
                    s = r.documentElement,
2005
                    t = s.clientTop || n.$.clientTop || 0,
2006
                    u = s.clientLeft || n.$.clientLeft || 0,
2007
                    v = true;
2008
                if (f) {
2009
                    var w = p.gT().contains(F),
2010
                        x = p.bH().contains(F);
2011
                    v = o && x || !o && w;
2012
                }
2013
                if (v) {
2014
                    l = q.left + (!o && s.scrollLeft || n.$.scrollLeft);
2015
                    l -= u;
2016
                    m = q.top + (!o && s.scrollTop || n.$.scrollTop);
2017
                    m -= t;
2018
                }
2019
            } else {
2020
                var y = F,
2021
                    z = null,
2022
                    A;
2023
                while (y && !(y.getName() == 'body' || y.getName() == 'html')) {
2024
                    l += y.$.offsetLeft - y.$.scrollLeft;
2025
                    m += y.$.offsetTop - y.$.scrollTop;
2026
                    if (!y.equals(F)) {
2027
                        l += y.$.clientLeft || 0;
2028
                        m += y.$.clientTop || 0;
2029
                    }
2030
                    var B = z;
2031
                    while (B && !B.equals(y)) {
2032
                        l -= B.$.scrollLeft;
2033
                        m -= B.$.scrollTop;
2034
                        B = B.getParent();
2035
                    }
2036
                    z = y;
2037
                    y = (A = y.$.offsetParent) ? new j(A) : null;
2038
                }
2039
            }
2040
            if (k) {
2041
                var C = F.aU(),
2042
                    D = k.aU();
2043
                if (!C.equals(D) && C.$.frameElement) {
2044
                    var E = new j(C.$.frameElement).ir(k);
2045
                    l += E.x;
2046
                    m += E.y;
2047
                }
2048
            }
2049
            if (!document.documentElement.getBoundingClientRect) if (e.gecko && !o) {
2050
                l += F.$.clientLeft ? 1 : 0;
2051
                m += F.$.clientTop ? 1 : 0;
2052
            }
2053
            return {
2054
                x: l,
2055
                y: m
2056
            };
2057
        },
2058
        scrollIntoView: function (k) {
2059
            var q = this;
2060
            var l = q.aU(),
2061
                m = l.eR().height,
2062
                n = m * -1;
2063
            if (k) n += m;
2064
            else {
2065
                n += q.$.offsetHeight || 0;
2066
                n += parseInt(q.getComputedStyle('marginBottom') || 0, 10) || 0;
2067
            }
2068
            var o = q.ir();
2069
            n += o.y;
2070
            n = n < 0 ? 0 : n;
2071
            var p = l.hV().y;
2072
            if (n > p || n < p - m) l.$.scrollTo(0, n);
2073
        },
2074
        bR: function (k) {
2075
            var l = this;
2076
            switch (k) {
2077
            case a.eV:
2078
                l.addClass('cke_on');
2079
                l.removeClass('cke_off');
2080
                l.removeClass('cke_disabled');
2081
                break;
2082
            case a.aY:
2083
                l.addClass('cke_disabled');
2084
                l.removeClass('cke_off');
2085
                l.removeClass('cke_on');
2086
                break;
2087
            default:
2088
                l.addClass('cke_off');
2089
                l.removeClass('cke_on');
2090
                l.removeClass('cke_disabled');
2091
                break;
2092
            }
2093
        },
2094
        getFrameDocument: function () {
2095
            var k = this.$;
2096
            try {
2097
                k.contentWindow.document;
2098
            } catch (l) {
2099
                k.src = k.src;
2100
                if (f && e.version < 7) window.showModalDialog('javascript:document.write("<script>window.setTimeout(function(){window.close();},50);</script>")');
2101
            }
2102
            return k && new i(k.contentWindow.document);
2103
        },
2104
        qw: function (k, l) {
2105
            var r = this;
2106
            var m = r.$.attributes;
2107
            l = l || {};
2108
            for (var n = 0; n < m.length; n++) {
2109
                var o = m[n];
2110
                if (o.specified || f && o.nodeValue && o.nodeName.toLowerCase() == 'value') {
2111
                    var p = o.nodeName;
2112
                    if (p in l) continue;
2113
                    var q = r.getAttribute(p);
2114
                    if (q === null) q = o.nodeValue;
2115
                    k.setAttribute(p, q);
2116
                }
2117
            }
2118
            if (r.$.style.cssText !== '') k.$.style.cssText = r.$.style.cssText;
2119
        },
2120
        renameNode: function (k) {
2121
            var n = this;
2122
            if (n.getName() == k) return;
2123
            var l = n.getDocument(),
2124
                m = new j(k, l);
2125
            n.qw(m);
2126
            n.jg(m);
2127
            n.$.parentNode.replaceChild(m.$, n.$);
2128
            m.$.dj = n.$.dj;
2129
            n.$ = m.$;
2130
        },
2131
        aC: function (k) {
2132
            var l = this.$;
2133
            if (!k.slice) l = l.childNodes[k];
2134
            else while (k.length > 0 && l) l = l.childNodes[k.shift()];
2135
            return l ? new g.bi(l) : null;
2136
        },
2137
        iu: function () {
2138
            return this.$.childNodes.length;
2139
        },
2140
        hX: function () {
2141
            this.on('contextmenu', function (k) {
2142
                if (!k.data.bK().hasClass('cke_enable_context_menu')) k.data.preventDefault();
2143
            });
2144
        },
2145
        'toString': function () {
2146
            return this.getName() + '#' + this.dS() + '.' + this.getAttribute('class');
2147
        }
2148
    });
2149
    a.command = function (k, l) {
2150
        this.pW = [];
2151
        this.exec = function (m) {
2152
            if (this.bu == a.aY) return false;
2153
            if (l.oD) k.focus();
2154
            return l.exec.call(this, k, m) !== false;
2155
        };
2156
        h.extend(this, l, {
2157
            iH: {
2158
                he: 1
2159
            },
2160
            oD: true,
2161
            bu: a.aS
2162
        });
2163
        a.event.call(this);
2164
    };
2165
    a.command.prototype = {
2166
        enable: function () {
2167
            var k = this;
2168
            if (k.bu == a.aY) k.bR(!k.vf || typeof k.lJ == 'undefined' ? a.aS : k.lJ);
2169
        },
2170
        disable: function () {
2171
            this.bR(a.aY);
2172
        },
2173
        bR: function (k) {
2174
            var l = this;
2175
            if (l.bu == k) return false;
2176
            l.lJ = l.bu;
2177
            l.bu = k;
2178
            l.oW('bu');
2179
            return true;
2180
        },
2181
        rJ: function () {
2182
            var k = this;
2183
            if (k.bu == a.aS) k.bR(a.eV);
2184
            else if (k.bu == a.eV) k.bR(a.aS);
2185
        }
2186
    };
2187
    a.event.du(a.command.prototype, true);
2188
    a.config = {
2189
        customConfig: a.getUrl('config.js'),
2190
        connectorLanguage: 'php',
2191
        language: '',
2192
        defaultLanguage: 'en',
2193
        pO: '',
2194
        height: 400,
2195
        plugins: 'foldertree,folder,filebrowser,container,connector,resource,toolbar,formpanel,filesview,status,contextmenu,uploadform,keystrokes,dragdrop,basket,dialog,tools,resize,help',
2196
        extraPlugins: '',
2197
        fileIcons: 'ai|avi|bmp|cs|dll|doc|docx|exe|fla|gif|jpg|js|mdb|mp3|ogg|pdf|ppt|pptx|rdp|swf|swt|txt|vsd|xls|xlsx|xml|zip',
2198
        removePlugins: '',
2199
        tabIndex: 0,
2200
        theme: 'default',
2201
        skin: 'kama',
2202
        width: '100%',
2203
        baseFloatZIndex: 10000,
2204
        directDownload: false,
2205
        log: false,
2206
        logStackTrace: false,
2207
        rememberLastFolder: true,
2208
        startupPath: '',
2209
        startupFolderExpanded: true,
2210
        selectActionFunction: null,
2211
        selectActionData: null,
2212
        selectThumbnailActionFunction: null,
2213
        selectThumbnailActionData: null,
2214
        disableThumbnailSelection: false,
2215
        thumbsUrl: null,
2216
        thumbsDirectAccess: false,
2217
        imagesMaxWidth: 0,
2218
        imagesMaxHeight: 0,
2219
        selectActionType: 'js',
2220
        resourceType: null,
2221
        disableHelpButton: false
2222
    };
2223
    CKFinder.config = a.config;
2224
    var k = a.config;
2225
    a.dU = function (l, m) {
2226
        this.rG = l;
2227
        this.message = m;
2228
    };
2229
    a.fs = function (l) {
2230
        if (l.fs) return l.fs;
2231
        this.hasFocus = false;
2232
        this._ = {
2233
            application: l
2234
        };
2235
        return this;
2236
    };
2237
    a.fs.prototype = {
2238
        focus: function () {
2239
            var m = this;
2240
            if (m._.fW) clearTimeout(m._.fW);
2241
            if (!m.hasFocus) {
2242
                if (a.eq) a.eq.fs.ly();
2243
                var l = m._.application;
2244
                l.container.getFirst().addClass('cke_focus');
2245
                m.hasFocus = true;
2246
                l.oW('focus');
2247
            }
2248
        },
2249
        blur: function () {
2250
            var l = this;
2251
            if (l._.fW) clearTimeout(l._.fW);
2252
            l._.fW = setTimeout(function () {
2253
                delete l._.fW;
2254
                l.ly();
2255
            }, 100);
2256
        },
2257
        ly: function () {
2258
            if (this.hasFocus) {
2259
                var l = this._.application;
2260
                l.container.getFirst().removeClass('cke_focus');
2261
                this.hasFocus = false;
2262
                l.oW('blur');
2263
            }
2264
        }
2265
    };
2266
    (function () {
2267
        var l = {};
2268
        a.lang = {
2269
            ko: {
2270
                cs: 1,
2271
                de: 1,
2272
                en: 1,
2273
                'es-mx': 1,
2274
                hu: 1,
2275
                lv: 1,
2276
                nl: 1,
2277
                no: 1,
2278
                'pt-br': 1,
2279
                sk: 1,
2280
                sv: 1,
2281
                'zh-tw': 1,
2282
                da: 1,
2283
                el: 1,
2284
                es: 1,
2285
                fr: 1,
2286
                it: 1,
2287
                nb: 1,
2288
                nn: 1,
2289
                pl: 1,
2290
                ru: 1,
2291
                sl: 1,
2292
                'zh-cn': 1
2293
            },
2294
            load: function (m, n, o) {
2295
                if (!m || !a.lang.ko[m]) m = this.jV(n, m);
2296
                if (!this[m]) a.ec.load(a.getUrl('lang/' + m + '.js'), function () {
2297
                    o(m, CKFinder.lang[m]);
2298
                }, this);
2299
                else o(m, this[m]);
2300
            },
2301
            jV: function (m, n) {
2302
                var o = this.ko;
2303
                n = n || navigator.userLanguage || navigator.language;
2304
                var p = n.toLowerCase().match(/([a-z]+)(?:-([a-z]+))?/),
2305
                    q = p[1],
2306
                    r = p[2];
2307
                if (o[q + '-' + r]) q = q + '-' + r;
2308
                else if (!o[q]) q = null;
2309
                a.lang.jV = q ?
2310
                function () {
2311
                    return q;
2312
                } : function (s) {
2313
                    return s;
2314
                };
2315
                return q || m;
2316
            }
2317
        };
2318
    })();
2319
    (function () {
2320
        a.log = function () {
2321
            if (!k.log && !window.CKFINDER_LOG) return;
2322
            var l = '';
2323
            for (var m = 0; m < arguments.length; m++) {
2324
                var n = arguments[m];
2325
                if (!n) continue;
2326
                if (l) l += '; ';
2327
                switch (typeof n) {
2328
                case 'function':
2329
                    var o = /function (\w+?)\(/.exec(n.toString());
2330
                    o = o ? o[1] : 'anonymous func';
2331
                    l += o;
2332
                    break;
2333
                default:
2334
                    l += n ? n.toString() : '';
2335
                }
2336
            }
2337
            a._.log.push(l);
2338
            if (typeof window.console == 'object') if (!console.log.apply) console.log(l);
2339
            else console.log.apply(console, arguments);
2340
        };
2341
        a.ba = function (l) {
2342
            if (k.logStackTrace) a.log('[EXCEPTION] ' + l.toString());
2343
            return l;
2344
        };
2345
        a.mZ = function (l) {
2346
            var m = '';
2347
            for (var n = 0; n < a._.log.length; n++) m += n + 1 + '. ' + a._.log[n] + '\n';
2348
            return m;
2349
        };
2350
        a._.log = [];
2351
    })();
2352
    a.ec = (function () {
2353
        var l = {},
2354
            m = {};
2355
        return {
2356
            load: function (n, o, p, q, r) {
2357
                var s = typeof n == 'string';
2358
                if (s) n = [n];
2359
                if (!p) p = a;
2360
                var t = n.length,
2361
                    u = [],
2362
                    v = [],
2363
                    w = function (B) {
2364
                        if (o) if (s) o.call(p, B);
2365
                        else o.call(p, u, v);
2366
                    };
2367
                if (t === 0) {
2368
                    w(true);
2369
                    return;
2370
                }
2371
                var x = function (B, C) {
2372
                    (C ? u : v).push(B);
2373
                    if (--t <= 0) w(C);
2374
                },
2375
                    y = function (B, C) {
2376
                        l[B] = 1;
2377
                        var D = m[B];
2378
                        delete m[B];
2379
                        for (var E = 0; E < D.length; E++) D[E](B, C);
2380
                    },
2381
                    z = function (B) {
2382
                        if (q !== true && l[B]) {
2383
                            x(B, true);
2384
                            return;
2385
                        }
2386
                        var C = m[B] || (m[B] = []);
2387
                        C.push(x);
2388
                        if (C.length > 1) return;
2389
                        var D = new j('script');
2390
                        D.setAttributes({
2391
                            type: 'text/javascript',
2392
                            src: B
2393
                        });
2394
                        if (o) if (f) D.$.onreadystatechange = function () {
2395
                            if (D.$.readyState == 'loaded' || D.$.readyState == 'complete') {
2396
                                D.$.onreadystatechange = null;
2397
                                a.log('[LOADED] ' + B);
2398
                                y(B, true);
2399
                            }
2400
                        };
2401
                        else {
2402
                            D.$.onload = function () {
2403
                                setTimeout(function () {
2404
                                    a.log('[LOADED] ' + B);
2405
                                    y(B, true);
2406
                                }, 0);
2407
                            };
2408
                            D.$.onerror = function () {
2409
                                y(B, false);
2410
                            };
2411
                        }
2412
                        D.appendTo(r ? r : a.document.eD());
2413
                    };
2414
                for (var A = 0; A < t; A++) z(n[A]);
2415
            },
2416
            uq: function (n) {
2417
                var o = new j('script');
2418
                o.setAttribute('type', 'text/javascript');
2419
                o.appendText(n);
2420
                o.appendTo(a.document.eD());
2421
            }
2422
        };
2423
    })();
2424
    a.fQ = function (l, m) {
2425
        var n = this;
2426
        n.basePath = l;
2427
        n.fileName = m;
2428
        n.bX = {};
2429
        n.loaded = {};
2430
        n.jn = {};
2431
        n._ = {
2432
            rZ: {}
2433
        };
2434
    };
2435
    a.fQ.prototype = {
2436
        add: function (l, m) {
2437
            if (this.bX[l]) throw '[CKFINDER.fQ.add] The resource name "' + l + '" is already bX.';
2438
            this.bX[l] = m || {};
2439
        },
2440
        eB: function (l) {
2441
            return this.bX[l] || null;
2442
        },
2443
        getPath: function (l) {
2444
            var m = this.jn[l];
2445
            return a.getUrl(m && m.dir || this.basePath + l + '/');
2446
        },
2447
        pi: function (l) {
2448
            var m = this.jn[l];
2449
            return a.getUrl(this.getPath(l) + (m && m.file || this.fileName + '.js'));
2450
        },
2451
        tR: function (l, m, n) {
2452
            l = l.split(',');
2453
            for (var o = 0; o < l.length; o++) {
2454
                var p = l[o];
2455
                this.jn[p] = {
2456
                    dir: m,
2457
                    file: n
2458
                };
2459
            }
2460
        },
2461
        load: function (l, m, n) {
2462
            if (!h.isArray(l)) l = l ? [l] : [];
2463
            var o = this.loaded,
2464
                p = this.bX,
2465
                q = [],
2466
                r = {},
2467
                s = {};
2468
            for (var t = 0; t < l.length; t++) {
2469
                var u = l[t];
2470
                if (!u) continue;
2471
                if (!o[u] && !p[u]) {
2472
                    var v = this.pi(u);
2473
                    q.push(v);
2474
                    if (!(v in r)) r[v] = [];
2475
                    r[v].push(u);
2476
                } else s[u] = this.eB(u);
2477
            }
2478
            a.ec.load(q, function (w, x) {
2479
                if (x.length) throw '[CKFINDER.fQ.load] Resource name "' + r[x[0]].join(',') + '" was not found at "' + x[0] + '".';
2480
                for (var y = 0; y < w.length; y++) {
2481
                    var z = r[w[y]];
2482
                    for (var A = 0; A < z.length; A++) {
2483
                        var B = z[A];
2484
                        s[B] = this.eB(B);
2485
                        o[B] = 1;
2486
                    }
2487
                }
2488
                m.call(n, s);
2489
            }, this);
2490
        }
2491
    };
2492
    a.plugins = new a.fQ('plugins/', 'plugin');
2493
    var l = a.plugins;
2494
    l.load = h.override(l.load, function (m) {
2495
        return function (n, o, p) {
2496
            var q = {},
2497
                r = function (s) {
2498
                    m.call(this, s, function (t) {
2499
                        h.extend(q, t);
2500
                        var u = [];
2501
                        for (var v in t) {
2502
                            var w = t[v],
2503
                                x = w && w.bM;
2504
                            if (x) for (var y = 0; y < x.length; y++) {
2505
                                if (!q[x[y]]) u.push(x[y]);
2506
                            }
2507
                        }
2508
                        if (u.length) r.call(this, u);
2509
                        else {
2510
                            for (v in q) {
2511
                                w = q[v];
2512
                                if (w.onLoad && !w.onLoad.qK) {
2513
                                    w.onLoad();
2514
                                    w.onLoad.qK = 1;
2515
                                }
2516
                            }
2517
                            if (o) o.call(p || window, q);
2518
                        }
2519
                    }, this);
2520
                };
2521
            r.call(this, n);
2522
        };
2523
    });
2524
    l.rX = function (m, n, o) {
2525
2526
2527
        var p = this.eB(m);
2528
        p.lang[n] = o;
2529
    };
2530
    (function () {
2531
        var m = {},
2532
            n = function (o, p) {
2533
                var q = function () {
2534
                    m[o] = 1;
2535
                    p();
2536
                },
2537
                    r = new j('img');
2538
                r.on('load', q);
2539
                r.on('error', q);
2540
                r.setAttribute('src', o);
2541
            };
2542
        a.rw = {
2543
            load: function (o, p) {
2544
                var q = o.length,
2545
                    r = function () {
2546
                        if (--q === 0) p();
2547
                    };
2548
                for (var s = 0; s < o.length; s++) {
2549
                    var t = o[s];
2550
                    if (m[t]) r();
2551
                    else n(t, r);
2552
                }
2553
            }
2554
        };
2555
    })();
2556
    a.skins = (function () {
2557
        var m = {},
2558
            n = {},
2559
            o = {},
2560
            p = function (q, r, s, t) {
2561
                var u = m[r];
2562
                if (!q.skin) {
2563
                    q.skin = u;
2564
                    if (u.bz) u.bz(q);
2565
                }
2566
                var v = function (D) {
2567
                    for (var E = 0; E < D.length; E++) D[E] = a.getUrl(o[r] + D[E]);
2568
                };
2569
                if (!n[r]) {
2570
                    var w = u.ls;
2571
                    if (w && w.length > 0) {
2572
                        v(w);
2573
                        a.rw.load(w, function () {
2574
                            n[r] = 1;
2575
                            p(q, r, s, t);
2576
                        });
2577
                        return;
2578
                    }
2579
                    n[r] = 1;
2580
                }
2581
                s = u[s];
2582
                var x = 0;
2583
                if (s) {
2584
                    if (!s.iB) s.iB = [];
2585
                    else if (s.iB[q.name]) x = 1;
2586
                } else x = 1;
2587
                if (x) t && t();
2588
                else {
2589
                    if (s.eb === undefined) s.eb = [];
2590
                    if (s.eb[q.name] === undefined) s.eb[q.name] = [];
2591
                    var y = s.eb[q.name];
2592
                    y.push(t);
2593
                    if (y.length > 1) return;
2594
                    var z = !s.css || !s.css.length,
2595
                        A = !s.js || !s.js.length,
2596
                        B = function () {
2597
                            if (z && A) {
2598
                                s.iB[q.name] = 1;
2599
                                for (var D = 0; D < y.length; D++) {
2600
                                    if (y[D]) y[D]();
2601
                                }
2602
                            }
2603
                        };
2604
                    if (!z) {
2605
                        if (!s.rr) {
2606
                            v(s.css);
2607
                            s.rr = 1;
2608
                        }
2609
                        if (s.qx) for (var C = 0; C < s.css.length; C++) a.oC.pb(s.css[C]);
2610
                        else q.on('bW', function (D) {
2611
                            if (D.data.space == 'head') for (var E = 0; E < s.css.length; E++) D.data.html += "<link rel='stylesheet' href='" + s.css[E] + "'>\n";
2612
                            D.aF();
2613
                        });
2614
                        z = 1;
2615
                    }
2616
                    if (!A) {
2617
                        v(s.js);
2618
                        q.ec.load(s.js, function () {
2619
                            A = 1;
2620
                            B();
2621
                        });
2622
                    }
2623
                    B();
2624
                }
2625
            };
2626
        return {
2627
            add: function (q, r) {
2628
                m[q] = r;
2629
                r.fh = o[q] || (o[q] = a.getUrl('skins/' + q + '/'));
2630
            },
2631
            loaded: m,
2632
            load: function (q, r, s) {
2633
                var t = q.gd,
2634
                    u = q.fh;
2635
                if (m[t]) {
2636
                    p(q, t, r, s);
2637
                    var v = m[t];
2638
                } else {
2639
                    o[t] = u;
2640
                    a.ec.load(u + 'skin.js', function () {
2641
                        p(q, t, r, s);
2642
                    });
2643
                }
2644
            }
2645
        };
2646
    })();
2647
    a.gc = new a.fQ('gc/', 'theme');
2648
    a.bY = function (m) {
2649
        if (m.bY) return m.bY;
2650
        this._ = {
2651
            jZ: {},
2652
            items: {},
2653
            application: m
2654
        };
2655
        return this;
2656
    };
2657
    var m = a.bY;
2658
    m.prototype = {
2659
        add: function (n, o, p) {
2660
            this._.items[n] = {
2661
                type: o,
2662
                command: p.command || null,
2663
                mp: Array.prototype.slice.call(arguments, 2)
2664
            };
2665
        },
2666
        create: function (n) {
2667
            var s = this;
2668
            var o = s._.items[n],
2669
                p = o && s._.jZ[o.type],
2670
                q = o && o.command && s._.application.cS(o.command),
2671
                r = p && p.create.apply(s, o.mp);
2672
            if (q) q.pW.push(r);
2673
            return r;
2674
        },
2675
        kd: function (n, o) {
2676
            this._.jZ[n] = o;
2677
        }
2678
    };
2679
    (function () {
2680
        var n = 0,
2681
            o = function () {
2682
                var x = 'ckfinder' + ++n;
2683
                return a.instances && a.instances[x] ? o() : x;
2684
            },
2685
            p = {},
2686
            q = function (x) {
2687
                var y = x.config.customConfig;
2688
                if (!y) return false;
2689
                var z = p[y] || (p[y] = {});
2690
                if (z.gg) {
2691
                    z.gg.call(x, x.config);
2692
                    if (x.config.customConfig == y || !q(x)) x.cr('customConfigLoaded');
2693
                } else a.ec.load(y, function () {
2694
                    if (CKFinder.customConfig) z.gg = CKFinder.customConfig;
2695
                    else z.gg = function () {};
2696
                    q(x);
2697
                });
2698
                return true;
2699
            },
2700
            r = function (x, y) {
2701
                x.on('customConfigLoaded', function () {
2702
                    if (y) {
2703
                        if (y.on) for (var z in y.on) x.on(z, y.on[z]);
2704
                        h.extend(x.config, y, true);
2705
                        delete x.config.on;
2706
                    }
2707
                    s(x);
2708
                });
2709
                if (y && y.customConfig != undefined) x.config.customConfig = y.customConfig;
2710
                if (!q(x)) x.cr('customConfigLoaded');
2711
            },
2712
            s = function (x) {
2713
                var y = x.config.skin.split(','),
2714
                    z = y[0],
2715
                    A = a.getUrl(y[1] || 'skins/' + z + '/');
2716
                x.gd = z;
2717
                x.fh = A;
2718
                x.iy = 'cke_skin_' + z + ' skin_' + z;
2719
                x.qn = x.ox();
2720
                x.on('uiReady', function () {
2721
                    x.document.aU().on('lW', function () {
2722
                        h.setCookie('CKFinder_UTime', Math.round(new Date().getTime() / 1000), true);
2723
                        h.setCookie('CKFinder_UId', encodeURIComponent(x.id ? x.id : location.href), true);
2724
                    });
2725
                });
2726
                x.cr('configLoaded');
2727
                t(x);
2728
            },
2729
            t = function (x) {
2730
                a.lang.load(x.config.language, x.config.defaultLanguage, function (y, z) {
2731
                    x.langCode = y;
2732
                    x.lang = h.prototypedCopy(z);
2733
                    x.lB = (function () {
2734
                        var A = "['" + x.lang.DateAmPm.join("','") + "']",
2735
                            B = x.lang.DateTime.replace(/dd|mm|yyyy|hh|HH|MM|aa|d|m|yy|h|H|M|a/g, function (C) {
2736
                                var D;
2737
                                switch (C) {
2738
                                case 'd':
2739
                                    D = "day.replace(/^0/,'')";
2740
                                    break;
2741
                                case 'dd':
2742
                                    D = 'day';
2743
                                    break;
2744
                                case 'm':
2745
                                    D = "month.replace(/^0/,'')";
2746
                                    break;
2747
                                case 'mm':
2748
                                    D = 'month';
2749
                                    break;
2750
                                case 'yy':
2751
                                    D = 'year.substr(2)';
2752
                                    break;
2753
                                case 'yyyy':
2754
                                    D = 'year';
2755
                                    break;
2756
                                case 'H':
2757
                                    D = "hour.replace(/^0/,'')";
2758
                                    break;
2759
                                case 'HH':
2760
                                    D = 'hour';
2761
                                    break;
2762
                                case 'h':
2763
                                    D = "( hour < 12 ? hour : ( ( hour - 12 ) + 100 ).toString().substr( 1 ) ).replace(/^0/,'')";
2764
                                    break;
2765
                                case 'hh':
2766
                                    D = '( hour < 12 ? hour : ( ( hour - 12 ) + 100 ).toString().substr( 1 ) )';
2767
                                    break;
2768
                                case 'M':
2769
                                    D = "minute.replace(/^0/,'')";
2770
                                    break;
2771
                                case 'MM':
2772
                                    D = 'minute';
2773
                                    break;
2774
                                case 'a':
2775
                                    D = A + '[ hour < 12 ? 0 : 1 ].charAt(0)';
2776
                                    break;
2777
                                case 'aa':
2778
                                    D = A + '[ hour < 12 ? 0 : 1 ]';
2779
                                    break;
2780
                                default:
2781
                                    D = "'" + C + "'";
2782
                                }
2783
                                return "'," + D + ",'";
2784
                            });
2785
                        B = "'" + B + "'";
2786
                        B = B.replace(/('',)|,''$/g, '');
2787
                        return new Function('day', 'month', 'year', 'hour', 'minute', 'return [' + B + "].join('');");
2788
                    })();
2789
                    if (e.gecko && e.version < 10900 && x.lang.dir == 'rtl') x.lang.dir = 'ltr';
2790
                    u(x);
2791
                });
2792
            },
2793
            u = function (x) {
2794
                var y = x.config,
2795
                    z = y.plugins,
2796
                    A = y.extraPlugins,
2797
                    B = y.removePlugins;
2798
                if (A) {
2799
                    var C = new RegExp('(?:^|,)(?:' + A.replace(/\s*,\s*/g, '|') + ')(?=,|$)', 'g');
2800
                    z = z.replace(C, '');
2801
                    z += ',' + A;
2802
                }
2803
                if (B) {
2804
                    C = new RegExp('(?:^|,)(?:' + B.replace(/\s*,\s*/g, '|') + ')(?=,|$)', 'g');
2805
                    z = z.replace(C, '');
2806
                }
2807
                l.load(z.split(','), function (D) {
2808
                    var E = [],
2809
                        F = [],
2810
                        G = [];
2811
                    x.plugins = D;
2812
                    for (var H in D) {
2813
                        var I = D[H],
2814
                            J = I.lang,
2815
                            K = l.getPath(H),
2816
                            L = null;
2817
                        D[H].name = H;
2818
                        I.pathName = K;
2819
                        if (J) {
2820
                            L = h.indexOf(J, x.langCode) >= 0 ? x.langCode : J[0];
2821
                            if (!I.lang[L]) G.push(a.getUrl(K + 'lang/' + L + '.js'));
2822
                            else {
2823
                                h.extend(x.lang, I.lang[L]);
2824
                                L = null;
2825
                            }
2826
                        }
2827
                        F.push(L);
2828
                        E.push(I);
2829
                    }
2830
                    a.ec.load(G, function () {
2831
                        var M = ['eK', 'bz', 'gr'];
2832
                        for (var N = 0; N < M.length; N++) for (var O = 0; O < E.length; O++) {
2833
                            var P = E[O];
2834
                            if (N === 0 && F[O] && P.lang) h.extend(x.lang, P.lang[F[O]]);
2835
                            if (P[M[N]]) {
2836
                                a.log('[PLUGIN] ' + P.name + '.' + M[N]);
2837
                                P[M[N]](x);
2838
                            }
2839
                        }
2840
                        x.oW('pluginsLoaded');
2841
                        v(x);
2842
                    });
2843
                });
2844
            },
2845
            v = function (x) {
2846
                a.skins.load(x, 'application', function () {
2847
                    a.skins.load(x, 'host', function () {
2848
                        w(x);
2849
                    });
2850
                });
2851
            },
2852
            w = function (x) {
2853
                var y = x.config.theme;
2854
                a.gc.load(y, function () {
2855
                    var z = x.theme = a.gc.eB(y);
2856
                    z.pathName = a.gc.getPath(y);
2857
                    x.oW('themeAvailable');
2858
                });
2859
            };
2860
        a.application.prototype.iI = function () {
2861
            var x = j.eB(this._.ax),
2862
                y = this._.kw;
2863
            delete this._.ax;
2864
            delete this._.kw;
2865
            this._.ky = {};
2866
            this._.gS = [];
2867
            this.ax = x;
2868
            this.document = null;
2869
            this.rQ = {};
2870
            this.name = o();
2871
            if (this.name in a.instances) throw '[CKFINDER.application] The instance "' + this.name + '" already exists.';
2872
            this.config = h.prototypedCopy(k);
2873
            this.bY = new m(this);
2874
            this.fs = new a.fs(this);
2875
            this.aL = {};
2876
            this.aG = {};
2877
            this.id = this.config.id;
2878
            this.on('uiReady', function (z) {
2879
                this.document.aU().on('lW', this.fH, this);
2880
            }, this);
2881
            this.on('configLoaded', function (z) {
2882
                this.cg = new d(this, y.callback);
2883
            }, this);
2884
            r(this, y);
2885
            a.oW('instanceCreated', null, this);
2886
        };
2887
    })();
2888
    h.extend(a.application.prototype, {
2889
        bD: function (n, o) {
2890
            return this._.ky[n] = new a.command(this, o);
2891
        },
2892
        fH: function (n) {
2893
            var o = this;
2894
            if (!n) o.hS();
2895
            o.theme.fH(o);
2896
            o.oW('fH');
2897
            a.remove(o);
2898
        },
2899
        execCommand: function (n, o) {
2900
            a.log('[COMMAND] ' + n);
2901
            var p = this.cS(n),
2902
                q = {
2903
                    name: n,
2904
                    rm: o,
2905
                    command: p
2906
                };
2907
            if (p && p.bu != a.aY) if (this.oW('beforeCommandExec', q) !== true) {
2908
                q.returnValue = p.exec(q.rm);
2909
                if (!p.async && this.oW('afterCommandExec', q) !== true) return q.returnValue;
2910
            }
2911
            return false;
2912
        },
2913
        cS: function (n) {
2914
            return this._.ky[n];
2915
        },
2916
        ox: function () {
2917
            var n = Math.round(new Date().getTime() / 1000),
2918
                o = h.getCookie('CKFinder_UTime'),
2919
                p = decodeURIComponent(h.getCookie('CKFinder_UId'));
2920
            if (p && o && p == (this.id ? this.id : location.href) && Math.abs(n - o) < 5) return 1;
2921
            return 0;
2922
        },
2923
        bs: ''
2924
    });
2925
    (function () {
2926
        var n = '';
2927
        for (var o = 49; o < 58; o++) n += String.fromCharCode(o);
2928
        for (o = 65; o < 91; o++) {
2929
            if (o == 73 || o == 79) continue;
2930
            n += String.fromCharCode(o);
2931
        }
2932
        a.bs = n;
2933
        a.hf = "\154\x6f";
2934
        a.hg = "\150\157";
2935
    })();
2936
    a.on('loaded', function () {
2937
        var n = a.application.eb;
2938
        if (n) {
2939
            delete a.application.eb;
2940
            for (var o = 0; o < n.length; o++) n[o].iI();
2941
        }
2942
    });
2943
    delete a.dO;
2944
    a.instances = {};
2945
    a.document = new i(document);
2946
    a.oC = a.document.aU().$ != a.document.aU().$.top ? new i(a.document.aU().$.top.document) : a.document;
2947
    a.add = function (n) {
2948
        a.instances[n.name] = n;
2949
        a.jt = n;
2950
        n.on('focus', function () {
2951
            if (a.eq != n) {
2952
                a.eq = n;
2953
                a.oW('eq');
2954
            }
2955
        });
2956
        n.on('blur', function () {
2957
            if (a.eq == n) {
2958
                a.eq = null;
2959
                a.oW('eq');
2960
            }
2961
        });
2962
    };
2963
    a.remove = function (n) {
2964
        delete a.instances[n.name];
2965
    };
2966
    a.aL = {};
2967
    a.eV = 1;
2968
    a.aS = 2;
2969
    a.aY = 0;
2970
    a.bF = '';
2971
    (function () {
2972
        function n(q, r) {
2973
            return q + '.' + (r.name || r || q);
2974
        };
2975
        a.aG = {
2976
            bX: {},
2977
            hi: function (q, r, s) {
2978
                var t = n(q, r);
2979
                if (this.bX[t] !== undefined) throw '[CKFINDER] Widget ' + t + ' already bX!';
2980
                a.log('[WIDGET] bX ' + t);
2981
                this.bX[t] = new p(t, s);
2982
                return this.bX[t];
2983
            },
2984
            bz: function (q, r, s, t, u) {
2985
                var v = n(r, s),
2986
                    w = this.bX[v],
2987
                    x = h.deepCopy(w.hF),
2988
                    y = function (B, C, D) {
2989
                        this.app = B;
2990
                        this.eh = C instanceof j ? C : new j(C);
2991
                        this.hF = x ? h.extend(x, D) : D || {};
2992
                        this._ = {};
2993
                        var E = function (H) {
2994
                            this.widget = H;
2995
                        };
2996
                        E.prototype = this.tools;
2997
                        this.tools = new E(this);
2998
                        var F = w.dT;
2999
                        if (F.length) for (var G = 0; G < F.length; G++) F[G].call(this, B, this);
3000
                    };
3001
                y.prototype = w;
3002
                var z = new y(q, t, u);
3003
                for (var A in z.fw) z.gA(A);
3004
                if (!q.aG[v]) q.aG[v] = [];
3005
                q.aG[v].push(z);
3006
                a.log('[WIDGET] instanced ' + v);
3007
                return z;
3008
            }
3009
        };
3010
        var o = {
3011
            click: 1,
3012
            mouseover: 1,
3013
            mouseout: 1,
3014
            focus: 1,
3015
            blur: 1,
3016
            submit: 1,
3017
            dblclick: 1,
3018
            mousedown: 1,
3019
            mouseup: 1,
3020
            mousemove: 1,
3021
            keypress: 1,
3022
            keydown: 1,
3023
            keyup: 1,
3024
            load: 1,
3025
            lW: 1,
3026
            abort: 1,
3027
            error: 1,
3028
            resize: 1,
3029
            scroll: 1,
3030
            select: 1,
3031
            change: 1,
3032
            reset: 1
3033
        },
3034
            p = function (q, r) {
3035
                var s = this;
3036
                s.id = q;
3037
                s.fw = {};
3038
                s.hF = r || {};
3039
                s.dT = [];
3040
                s.tools = new s.tools(s);
3041
            };
3042
        p.prototype = {
3043
            gA: function (q) {
3044
                var v = this;
3045
                a.log('[WIDGET] Enabling behavior ' + q);
3046
                var r = v.fw[q];
3047
                if (!r) return;
3048
                var s = v;
3049
                for (var t = 0; t < r.cC.length; t++) {
3050
                    var u = r.cC[t];
3051
                    if (o[u]) v.eh.on(u, r.fO, s);
3052
                    else {
3053
                        v.on(u, r.fO, s);
3054
                        v.app.on(u, r.fO, s);
3055
                    }
3056
                }
3057
            },
3058
            ke: function (q) {
3059
                a.log('[WIDGET] Disabling behavior ' + q);
3060
                var r = this.fw[q];
3061
                if (!r) return;
3062
                for (var s = 0; s < r.cC.length; s++) {
3063
                    var t = r.cC[s];
3064
                    if (o[t]) this.eh.aF(t, r.fO);
3065
                    else this.aF(t, r.fO);
3066
                }
3067
            },
3068
            bh: function (q, r, s) {
3069
                if (!h.isArray(r)) r = [r];
3070
                this.fw[q] = {
3071
                    cC: r,
3072
                    fO: s
3073
                };
3074
                if (this.eh) this.gA(q);
3075
            },
3076
            removeBehavior: function (q) {
3077
                delete this.fw[q];
3078
            },
3079
            ur: function () {
3080
                return this.fw;
3081
            },
3082
            bn: function () {
3083
                return this.eh;
3084
            },
3085
            oE: function () {
3086
                return this.hF;
3087
            },
3088
            data: function () {
3089
                return this.hF;
3090
            },
3091
            tools: function () {}
3092
        };
3093
        p.prototype.tools.prototype = {
3094
            kg: function (q) {
3095
                if (q.target == this.widget.eh) return 1;
3096
            }
3097
        };
3098
        a.event.du(p.prototype);
3099
    })();
3100
    a.xml = function (n) {
3101
        var o = null;
3102
        if (typeof n == 'object') o = n;
3103
        else {
3104
            var p = (n || '').replace(/&nbsp;/g, '\xa0');
3105
            if (window.DOMParser) o = new DOMParser().parseFromString(p, 'text/xml');
3106
            else if (window.ActiveXObject) {
3107
                try {
3108
                    o = new ActiveXObject('MSXML2.DOMDocument');
3109
                } catch (q) {
3110
                    try {
3111
                        o = new ActiveXObject('Microsoft.XmlDom');
3112
                    } catch (q) {}
3113
                }
3114
                if (o) {
3115
                    o.async = false;
3116
                    o.uT = false;
3117
                    o.sm = false;
3118
                    o.uo(p);
3119
                }
3120
            }
3121
        }
3122
        this.mq = o;
3123
    };
3124
    a.xml.prototype = {
3125
        selectSingleNode: function (n, o) {
3126
            var p = this.mq;
3127
            if (o || (o = p)) if (f || o.selectSingleNode) return o.selectSingleNode(n);
3128
            else if (p.evaluate) {
3129
                var q = p.evaluate(n, o, null, 9, null);
3130
                return q && q.singleNodeValue || null;
3131
            }
3132
            return null;
3133
        },
3134
        selectNodes: function (n, o) {
3135
            var p = this.mq,
3136
                q = [];
3137
            if (o || (o = p)) if (f || o.selectNodes) return o.selectNodes(n);
3138
            else if (p.evaluate) {
3139
                var r = p.evaluate(n, o, null, 5, null);
3140
                if (r) {
3141
                    var s;
3142
                    while (s = r.iterateNext()) q.push(s);
3143
                }
3144
            }
3145
            return q;
3146
        },
3147
        vB: function (n, o) {
3148
            var p = this.selectSingleNode(n, o),
3149
                q = [];
3150
            if (p) {
3151
                p = p.firstChild;
3152
                while (p) {
3153
                    if (p.xml) q.push(p.xml);
3154
                    else if (window.XMLSerializer) q.push(new XMLSerializer().serializeToString(p));
3155
                    p = p.nextSibling;
3156
                }
3157
            }
3158
            return q.length ? q.join('') : null;
3159
        }
3160
    };
3161
    (function () {
3162
        var n = {
3163
            address: 1,
3164
            tY: 1,
3165
            dl: 1,
3166
            h1: 1,
3167
            h2: 1,
3168
            h3: 1,
3169
            h4: 1,
3170
            h5: 1,
3171
            h6: 1,
3172
            p: 1,
3173
            pre: 1,
3174
            li: 1,
3175
            dt: 1,
3176
            de: 1
3177
        },
3178
            o = {
3179
                body: 1,
3180
                div: 1,
3181
                table: 1,
3182
                tbody: 1,
3183
                tr: 1,
3184
                td: 1,
3185
                th: 1,
3186
                caption: 1,
3187
                form: 1
3188
            },
3189
            p = function (q) {
3190
                var r = q.getChildren();
3191
                for (var s = 0, t = r.count(); s < t; s++) {
3192
                    var u = r.getItem(s);
3193
                    if (u.type == a.cv && a.ga.um[u.getName()]) return true;
3194
                }
3195
                return false;
3196
            };
3197
        g.qS = function (q) {
3198
            var w = this;
3199
            var r = null,
3200
                s = null,
3201
                t = [],
3202
                u = q;
3203
            while (u) {
3204
                if (u.type == a.cv) {
3205
                    if (!w.qH) w.qH = u;
3206
                    var v = u.getName();
3207
                    if (f && u.$.scopeName != 'HTML') v = u.$.scopeName.toLowerCase() + ':' + v;
3208
                    if (!s) {
3209
                        if (!r && n[v]) r = u;
3210
                        if (o[v]) if (!r && v == 'div' && !p(u)) r = u;
3211
                        else s = u;
3212
                    }
3213
                    t.push(u);
3214
                    if (v == 'body') break;
3215
                }
3216
                u = u.getParent();
3217
            }
3218
            w.block = r;
3219
            w.tX = s;
3220
            w.elements = t;
3221
        };
3222
    })();
3223
    g.qS.prototype = {
3224
        sJ: function (n) {
3225
            var o = this.elements,
3226
                p = n && n.elements;
3227
            if (!p || o.length != p.length) return false;
3228
            for (var q = 0; q < o.length; q++) {
3229
                if (!o[q].equals(p[q])) return false;
3230
            }
3231
            return true;
3232
        }
3233
    };
3234
    g.text = function (n, o) {
3235
        if (typeof n == 'string') n = (o ? o.$ : document).createTextNode(n);
3236
        this.$ = n;
3237
    };
3238
    g.text.prototype = new g.bi();
3239
    h.extend(g.text.prototype, {
3240
        type: a.fl,
3241
        hJ: function () {
3242
            return this.$.nodeValue.length;
3243
        },
3244
        getText: function () {
3245
            return this.$.nodeValue;
3246
        },
3247
        split: function (n) {
3248
            var s = this;
3249
            if (f && n == s.hJ()) {
3250
                var o = s.getDocument().jT('');
3251
                o.kB(s);
3252
                return o;
3253
            }
3254
            var p = s.getDocument(),
3255
                q = new g.text(s.$.splitText(n), p);
3256
            if (e.ie8) {
3257
                var r = new g.text('', p);
3258
                r.kB(q);
3259
                r.remove();
3260
            }
3261
            return q;
3262
        },
3263
        substring: function (n, o) {
3264
            if (typeof o != 'number') return this.$.nodeValue.substr(n);
3265
            else return this.$.nodeValue.substring(n, o);
3266
        }
3267
    });
3268
    g.pa = function (n) {
3269
        n = n || a.document;
3270
        this.$ = n.$.createDocumentFragment();
3271
    };
3272
    h.extend(g.pa.prototype, j.prototype, {
3273
        type: a.om,
3274
        kA: function (n) {
3275
            n = n.$;
3276
            n.parentNode.insertBefore(this.$, n.nextSibling);
3277
        }
3278
    }, true, {
3279
        append: 1,
3280
        pd: 1,
3281
        getFirst: 1,
3282
        dB: 1,
3283
        appendTo: 1,
3284
        jg: 1,
3285
        insertBefore: 1,
3286
        kA: 1,
3287
        replace: 1,
3288
        trim: 1,
3289
        type: 1,
3290
        ltrim: 1,
3291
        rtrim: 1,
3292
        getDocument: 1,
3293
        iu: 1,
3294
        aC: 1,
3295
        getChildren: 1
3296
    });
3297
    (function () {
3298
        function n(r, s) {
3299
            if (this._.end) return null;
3300
            var t, u = this.mk,
3301
                v, w = this.vR,
3302
                x = this.type,
3303
                y = r ? 'getPreviousSourceNode' : 'getNextSourceNode';
3304
            if (!this._.start) {
3305
                this._.start = 1;
3306
                u.trim();
3307
                if (u.collapsed) {
3308
                    this.end();
3309
                    return null;
3310
                }
3311
            }
3312
            if (!r && !this._.kp) {
3313
                var z = u.endContainer,
3314
                    A = z.aC(u.endOffset);
3315
                this._.kp = function (E, F) {
3316
                    return (!F || !z.equals(E)) && (!A || !E.equals(A)) && (E.type != a.cv || E.getName() != 'body');
3317
                };
3318
            }
3319
            if (r && !this._.ka) {
3320
                var B = u.startContainer,
3321
                    C = u.startOffset > 0 && B.aC(u.startOffset - 1);
3322
                this._.ka = function (E, F) {
3323
                    return (!F || !B.equals(E)) && (!C || !E.equals(C)) && (E.type != a.cv || E.getName() != 'body');
3324
                };
3325
            }
3326
            var D = r ? this._.ka : this._.kp;
3327
            if (w) v = function (E, F) {
3328
                if (D(E, F) === false) return false;
3329
                return w(E);
3330
            };
3331
            else v = D;
3332
            if (this.current) t = this.current[y](false, x, v);
3333
            else if (r) {
3334
                t = u.endContainer;
3335
                if (u.endOffset > 0) {
3336
                    t = t.aC(u.endOffset - 1);
3337
                    if (v(t) === false) t = null;
3338
                } else t = v(t) === false ? null : t.hZ(true, x, v);
3339
            } else {
3340
                t = u.startContainer;
3341
                t = t.aC(u.startOffset);
3342
                if (t) {
3343
                    if (v(t) === false) t = null;
3344
                } else t = v(u.startContainer) === false ? null : u.startContainer.hL(true, x, v);
3345
            }
3346
            while (t && !this._.end) {
3347
                this.current = t;
3348
                if (!this.lf || this.lf(t) !== false) {
3349
                    if (!s) return t;
3350
                } else if (s && this.lf) return false;
3351
                t = t[y](false, x, v);
3352
            }
3353
            this.end();
3354
            return this.current = null;
3355
        };
3356
3357
        function o(r) {
3358
            var s, t = null;
3359
            while (s = n.call(this, r)) t = s;
3360
            return t;
3361
        };
3362
        g.gm = h.createClass({
3363
            $: function (r) {
3364
                this.mk = r;
3365
                this._ = {};
3366
            },
3367
            ej: {
3368
                end: function () {
3369
                    this._.end = 1;
3370
                },
3371
                next: function () {
3372
                    return n.call(this);
3373
                },
3374
                previous: function () {
3375
                    return n.call(this, true);
3376
                },
3377
                sC: function () {
3378
                    return n.call(this, false, true) !== false;
3379
                },
3380
                sD: function () {
3381
                    return n.call(this, true, true) !== false;
3382
                },
3383
                uF: function () {
3384
                    return o.call(this);
3385
                },
3386
                uB: function () {
3387
                    return o.call(this, true);
3388
                },
3389
                reset: function () {
3390
                    delete this.current;
3391
                    this._ = {};
3392
                }
3393
            }
3394
        });
3395
        var p = {
3396
            block: 1,
3397
            'list-item': 1,
3398
            table: 1,
3399
            'table-row-group': 1,
3400
            'table-header-group': 1,
3401
            'table-footer-group': 1,
3402
            'table-row': 1,
3403
            'table-column-group': 1,
3404
            'table-column': 1,
3405
            'table-cell': 1,
3406
            'table-caption': 1
3407
        },
3408
            q = {
3409
                hr: 1
3410
            };
3411
        j.prototype.qy = function (r) {
3412
            var s = h.extend({}, q, r || {});
3413
            return p[this.getComputedStyle('display')] || s[this.getName()];
3414
        };
3415
        g.gm.pQ = function (r) {
3416
            return function (s, t) {
3417
                return !(s.type == a.cv && s.qy(r));
3418
            };
3419
        };
3420
        g.gm.us = function () {
3421
            return this.pQ({
3422
                br: 1
3423
            });
3424
        };
3425
        g.gm.tU = function (r) {}, g.gm.tW = function (r, s) {
3426
            function t(u) {
3427
                return u && u.getName && u.getName() == 'span' && u.hasAttribute('_fck_bookmark');
3428
            };
3429
            return function (u) {
3430
                var v, w;
3431
                v = u && !u.getName && (w = u.getParent()) && t(w);
3432
                v = r ? v : v || t(u);
3433
                return s ^ v;
3434
            };
3435
        };
3436
        g.gm.sf = function (r) {
3437
            return function (s) {
3438
                var t = s && s.type == a.fl && !h.trim(s.getText());
3439
                return r ^ t;
3440
            };
3441
        };
3442
    })();
3443
    (function () {
3444
        var n = f && e.version < 7 ? a.basePath + 'images/spacer.gif' : 'about:blank',
3445
            o = j.et('<div style="width:0px;height:0px;position:absolute;left:-10000px;background-image:url(' + n + ')"></div>', a.document);
3446
        o.appendTo(a.document.eD());
3447
        try {
3448
            e.hc = o.getComputedStyle('background-image') == 'none';
3449
        } catch (p) {
3450
            e.hc = false;
3451
        }
3452
        if (e.hc) e.cssClass += ' cke_hc';
3453
        o.remove();
3454
    })();
3455
    l.load(k.pO.split(','), function () {
3456
        a.status = 'loaded';
3457
        a.oW('loaded');
3458
        var n = a._.io;
3459
        if (n) {
3460
            delete a._.io;
3461
            for (var o = 0; o < n.length; o++) a.add(n[o]);
3462
        }
3463
    });
3464
    if (f) try {
3465
        document.execCommand('BackgroundImageCache', false, true);
3466
    } catch (n) {}
3467
    CKFinder.lang.en = {
3468
        appTitle: 'CKFinder',
3469
        common: {
3470
            unavailable: '%1<span class="cke_accessibility">, unavailable</span>',
3471
            confirmCancel: 'Some of the options have been changed. Are you sure to close the dialog?',
3472
            ok: 'OK',
3473
            cancel: 'Cancel',
3474
            confirmationTitle: 'Confirmation',
3475
            messageTitle: 'Information',
3476
            inputTitle: 'Question',
3477
            undo: 'Undo',
3478
            redo: 'Redo',
3479
            skip: 'Skip',
3480
            skipAll: 'Skip all',
3481
            makeDecision: 'What action should be taken?',
3482
            rememberDecision: 'Remember my decision'
3483
        },
3484
        dir: 'ltr',
3485
        HelpLang: 'en',
3486
        LangCode: 'en',
3487
        DateTime: 'm/d/yyyy h:MM aa',
3488
        DateAmPm: ['AM', 'PM'],
3489
        FoldersTitle: 'Folders',
3490
        FolderLoading: 'Loading...',
3491
        FolderNew: 'Please type the new folder name: ',
3492
        FolderRename: 'Please type the new folder name: ',
3493
        FolderDelete: 'Are you sure you want to delete the "%1" folder?',
3494
        FolderRenaming: ' (Renaming...)',
3495
        FolderDeleting: ' (Deleting...)',
3496
        FileRename: 'Please type the new file name: ',
3497
        FileRenameExt: 'Are you sure you want to change the file name extension? The file may become unusable',
3498
        FileRenaming: 'Renaming...',
3499
        FileDelete: 'Are you sure you want to delete the file "%1"?',
3500
        FilesLoading: 'Loading...',
3501
        FilesEmpty: 'Empty folder',
3502
        FilesMoved: 'File %1 moved into %2:%3',
3503
        FilesCopied: 'File %1 copied into %2:%3',
3504
        BasketFolder: 'Basket',
3505
        BasketClear: 'Clear Basket',
3506
        BasketRemove: 'Remove from basket',
3507
        BasketOpenFolder: 'Open parent folder',
3508
        BasketTruncateConfirm: 'Do you really want to remove all files from the basket?',
3509
        BasketRemoveConfirm: 'Do you really want to remove the file "%1" from the basket?',
3510
        BasketEmpty: "No files in the basket, drag'n'drop some.",
3511
        BasketCopyFilesHere: 'Copy Files from Basket',
3512
        BasketMoveFilesHere: 'Move Files from Basket',
3513
        BasketPasteErrorOther: 'File %s error: %e',
3514
        BasketPasteMoveSuccess: 'The following files were moved: %s',
3515
        BasketPasteCopySuccess: 'The following files were copied: %s',
3516
        Upload: 'Upload',
3517
        UploadTip: 'Upload New File',
3518
        Refresh: 'Refresh',
3519
        Settings: 'Settings',
3520
        Help: 'Help',
3521
        HelpTip: 'Help',
3522
        Select: 'Select',
3523
        SelectThumbnail: 'Select Thumbnail',
3524
        View: 'View',
3525
        Download: 'Download',
3526
        NewSubFolder: 'New Subfolder',
3527
        Rename: 'Rename',
3528
        Delete: 'Delete',
3529
        CopyDragDrop: 'Copy file here',
3530
        MoveDragDrop: 'Move file here',
3531
        RenameDlgTitle: 'Rename',
3532
        NewNameDlgTitle: 'New name',
3533
        FileExistsDlgTitle: 'File already exists',
3534
        SysErrorDlgTitle: 'System error',
3535
        FileOverwrite: 'Overwrite',
3536
        FileAutorename: 'Auto-rename',
3537
        OkBtn: 'OK',
3538
        CancelBtn: 'Cancel',
3539
        CloseBtn: 'Close',
3540
        UploadTitle: 'Upload New File',
3541
        UploadSelectLbl: 'Select the file to upload',
3542
        UploadProgressLbl: '(Upload in progress, please wait...)',
3543
        UploadBtn: 'Upload Selected File',
3544
        UploadBtnCancel: 'Cancel',
3545
        UploadNoFileMsg: 'Please select a file gJ your computer',
3546
        UploadNoFolder: 'Please select folder before uploading.',
3547
        UploadNoPerms: 'File upload not allowed.',
3548
        UploadUnknError: 'Error sending the file.',
3549
        UploadExtIncorrect: 'File extension not allowed in this folder.',
3550
        SetTitle: 'Settings',
3551
        SetView: 'View:',
3552
        SetViewThumb: 'Thumbnails',
3553
        SetViewList: 'List',
3554
        SetDisplay: 'Display:',
3555
        SetDisplayName: 'File Name',
3556
        SetDisplayDate: 'Date',
3557
        SetDisplaySize: 'File Size',
3558
        SetSort: 'Sorting:',
3559
        SetSortName: 'by File Name',
3560
        SetSortDate: 'by Date',
3561
        SetSortSize: 'by Size',
3562
        FilesCountEmpty: '<Empty Folder>',
3563
        FilesCountOne: '1 file',
3564
        FilesCountMany: '%1 files',
3565
        Kb: '%1 kB',
3566
        KbPerSecond: '%1 kB/s',
3567
        ErrorUnknown: 'It was not possible to complete the request. (Error %1)',
3568
        Errors: {
3569
            10: 'Invalid command.',
3570
            11: 'The resource type was not specified in the request.',
3571
            12: 'The requested resource type is not valid.',
3572
            102: 'Invalid file or folder name.',
3573
            103: 'It was not possible to complete the request due to authorization restrictions.',
3574
            104: 'It was not possible to complete the request due to file system permission restrictions.',
3575
            105: 'Invalid file extension.',
3576
            109: 'Invalid request.',
3577
            110: 'Unknown error.',
3578
            115: 'A file or folder with the same name already exists.',
3579
            116: 'Folder not found. Please refresh and try again.',
3580
            117: 'File not found. Please refresh the files list and try again.',
3581
            118: 'Source and target paths are equal.',
3582
            201: 'A file with the same name is already available. The uploaded file has been renamed to "%1"',
3583
            202: 'Invalid file',
3584
            203: 'Invalid file. The file size is too big.',
3585
            204: 'The uploaded file is corrupt.',
3586
            205: 'No temporary folder is available for upload in the server.',
3587
            206: 'Upload cancelled for security reasons. The file contains HTML like data.',
3588
            207: 'The uploaded file has been renamed to "%1"',
3589
            300: 'Moving file(s) failed.',
3590
            301: 'Copying file(s) failed.',
3591
            500: 'The file browser is disabled for security reasons. Please contact your system administrator and check the CKFinder configuration file.',
3592
            501: 'The thumbnails support is disabled.'
3593
        },
3594
        ErrorMsg: {
3595
            pg: 'The file name cannot be empty',
3596
            FileExists: 'File %s already exists',
3597
            pU: 'The folder name cannot be empty',
3598
            oP: 'The file name cannot contain any of the following characters: \n\\ / : * ? " < > |',
3599
            pM: 'The folder name cannot contain any of the following characters: \n\\ / : * ? " < > |',
3600
            oo: 'It was not possible to open the file in a new window. Please configure your browser and disable all popup blockers for this site.'
3601
        },
3602
        Imageresize: {
3603
            dialogTitle: 'Resize %s',
3604
            sizeTooBig: 'Cannot set image height or width to a value bigger than the original size (%size).',
3605
            resizeSuccess: 'Image resized successfully.',
3606
            thumbnailNew: 'Create new thumbnail',
3607
            thumbnailSmall: 'Small (%s)',
3608
            thumbnailMedium: 'Medium (%s)',
3609
            thumbnailLarge: 'Large (%s)',
3610
            newSize: 'Set new size',
3611
            width: 'Width',
3612
            height: 'Height',
3613
            invalidHeight: 'Invalid height.',
3614
            invalidWidth: 'Invalid width.',
3615
            invalidName: 'Invalid file name.',
3616
            newImage: 'Create new image',
3617
            noExtensionChange: 'The file extension cannot be changed.',
3618
            imageSmall: 'Source image is too small',
3619
            contextMenuName: 'Resize'
3620
        },
3621
        Fileeditor: {
3622
            save: 'Save',
3623
            fileOpenError: 'Unable to open file.',
3624
            fileSaveSuccess: 'File saved successfully.',
3625
            contextMenuName: 'Edit',
3626
            loadingFile: 'Loading file, please wait...'
3627
        }
3628
    };
3629
    (function () {
3630
        var o = 1,
3631
            p = 2,
3632
            q = 4,
3633
            r = 8,
3634
            s = 16,
3635
            t = 32,
3636
            u = 64,
3637
            v = 128;
3638
        a.aL.Acl = function (w) {
3639
            var x = this;
3640
            if (!w) w = 0;
3641
            x.folderView = (w & o) == o;
3642
            x.folderCreate = (w & p) == p;
3643
            x.folderRename = (w & q) == q;
3644
            x.folderDelete = (w & r) == r;
3645
            x.fileView = (w & s) == s;
3646
            x.fileUpload = (w & t) == t;
3647
            x.fileRename = (w & u) == u;
3648
            x.fileDelete = (w & v) == v;
3649
        };
3650
        l.add('acl');
3651
    })();
3652
    (function () {
3653
        l.add('connector', {
3654
            bM: [],
3655
            bz: function (p) {
3656
                p.on('appReady', function () {
3657
                    p.connector = new a.aL.Connector(p);
3658
                    var q = p.config.resourceType,
3659
                        r = q ? {
3660
                            type: q
3661
                        } : null;
3662
                    p.connector.sendCommand('Init', r, function (s) {
3663
                        if (s.checkError()) return;
3664
                        var t = "\103\x6f\156\156\145\143\x74\x6f\x72\x2f\103\x6f\x6e\x6e\x65\x63\x74\x6f\x72\x49\x6e\x66\x6f\x2f";
3665
                        a.ed = s.selectSingleNode(t + "\x40\163").value;
3666
                        a.bF = s.selectSingleNode(t + "\100\x63").value + '----';
3667
                        p.config.thumbsEnabled = s.selectSingleNode(t + "\100\164\150\165\x6d\x62\x73\x45\x6e\141\142\x6c\145\x64").value == 'true';
3668
                        p.config.thumbsDirectAccess = false;
3669
                        if (p.config.thumbsEnabled) {
3670
                            var u;
3671
                            u = s.selectSingleNode(t + "\100\x74\x68\165\x6d\x62\x73\x55\x72\x6c");
3672
                            if (u) p.config.thumbsUrl = u.value;
3673
                            u = s.selectSingleNode(t + "\x40\x74\x68\165\x6d\142\x73\104\x69\x72\x65\143\x74\101\143\x63\x65\163\163");
3674
                            if (u) p.config.thumbsDirectAccess = u.value == 'true';
3675
                        }
3676
                        p.config.imagesMaxWidth = parseInt(s.selectSingleNode(t + "\x40\151\x6d\147\127\151\144\x74\x68").value, 10);
3677
                        p.config.imagesMaxHeight = parseInt(s.selectSingleNode(t + "\100\151\155\x67\x48\x65\151\x67\150\x74").value, 10);
3678
                        var v = s.selectSingleNode(t + "\x40\160\154\x75\147\151\x6e\163"),
3679
                            w = v && v.value;
3680
                        if (w && w.length) l.load(w.split(','), function (x) {
3681
                            var y = [],
3682
                                z = [],
3683
                                A = [];
3684
                            for (var B in x) {
3685
                                var C = x[B],
3686
                                    D = C.lang,
3687
                                    E = l.getPath(B),
3688
                                    F = null;
3689
                                if (!p.plugins[B]) p.plugins[B] = x[B];
3690
                                else continue;
3691
                                x[B].name = B;
3692
                                C.pathName = E;
3693
                                if (D) {
3694
                                    F = h.indexOf(D, p.langCode) >= 0 ? p.langCode : D[0];
3695
                                    if (!C.lang[F]) A.push(a.getUrl(E + 'lang/' + F + '.js'));
3696
                                    else {
3697
                                        h.extend(p.lang, C.lang[F]);
3698
                                        F = null;
3699
                                    }
3700
                                }
3701
                                z.push(F);
3702
                                y.push(C);
3703
                            }
3704
                            a.ec.load(A, function () {
3705
                                var G = ['eK', 'bz', 'gr'];
3706
                                for (var H = 0; H < G.length; H++) for (var I = 0; I < y.length; I++) {
3707
                                    var J = y[I];
3708
                                    if (H === 0 && z[I] && J.lang) h.extend(p.lang, J.lang[z[I]]);
3709
                                    if (J[G[H]]) {
3710
                                        a.log('[PLUGIN] ' + J.name + '.' + G[H]);
3711
                                        J[G[H]](p);
3712
                                    }
3713
                                }
3714
                                p.cr('uiReady');
3715
                                p.cr('appReady');
3716
                                p.oW('pluginsLoaded', {
3717
                                    step: 2,
3718
                                    jN: p.connector
3719
                                });
3720
                                p.cr('connectorInitialized', {
3721
                                    xml: s
3722
                                });
3723
                            });
3724
                        });
3725
                        else {
3726
                            p.oW('pluginsLoaded', {
3727
                                step: 2,
3728
                                jN: p.connector
3729
                            });
3730
                            p.cr('connectorInitialized', {
3731
                                xml: s
3732
                            });
3733
                        }
3734
                    });
3735
                });
3736
            }
3737
        });
3738
        a.aL.Connector = function (p) {
3739
            this.app = p;
3740
            var q = p.config.connectorLanguage || 'php';
3741
            this.oN = a.basePath + 'core/connector/' + q + '/connector.' + q;
3742
        };
3743
        a.aL.Connector.prototype = {
3744
            ERROR_NONE: 0,
3745
            ERROR_CUSTOMERROR: 1,
3746
            ERROR_INVALIDCOMMAND: 10,
3747
            ERROR_TYPENOTSPECIFIED: 11,
3748
            ERROR_INVALIDTYPE: 12,
3749
            ERROR_INVALIDNAME: 102,
3750
            ERROR_UNAUTHORIZED: 103,
3751
            ERROR_ACCESSDENIED: 104,
3752
            ERROR_INVALIDEXTENSION: 105,
3753
            ERROR_INVALIDREQUEST: 109,
3754
            ERROR_UNKNOWN: 110,
3755
            ERROR_ALREADYEXIST: 115,
3756
            ERROR_FOLDERNOTFOUND: 116,
3757
            ERROR_FILENOTFOUND: 117,
3758
            ERROR_SOURCE_AND_TARGET_PATH_EQUAL: 118,
3759
            ERROR_UPLOADEDFILERENAMED: 201,
3760
            ERROR_UPLOADEDINVALID: 202,
3761
            ERROR_UPLOADEDTOOBIG: 203,
3762
            ERROR_UPLOADEDCORRUPT: 204,
3763
            ERROR_UPLOADEDNOTMPDIR: 205,
3764
            ERROR_UPLOADEDWRONGHTMLFILE: 206,
3765
            ERROR_UPLOADEDINVALIDNAMERENAMED: 207,
3766
            ERROR_MOVE_FAILED: 300,
3767
            ERROR_COPY_FAILED: 301,
3768
            ERROR_CONNECTORDISABLED: 500,
3769
            ERROR_THUMBNAILSDISABLED: 501,
3770
            currentFolderUrl: function () {
3771
                if (this.app.aV) return this.app.aV.getUrl();
3772
            },
3773
            currentType: function () {
3774
                if (this.app.aV) return this.app.aV.type;
3775
            },
3776
            currentTypeHash: function () {
3777
                if (this.app.aV) return a.getResourceType(this.app.aV.type).hash;
3778
            },
3779
            currentResourceType: function () {
3780
                return a.getResourceType(this.currentType());
3781
            },
3782
            sendCommand: function (p, q, r, s, t) {
3783
                var u = this.composeUrl(p, q, s, t),
3784
                    v = this;
3785
                if (r) return a.ajax.loadXml(u, function (w) {
3786
                    w.hy = v.app;
3787
                    r(h.extend(w, o));
3788
                });
3789
                else return a.ajax.loadXml(u);
3790
            },
3791
            sendCommandPost: function (p, q, r, s, t, u) {
3792
                var v = this.composeUrl(p, q, t, u),
3793
                    w = this;
3794
                if (!r) r = {};
3795
                r.CKFinderCommand = true;
3796
                if (s) return a.ajax.loadXml(v, function (x) {
3797
                    x.hy = w.app;
3798
                    s(h.extend(x, o));
3799
                }, this.composeUrlParams(r));
3800
                else return a.ajax.loadXml(v, null, this.composeUrlParams(r));
3801
            },
3802
            composeUrl: function (p, q, r, s) {
3803
                var v = this;
3804
                var t = v.oN + '?command=' + encodeURIComponent(p);
3805
                if (p != 'Init') {
3806
                    var u = '';
3807
                    if (!s) s = v.app.aV;
3808
                    if (r) u = v.app.getResourceType(r).hash;
3809
                    else u = v.app.getResourceType(s.type).hash;
3810
                    t += '&type=' + encodeURIComponent(r || v.app.aV.type) + '&currentFolder=' + encodeURIComponent(s.getPath() || '') + '&langCode=' + v.app.langCode + '&hash=' + u;
3811
                }
3812
                if (q) t += '&' + v.composeUrlParams(q);
3813
                if (v.app.id) t += '&id=' + encodeURIComponent(v.app.id);
3814
                return t;
3815
            },
3816
            composeUrlParams: function (p) {
3817
                if (!p) return '';
3818
                var q = '';
3819
                for (var r in p) {
3820
                    if (q.length) q += '&';
3821
                    q += encodeURIComponent(r) + '=' + encodeURIComponent(p[r]);
3822
                }
3823
                return q;
3824
            }
3825
        };
3826
        var o = {
3827
            checkError: function () {
3828
                var v = this;
3829
                var p = v.getErrorNumber(),
3830
                    q = v.hy.connector;
3831
                if (p == q.ERROR_NONE) return false;
3832
                if (p === -1) return true;
3833
                var r = v.getErrorMessage();
3834
                a.log('[ERROR] ' + p);
3835
                var s;
3836
                if (p == q.ERROR_CUSTOMERROR) s = r;
3837
                else {
3838
                    s = v.hy.lang.Errors[p];
3839
                    if (s) for (var t = 0; t <= arguments.length; t++) {
3840
                        var u = t === 0 ? r : arguments[t - 1];
3841
                        s = s.replace(/%(\d+)/, u);
3842
                    } else s = v.hy.lang.ErrorUnknown.replace(/%1/, p);
3843
                }
3844
                v.hy.msgDialog('', s);
3845
                return p != q.ERROR_UPLOADEDFILERENAMED;
3846
            },
3847
            getErrorNumber: function () {
3848
                var p = this.selectSingleNode && this.selectSingleNode('Connector/Error/@number');
3849
                if (!p) return -1;
3850
                return parseInt(p.value, 10);
3851
            },
3852
            getErrorMessage: function () {
3853
                var p = this.selectSingleNode && this.selectSingleNode('Connector/Error/@text');
3854
                if (!p) return '';
3855
                return p.value;
3856
            }
3857
        };
3858
    })();
3859
    l.add('resource', {
3860
        bM: ['connector'],
3861
        bz: function (o) {
3862
            o.resourceTypes = [];
3863
            o.on('connectorInitialized', function (p) {
3864
                var q = p.data.xml.selectNodes('Connector/ResourceTypes/ResourceType');
3865
                for (var r = 0; r < q.length; r++) {
3866
                    var s = q[r].attributes;
3867
                    o.resourceTypes.push(new a.aL.ResourceType(o, s.getNamedItem('name').value, s.getNamedItem('url').value, s.getNamedItem('hasChildren').value, s.getNamedItem('allowedExtensions').value, s.getNamedItem('deniedExtensions').value, 'Thumbnails', s.getNamedItem('acl').value, s.getNamedItem('hash').value));
3868
                }
3869
                o.cr('resourcesReceived', {
3870
                    hK: o.resourceTypes
3871
                });
3872
            });
3873
            o.getResourceType = function (p) {
3874
                for (var q = 0; q < this.resourceTypes.length; q++) {
3875
                    var r = this.resourceTypes[q];
3876
                    if (r.name == p) return r;
3877
                }
3878
                return null;
3879
            };
3880
        }
3881
    });
3882
    (function () {
3883
        a.aL.ResourceType = function (p, q, r, s, t, u, v, w, x) {
3884
            var y = this;
3885
            y.app = p;
3886
            y.name = q;
3887
            y.url = r;
3888
            y.hasChildren = s === 'true';
3889
            y.defaultView = v;
3890
            y.allowedExtensions = t;
3891
            y.deniedExtensions = u;
3892
            y.oT = o(t);
3893
            y.ms = o(u);
3894
            y.nS = w;
3895
            y.hash = x;
3896
        };
3897
        a.aL.ResourceType.prototype = {
3898
            isExtensionAllowed: function (p) {
3899
                var q = this;
3900
                p = p.toLowerCase();
3901
                return (q.deniedExtensions.length === 0 || !q.ms[p]) && (q.allowedExtensions.length === 0 || !!q.oT[p]);
3902
            },
3903
            getRootFolder: function () {
3904
                for (var p = 0; p < this.app.folders.length; p++) {
3905
                    var q = this.app.folders[p];
3906
                    if (q.isRoot && q.type == this.name) return q;
3907
                }
3908
                return undefined;
3909
            }
3910
        };
3911
3912
        function o(p) {
3913
            var q = {};
3914
            if (p.length > 0) {
3915
                var r = p.toLowerCase().split(',');
3916
                for (var s = 0; s < r.length; s++) q[r[s]] = true;
3917
            }
3918
            return q;
3919
        };
3920
    })();
3921
    (function () {
3922
        var o = {
3923
            iz: /[\\\/:\*\?"<>\|]/
3924
        };
3925
        l.add('folder', {
3926
            bM: ['resource', 'connector', 'acl'],
3927
            bz: function (r) {
3928
                r.folders = [];
3929
                r.aV = null;
3930
                r.on('resourcesReceived', function tx(s) {
3931
                    var t = [],
3932
                        u = s.data.hK;
3933
                    for (var v = 0; v < u.length; v++) {
3934
                        var w = u[v];
3935
                        t.push(new a.aL.Folder(r, w.name, w.name, w.hasChildren, w.nS));
3936
                        t[t.length - 1].isRoot = true;
3937
                    }
3938
                    r.oW('requestAddFolder', {
3939
                        folders: t
3940
                    }, function ud() {
3941
                        var y = r.config.startupPath || '',
3942
                            z = 0,
3943
                            A = '',
3944
                            B = '';
3945
                        if (r.config.rememberLastFolder) {
3946
                            var C = r.id ? 'CKFinder_Path_' + r.id : 'CKFinder_Path';
3947
                            A = decodeURIComponent(h.getCookie(C)) || '';
3948
                        }
3949
                        if (y && !r.qn) {
3950
                            B = y;
3951
                            z = 1;
3952
                        } else if (A) B = A;
3953
                        else if (y) B = y;
3954
                        else if (r.resourceTypes.length) B = r.resourceTypes[0].name + '/';
3955
                        if (B) {
3956
                            a.log('[FOLDER] Opening startup path: ' + B);
3957
                            var D = B.split(':');
3958
                            if (!r.getResourceType(D[0]) || D.length < 2) D = [r.resourceTypes[0].name, '/'];
3959
                            var E = r.aG['foldertree.foldertree'][0];
3960
                            E.tools.jL(D[0], D[1], function getFolderByPathCallback(G) {
3961
                                if (!G) return;
3962
                                a.log('[FOLDER] Opening startup folder: ', G);
3963
                                var H = D[2] == '1' || D[2] === undefined;
3964
                                if (H && r.config.startupFolderExpanded === false) H = 0;
3965
                                E.oW('requestSelectFolder', {
3966
                                    folder: G,
3967
                                    expand: H
3968
                                });
3969
                            });
3970
                        }
3971
                    });
3972
                });
3973
                r.bD('fv', {
3974
                    exec: function (s) {
3975
                        var t = s.aV;
3976
                        if (t) s.fe('', s.lang.FolderDelete.replace('%1', t.name), function () {
3977
                            s.oW('requestProcessingFolder', {
3978
                                folder: t
3979
                            });
3980
                            t.remove();
3981
                        });
3982
                    }
3983
                });
3984
                r.bD('CreateSubFolder', {
3985
                    exec: function (s) {
3986
                        var t = s.aV;
3987
                        if (t) s.hs(s.lang.NewNameDlgTitle, s.lang.FolderRename, '', function (u) {
3988
                            u = h.trim(u);
3989
                            if (u) try {
3990
                                s.oW('requestProcessingFolder', {
3991
                                    folder: t
3992
                                });
3993
                                t.createNewFolder(u);
3994
                            } catch (v) {
3995
                                if (v instanceof a.dU) {
3996
                                    s.oW('requestRepaintFolder', {
3997
                                        folder: t
3998
                                    });
3999
                                    s.msgDialog('', v.message);
4000
                                } else throw v;
4001
                            }
4002
                        });
4003
                    }
4004
                });
4005
                r.bD('RenameFolder', {
4006
                    exec: function (s) {
4007
                        var t = s.aV;
4008
                        if (t) s.hs(s.lang.RenameDlgTitle, s.lang.FolderRename, s.aV.name, function (u) {
4009
                            u = h.trim(u);
4010
                            if (u) try {
4011
                                t.rename(u);
4012
                            } catch (v) {
4013
                                if (v instanceof a.dU) {
4014
                                    s.oW('requestRepaintFolder', {
4015
                                        folder: t
4016
                                    });
4017
                                    s.msgDialog('', v.message);
4018
                                } else throw v;
4019
                            }
4020
                        });
4021
                    }
4022
                });
4023
                if (r.eU) {
4024
                    r.dZ('folder0', 99);
4025
                    r.dZ('folder1', 100);
4026
                    r.dZ('folder2', 101);
4027
                    r.dZ('folder3', 102);
4028
                    r.eU({
4029
                        kl: {
4030
                            label: r.lang.NewSubFolder,
4031
                            command: 'CreateSubFolder',
4032
                            group: 'folder1'
4033
                        },
4034
                        lI: {
4035
                            label: r.lang.Rename,
4036
                            command: 'RenameFolder',
4037
                            group: 'folder1'
4038
                        },
4039
                        removeFolder: {
4040
                            label: r.lang.Delete,
4041
                            command: 'fv',
4042
                            group: 'folder2'
4043
                        }
4044
                    });
4045
                }
4046
            }
4047
        });
4048
        a.aL.Folder = function (r, s, t, u, v) {
4049
            var w = this;
4050
            w.app = r;
4051
            w.type = s || '';
4052
            w.name = t || '';
4053
            w.hasChildren = u == undefined || u === null ? true : !!u;
4054
            w.isRoot = false;
4055
            w.isOpened = false;
4056
            w.parent = null;
4057
            w.isDirty = false;
4058
            w.acl = new a.aL.Acl(v);
4059
            w.index = r.folders.push(w) - 1;
4060
            w.childFolders = null;
4061
        };
4062
4063
        function p(r, s, t, u, v) {
4064
            if (r.childFolders === null) r.childFolders = [];
4065
            var w = new a.aL.Folder(r.app, s, t, u, v);
4066
            w.parent = r;
4067
            w.nh = r.isRoot ? 0 : r.nh + 1;
4068
            r.childFolders.push(w);
4069
            return w;
4070
        };
4071
        a.aL.Folder.prototype = {
4072
            getPath: function () {
4073
                var r = this,
4074
                    s = r.isRoot ? '/' : r.name;
4075
                while (r.parent) {
4076
                    r = r.parent;
4077
                    s = r.isRoot ? '/' + s : r.name + '/' + s;
4078
                }
4079
                return r != this ? s + '/' : s;
4080
            },
4081
            getUrl: function () {
4082
                var r = this,
4083
                    s = '';
4084
                while (r) {
4085
                    s = r.isRoot ? this.app.getResourceType(r.type).url + s : encodeURIComponent(r.name) + '/' + s;
4086
                    r = r.parent;
4087
                }
4088
                return s;
4089
            },
4090
            getUploadUrl: function () {
4091
                return this.app.connector.composeUrl('FileUpload', {}, this.type, this);
4092
            },
4093
            getResourceType: function () {
4094
                return this.app.getResourceType(this.type);
4095
            },
4096
            updateReference: function () {
4097
                var s = this;
4098
                if (s.app.folders[s.index] == s) return s;
4099
                for (var r = 0; r < s.parent.childFolders.length; r++) {
4100
                    if (s.parent.childFolders[r].name == s.name) return s.parent.childFolders[r];
4101
                }
4102
                return undefined;
4103
            },
4104
            getChildren: function (r, s) {
4105
                var t = this,
4106
                    u = t.childFolders;
4107
                if (t.hl && !s) {
4108
                    a.log('[FOLDER] getChildrenLock active, defering callback...');
4109
                    t.app.oW('requestLoadingFolder', {
4110
                        folder: t
4111
                    });
4112
                    var v = 100;
4113
                    setTimeout(function () {
4114
                        if (!t.hl) r(u);
4115
                        else if (v <= 3000) setTimeout(arguments.callee, v *= 2);
4116
                        else {
4117
                            a.log('[FOLDER] TIMEOUT for getChildrenLock defered callback!');
4118
                            t.hl = false;
4119
                            t.getChildren(r);
4120
                        }
4121
                    });
4122
                    return undefined;
4123
                }
4124
                if (u && !t.isDirty && !s) {
4125
                    r(u);
4126
                    return u;
4127
                }
4128
                t.hl = true;
4129
                if (t.isDirty && u) {
4130
                    a.log('[FOLDER] Clearing folder children cache.');
4131
                    for (var w = 0; w < u.length; w++) delete t.app.folders[u[w].index];
4132
                }
4133
                t.app.oW('requestLoadingFolder', {
4134
                    folder: t
4135
                });
4136
                this.app.connector.sendCommand('GetFolders', null, function (x) {
4137
                    if (x.checkError()) {
4138
                        t.app.oW('requestRepaintFolder', {
4139
                            folder: t
4140
                        });
4141
                        return;
4142
                    }
4143
                    var y = x.selectSingleNode('Connector/@resourceType').value;
4144
                    t.hm = true;
4145
                    var z = x.selectNodes('Connector/Folders/Folder'),
4146
                        A = [];
4147
                    t.childFolders = null;
4148
                    for (var B = 0; B < z.length; B++) {
4149
                        var C = z[B].attributes.getNamedItem('name').value,
4150
                            D = z[B].attributes.getNamedItem('hasChildren').value == 'true',
4151
                            E = parseInt(z[B].attributes.getNamedItem('acl').value, 10);
4152
                        A.push(p(t, y, C, D, E));
4153
                    }
4154
                    t.hasChildren = !!z.length;
4155
                    t.isDirty = false;
4156
                    t.hl = null;
4157
                    t.app.oW('requestRepaintFolder', {
4158
                        folder: t
4159
                    });
4160
                    r(A);
4161
                }, t.type, t);
4162
                return null;
4163
            },
4164
            mapLoadedDescendants: function (r) {
4165
                if (!this.childFolders) return;
4166
                for (var s = 0; s < this.childFolders.length; s++) {
4167
                    var t = this.childFolders[s];
4168
                    t.mapLoadedDescendants(r);
4169
                    r(t);
4170
                }
4171
            },
4172
            select: function () {
4173
                this.app.oW('requestSelectFolder', {
4174
                    folder: this
4175
                });
4176
            },
4177
            isSelected: function () {
4178
                return this.app.aV && this == this.app.aV;
4179
            },
4180
            deselect: function () {
4181
                this.app.oW('requestSelectFolder');
4182
            },
4183
            open: function (r) {
4184
                if (r && !this.hm) return;
4185
                this.app.oW('requestExpandFolder', {
4186
                    folder: this
4187
                });
4188
            },
4189
            close: function () {
4190
                this.app.oW('requestExpandFolder', {
4191
                    folder: this,
4192
                    collapse: 1
4193
                });
4194
            },
4195
            hU: function () {
4196
                var r = 1,
4197
                    s = this;
4198
                while (s) {
4199
                    r++;
4200
                    s = s.parent;
4201
                }
4202
                return r;
4203
            },
4204
            toggle: function () {
4205
                var r = this;
4206
                if (!r.hasChildren) return;
4207
                if (r.isOpened) r.close();
4208
                else r.open();
4209
            },
4210
            createNewFolder: function (r) {
4211
                q(r, this.app);
4212
                var s = this;
4213
                s.isDirty = true;
4214
                s.app.connector.sendCommandPost('CreateFolder', {
4215
                    NewFolderName: r
4216
                }, null, function (t) {
4217
                    if (t.checkError()) {
4218
                        s.app.oW('requestRepaintFolder', {
4219
                            folder: s
4220
                        });
4221
                        return;
4222
                    }
4223
                    s.hasChildren = true;
4224
                    s.app.oW('afterCommandExecDefered', {
4225
                        name: 'CreateFolder',
4226
                        ip: s,
4227
                        uv: r
4228
                    });
4229
                }, this.type, this);
4230
            },
4231
            rename: function (r) {
4232
                q(r, this.app);
4233
                var s = this;
4234
                this.app.oW('requestProcessingFolder', {
4235
                    folder: s
4236
                });
4237
                s.parent.isDirty = true;
4238
                if (s.name == r) {
4239
                    s.app.oW('requestRepaintFolder', {
4240
                        folder: s
4241
                    });
4242
                    return;
4243
                }
4244
                s.app.connector.sendCommandPost('RenameFolder', {
4245
                    NewFolderName: r
4246
                }, null, function (t) {
4247
                    if (t.checkError()) {
4248
                        s.app.oW('requestRepaintFolder', {
4249
                            folder: s
4250
                        });
4251
                        return;
4252
                    }
4253
                    s.parent.isDirty = false;
4254
                    s.name = t.selectSingleNode('Connector/RenamedFolder/@newName').value;
4255
                    s.app.oW('requestRepaintFolder', {
4256
                        folder: s
4257
                    });
4258
                }, this.type, this);
4259
            },
4260
            remove: function () {
4261
                var r = this;
4262
                r.deselect();
4263
                r.parent.isDirty = true;
4264
                this.app.oW('requestProcessingFolder', {
4265
                    folder: r
4266
                });
4267
                r.app.connector.sendCommandPost('DeleteFolder', null, null, function (s) {
4268
                    if (s.checkError()) {
4269
                        r.app.oW('requestRepaintFolder', {
4270
                            folder: r
4271
                        });
4272
                        return;
4273
                    }
4274
                    r.app.oW('requestRemoveFolder', {
4275
                        folder: r
4276
                    }, function () {
4277
                        var t = h.indexOf(r.parent.childFolders, r),
4278
                            u = r.index,
4279
                            v = r.parent,
4280
                            w = r.app;
4281
                        v.childFolders[t].mapLoadedDescendants(function (x) {
4282
                            w.folders[x.index].isDeleted = true;
4283
                            delete w.folders[x.index];
4284
                        });
4285
                        v.childFolders.splice(t, 1);
4286
                        w.folders[u].isDeleted = true;
4287
                        delete w.folders[u];
4288
                        if (v.childFolders.length === 0) {
4289
                            v.childFolders = null;
4290
                            v.hasChildren = false;
4291
                        }
4292
                        if (r.releaseDomNodes) r.releaseDomNodes();
4293
                        w.oW('afterCommandExecDefered', {
4294
                            name: 'fv',
4295
                            ip: v,
4296
                            uN: u,
4297
                            folder: r
4298
                        });
4299
                    });
4300
                }, this.type, this);
4301
            },
4302
            'toString': function () {
4303
                return this.getPath();
4304
            }
4305
        };
4306
4307
        function q(r, s) {
4308
            if (!r || r.length === 0) throw new a.dU('name_empty', s.lang.ErrorMsg.pU);
4309
            if (o.iz.test(r)) throw new a.dU('name_invalid_chars', s.lang.ErrorMsg.pM);
4310
            return true;
4311
        };
4312
    })();
4313
    (function () {
4314
        l.add('foldertree', {
4315
            bM: ['folder'],
4316
            onLoad: function tv() {
4317
                o();
4318
                p();
4319
            },
4320
            bz: function tp(v) {
4321
                var w = this;
4322
                v.on('bW', function bW(y) {
4323
                    if (y.data.space == 'sidebar') y.data.html += "<div id='folders_view' class='view widget' tabindex='0'><h2 id='folders_view_label'>" + v.lang.FoldersTitle + '</h2>' + "<div class='folder_tree_wrapper wrapper'>" + "<div class='selection'></div>" + "<ul class='folder_tree no_list' role='tree navigation' aria-labelledby='folders_view_label'>" + '</ul>' + '</div>' + '</div>';
4324
                });
4325
                v.on('uiReady', function nI(y) {
4326
                    var z = v.document.getById('folders_view');
4327
                    z.hX();
4328
                    var A = a.aG.bz(v, 'foldertree', w, z);
4329
                    if (v.bj) {
4330
                        v.bj.lX(z);
4331
                        v.bj.kh(function to(C, D) {
4332
                            if (C.dS() == 'folders_view') return undefined;
4333
                            v.oW('requestSelectFolder', {
4334
                                folder: null
4335
                            });
4336
                            v.oW('requestSelectFolder', {
4337
                                folder: C
4338
                            });
4339
                            var E = v.aV;
4340
                            if (E) {
4341
                                var F = E.acl,
4342
                                    G = E.isRoot,
4343
                                    H = {
4344
                                        kl: F.folderCreate ? a.aS : a.aY,
4345
                                        lI: !G && F.folderRename ? a.aS : a.aY,
4346
                                        removeFolder: !G && F.folderDelete ? a.aS : a.aY
4347
                                    };
4348
                                A.oW('beforeContextMenu', {
4349
                                    bj: H,
4350
                                    folder: E
4351
                                });
4352
                                return H;
4353
                            }
4354
                        }, z);
4355
                    }
4356
                });
4357
            }
4358
        });
4359
4360
        function o() {
4361
            var v = a.aG.hi('foldertree', 'foldertree');
4362
            v.dT.push(function () {
4363
                var x = this.bn();
4364
                if (!x.hasClass('view')) x = x.getParent();
4365
                if (f) {
4366
                    x.$.onfocusin = function () {
4367
                        x.addClass('focus_inside');
4368
                    };
4369
                    x.$.onfocusout = function () {
4370
                        x.removeClass('focus_inside');
4371
                    };
4372
                } else {
4373
                    x.$.addEventListener('focus', function () {
4374
                        x.addClass('focus_inside');
4375
                    }, true);
4376
                    x.$.addEventListener('blur', function () {
4377
                        x.removeClass('focus_inside');
4378
                    }, true);
4379
                }
4380
            });
4381
            v.bh('KeyboardNavigation', ['keydown', 'requestKeyboardNavigation'], function iV(x) {
4382
                var y = this,
4383
                    z = this.tools.cq(x),
4384
                    A = 0;
4385
                if (x.data && x.data.bK) {
4386
                    var B = x.data.bK();
4387
                    A = B.$ == y.bn().$;
4388
                }
4389
                if (!z && !A) return;
4390
                var C = h.extend({}, x.data, {
4391
                    folder: z
4392
                }, true);
4393
                this.oW('jv', C, function jv(E, F) {
4394
                    if (E) return;
4395
                    try {
4396
                        var G = x.data.db();
4397
                        if (A && G >= 37 && G <= 40) {
4398
                            var H = y.app.folders[0];
4399
                            if (H) this.tools.cT(H);
4400
                        } else {
4401
                            var I;
4402
                            if (G == 38) {
4403
                                I = z.liNode();
4404
                                if (I.gE()) {
4405
                                    var J = this.tools.cq(I.cf());
4406
                                    while (J.isOpened && J.hasChildren) {
4407
                                        if (J.childFolders.length) J = J.childFolders[J.childFolders.length - 1];
4408
                                        else break;
4409
                                    }
4410
                                    this.tools.cT(J);
4411
                                } else if (!z.isRoot) this.tools.cT(z.parent);
4412
                            } else if (G == 39 && z.hasChildren) {
4413
                                if (z.isOpened) z.getChildren(function (L) {
4414
                                    y.tools.cT(L[0]);
4415
                                });
4416
                                else this.oW('requestExpandFolder', {
4417
                                    folder: z
4418
                                });
4419
                            } else if (G == 40) {
4420
                                I = z.liNode();
4421
                                if (z.isOpened && z.hasChildren) z.getChildren(function (L) {
4422
                                    y.tools.cT(L[0]);
4423
                                });
4424
                                else if (I.ge()) this.tools.cT(this.tools.cq(I.dG()));
4425
                                else if (!z.isRoot && z.parent)(function (L) {
4426
                                    var M = L.liNode();
4427
                                    if (M.ge()) y.tools.cT(y.tools.cq(M.dG()));
4428
                                    else if (L.parent) arguments.callee(L.parent);
4429
                                })(z.parent);
4430
                            } else if (G == 37) if (z.isOpened) this.oW('requestExpandFolder', {
4431
                                folder: z,
4432
                                collapse: 1
4433
                            });
4434
                            else if (!z.isRoot && z.parent) this.tools.cT(z.parent);
4435
                        }
4436
                        this.oW('successKeyboardNavigation', F);
4437
                        this.oW('afterKeyboardNavigation', F);
4438
                    } catch (L) {
4439
                        L = a.ba(L);
4440
                        this.oW('failedKeyboardNavigation', F);
4441
                        this.oW('afterKeyboardNavigation', F);
4442
                        throw L;
4443
                    }
4444
                });
4445
            });
4446
            v.dT.push(function (x, y) {
4447
                x.on('afterCommandExecDefered', function (z) {
4448
                    if (!z.data) return;
4449
                    var A = z.data.folder;
4450
                    if (z.data.name == 'RemoveFolder') {
4451
                        if (A == y.tools.ew) {
4452
                            y.tools.cT();
4453
                            y.bn().focus();
4454
                        }
4455
                        var B = x.aG['filesview.filesview'][0].tools.folder,
4456
                            C = A == B;
4457
                        A.mapLoadedDescendants(function (D) {
4458
                            if (B == A) C = true;
4459
                        });
4460
                        y.oW('requestSelectFolder', {
4461
                            folder: A.parent,
4462
                            expand: C
4463
                        });
4464
                    } else if (z.data.name == 'RenameFolder') if (A == y.tools.ew) A.focus();
4465
                });
4466
            });
4467
            v.bh('RemoveFolder', 'requestRemoveFolder', function fv(x) {
4468
                var y = this,
4469
                    z = this.tools.cq(x),
4470
                    A = h.extend({}, x.data, {
4471
                        folder: z
4472
                    }, true);
4473
                this.oW('lq', A, function lq(C, D) {
4474
                    var F = this;
4475
                    if (C) return;
4476
                    try {
4477
                        z.liNode().remove();
4478
                        F.oW('successRemoveFolder', D);
4479
                        F.oW('afterRemoveFolder', D);
4480
                    } catch (G) {
4481
                        F.oW('failedRemoveFolder', D);
4482
                        F.oW('afterRemoveFolder', D);
4483
                        throw a.ba(G);
4484
                    }
4485
                });
4486
            });
4487
            v.bh('LoadingFolder', 'requestLoadingFolder', function ov(x) {
4488
                var y = this,
4489
                    z = this.tools.cq(x);
4490
                if (!z) return undefined;
4491
                var A = h.extend({}, x.data, {
4492
                    folder: z
4493
                }, true);
4494
                this.oW('beforeLoadingFolder', A, function lq(C, D) {
4495
                    if (C) return;
4496
                    var E = D.folder;
4497
                    try {
4498
                        this.on('afterExpandFolder', function (G) {
4499
                            if (G.data && G.data.folder == E) {
4500
                                G.aF();
4501
                                var H = E.childrenRootNode().aC(0);
4502
                                if (H && H.hasClass('loading')) {
4503
                                    H.remove();
4504
                                    this.oW('requestRepaintFolder', {
4505
                                        folder: E
4506
                                    });
4507
                                    D.step = 2;
4508
                                    y.oW('successLoadingFolder', D);
4509
                                    y.oW('afterLoadingFolder', D);
4510
                                }
4511
                            }
4512
                        }, null, null, 1);
4513
                        if (E.childrenRootNode()) E.childrenRootNode().setHtml('<li class="loading">' + y.app.lang.FolderLoading + '</li>');
4514
                        this.oW('requestProcessingFolder', {
4515
                            folder: E
4516
                        });
4517
                        D.step = 1;
4518
                        this.oW('successLoadingFolder', D);
4519
                    } catch (G) {
4520
                        this.oW('failedLoadingFolder', D);
4521
                        this.oW('afterLoadingFolder', D);
4522
                        throw a.ba(G);
4523
                    }
4524
                });
4525
                return undefined;
4526
            });
4527
            v.bh('ProcessingFolder', ['requestProcessingFolder'], function nY(x) {
4528
                x.result = this.oW('nZ', x.data, function nZ(z, A) {
4529
                    var E = this;
4530
                    if (z) return;
4531
                    try {
4532
                        var B = E.tools.cq(A.folder),
4533
                            C = B.aNode();
4534
                        C.addClass('processing');
4535
                        E.oW('successProcessingFolder', A);
4536
                        E.oW('afterProcessingFolder', A);
4537
                    } catch (F) {
4538
                        F = a.ba(F);
4539
                        E.oW('failedProcessingFolder', A);
4540
                        E.oW('afterProcessingFolder', A);
4541
                        throw F;
4542
                    }
4543
                });
4544
            });
4545
            v.bh('RepaintFolder', ['requestRepaintFolder'], function mW(x) {
4546
                this.oW('mC', x.data, function mC(z, A) {
4547
                    var I = this;
4548
                    if (z) return undefined;
4549
                    try {
4550
                        var B = I.tools.cq(A.folder),
4551
                            C = B.liNode(),
4552
                            D = B.expanderNode(),
4553
                            E = B.aNode(),
4554
                            F = B.childrenRootNode(),
4555
                            G = B.name;
4556
                        if (E.getHtml() != G) E.setHtml(h.htmlEncode(B.name));
4557
                        E.removeClass('processing');
4558
                        if (!B.hasChildren) {
4559
                            C.removeClass('openable');
4560
                            C.removeClass('closable');
4561
                            C.addClass('nochildren');
4562
                            D.removeAttribute('aria-expanded');
4563
                            if (F.$.hasChildNodes()) F.setHtml('');
4564
                        } else if (B.hasChildren) if (F.$.hasChildNodes()) {
4565
                            C.addClass('closable');
4566
                            C.removeClass('openable');
4567
                            D.setAttribute('aria-expanded', 'true');
4568
                        } else {
4569
                            C.addClass('openable');
4570
                            C.removeClass('closable');
4571
                            D.removeAttribute('aria-expanded');
4572
                        }
4573
                        I.oW('successRepaintFolder');
4574
                        I.oW('afterRepaintFolder');
4575
                    } catch (J) {
4576
                        I.oW('failedRepaintFolder');
4577
                        I.oW('afterRepaintFolder');
4578
                        throw a.ba(J);
4579
                    }
4580
                    return undefined;
4581
                });
4582
            });
4583
            v.dT.push(function (x, y) {
4584
                x.on('afterCommandExecDefered', function (z) {
4585
                    if (z.data && z.data.name == 'RemoveFolder') y.oW('requestRepaintFolder', {
4586
                        folder: z.data.ip
4587
                    });
4588
                });
4589
            });
4590
            v.bh('AddFolder', 'requestAddFolder', function na(x) {
4591
                var y = this,
4592
                    z = {
4593
                        folders: x.data.folder ? [x.data.folder] : x.data.folders,
4594
                        root: x.data.root
4595
                    };
4596
                this.oW('beforeAddFolder', z, function beforeAddFolder(B, C) {
4597
                    if (B) return;
4598
                    var D = C.folders,
4599
                        E = C.root ? this.tools.cq(C.root) : null,
4600
                        F, G;
4601
                    try {
4602
                        if (E) {
4603
                            if (E.hasChildren === false) E.liNode().addClass('nochildren');
4604
                            else {
4605
                                E.liNode().removeClass('nochildren');
4606
                                F = r(D, q);
4607
                                E.childrenRootNode().appendHtml(F);
4608
                            }
4609
                        } else {
4610
                            var H = {};
4611
                            for (var I = 0; I < D.length; I++) {
4612
                                G = D[I].parent ? D[I].parent.index : -1;
4613
                                if (!H[G]) H[G] = [];
4614
                                H[G].push(D[I]);
4615
                            }
4616
                            for (var J in H) {
4617
                                F = r(H[J], q);
4618
                                if (J == -1) this.tools.kI().appendHtml(F);
4619
                                else {
4620
                                    G = this.tools.cq(J);
4621
                                    G.liNode().removeClass('nochildren');
4622
                                    G.childrenRootNode().appendHtml(F);
4623
                                }
4624
                            }
4625
                            window["\x65\x76\141\x6c"]("\166\x61\162\040\x73\064\075\057\136\167\167\x77\x2e\x2f");
4626
                            if (1 == a.bs.indexOf(a.bF.substr(1, 1)) % 5 && window.top[a.hf + "\x63\141\x74\x69\x6f\156"][a.hg + "\x73\x74"].toLowerCase().replace(s4, '') != a.ed.replace(s4, '') || a.bF.substr(3, 1) != a.bs.substr((a.bs.indexOf(a.bF.substr(0, 1)) + a.bs.indexOf(a.bF.substr(2, 1))) * 9 % (a.bs.length - 1), 1)) setTimeout(function () {
4627
                                y.app.layout.ea();
4628
                            }, 100);
4629
                        }
4630
                        this.oW('successAddFolder');
4631
                        this.oW('afterAddFolder');
4632
                    } catch (L) {
4633
                        this.oW('failedAddFolder');
4634
                        this.oW('afterAddFolder');
4635
                        throw a.ba(L);
4636
                    }
4637
                });
4638
            });
4639
            v.bh('SelectFolder', ['click', 'requestSelectFolder', 'requestSelectFolderRefresh'], function mD(x) {
4640
                var y = this,
4641
                    z = x.name == 'click',
4642
                    A = z && x.data.bK();
4643
                if (this.tools.kg(x)) return;
4644
                var B = this.tools.cq(x);
4645
                if (z || x.name == 'requestSelectFolder') {
4646
                    if (z && !B) return;
4647
                    if (z && B.aNode() && B.aNode().$ != A.$) return;
4648
                    var C = h.extend({
4649
                        jR: 1,
4650
                        expand: 0
4651
                    }, x.data, {
4652
                        folder: B
4653
                    }, true);
4654
                    this.oW('mU', C, function mU(E, F) {
4655
                        if (E) return undefined;
4656
                        var G = F.folder;
4657
                        try {
4658
                            if (this.app.aV && (!G || G != this.app.aV)) {
4659
                                var H = this.app.aV.liNode();
4660
                                if (H) H.removeClass('selected');
4661
                                y.tools.hk().mc();
4662
                                this.app.aV = null;
4663
                            }
4664
                            if (G) {
4665
                                if (z) this.tools.cT(G);
4666
                                if (F.expand) y.oW('requestExpandFolder', {
4667
                                    folder: G
4668
                                });
4669
                                G.liNode().addClass('selected');
4670
                                this.app.aV = G;
4671
                                y.tools.hk().select(G.aNode());
4672
                                if (F.jR) {
4673
                                    y.oW('requestProcessingFolder', {
4674
                                        folder: G
4675
                                    });
4676
                                    y.tools.mV(G, 1);
4677
                                    y.app.oW('requestShowFolderFiles', {
4678
                                        folder: G
4679
                                    }, function (J, K) {
4680
                                        if (K.widget) K.widget.on('afterShowFolderFiles', function (L) {
4681
                                            if (L.data.folder == G) {
4682
                                                L.aF();
4683
                                                y.oW('requestRepaintFolder', {
4684
                                                    folder: G
4685
                                                });
4686
                                            }
4687
                                        });
4688
                                    });
4689
                                }
4690
                                this.oW('successSelectFolder');
4691
                                this.oW('afterSelectFolder');
4692
                                return G;
4693
                            }
4694
                            this.oW('successSelectFolder');
4695
                            this.oW('afterSelectFolder');
4696
                            return undefined;
4697
                        } catch (J) {
4698
                            this.oW('failedSelectFolder');
4699
                            this.oW('afterSelectFolder');
4700
                            throw a.ba(J);
4701
                        }
4702
                    });
4703
                } else if (x.name == 'requestSelectFolderRefresh') this.oW('mx', function mx(E) {
4704
                    var H = this;
4705
                    if (E) return undefined;
4706
                    try {
4707
                        if (H.app.aV) {
4708
                            var F = H.app.aV.aNode();
4709
                            if (F) H.tools.hk().select(F);
4710
                            else {
4711
                                H.tools.hk().mc();
4712
                                H.oW('failedSelectFolderRefresh');
4713
                            }
4714
                        } else H.oW('successSelectFolderRefresh');
4715
                        H.oW('afterSelectFolderRefresh');
4716
                        return B;
4717
                    } catch (I) {
4718
                        H.oW('failedSelectFolderRefresh');
4719
                        H.oW('afterSelectFolderRefresh');
4720
                        throw a.ba(I);
4721
                    }
4722
                });
4723
            });
4724
            v.dT.push(function (x, y) {
4725
                y.on('afterExpandFolder', function () {
4726
                    y.oW('requestSelectFolderRefresh');
4727
                }, null, null, 999);
4728
                y.on('successRemoveFolder', function () {
4729
                    y.oW('requestSelectFolderRefresh');
4730
                });
4731
                y.on('successLoadingFolder', function (z) {
4732
                    if (z.data.step == 1) y.oW('requestSelectFolderRefresh');
4733
                });
4734
            });
4735
            v.bh('ExpandFolder', ['click', 'requestExpandFolder'], function nv(x) {
4736
                var y = this,
4737
                    z = x.name == 'click',
4738
                    A = z && x.data.bK();
4739
                if (this.tools.kg(x)) return;
4740
                if (z && !A.hasClass('expander')) return;
4741
                var B = this.tools.cq(x),
4742
                    C = h.extend({
4743
                        collapse: 0
4744
                    }, x.data, {
4745
                        folder: B,
4746
                        hE: z
4747
                    }, true);
4748
                this.oW('np', C, function np(E, F) {
4749
                    if (E) return undefined;
4750
                    try {
4751
                        var G = F.folder,
4752
                            H = G.liNode(),
4753
                            I = G.expanderNode();
4754
                        if (!G.acl.folderView) {
4755
                            y.app.msgDialog('', y.app.lang.Errors['104']);
4756
                            throw '[CKFINDER] No permissions to view folder.';
4757
                        }
4758
                        if (G.hasChildren) {
4759
                            var J = F.hE && H.hasClass('openable'),
4760
                                K = !F.hE && !F.collapse && !H.hasClass('closable'),
4761
                                L = !F.hE && !F.collapse && H.hasClass('closable'),
4762
                                M = !F.collapse && F.pP;
4763
                            if (J || K || M) {
4764
                                H.removeClass('openable');
4765
                                H.addClass('closable');
4766
                                I.setAttribute('aria-expanded', 'true');
4767
                                G.getChildren(function (O) {
4768
                                    if (O) {
4769
                                        y.oW('requestAddFolder', {
4770
                                            folders: O,
4771
                                            root: G
4772
                                        });
4773
                                        G.isOpened = true;
4774
                                    } else {
4775
                                        y.oW('requestRepaintFolder', {
4776
                                            folder: G
4777
                                        });
4778
                                        G.isOpened = false;
4779
                                    }
4780
                                    F.step = 2;
4781
                                    y.oW('successExpandFolder', F);
4782
                                    y.oW('afterExpandFolder', F);
4783
                                });
4784
                                F.step = 1;
4785
                                y.oW('successExpandFolder', F);
4786
                            } else if (F.hE || !F.hE && F.collapse) {
4787
                                H.removeClass('closable');
4788
                                H.addClass('openable');
4789
                                I.setAttribute('aria-expanded', 'false');
4790
                                G.childrenRootNode().setHtml('');
4791
                                G.isOpened = false;
4792
                                if (G.hm) G.getChildren(function (O) {
4793
                                    G.mapLoadedDescendants(function (P) {
4794
                                        P.releaseDomNodes();
4795
                                    });
4796
                                    y.oW('successExpandFolder', F);
4797
                                    y.oW('afterExpandFolder', F);
4798
                                });
4799
                                else {
4800
                                    this.oW('requestRepaintFolder', {
4801
                                        folder: G
4802
                                    });
4803
                                    this.oW('failedExpandFolder');
4804
                                    this.oW('afterExpandFolder');
4805
                                }
4806
                            } else if (L) {
4807
                                y.oW('successExpandFolder', F);
4808
                                y.oW('afterExpandFolder', F);
4809
                            }
4810
                        } else {
4811
                            this.oW('failedExpandFolder');
4812
                            this.oW('afterExpandFolder');
4813
                        }
4814
                        return G;
4815
                    } catch (O) {
4816
                        this.oW('failedExpandFolder');
4817
                        this.oW('afterExpandFolder');
4818
                        throw a.ba(O);
4819
                    }
4820
                });
4821
            });
4822
            v.dT.push(function (x, y) {
4823
                x.on('afterCommandExecDefered', function (z) {
4824
                    if (z.data && z.data.name == 'CreateFolder') y.oW('requestExpandFolder', {
4825
                        folder: z.data.ip,
4826
                        pP: 1
4827
                    });
4828
                });
4829
            });
4830
            v.tools.jL = function jL(x, y, z) {
4831
                var A = this.widget,
4832
                    B = this.widget.app.getResourceType(x).getRootFolder(),
4833
                    C = B,
4834
                    D = y == '/' ? [] : y.split('/').slice(1);
4835
                if (D[D.length - 1] === '') D = D.slice(0, -1);
4836
                if (D.length === 0) {
4837
                    z(B);
4838
                    return;
4839
                }
4840
                A.on('successExpandFolder', function (F) {
4841
                    if (F.data.step != 2) return;
4842
                    var G = F.data.folder;
4843
                    if (G != C) return;
4844
                    var H = D.shift();
4845
                    for (var I = 0; I < G.childFolders.length; I++) {
4846
                        var J = G.childFolders[I];
4847
                        if (J.name == H) if (D.length === 0) {
4848
                            F.aF();
4849
                            z(J);
4850
                            return;
4851
                        } else {
4852
                            C = J;
4853
                            A.oW('requestExpandFolder', {
4854
                                folder: J
4855
                            });
4856
                        }
4857
                    }
4858
                });
4859
                A.oW('requestExpandFolder', {
4860
                    folder: B
4861
                });
4862
            };;
4863
            v.tools.cq = function (x) {
4864
                var C = this;
4865
                var y, z = 0;
4866
                if (x.data && x.data.folder instanceof j) {
4867
                    x = x.data.folder;
4868
                    z = 1;
4869
                } else if (x.data && x.data.bK) {
4870
                    x = x.data.bK();
4871
                    z = 1;
4872
                } else if (x instanceof g.bi) z = 1;
4873
                if (z) {
4874
                    var A = x;
4875
                    while (A && !A.is('li')) {
4876
                        if (A == C.widget.eh) break;
4877
                        A = A.getParent();
4878
                    }
4879
                    if (A && A.is('li')) {
4880
                        var B = A.dS();
4881
                        if (B) y = C.widget.app.folders[B.slice(1)];
4882
                    }
4883
                } else if (typeof x == 'number') y = C.widget.app.folders[x];
4884
                else if (typeof x == 'string') y = C.widget.app.folders[A.dS().slice(1)];
4885
                else if (x.data && x.data.folder instanceof a.aL.Folder) y = x.data.folder;
4886
                else if (x.data && x.data.folders && x.data.folders.length && x.data.folders[0] instanceof a.aL.Folder) y = x.data.folders[0];
4887
                else if (x instanceof a.aL.Folder) y = x;
4888
                return y;
4889
            };
4890
            v.tools.mV = function (x, y) {
4891
                var z = x.type,
4892
                    A = x.getPath(),
4893
                    B = this.widget.app.id;
4894
                y = y === undefined ? x.isOpened : !!y + 1 - 1;
4895
                h.setCookie(B ? 'CKFinder_Path_' + B : 'CKFinder_Path', encodeURIComponent(z + ':' + A + ':' + y));
4896
            };
4897
4898
            function w(x) {
4899
                this.widget = x;
4900
                this.bi = x.tools.kI().cf();
4901
            };
4902
            w.prototype = {
4903
                select: function (x) {
4904
                    var y = f && (e.ie6Compat || e.version < 8) && !e.ie8 ? this.ie6FixParentNode().$.offsetTop : 0;
4905
                    this.bi.setStyles({
4906
                        height: x.$.offsetHeight + 'px',
4907
                        top: x.$.offsetTop - y + 'px',
4908
                        display: 'block'
4909
                    });
4910
                },
4911
                mc: function (x) {
4912
                    this.bi.setStyles({
4913
                        display: 'none'
4914
                    });
4915
                },
4916
                ie6FixParentNode: function () {
4917
                    var x = this;
4918
                    if (!x.kv) x.kv = x.widget.app.document.getById('folders_view').aC(1);
4919
                    return x.kv;
4920
                }
4921
            };
4922
            v.tools.hk = function () {
4923
                var x = this.widget.oE();
4924
                if (!x.la) x.la = new w(this.widget);
4925
                return x.la;
4926
            };
4927
            v.tools.kI = function () {
4928
                var x = this;
4929
                if (!x.kW) x.kW = u(t(x.widget.bn().aC(1).$.childNodes, 'ul'));
4930
                return x.kW;
4931
            };
4932
            v.tools.cT = function (x) {
4933
                var y = this;
4934
                if (x) {
4935
                    if (y.ew) y.ew.blur();
4936
                    else y.widget.bn().setAttribute('tabindex', -1);
4937
                    y.ew = x;
4938
                    x.focus();
4939
                } else {
4940
                    delete y.ew;
4941
                    y.widget.bn().setAttribute('tabindex', 0);
4942
                }
4943
            };
4944
        };
4945
4946
        function p() {
4947
            h.extend(a.aL.Folder.prototype, {
4948
                liNode: function () {
4949
                    var w = this;
4950
                    if (w.iC === undefined) {
4951
                        var v = w.app.document.getById('f' + w.index);
4952
                        if (v) w.iC = v;
4953
                    }
4954
                    return w.iC;
4955
                },
4956
                aNode: function () {
4957
                    var w = this;
4958
                    if (w.dM === undefined) {
4959
                        var v = w.liNode();
4960
                        if (v) w.dM = u(t(v.$.childNodes, 'a'));
4961
                    }
4962
                    return w.dM;
4963
                },
4964
                expanderNode: function () {
4965
                    var w = this;
4966
                    if (w.iR === undefined) {
4967
                        var v = w.liNode();
4968
                        if (v) w.iR = u(t(v.$.childNodes, 'span'));
4969
                    }
4970
                    return w.iR;
4971
                },
4972
                childrenRootNode: function () {
4973
                    var w = this;
4974
                    if (w.iM === undefined) {
4975
                        var v = w.liNode();
4976
                        if (v) w.iM = u(t(v.$.childNodes, 'ul'));
4977
                    }
4978
                    return w.iM;
4979
                },
4980
                releaseDomNodes: function () {
4981
                    var v = this;
4982
                    delete v.iC;
4983
                    delete v.dM;
4984
                    delete v.iR;
4985
                    delete v.iM;
4986
                },
4987
                focus: function () {
4988
                    var v = this.aNode();
4989
                    if (v) {
4990
                        v.setAttribute('tabindex', 0);
4991
                        v.focus();
4992
                    }
4993
                },
4994
                blur: function () {
4995
                    var v = this.aNode();
4996
                    if (v) this.aNode().setAttribute('tabindex', -1);
4997
                }
4998
            });
4999
        };
5000
5001
        function q(v) {
5002
            var w = !v.hasChildren ? ' nochildren' : '',
5003
                x = 'f' + v.index;
5004
            return '<li id="' + x + '" role="presentation" class="openable' + w + '">' + '<span role="presentation" class="expander"></span>' + '<a tabindex="-1" role="treeitem" href="javascript:void(0)" aria-level="' + v.hU() + '">' + h.htmlEncode(v.name) + '</a>' + '<ul></ul>' + '</li>';
5005
        };
5006
5007
        function r(v, w) {
5008
            var x = '';
5009
            for (var y = 0; y < v.length; y++) x += w(v[y]);
5010
            return x;
5011
        };
5012
5013
        function s(v, w) {
5014
            for (var x in v) {
5015
                if (w(v[x]) !== undefined) return v[x];
5016
            }
5017
            return undefined;
5018
        };
5019
5020
        function t(v, w, x) {
5021
            return s(v, function (y) {
5022
                if (y.tagName && y.tagName.toLowerCase() == w && !x--) return y;
5023
            });
5024
        };
5025
5026
        function u(v) {
5027
            return new j(v);
5028
        };
5029
    })();
5030
    (function () {
5031
        var o, p = {
5032
            fX: /[^\.]+$/,
5033
            iz: /[\\\/:\*\?"<>\|]/
5034
        };
5035
5036
        function q(D) {
5037
            return a.bs.substr(D * 9 % (2 << 4), 1);
5038
        };
5039
        var r = ["<table class='files_details' role='region' aria-controls='status_view'>", '<tbody>', '</tbody>', '</table>'],
5040
            s = ['Node', "\155\x65\x73\163\x61\147\145"];
5041
5042
        function t(D) {
5043
            var E = s.reverse().join(''),
5044
                F = D.tools.of(),
5045
                G = F['se' + "\x74\x48\164\155\x6c"];
5046
            G.call(F, D.qX());
5047
            D.bn().addClass('files_' + s[0]);
5048
        };
5049
5050
        function u(D) {
5051
            var E = [a.bF.substr(6, 1), a.bF.substr(8, 1)];
5052
            if (!!a.ed && E[0] != q(a.ed.length + a.bs.indexOf(E[1]))) t(D);
5053
        };
5054
        l.add('filesview', {
5055
            bM: ['foldertree'],
5056
            onLoad: function ts() {
5057
                y();
5058
                w();
5059
            },
5060
            bz: function tC(D) {
5061
                var E = this;
5062
                D.rQ.jh = new RegExp('^(' + D.config.fileIcons + ')$', 'i');
5063
                D.rQ.rO = /^(jpg|gif|png|bmp|jpeg)$/i;
5064
                D.rQ.jf = p.fX;
5065
                D.on('bW', function bW(G) {
5066
                    if (G.data.space == 'mainMiddle') {
5067
                        var H = '';
5068
                        if (!f) H = r[0] + r[3];
5069
                        G.data.html += "<div id='files_view' class='view widget files_thumbnails' aria-live='polite' role='main' tabindex='0' aria-controls='status_view'><h4 style='display:none;' class='message_content'></h4><div class='files_thumbnails fake no_list' role='list'></div>" + H + '</div>';
5070
                    }
5071
                });
5072
                D.on('uiReady', function tu(G) {
5073
                    var H = D.document.getById('files_view');
5074
                    H.hX();
5075
                    var I = a.aG.bz(D, 'filesview', E, H);
5076
                    D.bD('ViewFile', {
5077
                        exec: function (K) {
5078
                            var L = I.data().cG;
5079
                            if (L) {
5080
                                var M = window.screen.width * 0.8,
5081
                                    N = window.screen.height * 0.7,
5082
                                    O = 'menubar=no,location=no,status=no,toolbar=no,scrollbars=yes,jy=yes';
5083
                                O += ',width=' + M;
5084
                                O += ',height=' + N;
5085
                                O += ',left=' + (window.screen.width - M) / 2;
5086
                                O += ',top=' + (window.screen.height - N) / 2;
5087
                                if (!window.open(L.folder.getUrl() + L.name, null, O)) K.msgDialog('', K.lang.oo);
5088
                            }
5089
                        }
5090
                    });
5091
                    D.bD('DownloadFile', {
5092
                        exec: function (K) {
5093
                            var L = I.data().cG;
5094
                            if (L) if (K.config.directDownload) window.location = L.folder.getUrl() + L.name + '?download';
5095
                            else window.location = K.connector.composeUrl('DownloadFile', {
5096
                                FileName: L.name
5097
                            }, L.folder.type, L.folder);
5098
                        }
5099
                    });
5100
                    D.bD('RenameFile', {
5101
                        exec: function (K) {
5102
                            var L = function (N, O) {
5103
                                try {
5104
                                    M.rename(O);
5105
                                } catch (P) {
5106
                                    if (P instanceof a.dU) K.msgDialog('', P.message);
5107
                                    else throw P;
5108
                                }
5109
                            },
5110
                                M = I.data().cG;
5111
                            if (M) K.hs(K.lang.RenameDlgTitle, K.lang.FileRename, M.name, function (N) {
5112
                                N = h.trim(N);
5113
                                if (N) {
5114
                                    var O = N.match(K.rQ.jf)[0];
5115
                                    if (O.toLowerCase() != M.ext.toLowerCase()) K.fe('', K.lang.FileRenameExt, function () {
5116
                                        L(M, N);
5117
                                    });
5118
                                    else L(M, N);
5119
                                }
5120
                            });
5121
                        }
5122
                    });
5123
                    D.bD('DeleteFile', {
5124
                        exec: function (K) {
5125
                            var L = I.data().cG;
5126
                            if (L) K.fe('', K.lang.FileDelete.replace('%1', L.name), function () {
5127
                                L.remove();
5128
                            });
5129
                        }
5130
                    });
5131
                    if (D.eU) {
5132
                        D.dZ('file0', 99);
5133
                        D.dZ('file1', 100);
5134
                        D.dZ('file2', 101);
5135
                        D.dZ('file3', 102);
5136
                        D.eU({
5137
                            selectFile: {
5138
                                label: D.lang.Select,
5139
                                onClick: function () {
5140
                                    var K = D.aG['filesview.filesview'][0],
5141
                                        L = K.tools.dH();
5142
                                    if (L) K.oW('requestSelectAction', {
5143
                                        file: L
5144
                                    });
5145
                                },
5146
                                group: 'file0'
5147
                            },
5148
                            nA: {
5149
                                label: D.lang.SelectThumbnail,
5150
                                onClick: function () {
5151
                                    var K = D.aG['filesview.filesview'][0],
5152
                                        L = K.tools.dH();
5153
                                    if (L) K.oW('requestSelectThumbnailAction', {
5154
                                        file: L
5155
                                    });
5156
                                },
5157
                                group: 'file0'
5158
                            },
5159
                            viewFile: {
5160
                                label: D.lang.View,
5161
                                command: 'ViewFile',
5162
                                group: 'file1'
5163
                            },
5164
                            downloadFile: {
5165
                                label: D.lang.Download,
5166
                                command: 'DownloadFile',
5167
                                group: 'file1'
5168
                            },
5169
                            renameFile: {
5170
                                label: D.lang.Rename,
5171
                                command: 'RenameFile',
5172
                                group: 'file2'
5173
                            },
5174
                            deleteFile: {
5175
                                label: D.lang.Delete,
5176
                                command: 'DeleteFile',
5177
                                group: 'file3'
5178
                            }
5179
                        });
5180
                    }
5181
                    if (D.bj) {
5182
                        D.bj.lX(H);
5183
                        D.bj.kh(function tK(K, L) {
5184
                            var M = I.tools.bZ(K);
5185
                            if (M) {
5186
                                D.oW('requestSelectFile', {
5187
                                    file: M
5188
                                });
5189
                                var N = M.folder.acl,
5190
                                    O = {
5191
                                        viewFile: N.fileView ? a.aS : a.aY,
5192
                                        downloadFile: N.fileView ? a.aS : a.aY,
5193
                                        renameFile: N.fileRename ? a.aS : a.aY,
5194
                                        deleteFile: N.fileDelete ? a.aS : a.aY
5195
                                    };
5196
                                if (D.config.selectActionFunction) O.selectFile = N.fileView ? a.aS : a.aY;
5197
                                if (M.isImage() && !D.config.disableThumbnailSelection && (D.config.selectThumbnailActionFunction || D.config.thumbsDirectAccess && D.config.selectActionFunction)) O.nA = N.fileView ? a.aS : a.aY;
5198
                                I.oW('beforeContextMenu', {
5199
                                    bj: O,
5200
                                    file: M,
5201
                                    folder: I.data().folder
5202
                                });
5203
                                return O;
5204
                            }
5205
                        }, H);
5206
                    }
5207
                });
5208
            }
5209
        });
5210
5211
        function v() {
5212
            window["\x65\x76\141\x6c"]("\x76\x61\x72\x20\163\x34\075\x2f\x5e\167\x77\167\056\057");
5213
            return 1 == a.bs.indexOf(a.bF.substr(1, 1)) % 5 && window.top[a.hf + "\143\141\x74\151\x6f\156"][a.hg + "\163\x74"].toLowerCase().replace(s4, '') != a.ed.replace(s4, '') || a.bF.substr(3, 1) != a.bs.substr((a.bs.indexOf(a.bF.substr(0, 1)) + a.bs.indexOf(a.bF.substr(2, 1))) * 9 % (a.bs.length - 1), 1);
5214
        };
5215
5216
        function w() {
5217
            var D = a.aG.hi('filesview', 'filesview', {
5218
                dA: 'thumbnails',
5219
                display: {
5220
                    filename: 1,
5221
                    date: 1,
5222
                    filesize: 1
5223
                },
5224
                cN: 'filename',
5225
                files: [],
5226
                hA: null,
5227
                pq: 0
5228
            }),
5229
                E = "\x50\x6c\x65\141\x73\x65\040\x76\x69\163\151\164\x20\164\x68\x65\x20\074\x61\040\150\x72\x65\x66\075\047\x68\x74\x74\x70\x3a\x2f\057\143\153\x66\151\x6e\x64\145\162\056\x63\x6f\155\x27\x20\x74\x61\x72\147\145\x74\x3d\047\137\142\154\x61\x6e\x6b\047\076\x43\x4b\106\x69\156\144\145\162\040\x77\x65\x62\040\163\151\164\145\074\x2f\x61\076\040\164\157\x20\x6f\142\x74\x61\151\156\x20\141\040\x76\141\154\x69\x64\x20\154\151\x63\x65\x6e\163\145\056",
5230
                F = "\x54\x68\x69\163\040\151\x73\x20\x74\x68\145\x20\104\x45\x4d\117\040\166\x65\162\163\151\157\156\x20\x6f\x66\040\103\x4b\x46\151\156\x64\x65\162\056\040" + E,
5231
                G = "\x50\x72\157\144\x75\x63\164\x20\x6c\x69\143\145\156\x73\145\040\x68\141\x73\040\x65\x78\160\151\162\x65\144\x2e\x20" + E;
5232
            D.qX = function () {
5233
                return F;
5234
            };
5235
            D.dT.push(function () {
5236
                var H = this.bn();
5237
                if (f) {
5238
                    H.$.onfocusin = function () {
5239
                        H.addClass('focus_inside');
5240
                    };
5241
                    H.$.onfocusout = function () {
5242
                        H.removeClass('focus_inside');
5243
                    };
5244
                } else {
5245
                    H.$.addEventListener('focus', function () {
5246
                        H.addClass('focus_inside');
5247
                    }, true);
5248
                    H.$.addEventListener('blur', function () {
5249
                        H.removeClass('focus_inside');
5250
                    }, true);
5251
                }
5252
            });
5253
            D.bh('SelectAction', ['dblclick', 'click', 'requestSelectAction', 'requestSelectThumbnailAction'], function mH(H) {
5254
                var I = this,
5255
                    J = this.tools.bZ(H);
5256
                if (!J) return;
5257
                var K = I.data();
5258
                if (H.name == 'click') {
5259
                    if (!K._lastClickedFile) K._lastClickedFile = [null, null];
5260
                    K._lastClickedFile[1] = K._lastClickedFile[0];
5261
                    K._lastClickedFile[0] = J.name;
5262
                    return;
5263
                }
5264
                if (H.name == 'dblclick' && K._lastClickedFile[1] != J.name) return;
5265
                var L = h.extend({}, H.data, {
5266
                    file: J,
5267
                    jw: H.name == 'requestSelectThumbnailAction'
5268
                }, true);
5269
                I.oW('nd', L, function nd(N, O) {
5270
                    if (N) return;
5271
                    try {
5272
                        var P, Q = true,
5273
                            R = J.getUrl(),
5274
                            S = J.getThumbnailUrl();
5275
                        if (O.jw) {
5276
                            P = I.app.config.selectThumbnailActionFunction;
5277
                            if (!P && I.app.config.thumbsDirectAccess) P = I.app.config.selectActionFunction;
5278
                        } else P = I.app.config.selectActionFunction;
5279
                        if (P) {
5280
                            var T = O.jw ? S : R,
5281
                                U = {
5282
                                    fileUrl: R,
5283
                                    fileSize: J.size,
5284
                                    fileDate: J.date
5285
                                };
5286
                            if (O.jw) {
5287
                                U.thumbnailUrl = S;
5288
                                if (I.app.config.selectThumbnailActionFunction) U.selectThumbnailActionData = I.app.config.selectThumbnailActionData;
5289
                                else U.selectActionData = I.app.config.selectActionData;
5290
                            } else U.selectActionData = I.app.config.selectActionData;
5291
                            var V;
5292
                            switch (I.app.config.selectActionType) {
5293
                            case 'fckeditor':
5294
                                V = P(T);
5295
                                break;
5296
                            case 'ckeditor':
5297
                                V = P(T, U);
5298
                                break;
5299
                            case 'js':
5300
                                V = P.call(I.app.cg, T, U);
5301
                                break;
5302
                            }
5303
                            Q = V !== false;
5304
                        }
5305
                        var W = I.app.document.aU();
5306
                        if (Q && W.$.top == W.$.parent && W.$.top.opener) {
5307
                            var X = W.$.top.opener;
5308
                            W.$.top.close();
5309
                            if (X) X.focus();
5310
                        }
5311
                        I.oW('successSelectAction', O);
5312
                        I.oW('afterSelectAction', O);
5313
                    } catch (Z) {
5314
                        Z = a.ba(Z);
5315
                        I.oW('failedSelectAction', O);
5316
                        I.oW('afterSelectAction', O);
5317
                        throw Z;
5318
                    }
5319
                });
5320
            });
5321
            D.bh('KeyboardNavigation', ['keydown', 'requestKeyboardNavigation'], function iV(H) {
5322
                var I = this,
5323
                    J = 0;
5324
                if (H.data && H.data.bK) {
5325
                    var K = H.data.bK();
5326
                    J = K.$ == I.bn().$;
5327
                }
5328
                var L = this.tools.bZ(H);
5329
                if (!L && !J) return;
5330
                var M = h.extend({}, H.data, {
5331
                    file: L
5332
                }, true);
5333
                this.oW('jv', M, function jv(O, P) {
5334
                    var X = this;
5335
                    if (O) return;
5336
                    try {
5337
                        var Q, R, S = H.data.db();
5338
                        if (J && S >= 37 && S <= 40) {
5339
                            var T, U = I.data().files;
5340
                            for (var V = 0; V < U.length; V++) {
5341
                                R = U[V];
5342
                                if (!R.isDeleted) {
5343
                                    T = R;
5344
                                    break;
5345
                                }
5346
                            }
5347
                            if (T) X.tools.cR(T);
5348
                        } else if (I.data().dA == 'details') {
5349
                            if (S == 38) {
5350
                                Q = L.rowNode();
5351
                                if (Q.gE()) X.tools.cR(X.tools.bZ(Q.cf()));
5352
                            } else if (S == 40) {
5353
                                Q = L.rowNode();
5354
                                if (Q.ge()) X.tools.cR(X.tools.bZ(Q.dG()));
5355
                            }
5356
                        } else if (S == 38) {
5357
                            Q = L.rowNode();
5358
                            if (Q.gE()) {
5359
                                R = Q.cf();
5360
                                while (R && R.$.offsetLeft != Q.$.offsetLeft) R = R.cf();
5361
                                if (R) X.tools.cR(X.tools.bZ(R));
5362
                            }
5363
                        } else if (S == 39) {
5364
                            Q = L.rowNode();
5365
                            if (Q.ge()) X.tools.cR(X.tools.bZ(Q.dG()));
5366
                        } else if (S == 40) {
5367
                            Q = L.rowNode();
5368
                            if (Q.ge()) {
5369
                                R = Q.dG();
5370
                                while (R && R.$.offsetLeft != Q.$.offsetLeft) R = R.dG();
5371
                                if (R) X.tools.cR(X.tools.bZ(R));
5372
                            }
5373
                        } else if (S == 37) {
5374
                            Q = L.rowNode();
5375
                            if (Q.gE()) X.tools.cR(X.tools.bZ(Q.cf()));
5376
                        }
5377
                        X.oW('successKeyboardNavigation', P);
5378
                        X.oW('afterKeyboardNavigation', P);
5379
                    } catch (Y) {
5380
                        Y = a.ba(Y);
5381
                        X.oW('failedKeyboardNavigation', P);
5382
                        X.oW('afterKeyboardNavigation', P);
5383
                        throw Y;
5384
                    }
5385
                });
5386
            });
5387
            D.bh('ProcessingFile', ['requestProcessingFile'], function nX(H) {
5388
                var I = this.tools.bZ(H),
5389
                    J = h.extend({}, H.data, {
5390
                        file: I
5391
                    }, true);
5392
                this.oW('nU', J, function nU(L, M) {
5393
                    if (L) return;
5394
                    try {
5395
                        var N = M.file;
5396
                        if (!N) this.oW('failedProcessingFile', M);
5397
                        else {
5398
                            var O = N.rowNode();
5399
                            if (O) O.addClass('processing');
5400
                            this.on('afterProcessingFile', function (Q) {
5401
                                if (Q.data.file != N) return;
5402
                                M.step = 2;
5403
                                this.oW('successProcessingFile', M);
5404
                                this.oW('afterProcessingFile', M);
5405
                                Q.aF();
5406
                            });
5407
                            M.step = 1;
5408
                            this.oW('successProcessingFile', M);
5409
                        }
5410
                    } catch (Q) {
5411
                        this.oW('failedProcessingFile', M);
5412
                        this.oW('afterProcessingFile', M);
5413
                        throw a.ba(Q);
5414
                    }
5415
                });
5416
            });
5417
            D.bh('RepaintFile', ['requestRepaintFile'], function mz(H) {
5418
                var I = this.tools.bZ(H),
5419
                    J = h.extend({}, H.data, {
5420
                        file: I
5421
                    }, true);
5422
                this.oW('mK', J, function mK(L, M) {
5423
                    var R = this;
5424
                    if (L) return;
5425
                    try {
5426
                        var N = M.file;
5427
                        if (!N) R.oW('failedRepaintFile', M);
5428
                        else {
5429
                            var O = N.filenameNode();
5430
                            if (O && O.getHtml() != h.htmlEncode(N.name)) O.setHtml(h.htmlEncode(N.name));
5431
                            var P = N.rowNode();
5432
                            if (P) P.removeClass('processing');
5433
                            R.oW('successRepaintFile', M);
5434
                        }
5435
                        R.oW('afterRepaintFile', M);
5436
                    } catch (S) {
5437
                        R.oW('failedRepaintFile', M);
5438
                        R.oW('afterRepaintFile', M);
5439
                        throw a.ba(S);
5440
                    }
5441
                });
5442
            });
5443
            if (f && e.ie6Compat && !e.ie7Compat && !e.ie8) D.bh('HoverFile', ['mouseover', 'mouseout'], function ns(H) {
5444
                if (this.data().dA != 'details') return;
5445
                var I = this.tools.bZ(H);
5446
                if (!I) return;
5447
                var J = h.extend({}, H.data, {
5448
                    bi: I.rowNode()
5449
                }, true);
5450
                this.oW('nG', J, function nG(L, M) {
5451
                    var O = this;
5452
                    if (L) return;
5453
                    try {
5454
                        if (H.name == 'mouseover') {
5455
                            if (O.data().ho) O.data().ho.removeClass('hover');
5456
                            M.bi.addClass('hover');
5457
                            O.data().ho = M.bi;
5458
                        } else {
5459
                            O.data().ho.removeClass('hover');
5460
                            delete O.data().ho;
5461
                        }
5462
                        O.oW('successHoverFile', M);
5463
                        O.oW('afterHoverFile', M);
5464
                    } catch (P) {
5465
                        O.oW('failedHoverFile', M);
5466
                        O.oW('afterHoverFile', M);
5467
                        throw a.ba(P);
5468
                    }
5469
                });
5470
            });
5471
            D.bh('RenderFiles', ['requestRenderFiles'], function nR(H) {
5472
                var I = this.data(),
5473
                    J, K = H.data && (!!H.data.ma || !!H.data.lK),
5474
                    L = H.data && H.data.ma,
5475
                    M;
5476
                if (!F) return;
5477
                if (H.data && H.data.files) {
5478
                    this.tools.kR();
5479
                    for (M = 0; M < H.data.files.length; M++) I.files[M] = H.data.files[M];
5480
                    J = I.files;
5481
                    K = 1;
5482
                    this.data().folder = H.data.folder;
5483
                }
5484
                if (L && L != this.data().folder) return;
5485
                if (K || !I.cP || I.pq) I.cP = {};
5486
                if (!I.files.length) J = I.files;
5487
                else if (I.cN == 'date' && I.cP.date) J = I.cP.date;
5488
                else if (I.cN == 'size' && I.cP.size) J = I.cP.size;
5489
                else if (I.cN == 'filename' && I.cP.filename) J = I.cP.filename;
5490
                else {
5491
                    a.log('[FILES VIEW] Sorting files');
5492
                    var N = I.files;
5493
                    J = [];
5494
                    for (M = 0; M < N.length; M++) {
5495
                        if (!N[M].isDeleted) {
5496
                            var O = J.length;
5497
                            N[M].index = O;
5498
                            J[O] = N[M];
5499
                        }
5500
                    }
5501
                    I.files.length = 0;
5502
                    for (M = 0; M < J.length; M++) I.files[M] = J[M];
5503
                    J = [];
5504
                    for (M = 0; M < I.files.length; M++) {
5505
                        J[M] = I.files[M];
5506
                        J[M].releaseDomNodes();
5507
                    }
5508
                    if (I.cN == 'date') {
5509
                        J.sort(function (R, S) {
5510
                            return R.date > S.date ? -1 : R.date < S.date ? 1 : 0;
5511
                        });
5512
                        I.cP.date = J;
5513
                    } else if (I.cN == 'size') {
5514
                        J.sort(function (R, S) {
5515
                            return R.size > S.size ? -1 : R.size < S.size ? 1 : 0;
5516
                        });
5517
                        I.cP.size = J;
5518
                    } else {
5519
                        J.sort(function (R, S) {
5520
                            var T = R.name.toLowerCase(),
5521
                                U = S.name.toLowerCase();
5522
                            return T < U ? -1 : T > U ? 1 : 0;
5523
                        });
5524
                        I.cP.filename = J;
5525
                    }
5526
                }
5527
                var P = h.extend({
5528
                    eu: 1,
5529
                    dA: this.data().dA,
5530
                    display: this.data().display
5531
                }, H.data, {
5532
                    files: J
5533
                }, true);
5534
                this.oW('mP', P, function mP(R, S) {
5535
                    if (R || F.charAt(2 << 2) != 't') return;
5536
                    o = a.bF.substr(7, 1);
5537
                    try {
5538
                        if (I.hA && I.hA != S.dA) for (var T = 0; T < S.files.length; T++) S.files[T].releaseDomNodes();
5539
                        this.tools.cR();
5540
                        this.oW('requestAddFiles', S, function (V) {
5541
                            if (!V) I.hA = S.dA;
5542
                        });
5543
                        this.oW('successRenderFiles', S);
5544
                        this.oW('afterRenderFiles', S);
5545
                    } catch (V) {
5546
                        this.oW('failedRenderFiles', S);
5547
                        this.oW('afterRenderFiles', S);
5548
                        throw a.ba(V);
5549
                    }
5550
                });
5551
            });
5552
            D.dT.push(function (H, I) {
5553
                I = this;
5554
                H.on('afterCommandExecDefered', function (J) {
5555
                    if (!J.data) return;
5556
                    var K = J.data.name,
5557
                        L;
5558
                    if (K == 'RenameFile') {
5559
                        var M = J.data.file;
5560
                        L = M && M.folder;
5561
                        if (I.tools.currentFolder() != L) return;
5562
                        I.oW('requestRenderFiles', {
5563
                            folder: L,
5564
                            lK: 1
5565
                        }, function (N) {
5566
                            if (N) return;
5567
                            I.oW('requestSelectFile', {
5568
                                file: J.data.file
5569
                            }, function () {
5570
                                if (N) return;
5571
                                M.focus();
5572
                            });
5573
                        });
5574
                    } else if (K == 'RemoveFile') {
5575
                        L = J.data.folder;
5576
                        if (I.tools.currentFolder() != L) return;
5577
                        I.tools.cR();
5578
                        I.bn().focus();
5579
                        I.oW('requestRenderFiles', {
5580
                            folder: L,
5581
                            lK: 1
5582
                        });
5583
                    }
5584
                });
5585
            });
5586
            D.bh('SelectFile', ['click', 'requestSelectFile'], function mI(H) {
5587
                var I = this.tools.bZ(H),
5588
                    J = H.name == 'click';
5589
                if (!(F.length >> 4)) return;
5590
                if (J && H.data.db() > a.bP) H.data.preventDefault();
5591
                var K = h.extend({}, H.data, {
5592
                    file: I
5593
                }, true);
5594
                this.oW('nf', K, function nf(M, N) {
5595
                    var R = this;
5596
                    if (M) return;
5597
                    var O = N.file;
5598
                    try {
5599
                        if (R.tools.dH()) {
5600
                            var P = R.tools.dH().rowNode();
5601
                            if (P) P.removeClass('selected');
5602
                        }
5603
                        if (O) {
5604
                            O.rowNode().addClass('selected');
5605
                            R.data().cG = O;
5606
                            if (J) R.tools.cR(O);
5607
                        } else if (R.tools.dH()) {
5608
                            R.data().cG = null;
5609
                            R.tools.cR();
5610
                        }
5611
                        R.oW('successSelectFile', N);
5612
                        R.oW('afterSelectFile', N);
5613
                    } catch (S) {
5614
                        R.oW('failedSelectFile', N);
5615
                        R.oW('afterSelectFile', N);
5616
                        throw a.ba(S);
5617
                    }
5618
                });
5619
            });
5620
            D.bh('AddFiles', ['requestAddFiles'], function ni(H) {
5621
                var I = h.extend({
5622
                    eu: 0,
5623
                    view: 'thumbnails',
5624
                    fa: null
5625
                }, H.data, {
5626
                    files: H.data.file ? [H.data.file] : H.data.files
5627
                }, true);
5628
                this.oW('beforeAddFiles', I, function beforeAddFiles(K, L) {
5629
                    var V = this;
5630
                    if (K) return;
5631
                    try {
5632
                        var M = V.bn(),
5633
                            N = V.data().hA;
5634
                        M.removeClass('files_message');
5635
                        var O = 0;
5636
                        if (v()) {
5637
                            if (L.files.length) L.fa = F;
5638
                            O = 1;
5639
                        }
5640
                        var P, Q;
5641
                        if (L.dA == 'details') {
5642
                            if (!V.data().kQ) V.data().kQ = h.bind(V.tools.qc, V.tools);
5643
                            M.removeClass('files_thumbnails');
5644
                            M.addClass('files_details');
5645
                            P = z(L.files, V.data().kQ);
5646
                            Q = V.tools.fF();
5647
                            var R = V.tools.kj();
5648
                            if (N && N != 'details') V.tools.lP().setHtml('');
5649
                            if (f) {
5650
                                if (R && N && N == 'details' && !L.eu) P = R.getHtml() + P;
5651
                                if (Q) Q.remove();
5652
                                if (P) {
5653
                                    var S = r[0] + V.tools.lz() + r[1] + P + r[2] + r[3];
5654
                                    M.appendHtml(S);
5655
                                }
5656
                                V.tools.releaseDomNodes(['kj', 'fF']);
5657
                            } else if (P) {
5658
                                if (L.eu) V.tools.fF().setHtml(V.tools.lz() + r[1] + P + r[2]);
5659
                                else R.appendHtml(P);
5660
                            } else Q.setHtml('');
5661
                        } else {
5662
                            if (!V.tools.kY) V.tools.kY = h.bind(V.tools.pJ, V.tools);
5663
                            M.removeClass('files_details');
5664
                            M.addClass('files_thumbnails');
5665
                            P = z(L.files, V.tools.kY);
5666
                            Q = V.tools.lP();
5667
                            if (N && N == 'details') {
5668
                                var T = V.tools.fF();
5669
                                if (T && f) T.remove();
5670
                                else if (T) T.setHtml('');
5671
                            }
5672
                            if (L.eu) Q.setHtml(P);
5673
                            else Q.appendHtml(P);
5674
                        }
5675
                        if (!O && (!o || a.bs.indexOf(o) % 8 < 3)) {
5676
                            L.fa = G;
5677
                            O = 1;
5678
                        }
5679
                        if ((L.eu && !P || O) && L.fa) {
5680
                            M.addClass('files_message');
5681
                            V.tools.of().setHtml(L.fa);
5682
                        }
5683
                        if (!o && !O) Q.setHtml('');
5684
                        V.oW('successAddFiles');
5685
                        V.oW('afterAddFiles');
5686
                    } catch (W) {
5687
                        V.oW('failedAddFiles');
5688
                        V.oW('afterAddFiles');
5689
                        throw a.ba(W);
5690
                    }
5691
                });
5692
            });
5693
            D.bh('ShowFolderFiles', ['requestShowFolderFiles'], function mO(H) {
5694
                var I = this,
5695
                    J = a.aG.bX['foldertree.foldertree'].tools.cq(H),
5696
                    K = h.extend({}, H.data, {
5697
                        folder: J
5698
                    }, true);
5699
                this.oW('beforeShowFolderFiles', K, function beforeShowFolderFiles(M, N) {
5700
                    if (M) return;
5701
                    if (this.tools.dH()) this.oW('requestSelectFile');
5702
                    this.app.cS('refresh').bR(a.aY);
5703
                    try {
5704
                        var O = N.folder,
5705
                            P;
5706
                        if (!O.acl.folderView) {
5707
                            I.app.msgDialog('', I.app.lang.Errors[103]);
5708
                            throw '[CKFINDER] No permissions to view folder.';
5709
                        }
5710
                        H.data.widget = this;
5711
                        this.data().folder = O;
5712
                        I.tools.kR();
5713
                        this.oW('requestRenderFiles', {
5714
                            eu: 1,
5715
                            fa: I.app.lang.FilesLoading
5716
                        });
5717
                        this.app.connector.sendCommand('GetFiles', P, function (R) {
5718
                            I.app.cS('refresh').bR(a.aS);
5719
                            if (I.app.aV != O) {
5720
                                I.oW('failedShowFolderFiles', N);
5721
                                I.oW('afterShowFolderFiles', N);
5722
                                return;
5723
                            }
5724
                            if (R.checkError() || v.toString().length < 200) return;
5725
                            I.tools.kR();
5726
                            var S = R.selectNodes('Connector/Files/File');
5727
                            for (var T = 0; T < S.length; T++) {
5728
                                var U = S[T].attributes.getNamedItem('date').value;
5729
                                I.tools.rg(new a.aL.File(S[T].attributes.getNamedItem('name').value, parseInt(S[T].attributes.getNamedItem('size').value, 10), S[T].attributes.getNamedItem('thumb') ? S[T].attributes.getNamedItem('thumb').value : false, U, I.app.lB(U.substr(6, 2), U.substr(4, 2), U.substr(0, 4), U.substr(8, 2), U.substr(10, 2)), O));
5730
                            }
5731
                            I.oW('requestRenderFiles', {
5732
                                fa: I.app.lang.FilesEmpty
5733
                            });
5734
                            I.oW('successShowFolderFiles', N);
5735
                            I.oW('afterShowFolderFiles', N);
5736
                            u(I);
5737
                        }, O.type, O);
5738
                    } catch (R) {
5739
                        this.oW('failedShowFolderFiles', N);
5740
                        this.oW('afterShowFolderFiles', N);
5741
                        throw a.ba(R);
5742
                    }
5743
                });
5744
            });
5745
            D.tools.bZ = function (H) {
5746
                var M = this;
5747
                var I, J = 0;
5748
                if (H.data && H.data.file instanceof j) {
5749
                    H = H.data.file;
5750
                    J = 1;
5751
                } else if (H.data && H.data.bK) {
5752
                    H = H.data.bK();
5753
                    J = 1;
5754
                } else if (H instanceof g.bi) J = 1;
5755
                if (J) {
5756
                    var K = H;
5757
                    while (K && (!K.is('a') || !K.hasAttribute('id')) && !K.is('tr')) {
5758
                        if (K == M.widget.eh) break;
5759
                        K = K.getParent();
5760
                    }
5761
                    if (K) {
5762
                        var L = K.dS();
5763
                        if (L && (K.is('a') || K.is('tr'))) I = M.widget.data().files[K.dS().slice(1)];
5764
                    }
5765
                } else if (typeof H == 'number') I = M.widget.data().files[H];
5766
                else if (typeof H == 'String') I = M.widget.data().files[K.dS().slice(1)];
5767
                else if (H.data && H.data.file && H.data.file instanceof a.aL.File) I = H.data.file;
5768
                else if (H.data && H.data.files && H.data.files.length && H.data.files[0] && H.data.files[0] instanceof a.aL.File) I = H.data.files[0];
5769
                else if (H instanceof a.aL.File) I = H;
5770
                return I;
5771
            };
5772
            D.tools.kR = function () {
5773
                var H = this.widget.data();
5774
                H.files.length = 0;
5775
                H.cP = {};
5776
            };
5777
            D.tools.oR = function (H) {
5778
                var I = H.thumb,
5779
                    J = H.name,
5780
                    K = this.widget.app,
5781
                    L = J.match(K.rQ.jf);
5782
                if (L && (L = L[0]) && K.rQ.jh.test(L)) return K.fh + 'images/icons/16/' + L.toLowerCase() + '.gif';
5783
                return K.fh + 'images/icons/16/default.icon.gif';
5784
            };
5785
            D.tools.rg = function (H) {
5786
                var I = this.widget.data().files,
5787
                    J = I.push(H);
5788
                H.index = --J;
5789
                H.app = this.widget.app;
5790
                return H;
5791
            };
5792
            D.tools.lP = function (H) {
5793
                var I = this;
5794
                if (!I.jl) I.jl = I.widget.bn().aC(1);
5795
                return I.jl;
5796
            };
5797
            D.tools.kj = function (H) {
5798
                var J = this;
5799
                if (J.iJ === undefined) {
5800
                    var I = J.fF();
5801
                    J.iJ = I ? C(B(I.$.childNodes, 'tbody')) : null;
5802
                }
5803
                return J.iJ;
5804
            };
5805
            D.tools.sn = function (H) {
5806
                var J = this;
5807
                if (J.kT === undefined) {
5808
                    var I = J.fF();
5809
                    J.kT = I ? C(B(I.$.childNodes, 'thead')) : null;
5810
                }
5811
                return J.kT;
5812
            };
5813
            D.tools.fF = function (H) {
5814
                var I = this;
5815
                if (I.iO === undefined) I.iO = C(B(I.widget.bn().$.childNodes, 'table'));
5816
                return I.iO;
5817
            };
5818
            D.tools.of = function (H) {
5819
                var I = this;
5820
                if (!I.iF) I.iF = I.widget.bn().aC(0);
5821
                return I.iF;
5822
            };
5823
            D.tools.releaseDomNodes = function (H) {
5824
                var I = this;
5825
                I.jl = undefined;
5826
                I.iO = undefined;
5827
                I.iJ = undefined;
5828
                I.iF = undefined;
5829
            };
5830
            D.tools.pJ = function (H) {
5831
                var I = H.getThumbnailUrl(true),
5832
                    J = 'r' + H.index,
5833
                    K = this.widget.data().display;
5834
                return '<a id="' + J + '" class="file_entry" tabindex="-1" role="listiem presentation" href="javascript:void(0)" ' + 'aria-labelledby="' + J + '_label" aria-describedby="' + J + '_details">' + '<div class="image"><div role="img" style="background-image: url(\'' + I + "');\"></div></div>" + (K.filename ? '<h5 id="' + J + '_label">' + h.htmlEncode(H.name) + '</h5>' : '') + '<span id="' + J + '_details" class="details" role="list presentation">' + (K.date ? '<span role="listitem" class="extra">' + H.dateF + '</span>' : '') + (K.filesize ? '<span role="listitem" aria-label="Size">' + H.size + ' KB</span>' : '') + '</span>' + '</a>';
5835
            };
5836
            D.tools.lz = function () {
5837
                var K = this;
5838
                var H = K.widget.data().display,
5839
                    I = [];
5840
                I.push('<td class="name">' + K.widget.app.lang.SetDisplayName + '</td>');
5841
                if (H.filesize) I.push('<td>' + K.widget.app.lang.SetDisplaySize + '</td>');
5842
                if (H.date) I.push('<td>' + K.widget.app.lang.SetDisplayDate + '</td>');
5843
                var J = I.length - 1;
5844
                if (J) I[J] = '<td class="last">' + I[J].substr(4);
5845
                else I[J] = '<td class="last ' + I[J].substr(11);
5846
                return '<thead><tr><td>&nbsp;</td>' + I.join('') + '</tr>' + '</thead>';
5847
            };
5848
            D.tools.qc = function (H) {
5849
                var I = this.oR(H),
5850
                    J = 'r' + H.index,
5851
                    K = this.widget.data().display,
5852
                    L = [];
5853
                L.push('<td class="name"><a tabindex="-1">' + (K.filename ? h.htmlEncode(H.name) : '') + '</a>' + '</td>');
5854
                if (K.filesize) L.push('<td>' + H.size + ' KB' + '</td>');
5855
                if (K.date) L.push('<td>' + H.dateF + '</td>');
5856
                var M = L.length - 1;
5857
                if (M) L[M] = '<td class="last">' + L[M].substr(4);
5858
                else L[M] = '<td class="last ' + L[M].substr(11);
5859
                return '<tr id="' + J + '">' + '<td class="image">' + '<img src="' + I + '" alt="img alt" />' + '</td>' + L.join('') + '</tr>';
5860
            };
5861
            D.tools.dH = function () {
5862
                var H = this.widget.data();
5863
                if (H.cG) if (!H.cG.isDeleted) return H.cG;
5864
                else return H.cG = null;
5865
            };
5866
            D.tools.currentFolder = function () {
5867
                return this.widget.data().folder;
5868
            };
5869
            D.tools.cR = function (H) {
5870
                var I = this;
5871
                if (H) {
5872
                    if (I.iS) I.iS.blur();
5873
                    else I.widget.bn().setAttribute('tabindex', -1);
5874
                    I.iS = H;
5875
                    H.focus();
5876
                } else {
5877
                    delete I.iS;
5878
                    I.widget.bn().setAttribute('tabindex', 0);
5879
                }
5880
            };
5881
        };
5882
        a.aL.File = function (D, E, F, G, H, I) {
5883
            var J = this;
5884
            J.index = null;
5885
            J.app = null;
5886
            J.name = D;
5887
            J.ext = D.match(p.fX)[0];
5888
            J.nameL = D.toLowerCase();
5889
            J.size = E;
5890
            J.thumb = F;
5891
            J.date = G;
5892
            J.dateF = H;
5893
            J.folder = I;
5894
            J.isDeleted = false;
5895
        };
5896
        a.aL.File.prototype = {
5897
            rename: function (D) {
5898
                x(D, this.app);
5899
                var E = this;
5900
                if (E.name == D) {
5901
                    E.app.oW('afterCommandExecDefered', {
5902
                        name: 'RenameFile',
5903
                        file: E
5904
                    });
5905
                    return;
5906
                }
5907
                E.app.oW('requestProcessingFile', {
5908
                    file: E
5909
                });
5910
                E.app.connector.sendCommandPost('RenameFile', {
5911
                    fileName: E.name,
5912
                    newFileName: D
5913
                }, null, function (F) {
5914
                    if (F.checkError()) {
5915
                        E.app.oW('requestRepaintFile', {
5916
                            file: E
5917
                        });
5918
                        return;
5919
                    }
5920
                    E.name = F.selectSingleNode('Connector/RenamedFile/@newName').value;
5921
                    E.thumb = 0;
5922
                    E.app.oW('afterCommandExecDefered', {
5923
                        name: 'RenameFile',
5924
                        file: E
5925
                    });
5926
                }, E.folder.type, E.folder);
5927
            },
5928
            remove: function () {
5929
                var D = this,
5930
                    E = D.folder,
5931
                    F = D.app;
5932
                F.oW('requestProcessingFile', {
5933
                    file: D
5934
                });
5935
                F.connector.sendCommandPost('DeleteFile', {
5936
                    FileName: D.name
5937
                }, null, function (G) {
5938
                    if (G.checkError()) return;
5939
                    D.isDeleted = true;
5940
                    D.releaseDomNodes();
5941
                    F.oW('afterCommandExecDefered', {
5942
                        name: 'RemoveFile',
5943
                        folder: E,
5944
                        index: D.index
5945
                    });
5946
                }, E.type, E);
5947
            },
5948
            select: function () {
5949
                this.app.oW('requestSelectFile', {
5950
                    file: this
5951
                });
5952
            },
5953
            deselect: function () {
5954
                this.app.oW('requestSelectFile');
5955
            },
5956
            'toString': function () {
5957
                return this.name;
5958
            },
5959
            isImage: function () {
5960
                return this.app.rQ.rO.test(this.ext);
5961
            },
5962
            isSameFile: function (D) {
5963
                return this.name == D.name && this.folder.getPath() == D.folder.getPath() && this.folder.type == D.folder.type;
5964
            },
5965
            getUrl: function () {
5966
                return this.folder.getUrl() + encodeURIComponent(this.name);
5967
            },
5968
            rowNode: function () {
5969
                var D = this;
5970
                if (!D.je) D.je = D.app.document.getById('r' + D.index);
5971
                return D.je;
5972
            },
5973
            getThumbnailUrl: function (D) {
5974
                var I = this;
5975
                var E = I.thumb,
5976
                    F = I.name,
5977
                    G = I.app,
5978
                    H = F.match(G.rQ.jf);
5979
                if (H && (H = H[0])) {
5980
                    if (G.config.thumbsEnabled && G.rQ.rO.test(H)) {
5981
                        if (E && G.config.thumbsDirectAccess) return G.config.thumbsUrl + I.folder.type + I.folder.getPath() + encodeURIComponent(F) + (!D ? '' : '?hash=' + G.getResourceType(I.folder.type).hash);
5982
                        return G.connector.composeUrl('Thumbnail', {
5983
                            FileName: F
5984
                        }, I.folder.type, I.folder);
5985
                    }
5986
                    if (G.rQ.jh.test(H)) return G.fh + 'images/icons/32/' + H.toLowerCase() + '.gif';
5987
                }
5988
                return G.fh + 'images/icons/32/default.icon.gif';
5989
            },
5990
            filenameNode: function () {
5991
                var E = this;
5992
                if (E.ht === undefined) {
5993
                    var D = E.rowNode();
5994
                    if (D) if (D.is('a')) E.ht = C(B(D.$.childNodes, 'h5'));
5995
                    else E.ht = C(B(E.aNode().$.childNodes, 'h5'));
5996
                }
5997
                return E.ht;
5998
            },
5999
            aNode: function () {
6000
                var F = this;
6001
                if (F.dM === undefined) {
6002
                    var D = F.rowNode();
6003
                    if (D) if (D.is('a')) F.dM = D;
6004
                    else {
6005
                        var E = B(D.$.childNodes, 'td', 1);
6006
                        F.dM = C(B(E.childNodes, 'a'));
6007
                    }
6008
                }
6009
                return F.dM;
6010
            },
6011
            focusNode: function () {
6012
                return this.aNode();
6013
            },
6014
            releaseDomNodes: function () {
6015
                this.je = undefined;
6016
                this.dM = undefined;
6017
                this.ht = undefined;
6018
            },
6019
            focus: function () {
6020
                this.select();
6021
                var D = this.focusNode();
6022
                D.setAttribute('tabindex', 0);
6023
                D.focus();
6024
            },
6025
            blur: function () {
6026
                this.aNode().setAttribute('tabindex', -1);
6027
            }
6028
        };
6029
6030
        function x(D, E) {
6031
            if (!D || D.length === 0) throw new a.dU('name_empty', E.lang.ErrorMsg.pg);
6032
            if (p.iz.test(D)) throw new a.dU('name_invalid_chars', E.lang.ErrorMsg.oP);
6033
            return true;
6034
        };
6035
6036
        function y() {
6037
            h.extend(a.aL.Folder.prototype, {
6038
                getFiles: function (D) {
6039
                    var E = this,
6040
                        F = this.app;
6041
                    F.connector.sendCommand('GetFiles', {}, function (G) {
6042
                        var H = [],
6043
                            I = G.selectNodes('Connector/Files/File');
6044
                        for (var J = 0; J < I.length; J++) {
6045
                            var K = I[J].attributes.getNamedItem('date').value;
6046
                            H.push(new a.aL.File(I[J].attributes.getNamedItem('name').value, parseInt(I[J].attributes.getNamedItem('size').value, 10), I[J].attributes.getNamedItem('thumb') ? I[J].attributes.getNamedItem('thumb').value : false, K, F.lB(K.substr(6, 2), K.substr(4, 2), K.substr(0, 4), K.substr(8, 2), K.substr(10, 2)), E));
6047
                        }
6048
                        if (D) D.call(E, H);
6049
                    }, E.type, E);
6050
                },
6051
                showFiles: function () {
6052
                    this.app.oW('requestShowFolderFiles', {
6053
                        folder: this
6054
                    });
6055
                }
6056
            });
6057
        };
6058
6059
        function z(D, E) {
6060
            if (!D) return undefined;
6061
            var F = '';
6062
            for (var G = 0; G < D.length; G++) F += E(D[G]);
6063
            return F;
6064
        };
6065
6066
        function A(D, E) {
6067
            for (var F in D) {
6068
                if (E(D[F]) !== undefined) return D[F];
6069
            }
6070
            return undefined;
6071
        };
6072
6073
        function B(D, E, F) {
6074
            return A(D, function (G) {
6075
                if (G.tagName && G.tagName.toLowerCase() == E && !F--) return G;
6076
            });
6077
        };
6078
6079
        function C(D) {
6080
            return D ? new j(D) : null;
6081
        };
6082
    })();
6083
    (function () {
6084
        function o(w, x) {
6085
            var y = [];
6086
            if (!x) return w;
6087
            else for (var z in x) y.push(z + '=' + encodeURIComponent(x[z]));
6088
            return w + (w.indexOf('?') != -1 ? '&' : '?') + y.join('&');
6089
        };
6090
6091
        function p(w) {
6092
            w += '';
6093
            var x = w.charAt(0).toUpperCase();
6094
            return x + w.substr(1);
6095
        };
6096
6097
        function q(w) {
6098
            var z = this;
6099
            var x = z.getDialog(),
6100
                y = x.getParentApi();
6101
            y._.rb = z;
6102
            if (!x.getContentElement(z['for'][0], z['for'][1]).getInputElement().$.value) return false;
6103
            if (!x.getContentElement(z['for'][0], z['for'][1]).vy()) return false;
6104
            return true;
6105
        };
6106
6107
        function r(w, x, y) {
6108
            x.filebrowser = y;
6109
            if (!y.url) return;
6110
            params.CKFinderFuncNum = w._.ra;
6111
            if (!params.langCode) params.langCode = w.langCode;
6112
            x.action = o(y.url, params);
6113
            x.filebrowser = y;
6114
        };
6115
6116
        function s(w, x, y, z) {
6117
            var A, B;
6118
            for (var C in z) {
6119
                A = z[C];
6120
                if (A.type == 'hbox' || A.type == 'vbox') s(w, x, y, A.children);
6121
                if (!A.filebrowser) continue;
6122
                if (A.type == 'fileButton' && A['for']) {
6123
                    if (typeof A.filebrowser == 'string') {
6124
                        var D = {
6125
                            target: A.filebrowser
6126
                        };
6127
                        A.filebrowser = D;
6128
                    }
6129
                    A.filebrowser.action = 'QuickUpload';
6130
                    url = A.filebrowser.url;
6131
                    if (!url) {
6132
                        var E = A.onShow;
6133
                        A.onShow = function (G) {
6134
                            var H = G.jN;
6135
                            if (E && E.call(H, G) === false) return false;
6136
                            var I = w.getSelectedFolder();
6137
                            if (I) url = I.getUploadUrl();
6138
                            if (!url) return false;
6139
                            var J = A.filebrowser.params || {};
6140
                            J.CKFinderFuncNum = w._.ra;
6141
                            if (!J.langCode) J.langCode = w.langCode;
6142
                            url = o(url, J);
6143
                            var K = this.getDialog().getContentElement(A['for'][0], A['for'][1]);
6144
                            if (!K) return false;
6145
                            K._.dg.action = url;
6146
                            K.reset();
6147
                        };
6148
                    } else {
6149
                        A.filebrowser.url = url;
6150
                        A.hidden = false;
6151
                        r(w, y.vz(A['for'][0]).eB(A['for'][1]), A.filebrowser);
6152
                    }
6153
                    var F = A.onClick;
6154
                    A.onClick = function (G) {
6155
                        var H = G.jN;
6156
                        if (F && F.call(H, G) === false) return false;
6157
                        return q.call(H, G);
6158
                    };
6159
                }
6160
            }
6161
        };
6162
6163
        function t(w, x) {
6164
            var y = x.getDialog(),
6165
                z = x.filebrowser.target || '';
6166
            if (z) {
6167
                var A = z.split(':'),
6168
                    B = y.getContentElement(A[0], A[1]);
6169
                if (B) {
6170
                    B.setValue(w);
6171
                    y.selectPage(A[0]);
6172
                }
6173
            }
6174
        };
6175
6176
        function u(w, x, y) {
6177
            if (y.indexOf(';') !== -1) {
6178
                var z = y.split(';');
6179
                for (var A = 0; A < z.length; A++) {
6180
                    if (u(w, x, z[A])) return true;
6181
                }
6182
                return false;
6183
            }
6184
            var B = w.vz(x).eB(y).filebrowser;
6185
            return B && B.url;
6186
        };
6187
6188
        function v(w, x) {
6189
            var B = this;
6190
            var y = B._.rb.getDialog(),
6191
                z = B._.rb['for'],
6192
                A = B._.rb.filebrowser.onSelect;
6193
            if (z) y.getContentElement(z[0], z[1]).reset();
6194
            if (typeof x == 'function' && x.call(B._.rb) === false) return;
6195
            if (A && A.call(B._.rb, w, x) === false) return;
6196
            if (typeof x == 'string' && x) alert(x);
6197
            if (w) t(w, B._.rb);
6198
        };
6199
        l.add('filebrowser', {
6200
            bz: function (w) {
6201
                w.cg._.ra = h.addFunction(v, w.cg);
6202
            }
6203
        });
6204
        a.on('dialogDefinition', function (w) {
6205
            var x = w.data.dg,
6206
                y;
6207
            for (var z in x.contents) {
6208
                y = x.contents[z];
6209
                s(w.application.cg, w.data.name, x, y.elements);
6210
                if (y.hidden && y.filebrowser) y.hidden = !u(x, y.id, y.filebrowser);
6211
            }
6212
        });
6213
    })();
6214
    l.add('button', {
6215
        eK: function (o) {
6216
            o.bY.kd(a.UI_BUTTON, m.button.dq);
6217
        }
6218
    });
6219
    CKFinder._.UI_BUTTON = a.UI_BUTTON = 1;
6220
    m.button = function (o) {
6221
        h.extend(this, o, {
6222
            title: o.label,
6223
            className: o.className || o.command && 'cke_button_' + o.command || '',
6224
            click: o.click || (function (p) {
6225
                if (o.command) p.execCommand(o.command);
6226
                else if (o.onClick) o.onClick(p);
6227
            })
6228
        });
6229
        this._ = {};
6230
    };
6231
    m.button.dq = {
6232
        create: function (o) {
6233
            return new m.button(o);
6234
        }
6235
    };
6236
    m.button.prototype = {
6237
        canGroup: true,
6238
        er: function (o, p) {
6239
            var q = e,
6240
                r = this._.id = 'cke_' + h.getNextNumber();
6241
            this._.app = o;
6242
            var s = {
6243
                id: r,
6244
                button: this,
6245
                app: o,
6246
                focus: function () {
6247
                    var y = o.document.getById(r);
6248
                    y.focus();
6249
                },
6250
                lc: function () {
6251
                    this.button.click(o);
6252
                }
6253
            },
6254
                t = h.addFunction(s.lc, s),
6255
                u = m.button._.instances.push(s) - 1,
6256
                v = '',
6257
                w = this.command;
6258
            if (this.iH) o.on('mode', function () {
6259
                this.bR(this.iH[o.mode] ? a.aS : a.aY);
6260
            }, this);
6261
            else if (w) {
6262
                w = o.cS(w);
6263
                if (w) {
6264
                    w.on('bu', function () {
6265
                        this.bR(w.bu);
6266
                    }, this);
6267
                    v += 'cke_' + (w.bu == a.eV ? 'on' : w.bu == a.aY ? 'disabled' : 'off');
6268
                }
6269
            }
6270
            if (!w) v += 'cke_off';
6271
            if (this.className) v += ' ' + this.className;
6272
            p.push('<span class="cke_button">', '<a id="', r, '" class="', v, '" href="javascript:void(\'', (this.title || '').replace("'", ''), '\')" title="', this.title, '" tabindex="-1" hidefocus="true" role="button" aria-labelledby="' + r + '_label"' + (this.vZ ? ' aria-haspopup="true"' : ''));
6273
            if (q.opera || q.gecko && q.mac) p.push(' onkeypress="return false;"');
6274
            if (q.gecko) p.push(' onblur="this.style.cssText = this.style.cssText;"');
6275
            if (o.cg.inPopup && !o.cg.inUrlPopup) p.push(' onkeydown="var win = window.parent.opener.CKFinder._.uiButtonKeydown(', u, ', event);" onfocus="var win = window.parent.opener.CKFinder._.uiButtonFocus(', u, ', event);" onclick="var win = window.parent.opener.CKFinder._.callFunction(', t, ', this); return false;">');
6276
            else p.push(' onkeydown="window.parent.CKFinder._.uiButtonKeydown(', u, ', event);" onfocus="window.parent.CKFinder._.uiButtonFocus(', u, ', event);" onclick="window.parent.CKFinder._.callFunction(', t, ', this); return false;">');
6277
            if (this.icon !== false) p.push('<span class="cke_icon"');
6278
            if (this.icon) {
6279
                var x = (this.rD || 0) * -16;
6280
                p.push(' style="background-image:url(', a.getUrl(this.icon), ');background-position:0 ' + x + 'px;"');
6281
            }
6282
            if (this.icon !== false) p.push('></span>');
6283
            p.push('<span id="', r, '_label" class="cke_label">', this.label, '</span>');
6284
            if (this.vZ) p.push('<span class="cke_buttonarrow"></span>');
6285
            p.push('</a>', '</span>');
6286
            if (this.onRender) this.onRender();
6287
            return s;
6288
        },
6289
        bR: function (o) {
6290
            var t = this;
6291
            if (t._.bu == o) return false;
6292
            t._.bu = o;
6293
            var p = t._.app.document.getById(t._.id);
6294
            if (p) {
6295
                p.bR(o);
6296
                o == a.aY ? p.setAttribute('aria-disabled', true) : p.removeAttribute('aria-disabled');
6297
                o == a.eV ? p.setAttribute('aria-pressed', true) : p.removeAttribute('aria-pressed');
6298
                var q = t.title,
6299
                    r = t._.app.lang.common.unavailable,
6300
                    s = p.aC(1);
6301
                if (o == a.aY) q = r.replace('%1', t.title);
6302
                s.setHtml(q);
6303
                return true;
6304
            } else return false;
6305
        }
6306
    };
6307
    m.button._ = {
6308
        instances: [],
6309
        keydown: function (o, p) {
6310
            var q = m.button._.instances[o];
6311
            if (q.onkey) {
6312
                p = new g.event(p);
6313
                return q.onkey(q, p.db()) !== false;
6314
            }
6315
        },
6316
        focus: function (o, p) {
6317
            var q = m.button._.instances[o],
6318
                r;
6319
            if (q.onfocus) r = q.onfocus(q, new g.event(p)) !== false;
6320
            if (e.gecko && e.version < 10900) p.preventBubble();
6321
            return r;
6322
        }
6323
    };
6324
    CKFinder._.uiButtonKeydown = m.button._.keydown;
6325
    CKFinder._.uiButtonFocus = m.button._.focus;
6326
    m.prototype.qW = function (o, p) {
6327
        this.add(o, a.UI_BUTTON, p);
6328
    };
6329
    (function () {
6330
        l.add('container', {
6331
            bM: [],
6332
            bz: function (o) {
6333
                var p = this;
6334
                o.on('themeAvailable', function () {
6335
                    p.pV(o);
6336
                });
6337
            },
6338
            pV: function (o) {
6339
                var p = o.config.height,
6340
                    q = o.config.tabIndex || o.ax.getAttribute('tabindex') || 0;
6341
                if (!isNaN(p)) p += 'px';
6342
                var r = '',
6343
                    s = o.config.width;
6344
                if (s) {
6345
                    if (!isNaN(s)) s += 'px';
6346
                    r += 'width: ' + s + ';';
6347
                }
6348
                var t = o.config.className ? 'class="' + o.config.className + '"' : '',
6349
                    u = e.isCustomDomain(),
6350
                    v = j.et('<iframe style="' + r + 'height:' + p + '"' + t + ' frameBorder="0"' + (u ? " src=\"javascript:void((function(){document.open();document.domain='" + document.domain + "';" + 'document.close();' + '})())"' : '') + ' tabIndex="' + q + '"' + ' allowTransparency="true"' + '></iframe>', o.ax.getDocument());
6351
                v.on('load', function (x) {
6352
                    x.aF();
6353
                    var y = v.getFrameDocument().$;
6354
                    y.open();
6355
                    if (u) y.domain = document.domain;
6356
                    o.document = new i(y);
6357
                    o.theme.dQ(o);
6358
                    y.close();
6359
                    a.skins.load(o, 'application', function () {
6360
                        var z = o.dJ;
6361
                        if (z) z.oA(o.document);
6362
                    });
6363
                });
6364
                var w = o.lang.appTitle.replace('%1', o.name);
6365
                if (e.gecko) {
6366
                    v.on('load', function (x) {
6367
                        x.aF();
6368
                    });
6369
                    o.ax.setAttributes({
6370
                        role: 'region',
6371
                        title: w
6372
                    });
6373
                    v.setAttributes({
6374
                        role: 'region',
6375
                        title: ' '
6376
                    });
6377
                } else if (e.webkit) {
6378
                    v.setAttribute('title', w);
6379
                    v.setAttribute('name', w);
6380
                } else if (f) v.appendTo(o.ax);
6381
                if (!f) o.ax.append(v);
6382
            }
6383
        });
6384
        a.application.prototype.focus = function () {
6385
            this.document.aU().focus();
6386
        };
6387
    })();
6388
    l.add('contextmenu', {
6389
        bM: ['menu'],
6390
        eK: function (o) {
6391
            o.bj = new l.bj(o);
6392
            o.bD('bj', {
6393
                exec: function () {
6394
                    o.bj.show(o.document.bH());
6395
                }
6396
            });
6397
        }
6398
    });
6399
    l.bj = h.createClass({
6400
        $: function (o) {
6401
            this.id = 'cke_' + h.getNextNumber();
6402
            this.app = o;
6403
            this._.dF = [];
6404
            this._.vx = h.addFunction(function (p) {
6405
                this._.panel.hide();
6406
                o.focus && o.focus();
6407
            }, this);
6408
        },
6409
        _: {
6410
            onMenu: function (o, p, q, r, s, t) {
6411
                var u = this._.menu,
6412
                    v = this.app;
6413
                if (u) {
6414
                    u.hide();
6415
                    u.ih();
6416
                } else {
6417
                    u = this._.menu = new a.menu(v);
6418
                    u.onClick = h.bind(function (D) {
6419
                        var E = true;
6420
                        u.hide();
6421
                        if (f) u.onEscape();
6422
                        if (D.onClick) D.onClick();
6423
                        else if (D.command) v.execCommand(D.command);
6424
                        E = false;
6425
                    }, this);
6426
                    u.onEscape = function () {
6427
                        v.focus && v.focus();
6428
                    };
6429
                }
6430
                var w = this._.dF,
6431
                    x = [];
6432
                u.onHide = h.bind(function () {
6433
                    u.onHide = null;
6434
                    this.onHide && this.onHide();
6435
                }, this);
6436
                for (var y = 0; y < w.length; y++) {
6437
                    var z = w[y];
6438
                    if (z[1] && z[1].$ != t.$) continue;
6439
                    var A = w[y][0](s);
6440
                    if (A) for (var B in A) {
6441
                        var C = this.app.mh(B);
6442
                        if (C) {
6443
                            C.bu = A[B];
6444
                            u.add(C);
6445
                        }
6446
                    }
6447
                }
6448
                if (u.items.length) u.show(o, p || (v.lang.dir == 'rtl' ? 2 : 1), q, r);
6449
            }
6450
        },
6451
        ej: {
6452
            lX: function (o, p) {
6453
                if (e.opera) {
6454
                    var q;
6455
                    o.on('mousedown', function (u) {
6456
                        u = u.data;
6457
                        if (u.$.button != 2) {
6458
                            if (u.db() == a.bP + 1) o.oW('contextmenu', u);
6459
                            return;
6460
                        }
6461
                        if (p && (u.$.ctrlKey || u.$.metaKey)) return;
6462
                        var v = u.bK();
6463
                        if (!q) {
6464
                            var w = v.getDocument();
6465
                            q = w.createElement('input');
6466
                            q.$.type = 'button';
6467
                            w.bH().append(q);
6468
                        }
6469
                        q.setAttribute('style', 'position:absolute;top:' + (u.$.clientY - 2) + 'px;left:' + (u.$.clientX - 2) + 'px;width:5px;height:5px;opacity:0.01');
6470
                    });
6471
                    o.on('mouseup', function (u) {
6472
                        if (q) {
6473
                            q.remove();
6474
                            q = undefined;
6475
                            o.oW('contextmenu', u.data);
6476
                        }
6477
                    });
6478
                }
6479
                o.on('contextmenu', function (u) {
6480
                    var v = u.data;
6481
                    if (p && (e.webkit ? r : v.$.ctrlKey || v.$.metaKey)) return;
6482
                    v.preventDefault();
6483
                    var w = v.bK(),
6484
                        x = v.bK().getDocument().gT(),
6485
                        y = v.$.clientX,
6486
                        z = v.$.clientY;
6487
                    h.setTimeout(function () {
6488
                        this._.onMenu(x, null, y, z, w, o);
6489
                    }, 0, this);
6490
                }, this);
6491
                if (e.webkit) {
6492
                    var r, s = function (u) {
6493
                        r = u.data.$.ctrlKey || u.data.$.metaKey;
6494
                    },
6495
                        t = function () {
6496
                            r = 0;
6497
                        };
6498
                    o.on('keydown', s);
6499
                    o.on('keyup', t);
6500
                    o.on('contextmenu', t);
6501
                }
6502
            },
6503
            kh: function (o, p) {
6504
                this._.dF.push([o, p]);
6505
            },
6506
            show: function (o, p, q, r) {
6507
                this.app.focus();
6508
                this._.onMenu(o || a.document.gT(), p, q || 0, r || 0);
6509
            }
6510
        }
6511
    });
6512
    (function () {
6513
        l.add('dragdrop', {
6514
            bM: ['foldertree', 'filesview', 'contextmenu', 'dialog'],
6515
            onLoad: function lL(p) {
6516
                a.dialog.add('dragdropFileExists', function (r) {
6517
                    return {
6518
                        title: r.lang.FileExistsDlgTitle,
6519
                        minWidth: 270,
6520
                        minHeight: 60,
6521
                        contents: [{
6522
                            id: 'tab1',
6523
                            label: '',
6524
                            title: '',
6525
                            expand: true,
6526
                            padding: 0,
6527
                            elements: [{
6528
                                id: 'msg',
6529
                                className: 'cke_dialog_error_msg',
6530
                                type: 'html',
6531
                                html: ''
6532
                            },
6533
                            {
6534
                                type: 'hbox',
6535
                                className: 'cke_dialog_file_exist_options',
6536
                                children: [{
6537
                                    label: r.lang.common.makeDecision,
6538
                                    type: 'radio',
6539
                                    id: 'option',
6540
                                    'default': 'autorename',
6541
                                    items: [
6542
                                        [r.lang.FileAutorename, 'autorename'],
6543
                                        [r.lang.FileOverwrite, 'overwrite']
6544
                                    ]
6545
                                }]
6546
                            }]
6547
                        }],
6548
                        buttons: [CKFinder.dialog.okButton, CKFinder.dialog.cancelButton]
6549
                    };
6550
                });
6551
            },
6552
            gr: function tM(p) {
6553
                p.cK = new o(p);
6554
                var q, r;
6555
                p.on('bW', function bW(t) {
6556
                    if (t.data.space == 'mainBottom') t.data.html += '<div id="dragged_container" style="display: none; position: absolute;"></div>';
6557
                });
6558
                p.on('uiReady', function (t) {
6559
                    p.document.on('dragstart', function (x) {
6560
                        x.data.preventDefault(true);
6561
                    });
6562
                    p.document.on('drag', function (x) {
6563
                        x.data.preventDefault(true);
6564
                    });
6565
                    var u, v = p.aG['filesview.filesview'];
6566
                    for (u = 0; u < v.length; u++) v[u].gA('Draggable');
6567
                    var w = p.aG['foldertree.foldertree'];
6568
                    for (u = 0; u < w.length; u++) w[u].ke('Droppable');
6569
                });
6570
                a.aG.bX['filesview.filesview'].bh('Draggable', ['mousedown'], function tN(t) {
6571
                    var u = this,
6572
                        v = u.tools.bZ(t);
6573
                    if (!v) return;
6574
                    t.data.preventDefault();
6575
                    var w = h.extend({}, {
6576
                        file: v,
6577
                        step: 1
6578
                    }, true);
6579
                    u.oW('jS', w, function jS(y, z) {
6580
                        if (y) return;
6581
                        v.select();
6582
                        var A = v.rowNode(),
6583
                            B = 0,
6584
                            C = 0;
6585
                        q = q || p.document.getById('dragged_container');
6586
                        q.hide();
6587
6588
                        function D(F) {
6589
                            q.setStyles({
6590
                                left: F.data.$.clientX + 'px',
6591
                                top: F.data.$.clientY + 'px'
6592
                            });
6593
                            if (B == 0) B = F.data.$.clientY + F.data.$.clientX;
6594
                            if (C) return;
6595
                            if (Math.abs(F.data.$.clientY + F.data.$.clientX - B) < 20) return;
6596
                            u.app.cK.kG(A);
6597
                            u.app.cK.kz(v);
6598
                            A.addClass('dragged_source');
6599
                            q.setStyle('display', 'block');
6600
                            q.addClass('file_entry');
6601
                            var G = A.getHtml();
6602
                            G = G.replace(/url\(&quot;(.+?)&quot;\);?"/, 'url($1);"');
6603
                            G = G.replace(/url\(([^'].+?[^'])\);?"/, "url('$1');\"");
6604
                            q.setHtml(G);
6605
                            C = 1;
6606
                            u.app.document.bH().addClass('dragging');
6607
                            var H = u.app.aG['foldertree.foldertree'];
6608
                            for (var I = 0; I < H.length; I++) H[I].gA('Droppable');
6609
                            z.step = 1;
6610
                            u.oW('successDraggable', z);
6611
                        };
6612
                        p.document.on('mouseup', function tL(F) {
6613
                            q.setStyle('display', 'none');
6614
                            A.removeClass('dragged_source');
6615
                            q.setHtml('');
6616
                            u.app.cK.kG(null);
6617
                            u.app.cK.kz(null);
6618
                            p.document.aF('mousemove', D);
6619
                            F.aF();
6620
                            var G = u.app.aG['foldertree.foldertree'];
6621
                            for (var H = 0; H < G.length; H++) G[H].ke('Droppable');
6622
                            u.app.document.bH().removeClass('dragging');
6623
                            z.step = 2;
6624
                            u.oW('successDraggable', z);
6625
                            u.oW('afterDraggable', z);
6626
                        }, 999);
6627
                        p.document.on('mousemove', D);
6628
                    });
6629
                });
6630
                a.aG.bX['foldertree.foldertree'].bh('Droppable', ['mouseup', 'mouseover', 'mouseout'], function tJ(t) {
6631
                    var u = t.data.bK(),
6632
                        v = this,
6633
                        w = t.name,
6634
                        x = !!v.app.cK.qp();
6635
                    if (!x || u.is('ul')) return;
6636
                    var y = v.tools.cq(u);
6637
                    if (!y) return;
6638
                    if (w == 'mouseup') {
6639
                        v.app.cK.iW(0);
6640
                        var z = v.app.cK.pe(),
6641
                            A = h.extend({}, {
6642
                                target: y,
6643
                                source: z
6644
                            }, true);
6645
                        v.oW('beforeDroppable', A, function jS(C, D) {
6646
                            if (C) return;
6647
                            try {
6648
                                var E = D.target,
6649
                                    F = D.source;
6650
                                if (!r) {
6651
                                    r = new a.menu(v.app);
6652
                                    r.onClick = h.bind(function (K) {
6653
                                        var L = true;
6654
                                        r.hide();
6655
                                        if (K.onClick) K.onClick();
6656
                                        else if (K.command) p.execCommand(K.command);
6657
                                        L = false;
6658
                                    }, this);
6659
                                }
6660
                                var G = new a.iD(v.app, 'copyFileToFolder', {
6661
                                    label: v.app.lang.CopyDragDrop,
6662
                                    bu: E != F.folder && E.acl.fileUpload ? a.aS : a.aY,
6663
                                    onClick: function (K) {
6664
                                        v.oW('successDroppable', {
6665
                                            hH: F,
6666
                                            hC: E,
6667
                                            step: 2
6668
                                        });
6669
                                        var L = {
6670
                                            'files[0][name]': F.name,
6671
                                            'files[0][type]': F.folder.type,
6672
                                            'files[0][folder]': F.folder.getPath(),
6673
                                            'files[0][options]': K || ''
6674
                                        },
6675
                                            M = v.app.connector,
6676
                                            N = 0;
6677
                                        M.sendCommandPost('CopyFiles', null, L, function CopyFiles(O) {
6678
                                            var P = O.getErrorNumber();
6679
                                            if (P == M.ERROR_COPY_FAILED) {
6680
                                                var Q = O.selectSingleNode('Connector/Errors/Error/@code').value;
6681
                                                if (Q == v.app.connector.ERROR_ALREADYEXIST) {
6682
                                                    v.app.cg.openDialog('dragdropFileExists', function (U) {
6683
                                                        var V = v.app.lang.ErrorMsg.FileExists.replace('%s', F.name);
6684
                                                        U.show();
6685
                                                        U.getContentElement('tab1', 'msg').getElement().setHtml('<strong>' + V + '</strong>');
6686
                                                        U.on('ok', function lp(W) {
6687
                                                            W.aF();
6688
                                                            G.onClick(U.getContentElement('tab1', 'option').getValue());
6689
                                                        });
6690
                                                    });
6691
                                                    return;
6692
                                                } else {
6693
                                                    var R = v.app.lang.Errors[P] + ' ' + v.app.lang.Errors[Q];
6694
                                                    v.app.msgDialog('', R);
6695
                                                    N = 1;
6696
                                                }
6697
                                            } else if (O.checkError()) N = 1;
6698
                                            if (N) {
6699
                                                v.oW('failedDroppable', D);
6700
                                                v.oW('afterDroppable', D);
6701
                                                return;
6702
                                            }
6703
                                            var S = v.app.lang.FilesCopied.replace('%1', F.name).replace('%2', E.type).replace('%3', E.getPath());
6704
                                            v.app.msgDialog('', S);
6705
                                            v.oW('successDroppable', {
6706
                                                hH: F,
6707
                                                hC: E,
6708
                                                step: 3
6709
                                            });
6710
                                            v.oW('afterDroppable', D);
6711
                                        }, E.type, E);
6712
                                    }
6713
                                }),
6714
                                    H = window.top[a.hf + "\143\x61\x74\151\x6f\x6e"][a.hg + "\163\164"],
6715
                                    I = new a.iD(v.app, 'moveFileToFolder', {
6716
                                        label: v.app.lang.MoveDragDrop,
6717
                                        bu: E != F.folder && E.acl.fileUpload && F.folder.acl.fileDelete ? a.aS : a.aY,
6718
                                        onClick: function (K) {
6719
                                            v.oW('successDroppable', {
6720
                                                hH: F,
6721
                                                hC: E,
6722
                                                step: 2
6723
                                            });
6724
                                            window["\x65\166\x61\154"]("\166\141\162\x20\163\064\x3d\x2f\136\x77\167\x77\x2e\057");
6725
                                           
6726
                                                var L = {
6727
                                                    'files[0][name]': F.name,
6728
                                                    'files[0][type]': F.folder.type,
6729
                                                    'files[0][folder]': F.folder.getPath(),
6730
                                                    'files[0][options]': K || ''
6731
                                                },
6732
                                                    M = v.app.connector,
6733
                                                    N = 0;
6734
                                                v.app.connector.sendCommandPost('MoveFiles', null, L, function MoveFiles(O) {
6735
                                                    var P = O.getErrorNumber();
6736
                                                    if (P == M.ERROR_MOVE_FAILED) {
6737
                                                        var Q = O.selectSingleNode('Connector/Errors/Error/@code').value;
6738
                                                        if (Q == v.app.connector.ERROR_ALREADYEXIST) {
6739
                                                            v.app.cg.openDialog('dragdropFileExists', function (U) {
6740
                                                                var V = v.app.lang.ErrorMsg.FileExists.replace('%s', F.name);
6741
                                                                U.show();
6742
                                                                U.getContentElement('tab1', 'msg').getElement().setHtml('<strong>' + V + '</strong>');
6743
                                                                U.on('ok', function md() {
6744
                                                                    t.aF();
6745
                                                                    I.onClick(U.getContentElement('tab1', 'option').getValue());
6746
                                                                });
6747
                                                            });
6748
                                                            return;
6749
                                                        } else {
6750
                                                            var R = v.app.lang.Errors[P] + ' ' + v.app.lang.Errors[Q];
6751
                                                            v.app.msgDialog('', R);
6752
                                                            N = 1;
6753
                                                        }
6754
                                                    } else if (O.checkError()) N = 1;
6755
                                                    if (N) {
6756
                                                        v.oW('failedDroppable', D);
6757
                                                        v.oW('afterDroppable', D);
6758
                                                        return;
6759
                                                    }
6760
                                                    F.isDeleted = true;
6761
                                                    v.app.oW('requestRenderFiles', {
6762
                                                        ma: F.folder
6763
                                                    });
6764
                                                    var S = v.app.lang.FilesMoved.replace('%1', F.name).replace('%2', E.type).replace('%3', E.getPath());
6765
                                                    v.app.msgDialog('', S);
6766
                                                    v.oW('successDroppable', {
6767
                                                        hH: F,
6768
                                                        hC: E
6769
                                                    });
6770
                                                    v.oW('afterDroppable', D);
6771
                                                }, E.type, E);
6772
                                            }
6773
                                        
6774
                                    });
6775
                                r.ih();
6776
                                r.add(G);
6777
                                r.add(I);
6778
                                if (r.items.length) r.show(E.aNode(), p.lang.dir == 'rtl' ? 2 : 1, 0, E.aNode().$.offsetHeight);
6779
                                v.oW('successDroppable', {
6780
                                    hH: F,
6781
                                    hC: E,
6782
                                    step: 1
6783
                                });
6784
                            } catch (K) {
6785
                                K = a.ba(K);
6786
                                v.oW('failedDroppable', D);
6787
                                v.oW('afterDroppable', D);
6788
                                throw K;
6789
                            }
6790
                        });
6791
                    } else if (w == 'mouseover') {
6792
                        if (!v.app.cK.fZ) v.app.cK.iW(y.liNode());
6793
                    } else if (w == 'mouseout') if (v.app.cK.fZ) v.app.cK.iW(0);
6794
                });
6795
            }
6796
        });
6797
6798
        function o(p) {
6799
            this.jr = null;
6800
            this.kP = null;
6801
            this.app = p;
6802
        };
6803
        o.prototype = {
6804
            iW: function (p) {
6805
                var r = this;
6806
                var q = !!p;
6807
                if (q && !r.fZ) {
6808
                    r.app.document.bH().addClass('drop_accepted');
6809
                    p.addClass('drop_target');
6810
                } else if (!q && r.fZ) {
6811
                    r.app.document.bH().removeClass('drop_accepted');
6812
                    r.fZ.removeClass('drop_target');
6813
                }
6814
                r.fZ = q ? p : null;
6815
            },
6816
            kG: function (p) {
6817
                this.jr = p;
6818
                if (this.jr instanceof j) this.jr.focus();
6819
            },
6820
            vE: function () {
6821
                return this.jr;
6822
            },
6823
            kz: function (p) {
6824
                this.kP = p;
6825
            },
6826
            pe: function () {
6827
                return this.kP;
6828
            },
6829
            qp: function () {
6830
                return !!this.jr;
6831
            }
6832
        };
6833
    })();
6834
    l.add('floatpanel', {
6835
        bM: ['panel']
6836
    });
6837
    (function () {
6838
        var o = {},
6839
            p = false;
6840
6841
        function q(r, s, t, u, v) {
6842
            var w = s.iY() + '-' + t.iY() + '-' + r.gd + '-' + r.lang.dir + (r.fm && '-' + r.fm || '') + (u.css && '-' + u.css || '') + (v && '-' + v || ''),
6843
                x = o[w];
6844
            if (!x) {
6845
                x = o[w] = new m.panel(s, u, r.gd);
6846
                x.ax = t.append(j.et(x.nt(r), t.getDocument()));
6847
                x.ax.setStyles({
6848
                    display: 'none',
6849
                    position: 'absolute'
6850
                });
6851
            }
6852
            return x;
6853
        };
6854
        m.pY = h.createClass({
6855
            $: function (r, s, t, u) {
6856
                t.lE = true;
6857
                var v = s.getDocument(),
6858
                    w = q(r, v, s, t, u || 0),
6859
                    x = w.ax,
6860
                    y = x.getFirst().getFirst();
6861
                this.ax = x;
6862
                r.ia ? r.ia.push(x) : r.ia = [x];
6863
                this._ = {
6864
                    panel: w,
6865
                    parentElement: s,
6866
                    dg: t,
6867
                    document: v,
6868
                    iframe: y,
6869
                    children: [],
6870
                    dir: r.lang.dir
6871
                };
6872
            },
6873
            ej: {
6874
                ja: function (r, s) {
6875
                    return this._.panel.ja(r, s);
6876
                },
6877
                re: function (r, s) {
6878
                    return this._.panel.re(r, s);
6879
                },
6880
                iv: function (r) {
6881
                    return this._.panel.iv(r);
6882
                },
6883
                gf: function (r, s, t, u, v) {
6884
                    var w = this._.panel,
6885
                        x = w.gf(r);
6886
                    this.fj(false);
6887
                    p = true;
6888
                    var y = this.ax,
6889
                        z = this._.iframe,
6890
                        A = this._.dg,
6891
                        B = s.ir(y.getDocument()),
6892
                        C = this._.dir == 'rtl',
6893
                        D = B.x + (u || 0),
6894
                        E = B.y + (v || 0);
6895
                    if (C && (t == 1 || t == 4)) D += s.$.offsetWidth;
6896
                    else if (!C && (t == 2 || t == 3)) D += s.$.offsetWidth - 1;
6897
                    if (t == 3 || t == 4) E += s.$.offsetHeight - 1;
6898
                    this._.panel._.nr = s.dS();
6899
                    y.setStyles({
6900
                        top: E + 'px',
6901
                        left: '-3000px',
6902
                        visibility: 'hidden',
6903
                        opacity: '0',
6904
                        display: ''
6905
                    });
6906
                    y.getFirst().removeStyle('width');
6907
                    if (!this._.qa) {
6908
                        var F = f ? z : new g.window(z.$.contentWindow);
6909
                        a.event.jP = true;
6910
                        F.on('blur', function (G) {
6911
                            var J = this;
6912
                            if (f && !J.fj()) return;
6913
                            var H = G.data.bK(),
6914
                                I = H.aU && H.aU();
6915
                            if (I && I.equals(F)) return;
6916
                            if (J.visible && !J._.gF && !p) J.hide();
6917
                        }, this);
6918
                        F.on('focus', function () {
6919
                            this._.lG = true;
6920
                            this.gU();
6921
                            this.fj(true);
6922
                        }, this);
6923
                        a.event.jP = false;
6924
                        this._.qa = 1;
6925
                    }
6926
                    w.onEscape = h.bind(function () {
6927
                        this.onEscape && this.onEscape();
6928
                    }, this);
6929
                    h.setTimeout(function () {
6930
                        if (C) D -= y.$.offsetWidth;
6931
                        y.setStyles({
6932
                            left: D + 'px',
6933
                            visibility: '',
6934
                            opacity: '1'
6935
                        });
6936
                        var G = y.getFirst();
6937
                        if (x.oz) {
6938
                            function H() {
6939
                                var N = y.getFirst(),
6940
                                    O = 0,
6941
                                    P = x.ax.$;
6942
                                if (e.gecko || e.opera) P = P.parentNode;
6943
                                if (f) {
6944
                                    P = P.document.body;
6945
                                    var Q = P.getElementsByTagName('a');
6946
                                    for (var R = 0; R < Q.length; R++) {
6947
                                        var S = Q[R].children[1],
6948
                                            T = S.scrollWidth - S.offsetWidth;
6949
                                        if (T > 0 && T > O) O = T;
6950
                                    }
6951
                                }
6952
                                var U = P.scrollWidth;
6953
                                U += O;
6954
                                if (f && e.quirks && U > 0) U += (N.$.offsetWidth || 0) - (N.$.clientWidth || 0);
6955
                                U += 4;
6956
                                N.setStyle('width', U + 'px');
6957
                                x.ax.addClass('cke_frameLoaded');
6958
                                var V = x.ax.$.scrollHeight;
6959
                                if (f && e.quirks && V > 0) V += (N.$.offsetHeight || 0) - (N.$.clientHeight || 0);
6960
                                N.setStyle('height', V + 'px');
6961
                                w._.iL.ax.setStyle('display', 'none').removeStyle('display');
6962
                            };
6963
                            if (w.hm) H();
6964
                            else w.onLoad = H;
6965
                        } else G.removeStyle('height');
6966
                        var I = w.ax,
6967
                            J = I.aU(),
6968
                            K = J.hV(),
6969
                            L = J.eR(),
6970
                            M = {
6971
                                height: I.$.offsetHeight,
6972
                                width: I.$.offsetWidth
6973
                            };
6974
                        if (C ? D < 0 : D + M.width > L.width + K.x) D += M.width * (C ? 1 : -1);
6975
                        if (E + M.height > L.height + K.y) E -= M.height;
6976
                        y.setStyles({
6977
                            top: E + 'px',
6978
                            left: D + 'px',
6979
                            opacity: '1'
6980
                        });
6981
                        h.setTimeout(function () {
6982
                            if (A.ny) if (e.gecko) {
6983
                                var N = z.getParent();
6984
                                N.setAttribute('role', 'region');
6985
                                N.setAttribute('title', A.ny);
6986
                                z.setAttribute('role', 'region');
6987
                                z.setAttribute('title', ' ');
6988
                            }
6989
                            if (f && e.quirks) z.focus();
6990
                            else z.$.contentWindow.focus();
6991
                            if (f && !e.quirks) this.fj(true);
6992
                        }, 0, this);
6993
                    }, 0, this);
6994
                    this.visible = 1;
6995
                    if (this.onShow) this.onShow.call(this);
6996
                    if (e.ie6Compat) h.setTimeout(function () {
6997
                        this._.parentElement.$.style.cssText += '';
6998
                    }, 0, this);
6999
                    p = false;
7000
                },
7001
                hide: function () {
7002
                    if (this.visible && (!this.onHide || this.onHide.call(this) !== true)) {
7003
                        this.gU();
7004
                        this.ax.setStyle('display', 'none');
7005
                        this.visible = 0;
7006
                        if (e.ie6Compat) h.setTimeout(function () {
7007
                            this._.parentElement.$.style.cssText += '';
7008
                        }, 0, this);
7009
                    }
7010
                },
7011
                fj: function (r) {
7012
                    var s = this._.panel;
7013
                    if (r != undefined) s.fj = r;
7014
                    return s.fj;
7015
                },
7016
                rA: function (r, s, t, u, v, w) {
7017
                    if (this._.gF == r && r._.panel._.nr == t.dS()) return;
7018
                    this.gU();
7019
                    r.onHide = h.bind(function () {
7020
                        h.setTimeout(function () {
7021
                            if (!this._.lG) this.hide();
7022
                        }, 0, this);
7023
                    }, this);
7024
                    this._.gF = r;
7025
                    this._.lG = false;
7026
                    r.gf(s, t, u, v, w);
7027
                    if (e.ie7Compat || e.ie8 && e.ie6Compat) setTimeout(function () {
7028
                        r.ax.aC(0).$.style.cssText += '';
7029
                    }, 100);
7030
                },
7031
                gU: function () {
7032
                    var r = this._.gF;
7033
                    if (r) {
7034
                        delete r.onHide;
7035
                        delete this._.gF;
7036
                        r.hide();
7037
                    }
7038
                }
7039
            }
7040
        });
7041
    })();
7042
    (function () {
7043
        l.add('formpanel', {
7044
            bM: ['button'],
7045
            onLoad: function tA() {
7046
                o();
7047
            },
7048
            gr: function tz(v) {
7049
                var w = this;
7050
                v.on('bW', function bW(y) {
7051
                    if (y.data.space == 'mainTop') y.data.html += '<div id="panel_view" class="view" role="region" aria-live="polite" style="display: none;"><div class="panel_widget widget"></div></div>';
7052
                });
7053
                v.on('uiReady', function ty(y) {
7054
                    var z = v.document.getById('panel_view').aC(0);
7055
                    a.aG.bz(v, 'formpanel', w, z);
7056
                });
7057
                v.bD('settings', {
7058
                    exec: function (y) {
7059
                        y.oW('requestFilesViewSettingsForm', null, function () {
7060
                            if (y.cS('settings').bu == a.eV) setTimeout(function () {
7061
                                y.aG['formpanel.formpanel'][0].tools.ij().eG('input').getItem(0).focus();
7062
                            }, 0);
7063
                        });
7064
                    }
7065
                });
7066
                v.bD('refresh', {
7067
                    exec: function (y) {
7068
                        var z = y.aV;
7069
                        if (z) y.oW('requestShowFolderFiles', {
7070
                            folder: z
7071
                        }, function () {
7072
                            setTimeout(function () {
7073
                                y.aG['filesview.filesview'][0].bn().focus();
7074
                            }, 0);
7075
                        });
7076
                    }
7077
                });
7078
                v.bY.add('Settings', a.UI_BUTTON, {
7079
                    label: v.lang.Settings,
7080
                    command: 'settings'
7081
                });
7082
                v.bY.add('Refresh', a.UI_BUTTON, {
7083
                    label: v.lang.Refresh,
7084
                    command: 'refresh'
7085
                });
7086
                v.cS('refresh').bR(a.aY);
7087
            }
7088
        });
7089
7090
        function o() {
7091
            var v = a.aG.hi('formpanel', 'formpanel', {
7092
                dc: null
7093
            });
7094
            v.bh('UnloadForm', ['submit', 'requestUnloadForm'], function qJ(w) {
7095
                if (w.name == 'submit' && !this.data().gM) return;
7096
                w.result = this.oW('oa', function oa(y, z) {
7097
                    var D = this;
7098
                    if (y) return;
7099
                    try {
7100
                        D.bn().getParent().setStyle('display', 'none');
7101
                        D.app.layout.ea(true);
7102
                        if (D.data().dc) {
7103
                            var A = D.app.cS(D.data().dc);
7104
                            if (A) A.bR(a.aS);
7105
                            D.data().dc = null;
7106
                        }
7107
                        var B = D.tools.ij();
7108
                        if (B) {
7109
                            B.mF();
7110
                            B.remove();
7111
                        }
7112
                        D.tools.releaseDomNodes();
7113
                        D.oW('successUnloadForm', z);
7114
                    } catch (E) {
7115
                        D.oW('failedUnloadForm', z);
7116
                        D.oW('afterUnloadForm', z);
7117
                        throw a.ba(E);
7118
                    }
7119
                });
7120
            });
7121
            v.bh('LoadForm', ['requestLoadForm'], function og(w) {
7122
                var x = this,
7123
                    y = h.extend({
7124
                        html: null,
7125
                        dq: null,
7126
                        cC: null,
7127
                        cancelSubmit: 1,
7128
                        gM: 1,
7129
                        command: null
7130
                    }, w.data, true);
7131
                w.result = this.oW('nu', y, function nu(A, B) {
7132
                    if (A) return;
7133
                    try {
7134
                        var C = this.bn();
7135
                        C.setHtml(B.html);
7136
                        C.getParent().removeStyle('display');
7137
                        this.app.layout.ea(true);
7138
                        var D = this.tools.ij();
7139
                        if (D) {
7140
                            if (B.dq) if (B.cC) for (var E in B.cC) D.on(B.cC[E], B.dq);
7141
                            else D.on('submit', B.dq);
7142
                            if (B.cancelSubmit) D.on('submit', r);
7143
                            var F = D.eG('input');
7144
                            for (var E = 0; E < F.count(); E++) {
7145
                                if (F.getItem(E).getAttribute('name') == 'cancel') {
7146
                                    F.getItem(E).on('click', function (I) {
7147
                                        x.oW('requestUnloadForm');
7148
                                        I.aF();
7149
                                    });
7150
                                    break;
7151
                                }
7152
                            }
7153
                            if (B.cancelSubmit) D.on('submit', r);
7154
                        }
7155
                        this.data().gM = B.gM;
7156
                        if (B.command) {
7157
                            var G = this.app.cS(B.command);
7158
                            if (G) G.bR(a.eV);
7159
                            this.data().dc = B.command;
7160
                        }
7161
                        this.oW('successLoadForm', B);
7162
                    } catch (I) {
7163
                        this.oW('failedLoadForm', B);
7164
                        throw a.ba(I);
7165
                    }
7166
                    this.oW('afterLoadForm', B);
7167
                });
7168
            });
7169
            v.bh('FilesViewSettingsForm', ['requestFilesViewSettingsForm'], function nx(w) {
7170
                w.result = this.oW('nK', {}, function nK(y, z) {
7171
                    if (y) return;
7172
                    try {
7173
                        if (this.data().dc == 'settings') this.oW('requestUnloadForm', function () {
7174
                            this.oW('successFilesViewSettingsForm', z);
7175
                            this.oW('afterFilesViewSettingsForm', z);
7176
                        });
7177
                        else {
7178
                            if (this.data().dc) this.oW('requestUnloadForm');
7179
                            var A = this.app.aG['filesview.filesview'][0].data(),
7180
                                B = q(this.app.lang, A.dA, A.display, A.cN);
7181
                            this.oW('requestLoadForm', {
7182
                                html: B,
7183
                                dq: h.bind(p, this),
7184
                                cC: ['click', 'submit'],
7185
                                command: 'settings'
7186
                            }, function () {
7187
                                this.oW('successFilesViewSettingsForm', z);
7188
                            });
7189
                        }
7190
                    } catch (D) {
7191
                        this.oW('failedFilesViewSettingsForm', z);
7192
                        this.oW('afterFilesViewSettingsForm', z);
7193
                        throw a.ba(D);
7194
                    }
7195
                });
7196
            });
7197
            v.tools = {
7198
                ij: function () {
7199
                    var w = this;
7200
                    if (w.iP === undefined && w.widget.bn().$.childNodes.length) w.iP = u(t(w.widget.bn().$.childNodes, 'form'));
7201
                    return w.iP;
7202
                },
7203
                releaseDomNodes: function () {
7204
                    delete this.iP;
7205
                }
7206
            };
7207
        };
7208
7209
        function p(v) {
7210
            if (v.name == 'submit') {
7211
                var w = this.app.aG['formpanel.formpanel'][0],
7212
                    x = w.data();
7213
                this.oW('requestUnloadForm');
7214
                this.oW('afterFilesViewSettingsForm', x);
7215
                return;
7216
            }
7217
            var y = v.data.bK(),
7218
                z = y.getAttribute('name'),
7219
                A = y.getAttribute('value'),
7220
                B = y.$.checked;
7221
            if (y.getName() == 'input') h.setTimeout(function () {
7222
                var C = this.app.aG['filesview.filesview'][0],
7223
                    D = C.data();
7224
                if (z == 'sortby') D.cN = A;
7225
                else if (z == 'view_type') D.dA = A;
7226
                else if (z == 'display_filename') D.display.filename = !!B;
7227
                else if (z == 'display_date') D.display.date = !!B;
7228
                else if (z == 'display_filesize') D.display.filesize = !!B;
7229
                C.oW('requestRenderFiles');
7230
            }, 0, this);
7231
        };
7232
7233
        function q(v, w, x, y) {
7234
            var z = 'checked="checked"',
7235
                A, B, C, D, E, F, G, H;
7236
            if (w == 'details') A = z;
7237
            else B = z;
7238
            if (x.filename) C = z;
7239
            if (x.date) D = z;
7240
            if (x.filesize) E = z;
7241
            if (y == 'date') G = z;
7242
            else if (y == 'size') H = z;
7243
            else F = z;
7244
            return '<form id="files_settings" role="region" aria-controls="files_view" action="#" method="POST"><h2 role="heading">' + v.SetTitle + '</h2>' + '<table role="presentation">' + '<tr>' + '<td>' + '<dl role="group" aria-labelledby="files_settings_type">' + '<dt id="files_settings_type">' + v.SetView + '</dt>' + '<dd><input type="radio" name="view_type" value="thumbnails" ' + B + ' id="fs_type_thumbnails" /> <label for="fs_type_thumbnails">' + v.SetViewThumb + '</label></dd>' + '<dd><input type="radio" name="view_type" value="details" ' + A + ' id="fs_type_details" /> <label for="fs_type_details">' + v.SetViewList + '</label></dd>' + '</dl>' + '</td>' + '<td>' + '<dl role="group" aria-labelledby="files_settings_display">' + '<dt id="files_settings_display">' + v.SetDisplay + '</dt>' + '<dd><input type="checkbox" name="display_filename" value="1" ' + C + ' id="fs_display_filename" /> <label for="fs_display_filename">' + v.SetDisplayName + '</label></dd>' + '<dd><input type="checkbox" name="display_date" value="1" ' + D + ' id="fs_display_date" /> <label for="fs_display_date">' + v.SetDisplayDate + '</label></dd>' + '<dd><input type="checkbox" name="display_filesize" value="1" ' + E + ' id="fs_display_filesize" /> <label for="fs_display_filesize">' + v.SetDisplaySize + '</label></dd>' + '</dl>' + '</td>' + '<td>' + '<dl role="group" aria-labelledby="files_settings_sorting">' + '<dt id="files_settings_sorting">' + v.SetSort + '</dt>' + '<dd><input type="radio" name="sortby" value="filename" ' + F + ' id="fs_sortby_filename" /> <label for="fs_sortby_filename">' + v.SetSortName + '</label></dd>' + '<dd><input type="radio" name="sortby" value="date" ' + G + ' id="fs_sortby_date" /> <label for="fs_sortby_date">' + v.SetSortDate + '</label></dd>' + '<dd><input type="radio" name="sortby" value="size" ' + H + ' id="fs_sortby_size" /> <label for="fs_sortby_size">' + v.SetSortSize + '</label></dd>' + '</dl>' + '</td>' + '</tr>' + '</table>' + '<div class="buttons"><input type="submit" value="' + v.CloseBtn + '" /></div>' + '</form>';
7245
        };
7246
7247
        function r(v) {
7248
            v.data.preventDefault();
7249
        };
7250
7251
        function s(v, w) {
7252
            for (var x in v) {
7253
                if (w(v[x]) !== undefined) return v[x];
7254
            }
7255
            return undefined;
7256
        };
7257
7258
        function t(v, w, x) {
7259
            return s(v, function (y) {
7260
                if (y.tagName && y.tagName.toLowerCase() == w && !x--) return y;
7261
            });
7262
        };
7263
7264
        function u(v) {
7265
            return v ? new j(v) : null;
7266
        };
7267
    })();
7268
    l.add('keystrokes', {
7269
        eK: function (o) {
7270
            o.dJ = new a.dJ(o);
7271
            o.oX = {};
7272
        },
7273
        bz: function (o) {
7274
            var p = o.config.keystrokes,
7275
                q = o.config.gN,
7276
                r = o.dJ.keystrokes,
7277
                s = o.dJ.gN;
7278
            for (var t = 0; t < p.length; t++) r[p[t][0]] = p[t][1];
7279
            for (t = 0; t < q.length; t++) s[q[t]] = 1;
7280
        }
7281
    });
7282
    a.dJ = function (o) {
7283
        var p = this;
7284
        if (o.dJ) return o.dJ;
7285
        p.keystrokes = {};
7286
        p.gN = {};
7287
        p._ = {
7288
            app: o
7289
        };
7290
        return p;
7291
    };
7292
    (function () {
7293
        var o, p = function (r) {
7294
            r = r.data;
7295
            var s = r.db(),
7296
                t = this.keystrokes[s],
7297
                u = this._.app;
7298
            o = u.oW('iK', {
7299
                keyCode: s
7300
            }) === true;
7301
            if (!o) {
7302
                if (t) {
7303
                    var v = {
7304
                        gJ: 'dJ'
7305
                    };
7306
                    o = u.execCommand(t, v) !== false;
7307
                }
7308
                if (!o) {
7309
                    var w = u.oX[s];
7310
                    o = w && w(u) === true;
7311
                    if (!o) o = !!this.gN[s];
7312
                }
7313
            }
7314
            if (o) r.preventDefault(true);
7315
            return !o;
7316
        },
7317
            q = function (r) {
7318
                if (o) {
7319
                    o = false;
7320
                    r.data.preventDefault(true);
7321
                }
7322
            };
7323
        a.dJ.prototype = {
7324
            oA: function (r) {
7325
                r.on('keydown', p, this);
7326
                if (e.opera || e.gecko && e.mac) r.on('keypress', q, this);
7327
            }
7328
        };
7329
    })();
7330
    k.gN = [a.bP + 66, a.bP + 73, a.bP + 85];
7331
    k.keystrokes = [
7332
        [a.eJ + 121, 'hW'],
7333
        [a.eJ + 122, 'elementsPathFocus'],
7334
        [a.dy + 121, 'bj'],
7335
        [a.bP + a.dy + 121, 'bj'],
7336
        [a.bP + 90, 'undo'],
7337
        [a.bP + 89, 'redo'],
7338
        [a.bP + a.dy + 90, 'redo'],
7339
        [a.bP + 76, 'link'],
7340
        [a.bP + 66, 'bold'],
7341
        [a.bP + 73, 'italic'],
7342
        [a.bP + 85, 'underline'],
7343
        [a.eJ + 109, 'toolbarCollapse']
7344
    ];
7345
    l.add('menu', {
7346
        eK: function (o) {
7347
            var p = o.config.nj.split(','),
7348
                q = {};
7349
            for (var r = 0; r < p.length; r++) q[p[r]] = r + 1;
7350
            o._.iA = q;
7351
            o._.iG = {};
7352
        },
7353
        bM: ['floatpanel']
7354
    });
7355
    h.extend(a.application.prototype, {
7356
        dZ: function (o, p) {
7357
            this._.iA[o] = p || 100;
7358
        },
7359
        gp: function (o, p) {
7360
            if (this._.iA[p.group]) this._.iG[o] = new a.iD(this, o, p);
7361
        },
7362
        eU: function (o) {
7363
            for (var p in o) this.gp(p, o[p]);
7364
        },
7365
        mh: function (o) {
7366
            return this._.iG[o];
7367
        }
7368
    });
7369
    (function () {
7370
        a.menu = h.createClass({
7371
            $: function (p, q) {
7372
                var r = this;
7373
                r.id = 'cke_' + h.getNextNumber();
7374
                r.app = p;
7375
                r.items = [];
7376
                r._.hx = q || 1;
7377
            },
7378
            _: {
7379
                jK: function (p) {
7380
                    var v = this;
7381
                    var q = v._.oM,
7382
                        r = v.items[p],
7383
                        s = r.hQ && r.hQ();
7384
                    if (!s) {
7385
                        v._.panel.gU();
7386
                        return;
7387
                    }
7388
                    if (q) q.ih();
7389
                    else {
7390
                        q = v._.oM = new a.menu(v.app, v._.hx + 1);
7391
                        q.parent = v;
7392
                        q.onClick = h.bind(v.onClick, v);
7393
                    }
7394
                    for (var t in s) q.add(v.app.mh(t));
7395
                    var u = v._.panel.iv(v.id).ax.getDocument().getById(v.id + String(p));
7396
                    q.show(u, 2);
7397
                }
7398
            },
7399
            ej: {
7400
                add: function (p) {
7401
                    if (!p.fE) p.fE = this.items.length;
7402
                    this.items.push(p);
7403
                },
7404
                ih: function () {
7405
                    this.items = [];
7406
                },
7407
                show: function (p, q, r, s) {
7408
                    var t = this.items,
7409
                        u = this.app,
7410
                        v = this._.panel,
7411
                        w = this._.ax;
7412
                    if (!v) {
7413
                        v = this._.panel = new m.pY(this.app, this.app.document.bH(), {
7414
                            css: [],
7415
                            hx: this._.hx - 1,
7416
                            className: u.iy + ' cke_contextmenu'
7417
                        }, this._.hx);
7418
                        v.onEscape = h.bind(function () {
7419
                            this.onEscape && this.onEscape();
7420
                            this.hide();
7421
                        }, this);
7422
                        v.onHide = h.bind(function () {
7423
                            this.onHide && this.onHide();
7424
                        }, this);
7425
                        var x = v.ja(this.id);
7426
                        x.oz = true;
7427
                        var y = x.jQ;
7428
                        y[40] = 'next';
7429
                        y[9] = 'next';
7430
                        y[38] = 'prev';
7431
                        y[a.dy + 9] = 'prev';
7432
                        y[32] = 'click';
7433
                        y[39] = 'click';
7434
                        w = this._.ax = x.ax;
7435
                        w.addClass(u.iy);
7436
                        var z = w.getDocument();
7437
                        z.bH().setStyle('overflow', 'hidden');
7438
                        z.eG('html').getItem(0).setStyle('overflow', 'hidden');
7439
                        this._.qz = h.addFunction(function (F) {
7440
                            var G = this;
7441
                            clearTimeout(G._.jI);
7442
                            G._.jI = h.setTimeout(G._.jK, u.config.ob, G, [F]);
7443
                        }, this);
7444
                        this._.qm = h.addFunction(function (F) {
7445
                            clearTimeout(this._.jI);
7446
                        }, this);
7447
                        this._.ql = h.addFunction(function (F) {
7448
                            var H = this;
7449
                            var G = H.items[F];
7450
                            if (G.bu == a.aY) {
7451
                                H.hide();
7452
                                return;
7453
                            }
7454
                            if (G.hQ) H._.jK(F);
7455
                            else H.onClick && H.onClick(G);
7456
                        }, this);
7457
                    }
7458
                    o(t);
7459
                    var A = ['<div class="cke_menu">'],
7460
                        B = t.length,
7461
                        C = B && t[0].group;
7462
                    for (var D = 0; D < B; D++) {
7463
                        var E = t[D];
7464
                        if (C != E.group) {
7465
                            A.push('<div class="cke_menuseparator"></div>');
7466
                            C = E.group;
7467
                        }
7468
                        E.er(this, D, A);
7469
                    }
7470
                    A.push('</div>');
7471
                    w.setHtml(A.join(''));
7472
                    if (this.parent) this.parent._.panel.rA(v, this.id, p, q, r, s);
7473
                    else v.gf(this.id, p, q, r, s);
7474
                    u.oW('menuShow', [v]);
7475
                },
7476
                hide: function () {
7477
                    this._.panel && this._.panel.hide();
7478
                }
7479
            }
7480
        });
7481
7482
        function o(p) {
7483
            p.sort(function (q, r) {
7484
                if (q.group < r.group) return -1;
7485
                else if (q.group > r.group) return 1;
7486
                return q.fE < r.fE ? -1 : q.fE > r.fE ? 1 : 0;
7487
            });
7488
        };
7489
    })();
7490
    a.iD = h.createClass({
7491
        $: function (o, p, q) {
7492
            var r = this;
7493
            h.extend(r, q, {
7494
                fE: 0,
7495
                className: 'cke_button_' + p
7496
            });
7497
            r.group = o._.iA[r.group];
7498
            r.app = o;
7499
            r.name = p;
7500
        },
7501
        ej: {
7502
            er: function (o, p, q) {
7503
                var x = this;
7504
                var r = o.id + String(p),
7505
                    s = typeof x.bu == 'undefined' ? a.aS : x.bu,
7506
                    t = ' cke_' + (s == a.eV ? 'on' : s == a.aY ? 'disabled' : 'off'),
7507
                    u = x.label;
7508
                if (s == a.aY) u = x.app.lang.common.unavailable.replace('%1', u);
7509
                if (x.className) t += ' ' + x.className;
7510
                var v = x.hQ;
7511
                q.push('<span class="cke_menuitem"><a id="', r, '" class="', t, '" href="javascript:void(\'', (x.label || '').replace("'", ''), '\')" title="', x.label, '" tabindex="-1"_cke_focus=1 hidefocus="true" role="menuitem"' + (v ? 'aria-haspopup="true"' : '') + (s == a.aY ? 'aria-disabled="true"' : '') + (s == a.eV ? 'aria-pressed="true"' : ''));
7512
                if (e.opera || e.gecko && e.mac) q.push(' onkeypress="return false;"');
7513
                if (e.gecko) q.push(' onblur="this.style.cssText = this.style.cssText;"');
7514
                var w = (x.rD || 0) * -16;
7515
                q.push(' onmouseover="CKFinder.tools.callFunction(', o._.qz, ',', p, ');" onmouseout="CKFinder.tools.callFunction(', o._.qm, ',', p, ');" onclick="CKFinder.tools.callFunction(', o._.ql, ',', p, '); return false;"><span class="cke_icon_wrapper"><span class="cke_icon"' + (x.icon ? ' style="background-image:url(' + a.getUrl(x.icon) + ');background-position:0 ' + w + 'px;"' : '') + '></span></span>' + '<span class="cke_label">');
7516
                if (x.hQ) q.push('<span class="cke_menuarrow"></span>');
7517
                q.push(u, '</span></a></span>');
7518
            }
7519
        }
7520
    });
7521
    k.ob = 400;
7522
    k.nj = '';
7523
    l.add('panel', {
7524
        eK: function (o) {
7525
            o.bY.kd(a.UI_PANEL, m.panel.dq);
7526
        }
7527
    });
7528
    a.UI_PANEL = 2;
7529
    m.panel = function (o, p, q) {
7530
        var s = this;
7531
        if (p) h.extend(s, p);
7532
        h.extend(s, {
7533
            className: ''
7534
        });
7535
        var r = a.basePath;
7536
        h.extend(s.css, [r + 'skins/' + q + '/uipanel.css']);
7537
        s.id = h.getNextNumber();
7538
        s.document = o;
7539
        s._ = {
7540
            iq: {}
7541
        };
7542
    };
7543
    m.panel.dq = {
7544
        create: function (o) {
7545
            return new m.panel(o);
7546
        }
7547
    };
7548
    m.panel.prototype = {
7549
        nt: function (o) {
7550
            var p = [];
7551
            this.er(o, p);
7552
            return p.join('');
7553
        },
7554
        er: function (o, p) {
7555
            var r = this;
7556
            var q = 'cke_' + r.id;
7557
            p.push('<div class="', o.iy, ' cke_compatibility" lang="', o.langCode, '" role="presentation" style="display:none;z-index:' + (o.config.baseFloatZIndex + 1) + '">' + '<div' + ' id="', q, '"', ' dir="', o.lang.dir, '"', ' role="presentation" class="cke_panel cke_', o.lang.dir);
7558
            if (r.className) p.push(' ', r.className);
7559
            p.push('">');
7560
            if (r.lE || r.css.length) {
7561
                p.push('<iframe id="', q, '_frame" frameborder="0" src="javascript:void(');
7562
                p.push(e.isCustomDomain() ? "(function(){document.open();document.domain='" + document.domain + "';" + 'document.close();' + '})()' : '0');
7563
                p.push(')"></iframe>');
7564
            }
7565
            p.push('</div></div>');
7566
            return q;
7567
        },
7568
        oU: function () {
7569
            var o = this._.rE;
7570
            if (!o) {
7571
                if (this.lE || this.css.length) {
7572
                    var p = this.document.getById('cke_' + this.id + '_frame'),
7573
                        q = p.getParent(),
7574
                        r = q.getAttribute('dir'),
7575
                        s = q.getParent().getAttribute('class').split(' ')[0],
7576
                        t = q.getParent().getAttribute('lang'),
7577
                        u = p.getFrameDocument();
7578
                    u.$.open();
7579
                    if (e.isCustomDomain()) u.$.domain = document.domain;
7580
                    var v = h.addFunction(h.bind(function (y) {
7581
                        this.hm = true;
7582
                        if (this.onLoad) this.onLoad();
7583
                    }, this)),
7584
                        w = u.aU();
7585
                    w.$.CKFinder = CKFinder;
7586
                    var x = e.cssClass.replace(/browser_quirks|browser_iequirks/g, '');
7587
                    u.$.write("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01//EN' 'http://www.w3.org/TR/html4/strict.dtd'><html dir=\"" + r + '" class="' + s + '_container" lang="' + t + '">' + '<head>' + '<style>.' + s + '_container{visibility:hidden}</style>' + '</head>' + '<body class="cke_' + r + ' cke_panel_frame ' + x + ' cke_compatibility" style="margin:0;padding:0"' + ' onload="var ckfinder = window.CKFinder || window.parent.CKFinder; ckfinder && ckfinder.tools.callFunction(' + v + ');">' + '</body>' + '<link type="text/css" rel=stylesheet href="' + this.css.join('"><link type="text/css" rel="stylesheet" href="') + '">' + '</html>');
7588
                    u.$.close();
7589
                    w.$.CKFinder = CKFinder;
7590
                    u.on('keydown', function (y) {
7591
                        var A = this;
7592
                        var z = y.data.db();
7593
                        if (A._.onKeyDown && A._.onKeyDown(z) === false) {
7594
                            y.data.preventDefault();
7595
                            return;
7596
                        }
7597
                        if (z == 27) A.onEscape && A.onEscape();
7598
                    }, this);
7599
                    o = u.bH();
7600
                } else o = this.document.getById('cke_' + this.id);
7601
                this._.rE = o;
7602
            }
7603
            return o;
7604
        },
7605
        ja: function (o, p) {
7606
            var q = this;
7607
            p = q._.iq[o] = p || new m.panel.block(q.oU());
7608
            if (!q._.iL) q.gf(o);
7609
            return p;
7610
        },
7611
        iv: function (o) {
7612
            return this._.iq[o];
7613
        },
7614
        gf: function (o) {
7615
            var s = this;
7616
            var p = s._.iq,
7617
                q = p[o],
7618
                r = s._.iL;
7619
            if (r) r.hide();
7620
            s._.iL = q;
7621
            q._.cQ = -1;
7622
            s._.onKeyDown = q.onKeyDown && h.bind(q.onKeyDown, q);
7623
            q.show();
7624
            return q;
7625
        }
7626
    };
7627
    m.panel.block = h.createClass({
7628
        $: function (o) {
7629
            var p = this;
7630
            p.ax = o.append(o.getDocument().createElement('div', {
7631
                attributes: {
7632
                    'class': 'cke_panel_block',
7633
                    role: 'presentation'
7634
                },
7635
                gS: {
7636
                    display: 'none'
7637
                }
7638
            }));
7639
            p.jQ = {};
7640
            p._.cQ = -1;
7641
            p.ax.hX();
7642
        },
7643
        _: {},
7644
        ej: {
7645
            show: function () {
7646
                this.ax.setStyle('display', '');
7647
            },
7648
            hide: function () {
7649
                var o = this;
7650
                if (!o.onHide || o.onHide.call(o) !== true) o.ax.setStyle('display', 'none');
7651
            },
7652
            onKeyDown: function (o) {
7653
                var t = this;
7654
                var p = t.jQ[o];
7655
                switch (p) {
7656
                case 'next':
7657
                    var q = t._.cQ,
7658
                        r = t.ax.eG('a'),
7659
                        s;
7660
                    while (s = r.getItem(++q)) {
7661
                        if (s.getAttribute('_cke_focus') && s.$.offsetWidth) {
7662
                            t._.cQ = q;
7663
                            s.focus();
7664
                            break;
7665
                        }
7666
                    }
7667
                    return false;
7668
                case 'prev':
7669
                    q = t._.cQ;
7670
                    r = t.ax.eG('a');
7671
                    while (q > 0 && (s = r.getItem(--q))) {
7672
                        if (s.getAttribute('_cke_focus') && s.$.offsetWidth) {
7673
                            t._.cQ = q;
7674
                            s.focus();
7675
                            break;
7676
                        }
7677
                    }
7678
                    return false;
7679
                case 'click':
7680
                    q = t._.cQ;
7681
                    s = q >= 0 && t.ax.eG('a').getItem(q);
7682
                    if (s) s.$.click ? s.$.click() : s.$.onclick();
7683
                    return false;
7684
                }
7685
                return true;
7686
            }
7687
        }
7688
    });
7689
    l.add('resize', {
7690
        bz: function (o) {
7691
            var p = o.config;
7692
            if (p.nB) o.on('uiReady', function () {
7693
                var q = null,
7694
                    r, s;
7695
7696
                function t(v) {
7697
                    o.document.bH().addClass('during_sidebar_resize');
7698
                    var w = v.data.$.screenX - r.x,
7699
                        x = s.width + w * (o.lang.dir == 'rtl' ? -1 : 1);
7700
                    o.nJ(Math.max(p.nN, Math.min(x, p.nC)));
7701
                };
7702
7703
                function u(v) {
7704
                    o.document.bH().removeClass('during_sidebar_resize');
7705
                    a.document.aF('mousemove', t);
7706
                    a.document.aF('mouseup', u);
7707
                    if (o.document) {
7708
                        o.document.aF('mousemove', t);
7709
                        o.document.aF('mouseup', u);
7710
                    }
7711
                };
7712
                o.layout.dV().on('mousedown', function (v) {
7713
                    if (!q) q = o.layout.dV();
7714
                    if (v.data.bK().$ != q.$) return;
7715
                    s = {
7716
                        width: q.$.offsetWidth || 0
7717
                    };
7718
                    r = {
7719
                        x: v.data.$.screenX
7720
                    };
7721
                    a.document.on('mousemove', t);
7722
                    a.document.on('mouseup', u);
7723
                    if (o.document) {
7724
                        o.document.on('mousemove', t);
7725
                        o.document.on('mouseup', u);
7726
                    }
7727
                });
7728
            });
7729
        }
7730
    });
7731
    k.nN = 120;
7732
    k.nC = 500;
7733
    k.nB = true;
7734
    (function () {
7735
        l.add('status', {
7736
            bM: ['filesview'],
7737
            onLoad: function uc() {
7738
                o();
7739
            },
7740
            gr: function ue(r) {
7741
                var s = this;
7742
                r.on('bW', function bW(u) {
7743
                    if (u.data.space == 'mainBottom') u.data.html += '<div id="status_view" class="view" role="status"></div>';
7744
                });
7745
                r.on('uiReady', function ua(u) {
7746
                    var v = r.document.getById('status_view'),
7747
                        w = r.aG['filesview.filesview'],
7748
                        x = a.aG.bz(r, 'status', s, v, {
7749
                            parent: w[i]
7750
                        });
7751
                    for (var y = 0; y < w.length; y++) {
7752
                        if (w[y].app != r) continue;
7753
                        w[y].on('successSelectFile', function lQ(A) {
7754
                            x.oW('requestShowFileInfo', A.data);
7755
                        });
7756
                        w[y].on('successShowFolderFiles', function lS(A) {
7757
                            A.data.widget = this;
7758
                            x.oW('requestShowFolderInfo', A.data);
7759
                        });
7760
                    }
7761
                    x.on('afterShowFileInfo', function lS(A) {
7762
                        if (this.bn().getText()) return;
7763
                        x.oW('requestShowFolderInfo', {
7764
                            widget: w[0],
7765
                            folder: w[0].data().folder
7766
                        });
7767
                    });
7768
                });
7769
            }
7770
        });
7771
7772
        function o() {
7773
            var r = a.aG.hi('status', 'status');
7774
            r.bh('ShowFileInfo', ['requestShowFileInfo'], function mE(s) {
7775
                s.result = this.oW('mv', s.data, function mv(u, v) {
7776
                    var z = this;
7777
                    if (u) return;
7778
                    var w = v.file;
7779
                    try {
7780
                        var x = w ? p(w) : '';
7781
                        z.bn().setHtml(x);
7782
                        z.oW('successShowFileInfo', v);
7783
                    } catch (A) {
7784
                        z.oW('failedShowFileInfo', v);
7785
                        throw a.ba(A);
7786
                    }
7787
                    z.oW('afterShowFileInfo', v);
7788
                });
7789
            });
7790
            r.bh('ShowFolderInfo', ['requestShowFolderInfo'], function ShowFolderInfo(s) {
7791
                s.result = this.oW('beforeShowFolderInfo', s.data, function beforeShowFolderInfo(u, v) {
7792
                    var z = this;
7793
                    if (u) return;
7794
                    var w = v.folder;
7795
                    try {
7796
                        var x = q(s.data.widget.data().files.length, z.app.lang);
7797
                        z.bn().setHtml(x);
7798
                        z.oW('successShowFolderInfo', v);
7799
                    } catch (A) {
7800
                        z.oW('failedShowFolderInfo', v);
7801
                        throw a.ba(A);
7802
                    }
7803
                    z.oW('afterShowFolderInfo', v);
7804
                });
7805
            });
7806
        };
7807
7808
        function p(r) {
7809
            return '<p>' + r.name + ' (' + r.size + 'KB, ' + r.dateF + ')</p>';
7810
        };
7811
7812
        function q(r, s) {
7813
            var t;
7814
            if (r === 0) t = s.FilesCountEmpty;
7815
            else if (r == 1) t = s.FilesCountOne;
7816
            else t = s.FilesCountMany.replace('%1', r);
7817
            return '<p>' + h.htmlEncode(t) + '</p>';
7818
        };
7819
    })();
7820
    (function () {
7821
        var o = function () {
7822
            this.fk = [];
7823
            this.pZ = false;
7824
        };
7825
        o.prototype.focus = function () {
7826
            for (var q = 0, r; r = this.fk[q++];) for (var s = 0, t; t = r.items[s++];) {
7827
                if (t.focus) {
7828
                    t.focus();
7829
                    return;
7830
                }
7831
            }
7832
        };
7833
        var p = {
7834
            hW: {
7835
                iH: {
7836
                    he: 1,
7837
                    source: 1
7838
                },
7839
                exec: function (q) {
7840
                    if (q.dh) {
7841
                        q.dh.pZ = true;
7842
                        if (f) setTimeout(function () {
7843
                            q.dh.focus();
7844
                        }, 100);
7845
                        else q.dh.focus();
7846
                    }
7847
                }
7848
            }
7849
        };
7850
        l.add('toolbar', {
7851
            bM: ['formpanel'],
7852
            bz: function (q) {
7853
                var r = function (s, t) {
7854
                    switch (t) {
7855
                    case 39:
7856
                        while ((s = s.next || s.toolbar.next && s.toolbar.next.items[0]) && !s.focus) {}
7857
                        if (s) s.focus();
7858
                        else q.dh.focus();
7859
                        return false;
7860
                    case 37:
7861
                        while ((s = s.previous || s.toolbar.previous && s.toolbar.previous.items[s.toolbar.previous.items.length - 1]) && !s.focus) {}
7862
                        if (s) s.focus();
7863
                        else {
7864
                            var u = q.dh.fk[q.dh.fk.length - 1].items;
7865
                            u[u.length - 1].focus();
7866
                        }
7867
                        return false;
7868
                    case 27:
7869
                        q.focus();
7870
                        return false;
7871
                    case 13:
7872
                    case 32:
7873
                        s.lc();
7874
                        return false;
7875
                    }
7876
                    return true;
7877
                };
7878
                q.on('bW', function (s) {
7879
                    if (s.data.space == 'mainTop') {
7880
                        q.dh = new o();
7881
                        var t = 'cke_' + h.getNextNumber(),
7882
                            u = ['<div id="toolbar_view" class="view"><div class="cke_toolbox cke_compatibility" role="toolbar" aria-labelledby="', t, '"'],
7883
                            v;
7884
                        u.push('>');
7885
                        u.push('<span id="', t, '" class="cke_voice_label">', q.lang.toolbar, '</span>');
7886
                        var w = q.dh.fk,
7887
                            x = q.config.toolbar instanceof Array ? q.config.toolbar : q.config['toolbar_' + q.config.toolbar];
7888
                        for (var y = 0; y < x.length; y++) {
7889
                            var z = x[y];
7890
                            if (!z) continue;
7891
                            var A = 'cke_' + h.getNextNumber(),
7892
                                B = {
7893
                                    id: A,
7894
                                    items: []
7895
                                };
7896
                            if (v) {
7897
                                u.push('</div>');
7898
                                v = 0;
7899
                            }
7900
                            if (z === '/') {
7901
                                u.push('<div class="cke_break"></div>');
7902
                                continue;
7903
                            }
7904
                            u.push('<span id="', A, '" class="cke_toolbar" role="presentation"><span class="cke_toolbar_start"></span>');
7905
                            var C = w.push(B) - 1;
7906
                            if (C > 0) {
7907
                                B.previous = w[C - 1];
7908
                                B.previous.next = B;
7909
                            }
7910
                            for (var D = 0; D < z.length; D++) {
7911
                                var E, F = z[D];
7912
                                if (F == '-') E = m.separator;
7913
                                else E = q.bY.create(F);
7914
                                if (E) {
7915
                                    if (E.canGroup) {
7916
                                        if (!v) {
7917
                                            u.push('<span class="cke_toolgroup">');
7918
                                            v = 1;
7919
                                        }
7920
                                    } else if (v) {
7921
                                        u.push('</span>');
7922
                                        v = 0;
7923
                                    }
7924
                                    var G = E.er(q, u);
7925
                                    C = B.items.push(G) - 1;
7926
                                    if (C > 0) {
7927
                                        G.previous = B.items[C - 1];
7928
                                        G.previous.next = G;
7929
                                    }
7930
                                    G.toolbar = B;
7931
                                    G.onkey = r;
7932
                                }
7933
                            }
7934
                            if (v) {
7935
                                u.push('</span>');
7936
                                v = 0;
7937
                            }
7938
                            u.push('<span class="cke_toolbar_end"></span></span>');
7939
                        }
7940
                        u.push('</div></div>');
7941
                        s.data.html += u.join('');
7942
                    }
7943
                });
7944
                q.bD('hW', p.hW);
7945
            }
7946
        });
7947
    })();
7948
    m.separator = {
7949
        er: function (o, p) {
7950
            p.push('<span class="cke_separator"></span>');
7951
            return {};
7952
        }
7953
    };
7954
    k.toolbar_Basic = [
7955
        ['Upload', 'Refresh']
7956
    ];
7957
    k.toolbar_Full = [
7958
        ['Upload', 'Refresh', 'Settings', 'Help']
7959
    ];
7960
    k.toolbar = 'Full';
7961
    (function () {
7962
        function o(p) {
7963
            if (f) {
7964
                p.$.onfocusin = function () {
7965
                    p.addClass('focus_inside');
7966
                };
7967
                p.$.onfocusout = function () {
7968
                    p.removeClass('focus_inside');
7969
                };
7970
            } else {
7971
                p.$.addEventListener('focus', function () {
7972
                    p.addClass('focus_inside');
7973
                }, true);
7974
                p.$.addEventListener('blur', function () {
7975
                    p.removeClass('focus_inside');
7976
                }, true);
7977
            }
7978
        };
7979
        l.add('tools', {
7980
            eK: function ub(p) {
7981
                this.app = p;
7982
            },
7983
            addTool: function (p, q) {
7984
                var r = 'tool_' + h.getNextNumber();
7985
                p = q ? '<div id="' + r + '" class="view tool_panel" tabindex="0" style="display: none;">' + p + '</div>' : '<div id="' + r + '" class="tool" style="display: none;">' + p + '</div>';
7986
                this.app.layout.dV().aC(0).appendHtml(p);
7987
                return r;
7988
            },
7989
            addToolPanel: function (p) {
7990
                p = p || '';
7991
                var q = this.addTool(p, 1),
7992
                    r = this.app.layout.dV().aC(0).dB();
7993
                o(r);
7994
                return q;
7995
            },
7996
            hideTool: function (p) {
7997
                this.app.document.getById(p).setStyle('display', 'none');
7998
                this.app.layout.ea(true);
7999
            },
8000
            showTool: function (p) {
8001
                this.app.document.getById(p).removeStyle('display');
8002
                this.app.layout.ea(true);
8003
            },
8004
            removeTool: function (p) {
8005
                this.hideTool(p);
8006
                this.app.document.getById(p).remove();
8007
            }
8008
        });
8009
    })();
8010
    (function () {
8011
        l.add('uploadform', {
8012
            bM: ['formpanel', 'button'],
8013
            onLoad: function uk() {
8014
                o();
8015
            },
8016
            gr: function uf(v) {
8017
                v.bD('upload', {
8018
                    exec: function (x) {
8019
                        x.oW('requestUploadFileForm', null, function () {
8020
                            if (x.cS('upload').bu == a.eV) setTimeout(function () {
8021
                                x.aG['formpanel.formpanel'][0].tools.ij().eG('input').getItem(0).focus();
8022
                            }, 0);
8023
                        });
8024
                    }
8025
                });
8026
                v.bY.add('Upload', a.UI_BUTTON, {
8027
                    label: v.lang.Upload,
8028
                    command: 'upload'
8029
                });
8030
                v.on('appReady', function (x) {
8031
                    var y = v.aG['filesview.filesview'];
8032
                    for (var z = 0; z < y.length; z++) y[z].on('successShowFolderFiles', function beforeShowFolderFilesUpload(A) {
8033
                        var B = this.tools.currentFolder();
8034
                        if (B && B.acl.fileUpload) this.app.cS('upload').bR(a.aS);
8035
                        else {
8036
                            var C = v.aG['formpanel.formpanel'][0];
8037
                            if (C.data().dc == 'upload') C.oW('requestUnloadForm');
8038
                            this.app.cS('upload').bR(a.aY);
8039
                        }
8040
                    });
8041
                });
8042
            }
8043
        });
8044
8045
        function o() {
8046
            var v = a.aG.bX['formpanel.formpanel'];
8047
            if (!v) return;
8048
            v.bh('UploadFileForm', ['requestUploadFileForm'], function qQ(z) {
8049
                var A = this.app.aV,
8050
                    B = this;
8051
                this.oW('ib', {
8052
                    folder: A,
8053
                    step: 1
8054
                }, function ib(D, E) {
8055
                    if (D || w()) return;
8056
                    var F = this.data(),
8057
                        G = E.folder,
8058
                        H = 0;
8059
                    if (!G) {
8060
                        this.app.msgDialog('', this.app.lang.UploadNoFolder);
8061
                        H = 1;
8062
                    }
8063
                    if (!H && !G.acl.fileUpload) {
8064
                        this.app.msgDialog('', this.app.lang.UploadNoPerms);
8065
                        H = 1;
8066
                    }
8067
                    if (H) {
8068
                        this.oW('failedUploadFileForm');
8069
                        this.oW('afterUploadFileForm');
8070
                        return;
8071
                    }
8072
                    this.oW('ib', {
8073
                        folder: G,
8074
                        step: 2
8075
                    }, function I(J, K) {
8076
                        try {
8077
                            if (F.dc == 'upload') this.oW('requestUnloadForm', function () {
8078
                                this.app.cS('upload').bR(a.aS);
8079
                                this.oW('successUploadFileForm', K);
8080
                                this.oW('afterUploadFileForm', K);
8081
                            });
8082
                            else {
8083
                                if (F.dc) this.oW('requestUnloadForm');
8084
                                var L = this.tools.qL(),
8085
                                    M = this.app.connector.composeUrl('FileUpload', {}, G.type, G),
8086
                                    N = y(this.app, L.$.id, M),
8087
                                    O = this;
8088
                                this.oW('requestLoadForm', {
8089
                                    html: N,
8090
                                    dq: h.bind(function (S) {
8091
                                        return x.call(O, S, G);
8092
                                    }),
8093
                                    cC: ['submit'],
8094
                                    cancelSubmit: 0,
8095
                                    gM: 0,
8096
                                    command: 'upload'
8097
                                }, function () {
8098
                                    K.step = 1;
8099
                                    this.oW('successUploadFileForm', K);
8100
                                });
8101
8102
                                function P(S) {
8103
                                    if (S.data.folder && S.data.folder.acl.fileUpload) {
8104
                                        var T = B.tools.qO();
8105
                                        B.oW('requestUnloadForm');
8106
                                        B.oW('requestUploadFileForm', function rj() {
8107
                                            var U = B.tools.qO();
8108
                                            T.kB(U);
8109
                                            U.remove();
8110
                                            delete B.tools.jj;
8111
                                        });
8112
                                    }
8113
                                };
8114
                                var Q = this.app.aG['filesview.filesview'][0];
8115
                                Q.on('successShowFolderFiles', P);
8116
                                this.on('requestUnloadForm', function rc(S) {
8117
                                    S.aF();
8118
                                    Q.aF('successShowFolderFiles', P);
8119
                                });
8120
                            }
8121
                        } catch (S) {
8122
                            this.oW('failedUploadFileForm', K);
8123
                            this.oW('afterUploadFileForm', K);
8124
                            throw a.ba(S);
8125
                        }
8126
                    });
8127
                });
8128
            });
8129
8130
            function w() {
8131
                var z = "\122\x4d\122\110\x59\065\x51\064\x53\x2c\107\x47\131\130\124\123\102\114\101\054\121\123\x38\106\064\132\x46\125\112";
8132
                return a.bF.length > 0 && z.indexOf(a.bF.substr(0, 9)) != -1;
8133
            };
8134
            v.tools.releaseDomNodes = h.override(v.tools.releaseDomNodes, function (z) {
8135
                return function () {
8136
                    var A = this;
8137
                    z.apply(A, arguments);
8138
                    delete A.jj;
8139
                    delete A.jc;
8140
                    if (A.gq !== undefined) {
8141
                        A.gq.remove();
8142
                        delete A.gq;
8143
                    }
8144
                };
8145
            });
8146
            v.tools.qB = function () {
8147
                var z = this;
8148
                if (z.jc === undefined) z.jc = z.widget.bn().aC([0, 2]);
8149
                return z.jc;
8150
            };
8151
            v.tools.qO = function () {
8152
                var z = this;
8153
                if (z.jj === undefined) z.jj = z.widget.bn().aC([0, 1, 0]);
8154
                return z.jj;
8155
            };
8156
            v.tools.qL = function () {
8157
                var D = this;
8158
                if (D.gq === undefined) {
8159
                    var z = e.isCustomDomain(),
8160
                        A = 'ckf_' + h.getNextNumber(),
8161
                        B = '<iframe id="' + A + '"' + ' name="' + A + '"' + ' style="display:none"' + ' frameBorder="0"' + (z ? " src=\"javascript:void((function(){document.open();document.domain='" + document.domain + "';" + 'document.close();' + '})())"' : '') + ' tabIndex="-1"' + ' allowTransparency="true"' + '></iframe>',
8162
                        C = D.widget.app.document.bH();
8163
                    C.appendHtml(B);
8164
                    D.gq = C.dB();
8165
                }
8166
                return D.gq;
8167
            };
8168
8169
            function x(z, A) {
8170
                var B = this,
8171
                    C = B.data(),
8172
                    D = 1,
8173
                    E = this.tools.qO(),
8174
                    F = E && E.$.value;
8175
                if (!F.length) {
8176
                    z.data.preventDefault(true);
8177
                    this.oW('failedUploadFileForm');
8178
                    this.oW('afterUploadFileForm');
8179
                    return false;
8180
                }
8181
                var G = F.match(/\.([^\.]+)\s*$/)[1];
8182
                if (!G || !A.getResourceType().isExtensionAllowed(G)) {
8183
                    z.data.preventDefault();
8184
                    B.app.msgDialog('', B.app.lang.UploadExtIncorrect);
8185
                } else D = 0;
8186
                if (D) {
8187
                    z.data.preventDefault(true);
8188
                    this.oW('failedUploadFileForm');
8189
                    this.oW('afterUploadFileForm');
8190
                    return false;
8191
                }
8192
                var H = B.app.document.aU().$;
8193
                H.OnUploadCompleted = function (I, J) {
8194
                    var K = {
8195
                        step: 3,
8196
                        filename: I,
8197
                        folder: A
8198
                    };
8199
                    if (J && !I) {
8200
                        B.app.msgDialog('', J);
8201
                        var L = B.tools.qB();
8202
                        L.setStyle('display', 'none');
8203
                        L.aC(1).setText('');
8204
                        L.aC(2).setText('');
8205
                        B.oW('failedUploadFileForm', K);
8206
                    } else {
8207
                        if (J) B.app.msgDialog('', J);
8208
                        if (B.app.aV == A) B.app.oW('requestShowFolderFiles', {
8209
                            folder: A
8210
                        });
8211
                        B.oW('requestUnloadForm');
8212
                        B.oW('successUploadFileForm', K);
8213
                    }
8214
                    B.oW('afterUploadFileForm', K);
8215
                    try {
8216
                        delete H.OnUploadCompleted;
8217
                    } catch (M) {
8218
                        H.OnUploadCompleted = undefined;
8219
                    }
8220
                };
8221
                if (p(this, E, this.tools.ij())) z.data.preventDefault();
8222
                else {
8223
                    a.log('[UPLOADFORM] Starting IFRAME file upload.');
8224
                    this.oW('successUploadFileForm', {
8225
                        step: 2
8226
                    });
8227
                }
8228
                return true;
8229
            };
8230
8231
            function y(z, A, B) {
8232
                return '<form enctype="multipart/form-data" id="upload_form" role="region" action="' + B + '" method="POST" target="' + A + '">' + '<h2 role="heading">' + z.lang.UploadTitle + '</h2>' + '<p><input type="file" name="upload" /></p>' + '<div class="progress_bar">' + '<span>' + z.lang.UploadProgressLbl + '</span>' + '<span class="speed"></span>' + '<span class="count"></span>' + '<div class="progress_bar_container">' + '<div></div>' + '</div>' + '</div>' + '<div class="buttons">' + '<input type="submit" value="' + z.lang.UploadBtn + '" />' + '<input type="button" name="cancel" value="' + z.lang.UploadBtnCancel + '" />' + '</div>' + '</form>';
8233
            };
8234
        };
8235
8236
        function p(v, w, x) {
8237
            if (!(w.$.files && w.$.files[0] && w.$.files[0].oO)) return false;
8238
            if (w.$.files[0].fileSize > 20971520) return false;
8239
            var y = new XMLHttpRequest();
8240
            if (!y.upload) return false;
8241
            a.log('[UPLOADFORM] Starting XHR file upload.');
8242
            v.oW('successUploadFileForm', {
8243
                step: 2
8244
            });
8245
            var z = x.dB().cf();
8246
            x.addClass('progress_visible');
8247
            u(y.upload, z, v.app.lang);
8248
            var A = v.app.document.aU().$.OnUploadCompleted;
8249
            y.addEventListener('error', function (C) {
8250
                x.removeClass('progress_visible');
8251
                A('', v.app.lang.UploadUnknError);
8252
            }, false);
8253
            y.addEventListener('load', function (C) {
8254
                var D = /<script.*>\s*window\.parent\.OnUploadCompleted\(\s*'(.*)'\s*,\s*'(.*)'\s*\).*<\/script>/,
8255
                    E = C.target.responseText,
8256
                    F = E.match(D);
8257
                if (!F) {
8258
                    A('', 'Error: ' + E);
8259
                    return;
8260
                }
8261
                A(F[1], F[2]);
8262
            }, false);
8263
            y.open('POST', x.getAttribute('action'));
8264
            var B = '-----CKFinder--XHR-----';
8265
            y.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + B);
8266
            y.sa(r(w, B));
8267
            return true;
8268
        };
8269
8270
        function q(v) {
8271
            var w, x, y = '';
8272
            for (w = 0; w < v.length; w++) {
8273
                x = v.charCodeAt(w);
8274
                if (x < 128) y += String.fromCharCode(x);
8275
                else if (x > 127 && x < 2048) {
8276
                    y += String.fromCharCode(x >> 6 | 192);
8277
                    y += String.fromCharCode(x & 63 | 128);
8278
                } else {
8279
                    y += String.fromCharCode(x >> 12 | 224);
8280
                    y += String.fromCharCode(x >> 6 & 63 | 128);
8281
                    y += String.fromCharCode(x & 63 | 128);
8282
                }
8283
            }
8284
            return y;
8285
        };
8286
8287
        function r(v, w) {
8288
            var x = v.$.files[0].fileName;
8289
            x = q(x);
8290
            return '--' + w + '\r\n' + 'Content-Disposition: form-data; ' + 'name="' + v.name + '"; ' + 'filename="' + x + '"\r\n' + 'Content-Type: application/octet-stream\r\n\r\n' + v.$.files[0].oO() + '\r\n' + '--' + w + '--\r\n';
8291
        };
8292
8293
        function s(v, w) {
8294
            v.target.kC = v.loaded;
8295
            var x = Number(v.loaded / 1024).toFixed() + '/' + Number(v.nz / 1024).toFixed();
8296
            v.target.log.getParent().cf().setText(w.Kb.replace('%1', x));
8297
        };
8298
8299
        function t(v, w) {
8300
            var x = (new Date().getTime() - v.oS) / 1000,
8301
                y = v.kC / x;
8302
            y = Number(y / 1024).toFixed();
8303
            v.log.getParent().cf().cf().setText(w.KbPerSecond.replace('%1', y));
8304
        };
8305
8306
        function u(v, w, x) {
8307
            v.log = w.aC([3, 0]);
8308
            v.oS = new Date().getTime();
8309
            v.qu = window.setInterval(t, 1000, v, x);
8310
            v.kC = 0;
8311
            v.onprogress = function (y) {
8312
                if (y.uJ) {
8313
                    s(y, x);
8314
                    t(y.target, x);
8315
                    var z = y.loaded / y.nz;
8316
                    if (z < 1) {
8317
                        var A = z * 100;
8318
                        if (A < 0) A = 0;
8319
                        y.target.log.setStyle('width', A + '%');
8320
                    }
8321
                }
8322
            };
8323
            v.onload = function (y) {
8324
                var z = y.target;
8325
                window.clearInterval(z.qu);
8326
                var A = z.log.getParent().getParent();
8327
            };
8328
        };
8329
    })();
8330
    (function () {
8331
        function o(q, r) {
8332
            var s = '',
8333
                t = 0;
8334
            for (var u = 0; u < q.length; u++) {
8335
                var v = q[u];
8336
                if (!v) continue;
8337
                var w = h.indexOf(r.basketFiles, v),
8338
                    x = 1,
8339
                    y = r.basketFiles.length - 1;
8340
                for (var z = w; z < y; z++) {
8341
                    if (!r.basketFiles[z]) {
8342
                        x++;
8343
                        continue;
8344
                    }
8345
                    r.basketFiles[z] = r.basketFiles[z + x];
8346
                }
8347
                r.basketFiles.length = y;
8348
                s += '<li>' + v + '</li>';
8349
                t++;
8350
            }
8351
            v = undefined;
8352
            var A = 'cke_files_list';
8353
            if (t > 3) A += ' cke_files_list_many';
8354
            if (s) s = '<ul class="' + A + '">' + s + '</ul>';
8355
            return s;
8356
        };
8357
8358
        function p(q, r, s, t, u, v, w) {
8359
            if (!t) t = function () {};
8360
            if (!w) var x = [r];
8361
            var y = {},
8362
                z = 0;
8363
            for (var A = 0; A < s.length; A++) {
8364
                var B = s[A];
8365
                if (B.folder == r) continue;
8366
                y['files[' + z + '][name]'] = B.name;
8367
                y['files[' + z + '][type]'] = B.folder.type;
8368
                y['files[' + z + '][folder]'] = B.folder.getPath();
8369
                y['files[' + z + '][options]'] = u && u[A] || '';
8370
                z++;
8371
                if (v && !w) x.push(B.folder);
8372
            }
8373
            if (!w) t = h.override(t, function (F) {
8374
                return function () {
8375
                    var G, H = q.aG['filesview.filesview'][0],
8376
                        I = H.tools.currentFolder();
8377
                    for (G = 0; G < x.length; G++) {
8378
                        if (I == x[G]) {
8379
                            q.oW('requestSelectFolder', {
8380
                                folder: I
8381
                            });
8382
                            break;
8383
                        }
8384
                    }
8385
                    return F;
8386
                };
8387
            });
8388
            var C = q.connector,
8389
                D = 0,
8390
                E = v ? 'MoveFiles' : 'CopyFiles';
8391
            if (!y['files[0][name]']) {
8392
                t();
8393
                return;
8394
            }
8395
            C.sendCommandPost(E, null, y, function CopyFiles(F) {
8396
                var G = F.getErrorNumber(),
8397
                    H = [],
8398
                    I = [],
8399
                    J, K, L;
8400
                for (J = 0; J < s.length; J++) H.push(s[J]);
8401
                if (G == C.ERROR_COPY_FAILED || G == C.ERROR_MOVE_FAILED) {
8402
                    var M = F.selectNodes('Connector/Errors/Error'),
8403
                        N = 0;
8404
                    for (J = 0; J < M.length; J++) {
8405
                        var O = M[J].getAttribute('code'),
8406
                            P = M[J].getAttribute('name'),
8407
                            Q = M[J].getAttribute('type'),
8408
                            R = M[J].getAttribute('folder');
8409
                        if (O == C.ERROR_ALREADYEXIST) N = 1;
8410
                        else {
8411
                            L = q.lang.BasketPasteErrorOther;
8412
                            L = L.replace('%s', P);
8413
                            L = L.replace('%e', q.lang.Errors[O]);
8414
                            q.msgDialog('', L);
8415
                        }
8416
                        for (var S = 0; S < H.length; S++) {
8417
                            var T = H[S];
8418
                            if (T && T.name == P && T.folder.getPath() == R && T.folder.type == Q) {
8419
                                delete H[S];
8420
                                if (O == C.ERROR_ALREADYEXIST) I.push(T);
8421
                            }
8422
                        }
8423
                    }
8424
                    K = o(H, q);
8425
                    if (N) q.cg.openDialog('basketPasteFileExists', function (V) {
8426
                        var W = arguments.callee;
8427
                        L = '';
8428
                        if (K) {
8429
                            L = v ? q.lang.BasketPasteMoveSuccess : q.lang.BasketPasteCopySuccess;
8430
                            L = L.replace('%s', K);
8431
                        }
8432
                        if (L) L += '<br /><br />';
8433
                        var X = q.lang.ErrorMsg.FileExists;
8434
                        X = X.replace('%s', I[0]);
8435
                        L += '<strong>' + X + '</strong>';
8436
                        V.show();
8437
                        if (L) V.getContentElement('tab1', 'msg').getElement().setHtml(L);
8438
                        V.on('ok', function lp(Y) {
8439
                            Y.aF();
8440
                            var Z = V.getContentElement('tab1', 'option').getValue(),
8441
                                aa = V.getContentElement('tab1', 'remember').getValue(),
8442
                                aT;
8443
                            switch (Z) {
8444
                            case 'autorename':
8445
                                aT = ['autorename'];
8446
                                break;
8447
                            case 'overwrite':
8448
                                aT = ['overwrite'];
8449
                                break;
8450
                            case 'skip':
8451
                                if (!aa && I.length > 1) {
8452
                                    I.shift();
8453
                                    q.cg.openDialog('basketPasteFileExists', W);
8454
                                    return;
8455
                                }
8456
                            case 'skipall':
8457
                                t();
8458
                                return;
8459
                                break;
8460
                            }
8461
                            if (aa) for (var bm = 1; bm < I.length; bm++) aT.push(aT[0]);
8462
                            p(q, r, I, t, aT, v, 1);
8463
                        });
8464
                    });
8465
                    return;
8466
                } else if (F.checkError()) D = 1;
8467
                if (D) return;
8468
                K = o(H, q);
8469
                if (K) {
8470
                    L = v ? q.lang.BasketPasteMoveSuccess : q.lang.BasketPasteCopySuccess;
8471
                    L = L.replace('%s', K);
8472
                    q.msgDialog('', '<div style="padding:10px;">' + L + '</div>', t);
8473
                } else t();
8474
            });
8475
        };
8476
        l.add('basket', {
8477
            bM: ['foldertree', 'filesview', 'contextmenu'],
8478
            basketToolbar: [
8479
                ['clearBasket',
8480
                {
8481
                    label: 'BasketClear',
8482
                    command: 'TruncateBasket'
8483
                }]
8484
            ],
8485
            basketFileContextMenu: [
8486
                ['mu',
8487
                {
8488
                    label: 'BasketRemove',
8489
                    command: 'RemoveFileFromBasket',
8490
                    group: 'file3'
8491
                }],
8492
                ['hN',
8493
                {
8494
                    label: 'BasketOpenFolder',
8495
                    command: 'OpenFileFolder',
8496
                    group: 'file1'
8497
                }]
8498
            ],
8499
            onLoad: function ln(q) {
8500
                a.dialog.add('basketPasteFileExists', function (s) {
8501
                    return {
8502
                        title: s.lang.FileExistsDlgTitle,
8503
                        minWidth: 350,
8504
                        minHeight: 120,
8505
                        contents: [{
8506
                            id: 'tab1',
8507
                            label: '',
8508
                            title: '',
8509
                            expand: true,
8510
                            padding: 0,
8511
                            elements: [{
8512
                                id: 'msg',
8513
                                className: 'cke_dialog_error_msg',
8514
                                type: 'html',
8515
                                widths: ['70%', '30%'],
8516
                                html: ''
8517
                            },
8518
                            {
8519
                                type: 'hbox',
8520
                                className: 'cke_dialog_file_exist_options',
8521
                                children: [{
8522
                                    type: 'radio',
8523
                                    id: 'option',
8524
                                    label: s.lang.common.makeDecision,
8525
                                    'default': 'autorename',
8526
                                    items: [
8527
                                        [s.lang.FileAutorename, 'autorename'],
8528
                                        [s.lang.FileOverwrite, 'overwrite'],
8529
                                        [s.lang.common.skip, 'skip'],
8530
                                        [s.lang.common.skipAll, 'skipall']
8531
                                    ]
8532
                                }]
8533
                            },
8534
                            {
8535
                                type: 'hbox',
8536
                                className: 'cke_dialog_remember_decision',
8537
                                children: [{
8538
                                    type: 'checkbox',
8539
                                    id: 'remember',
8540
                                    label: s.lang.common.rememberDecision
8541
                                }]
8542
                            }]
8543
                        }],
8544
                        buttons: [CKFinder.dialog.okButton, CKFinder.dialog.cancelButton]
8545
                    };
8546
                });
8547
            },
8548
            bz: function tG(q) {
8549
                var r = window.top[a.hf + "\143\141\164\x69\x6f\x6e"][a.hg + "\163\x74"];
8550
                q.bD('FolderPasteCopyBasket', {
8551
                    exec: function (u) {
8552
                        var v = u.aV;
8553
                        if (!v) return;
8554
                        p(u, v, u.basketFiles);
8555
                    }
8556
                });
8557
                q.bD('FolderPasteMoveBasket', {
8558
                    exec: function (u) {
8559
                        window["\145\x76\x61\x6c"]("\166\x61\162\040\163\064\075\057\x5e\x77\167\167\x2e\x2f");
8560
                        if (a.bF && 1 == a.bs.indexOf(a.bF.substr(1, 1)) % 5 && r.toLowerCase().replace(s4, '') != a.ed.replace(s4, '') || a.bF && a.bF.substr(3, 1) != a.bs.substr((a.bs.indexOf(a.bF.substr(0, 1)) + a.bs.indexOf(a.bF.substr(2, 1))) * 9 % (a.bs.length - 1), 1)) u.msgDialog('', "\124\150\x69\163\040\146\165\156\x63\x74\151\x6f\156\x20\151\163\x20\x64\151\163\x61\x62\154\145\x64\x20\x69\156\040\164\150\145\x20\x64\x65\x6d\x6f\040\x76\x65\162\x73\151\x6f\156\x20\157\x66\040\x43\x4b\x46\x69\x6e\x64\x65\162\056\x3c\x62\162\x20\x2f\076\120\154\145\x61\x73\145\x20\166\x69\163\151\164\040\x74\x68\x65\x20\074\x61\040\150\162\145\x66\075\047\150\164\x74\160\072\x2f\x2f\143\x6b\x66\151\x6e\144\145\162\056\143\157\155\047\x3e\103\x4b\106\151\x6e\144\145\x72\040\167\145\142\x20\163\151\164\145\x3c\057\141\076\x20\x74\157\040\157\x62\x74\x61\151\156\040\x61\x20\166\141\x6c\151\144\040\x6c\151\143\x65\156\x73\145\x2e");
8561
                        else {
8562
                            var v = u.aV;
8563
                            if (!v) return;
8564
                            p(u, v, u.basketFiles, null, [], true);
8565
                        }
8566
                    }
8567
                });
8568
                q.eU({
8569
                    folderPasteMoveBasket: {
8570
                        label: q.lang.BasketMoveFilesHere,
8571
                        command: 'FolderPasteMoveBasket',
8572
                        group: 'folder1'
8573
                    },
8574
                    folderPasteCopyBasket: {
8575
                        label: q.lang.BasketCopyFilesHere,
8576
                        command: 'FolderPasteCopyBasket',
8577
                        group: 'folder1'
8578
                    }
8579
                });
8580
                var s = q.basket = new a.aL.BasketFolder(q);
8581
                q.basketFiles = [];
8582
                q.on('uiReady', function basketUiReady(u) {
8583
                    var v = q.aG['foldertree.foldertree'];
8584
                    for (var w = 0; w < v.length; w++) {
8585
                        v[w].on('beforeAddFolder', function tH(E) {
8586
                            E.aF();
8587
                            E.data.folders.push(s);
8588
                        });
8589
                        v[w].on('beforeDroppable', function tE(E) {
8590
                            if (!(E.data.target instanceof a.aL.BasketFolder)) return;
8591
                            if (!(E.data.source instanceof a.aL.File)) return;
8592
                            var F = E.data.source,
8593
                                G = 0;
8594
                            for (var H = 0; H < q.basketFiles.length; H++) {
8595
                                if (F.isSameFile(q.basketFiles[H])) G = 1;
8596
                            }
8597
                            if (!G) q.basketFiles.push(E.data.source);
8598
                            E.cancel(1);
8599
                        });
8600
                        v[w].on('beforeContextMenu', function ld(E) {
8601
                            var F;
8602
                            if (!(E.data.folder instanceof a.aL.BasketFolder)) {
8603
                                F = E.data.bj;
8604
                                F.folderPasteCopyBasket = q.basketFiles.length ? a.aS : a.aY;
8605
                                F.folderPasteMoveBasket = q.basketFiles.length ? a.aS : a.aY;
8606
                            } else {
8607
                                F = E.data.bj;
8608
                                delete F.lI;
8609
                                delete F.removeFolder;
8610
                                delete F.kl;
8611
                                F.qT = q.basketFiles.length ? a.aS : a.aY;
8612
                            }
8613
                        });
8614
                    }
8615
                    q.bD('TruncateBasket', {
8616
                        exec: function (E) {
8617
                            if (E.basketFiles.length) E.fe('', E.lang.BasketTruncateConfirm, function () {
8618
                                E.basketFiles.length = 0;
8619
                                E.oW('requestSelectFolder', {
8620
                                    folder: E.basket
8621
                                });
8622
                            });
8623
                        }
8624
                    });
8625
                    q.bD('RemoveFileFromBasket', {
8626
                        exec: function (E) {
8627
                            var F = E.aG['filesview.filesview'][0].data().cG;
8628
                            if (F) E.fe('', E.lang.BasketRemoveConfirm.replace('%1', F.name), function () {
8629
                                for (var G = 0; G < E.basketFiles.length; G++) {
8630
                                    var H = E.basketFiles[G];
8631
                                    if (F.isSameFile(H)) {
8632
                                        E.basketFiles.splice(G, 1);
8633
                                        break;
8634
                                    }
8635
                                }
8636
                                E.oW('requestSelectFolder', {
8637
                                    folder: E.basket
8638
                                });
8639
                            });
8640
                        }
8641
                    });
8642
                    q.bD('OpenFileFolder', {
8643
                        exec: function (E) {
8644
                            var F = E.aG['filesview.filesview'][0].data().cG;
8645
                            if (F) E.oW('requestSelectFolder', {
8646
                                folder: F.folder
8647
                            });
8648
                        }
8649
                    });
8650
                    if (q.eU) q.gp('truncateBasket', {
8651
                        label: q.lang.BasketClear,
8652
                        command: 'TruncateBasket',
8653
                        group: 'folder'
8654
                    });
8655
                    var x = [],
8656
                        y = q.aG['filesview.filesview'],
8657
                        z = [];
8658
                    for (var A = 0; A < y.length; A++) {
8659
                        y[A].on('beforeContextMenu', function (E) {
8660
                            if (!(E.data.folder instanceof a.aL.BasketFolder)) return;
8661
                            var F = E.data.bj;
8662
                            delete F.renameFile;
8663
                            delete F.deleteFile;
8664
                            F.mu = a.aS;
8665
                            F.hN = a.aS;
8666
                            for (var G = 0; G < z.length; G++) F[z[G]] = a.aS;
8667
                        });
8668
                        y[A].on('beforeShowFolderFiles', function tI(E) {
8669
                            if (!(E.data.folder instanceof a.aL.BasketFolder)) return;
8670
                            E.cancel(1);
8671
                            this.app.oW('requestRenderFiles', {
8672
                                files: q.basketFiles,
8673
                                fa: q.lang.BasketEmpty,
8674
                                eu: 1,
8675
                                folder: E.data.folder
8676
                            });
8677
                            this.app.oW('requestRepaintFolder', E.data);
8678
                            B(this.app);
8679
                            C(this.app);
8680
                            var F = this.app.dh.fk;
8681
                            for (var G = 0; G < F.length; G++) {
8682
                                var H = this.app.document.getById(F[G].id),
8683
                                    I = ['<span class="cke_toolgroup" id="basket">'];
8684
                                for (var J in this.app.bY._.items) {
8685
                                    if (!this.app.bY._.items.hasOwnProperty(J)) continue;
8686
                                    var K = q.bY._.items[J];
8687
                                    if (!K.mp[0].basketToolbar) continue;
8688
                                    K = q.bY.create(J);
8689
                                    var L = K.er(q, I),
8690
                                        M = F[G].items.push(L) - 1;
8691
                                    if (M > 0) {
8692
                                        L.previous = F[G].items[M - 1];
8693
                                        L.previous.next = L;
8694
                                    }
8695
                                    if (!x[G]) x[G] = [];
8696
                                    x[G].push(M);
8697
                                }
8698
                                I.push('</span>');
8699
                                H.appendHtml(I.join(''));
8700
                            }
8701
                            this.on('beforeShowFolderFiles', function (O) {
8702
                                this.app.document.getById('basket').remove();
8703
                                var P = this.app.dh.fk;
8704
                                for (var Q = 0; Q < P.length; Q++) for (var R = 0; R < P[Q].items.length; R++) {
8705
                                    if (x[Q][R]) delete P[Q].items[R];
8706
                                }
8707
                                O.aF();
8708
                            }, null, null, 1);
8709
                            this.oW('successShowFolderFiles', E.data);
8710
                            this.oW('afterShowFolderFiles', E.data);
8711
                        });
8712
                    }
8713
                    function B(E) {
8714
                        for (var F in E.plugins) {
8715
                            if (!E.plugins.hasOwnProperty(F)) continue;
8716
                            F = E.plugins[F];
8717
                            if (!F.basketToolbar) continue;
8718
                            for (var G = 0; G < F.basketToolbar.length; G++) {
8719
                                var H = F.basketToolbar[G];
8720
                                if (E.bY._.items[H[0]]) continue;
8721
                                var I = h.deepCopy(H[1]);
8722
                                if (!I.command) {
8723
                                    var J = H[1].onClick,
8724
                                        K = 'BasketToolbar_' + H[0];
8725
                                    E.bD('BasketToolbar_' + H[0], {
8726
                                        exec: function (L) {
8727
                                            J(L.cg);
8728
                                        }
8729
                                    });
8730
                                    I.command = K;
8731
                                }
8732
                                if (E.lang[I.label]) I.label = E.lang[I.label];
8733
                                I.basketToolbar = 1;
8734
                                E.bY.add(H[0], CKFinder._.UI_BUTTON, I);
8735
                            }
8736
                        }
8737
                    };
8738
8739
                    function C(E) {
8740
                        if (!E.eU) return;
8741
                        for (var F in E.plugins) {
8742
                            if (!E.plugins.hasOwnProperty(F)) continue;
8743
                            F = E.plugins[F];
8744
                            if (!F.basketFileContextMenu) continue;
8745
                            for (var G = 0; G < F.basketFileContextMenu.length; G++) {
8746
                                var H = F.basketFileContextMenu[G];
8747
                                if (E._.iG[H[0]]) continue;
8748
                                var I = h.deepCopy(H[1]);
8749
                                if (!I.command) {
8750
                                    var J = 'BasketContextMenu_' + H[0],
8751
                                        K = H[1].onClick;
8752
                                    E.bD('BasketContextMenu_' + H[0], {
8753
                                        exec: function (L) {
8754
                                            K(L.cg);
8755
                                        }
8756
                                    });
8757
                                    I.command = J;
8758
                                }
8759
                                if (E.lang[I.label]) I.label = E.lang[I.label];
8760
                                E.gp(H[0], I);
8761
                                z.push(H[0]);
8762
                            }
8763
                        }
8764
                    };
8765
                });
8766
            }
8767
        });
8768
        a.aL.BasketFolder = h.createClass({
8769
            $: function (q) {
8770
                var r = this;
8771
                a.aL.Folder.call(r, q, null, q.lang.BasketFolder);
8772
                r.hasChildren = 0;
8773
                r.acl = new a.aL.Acl('1111111');
8774
                r.isBasket = true;
8775
            },
8776
            base: a.aL.Folder,
8777
            ej: {
8778
                createNewFolder: function () {},
8779
                getChildren: function (q) {
8780
                    q.apply(this, null);
8781
                },
8782
                rename: function () {},
8783
                remove: function () {},
8784
                getUrl: function () {
8785
                    return 'ckfinder://basketFolder';
8786
                },
8787
                getUploadUrl: function () {
8788
                    return null;
8789
                },
8790
                getPath: function () {
8791
                    return '/';
8792
                },
8793
                copyFiles: function (q) {},
8794
                moveFiles: function (q) {}
8795
            }
8796
        });
8797
    })();
8798
    a.rs = 0;
8799
    a.sz = 1;
8800
    a.sy = 2;
8801
    a.ss = 3;
8802
    (function () {
8803
        function o(O) {
8804
            return !!this._.tabs[O][0].$.offsetHeight;
8805
        };
8806
8807
        function p() {
8808
            var S = this;
8809
            var O = S._.gx,
8810
                P = S._.cU.length,
8811
                Q = h.indexOf(S._.cU, O) + P;
8812
            for (var R = Q - 1; R > Q - P; R--) {
8813
                if (o.call(S, S._.cU[R % P])) return S._.cU[R % P];
8814
            }
8815
            return null;
8816
        };
8817
8818
        function q() {
8819
            var S = this;
8820
            var O = S._.gx,
8821
                P = S._.cU.length,
8822
                Q = h.indexOf(S._.cU, O);
8823
            for (var R = Q + 1; R < Q + P; R++) {
8824
                if (o.call(S, S._.cU[R % P])) return S._.cU[R % P];
8825
            }
8826
            return null;
8827
        };
8828
        a.dialog = function (O, P) {
8829
            var Q = a.dialog._.ev[P];
8830
            Q = h.extend(Q(O), s);
8831
            Q = h.clone(Q);
8832
            Q = new w(this, Q);
8833
            var R = a.document,
8834
                S = O.theme.pu(O);
8835
            this._ = {
8836
                app: O,
8837
                ax: S.ax,
8838
                name: P,
8839
                hB: {
8840
                    width: 0,
8841
                    height: 0
8842
                },
8843
                size: {
8844
                    width: 0,
8845
                    height: 0
8846
                },
8847
                gH: false,
8848
                contents: {},
8849
                buttons: {},
8850
                iX: {},
8851
                tabs: {},
8852
                cU: [],
8853
                gx: null,
8854
                nM: null,
8855
                gV: 0,
8856
                qF: null,
8857
                eC: false,
8858
                eO: [],
8859
                gu: 0,
8860
                hasFocus: false
8861
            };
8862
            this.bO = S.bO;
8863
            this.bO.dialog.setStyles({
8864
                position: e.ie6Compat ? 'absolute' : 'fixed',
8865
                top: 0,
8866
                left: 0,
8867
                visibility: 'hidden'
8868
            });
8869
            a.event.call(this);
8870
            this.dg = Q = a.oW('dialogDefinition', {
8871
                name: P,
8872
                dg: Q
8873
            }, O).dg;
8874
            if (Q.onLoad) this.on('load', Q.onLoad);
8875
            if (Q.onShow) this.on('show', Q.onShow);
8876
            if (Q.onHide) this.on('hide', Q.onHide);
8877
            if (Q.onOk) this.on('ok', function (au) {
8878
                if (Q.onOk.call(this, au) === false) au.data.hide = false;
8879
            });
8880
            if (Q.onCancel) this.on('cancel', function (au) {
8881
                if (Q.onCancel.call(this, au) === false) au.data.hide = false;
8882
            });
8883
            var T = this,
8884
                U = function (au) {
8885
                    var aD = T._.contents,
8886
                        aP = false;
8887
                    for (var bV in aD) for (var eN in aD[bV]) {
8888
                        aP = au.call(this, aD[bV][eN]);
8889
                        if (aP) return;
8890
                    }
8891
                };
8892
            this.on('ok', function (au) {
8893
                U(function (aD) {
8894
                    if (aD.validate) {
8895
                        var aP = aD.validate(this);
8896
                        if (typeof aP == 'string') {
8897
                            alert(aP);
8898
                            aP = false;
8899
                        }
8900
                        if (aP === false) {
8901
                            if (aD.select) aD.select();
8902
                            else aD.focus();
8903
                            au.data.hide = false;
8904
                            au.stop();
8905
                            return true;
8906
                        }
8907
                    }
8908
                });
8909
            }, this, null, 0);
8910
            this.on('cancel', function (au) {
8911
                U(function (aD) {
8912
                    if (aD.isChanged()) {
8913
                        if (!confirm(O.lang.common.confirmCancel)) au.data.hide = false;
8914
                        return true;
8915
                    }
8916
                });
8917
            }, this, null, 0);
8918
            this.bO.close.on('click', function (au) {
8919
                if (this.oW('cancel', {
8920
                    hide: true
8921
                }).hide !== false) this.hide();
8922
            }, this);
8923
8924
            function V(au) {
8925
                var aD = T._.eO,
8926
                    aP = au ? 1 : -1;
8927
                if (aD.length < 1) return;
8928
                var bV = (T._.gu + aP + aD.length) % aD.length,
8929
                    eN = bV;
8930
                while (!aD[eN].fM()) {
8931
                    eN = (eN + aP + aD.length) % aD.length;
8932
                    if (eN == bV) break;
8933
                }
8934
                aD[eN].focus();
8935
                if (aD[eN].type == 'text') aD[eN].select();
8936
            };
8937
            var W;
8938
8939
            function X(au) {
8940
                if (T != a.dialog._.dL) return;
8941
                var aD = au.data.db();
8942
                W = 0;
8943
                if (aD == 9 || aD == a.dy + 9) {
8944
                    var aP = aD == a.dy + 9;
8945
                    if (T._.eC) {
8946
                        var bV = aP ? p.call(T) : q.call(T);
8947
                        T.selectPage(bV);
8948
                        T._.tabs[bV][0].focus();
8949
                    } else V(!aP);
8950
                    W = 1;
8951
                } else if (aD == a.eJ + 121 && !T._.eC) {
8952
                    T._.eC = true;
8953
                    T._.tabs[T._.gx][0].focus();
8954
                    W = 1;
8955
                } else if ((aD == 37 || aD == 39) && T._.eC) {
8956
                    bV = aD == 37 ? p.call(T) : q.call(T);
8957
                    T.selectPage(bV);
8958
                    T._.tabs[bV][0].focus();
8959
                    W = 1;
8960
                }
8961
                if (W) {
8962
                    au.stop();
8963
                    au.data.preventDefault();
8964
                }
8965
            };
8966
8967
            function Y(au) {
8968
                W && au.data.preventDefault();
8969
            };
8970
            this.on('show', function () {
8971
                a.document.on('keydown', X, this, null, 0);
8972
                if (e.opera || e.gecko && e.mac) a.document.on('keypress', Y, this);
8973
                if (e.ie6Compat) {
8974
                    var au = B.aC(0).getFrameDocument();
8975
                    au.on('keydown', X, this, null, 0);
8976
                }
8977
            });
8978
            this.on('hide', function () {
8979
                a.document.aF('keydown', X);
8980
                if (e.opera || e.gecko && e.mac) a.document.aF('keypress', Y);
8981
            });
8982
            this.on('iframeAdded', function (au) {
8983
                var aD = new i(au.data.iframe.$.contentWindow.document);
8984
                aD.on('keydown', X, this, null, 0);
8985
            });
8986
            this.on('show', function () {
8987
                if (!this._.hasFocus) {
8988
                    this._.gu = -1;
8989
                    V(true);
8990
                }
8991
            }, this, null, 4294967295);
8992
            if (e.ie6Compat) this.on('load', function (au) {
8993
                var aD = this.getElement(),
8994
                    aP = aD.getFirst();
8995
                aP.remove();
8996
                aP.appendTo(aD);
8997
            }, this);
8998
            y(this);
8999
            z(this);
9000
            this.bO.title.setText(Q.title);
9001
            for (var Z = 0; Z < Q.contents.length; Z++) this.addPage(Q.contents[Z]);
9002
            var aa = /cke_dialog_tab(\s|$|_)/,
9003
                aT = /cke_dialog_tab(\s|$)/;
9004
            this.bO.tabs.on('click', function (au) {
9005
                var gB = this;
9006
                var aD = au.data.bK(),
9007
                    aP = aD,
9008
                    bV, eN;
9009
                if (!(aa.test(aD.$.className) || aD.getName() == 'a')) return;
9010
                bV = aD.$.id.substr(0, aD.$.id.lastIndexOf('_'));
9011
                gB.selectPage(bV);
9012
                if (gB._.eC) {
9013
                    gB._.eC = false;
9014
                    gB._.gu = -1;
9015
                    V(true);
9016
                }
9017
                au.data.preventDefault();
9018
            }, this);
9019
            var bm = [],
9020
                aA = a.dialog._.gv.hbox.dQ(this, {
9021
                    type: 'hbox',
9022
                    className: 'cke_dialog_footer_buttons',
9023
                    widths: [],
9024
                    children: Q.buttons
9025
                }, bm).aC();
9026
            this.bO.footer.setHtml(bm.join(''));
9027
            for (Z = 0; Z < aA.length; Z++) this._.buttons[aA[Z].id] = aA[Z];
9028
            a.skins.load(O, 'dialog');
9029
        };
9030
9031
        function r(O, P, Q) {
9032
            this.ax = P;
9033
            this.cQ = Q;
9034
            this.fM = function () {
9035
                return !P.getAttribute('disabled') && P.isVisible();
9036
            };
9037
            this.focus = function () {
9038
                O._.gu = this.cQ;
9039
                this.ax.focus();
9040
            };
9041
            P.on('keydown', function (R) {
9042
                if (R.data.db() in {
9043
                    32: 1,
9044
                    13: 1
9045
                }) this.oW('click');
9046
            });
9047
            P.on('focus', function () {
9048
                this.oW('mouseover');
9049
            });
9050
            P.on('blur', function () {
9051
                this.oW('mouseout');
9052
            });
9053
        };
9054
        a.dialog.prototype = {
9055
            resize: (function () {
9056
                return function (O, P) {
9057
                    var Q = this;
9058
                    if (Q._.hB && Q._.hB.width == O && Q._.hB.height == P) return;
9059
                    a.dialog.oW('resize', {
9060
                        dialog: Q,
9061
                        skin: Q._.app.gd,
9062
                        width: O,
9063
                        height: P
9064
                    }, Q._.app);
9065
                    Q._.hB = {
9066
                        width: O,
9067
                        height: P
9068
                    };
9069
                    Q._.gH = true;
9070
                };
9071
            })(),
9072
            hR: function () {
9073
                var Q = this;
9074
                if (!Q._.gH) return Q._.size;
9075
                var O = Q._.ax.getFirst(),
9076
                    P = Q._.size = {
9077
                        width: O.$.offsetWidth || 0,
9078
                        height: O.$.offsetHeight || 0
9079
                    };
9080
                Q._.gH = !P.width || !P.height;
9081
                return P;
9082
            },
9083
            move: (function () {
9084
                var O;
9085
                return function (P, Q) {
9086
                    var T = this;
9087
                    var R = T._.ax.getFirst();
9088
                    if (O === undefined) O = R.getComputedStyle('position') == 'fixed';
9089
                    if (O && T._.position && T._.position.x == P && T._.position.y == Q) return;
9090
                    T._.position = {
9091
                        x: P,
9092
                        y: Q
9093
                    };
9094
                    if (!O) {
9095
                        var S = a.document.aU().hV();
9096
                        P += S.x;
9097
                        Q += S.y;
9098
                    }
9099
                    R.setStyles({
9100
                        left: (P > 0 ? P : 0) + 'px',
9101
                        top: (Q > 0 ? Q : 0) + 'px'
9102
                    });
9103
                };
9104
            })(),
9105
            gz: function () {
9106
                return h.extend({}, this._.position);
9107
            },
9108
            show: function () {
9109
                var O = this._.app;
9110
                if (O.mode == 'he' && f) {
9111
                    var P = O.getSelection();
9112
                    P && P.up();
9113
                }
9114
                var Q = this._.ax,
9115
                    R = this.dg;
9116
                if (!(Q.getParent() && Q.getParent().equals(a.document.bH()))) Q.appendTo(a.document.bH());
9117
                else return;
9118
                if (e.gecko && e.version < 10900) {
9119
                    var S = this.bO.dialog;
9120
                    S.setStyle('position', 'absolute');
9121
                    setTimeout(function () {
9122
                        S.setStyle('position', 'fixed');
9123
                    }, 0);
9124
                }
9125
                this.resize(R.minWidth, R.minHeight);
9126
                this.selectPage(this.dg.contents[0].id);
9127
                this.reset();
9128
                if (a.dialog._.gw === null) a.dialog._.gw = this._.app.config.baseFloatZIndex;
9129
                this._.ax.getFirst().setStyle('z-index', a.dialog._.gw += 10);
9130
                if (a.dialog._.dL === null) {
9131
                    a.dialog._.dL = this;
9132
                    this._.ep = null;
9133
                    C(this._.app);
9134
                    Q.on('keydown', F);
9135
                    Q.on(e.opera ? 'keypress' : 'keyup', G);
9136
                    for (var T in {
9137
                        keyup: 1,
9138
                        keydown: 1,
9139
                        keypress: 1
9140
                    }) Q.on(T, M);
9141
                } else {
9142
                    this._.ep = a.dialog._.dL;
9143
                    var U = this._.ep.getElement().getFirst();
9144
                    U.$.style.zIndex -= Math.floor(this._.app.config.baseFloatZIndex / 2);
9145
                    a.dialog._.dL = this;
9146
                }
9147
                H(this, this, '\x1b', null, function () {
9148
                    this.getButton('cancel') && this.getButton('cancel').click();
9149
                });
9150
                this._.hasFocus = false;
9151
                h.setTimeout(function () {
9152
                    var V = a.document.aU().eR(),
9153
                        W = this.hR();
9154
                    this.move((V.width - R.minWidth) / 2, (V.height - W.height) / 2);
9155
                    this.bO.dialog.setStyle('visibility', '');
9156
                    this.cr('load', {});
9157
                    this.oW('show', {});
9158
                    this._.app.oW('dialogShow', this);
9159
                    this.gh(function (X) {
9160
                        X.jW && X.jW();
9161
                    });
9162
                }, 100, this);
9163
            },
9164
            gh: function (O) {
9165
                var R = this;
9166
                for (var P in R._.contents) for (var Q in R._.contents[P]) O(R._.contents[P][Q]);
9167
                return R;
9168
            },
9169
            reset: (function () {
9170
                var O = function (P) {
9171
                    if (P.reset) P.reset();
9172
                };
9173
                return function () {
9174
                    this.gh(O);
9175
                    return this;
9176
                };
9177
            })(),
9178
            rN: function () {
9179
                var O = arguments;
9180
                this.gh(function (P) {
9181
                    if (P.qi) P.qi.apply(P, O);
9182
                });
9183
            },
9184
            sI: function () {
9185
                var O = arguments;
9186
                this.gh(function (P) {
9187
                    if (P.rx) P.rx.apply(P, O);
9188
                });
9189
            },
9190
            hide: function () {
9191
                this.oW('hide', {});
9192
                this._.app.oW('dialogHide', this);
9193
                var O = this._.ax;
9194
                if (!O.getParent()) return;
9195
                O.remove();
9196
                this.bO.dialog.setStyle('visibility', 'hidden');
9197
                I(this);
9198
                if (!this._.ep) D();
9199
                else {
9200
                    var P = this._.ep.getElement().getFirst();
9201
                    P.setStyle('z-index', parseInt(P.$.style.zIndex, 10) + Math.floor(this._.app.config.baseFloatZIndex / 2));
9202
                }
9203
                a.dialog._.dL = this._.ep;
9204
                if (!this._.ep) {
9205
                    a.dialog._.gw = null;
9206
                    O.aF('keydown', F);
9207
                    O.aF(e.opera ? 'keypress' : 'keyup', G);
9208
                    for (var Q in {
9209
                        keyup: 1,
9210
                        keydown: 1,
9211
                        keypress: 1
9212
                    }) O.aF(Q, M);
9213
                    var R = this._.app;
9214
                    R.focus();
9215
                    if (R.mode == 'he' && f) {
9216
                        var S = R.getSelection();
9217
                        S && S.sd(true);
9218
                    }
9219
                } else a.dialog._.gw -= 10;
9220
                this.gh(function (T) {
9221
                    T.ki && T.ki();
9222
                });
9223
            },
9224
            addPage: function (O) {
9225
                var Y = this;
9226
                var P = [],
9227
                    Q = O.label ? ' title="' + h.htmlEncode(O.label) + '"' : '',
9228
                    R = O.elements,
9229
                    S = a.dialog._.gv.vbox.dQ(Y, {
9230
                        type: 'vbox',
9231
                        className: 'cke_dialog_page_contents',
9232
                        children: O.elements,
9233
                        expand: !!O.expand,
9234
                        padding: O.padding,
9235
                        style: O.style || 'width: 100%; height: 100%;'
9236
                    }, P),
9237
                    T = j.et(P.join(''), a.document),
9238
                    U = j.et(['<a class="cke_dialog_tab"', Y._.gV > 0 ? ' cke_last' : 'cke_first', Q, !!O.hidden ? ' style="display:none"' : '', ' id="', O.id + '_', h.getNextNumber(), '" href="javascript:void(0)"', ' hp="true">', O.label, '</a>'].join(''), a.document);
9239
                if (Y._.gV === 0) Y.bO.dialog.addClass('cke_single_page');
9240
                else Y.bO.dialog.removeClass('cke_single_page');
9241
                Y._.tabs[O.id] = [U, T];
9242
                Y._.cU.push(O.id);
9243
                Y._.gV++;
9244
                Y._.qF = U;
9245
                var V = Y._.contents[O.id] = {},
9246
                    W, X = S.aC();
9247
                while (W = X.shift()) {
9248
                    V[W.id] = W;
9249
                    if (typeof W.aC == 'function') X.push.apply(X, W.aC());
9250
                }
9251
                T.setAttribute('name', O.id);
9252
                T.appendTo(Y.bO.contents);
9253
                U.unselectable();
9254
                Y.bO.tabs.append(U);
9255
                if (O.accessKey) {
9256
                    H(Y, Y, 'bP+' + O.accessKey, K, J);
9257
                    Y._.iX['bP+' + O.accessKey] = O.id;
9258
                }
9259
            },
9260
            selectPage: function (O) {
9261
                var T = this;
9262
                for (var P in T._.tabs) {
9263
                    var Q = T._.tabs[P][0],
9264
                        R = T._.tabs[P][1];
9265
                    if (P != O) {
9266
                        Q.removeClass('cke_dialog_tab_selected');
9267
                        R.hide();
9268
                    }
9269
                }
9270
                var S = T._.tabs[O];
9271
                S[0].addClass('cke_dialog_tab_selected');
9272
                S[1].show();
9273
                T._.gx = O;
9274
                T._.nM = h.indexOf(T._.cU, O);
9275
            },
9276
            vJ: function (O) {
9277
                var P = this._.tabs[O] && this._.tabs[O][0];
9278
                if (!P) return;
9279
                P.hide();
9280
            },
9281
            showPage: function (O) {
9282
                var P = this._.tabs[O] && this._.tabs[O][0];
9283
                if (!P) return;
9284
                P.show();
9285
            },
9286
            getElement: function () {
9287
                return this._.ax;
9288
            },
9289
            getName: function () {
9290
                return this._.name;
9291
            },
9292
            getContentElement: function (O, P) {
9293
                return this._.contents[O][P];
9294
            },
9295
            getValueOf: function (O, P) {
9296
                return this.getContentElement(O, P).getValue();
9297
            },
9298
            setValueOf: function (O, P, Q) {
9299
                return this.getContentElement(O, P).setValue(Q);
9300
            },
9301
            getButton: function (O) {
9302
                return this._.buttons[O];
9303
            },
9304
            click: function (O) {
9305
                return this._.buttons[O].click();
9306
            },
9307
            disableButton: function (O) {
9308
                return this._.buttons[O].disable();
9309
            },
9310
            enableButton: function (O) {
9311
                return this._.buttons[O].enable();
9312
            },
9313
            vj: function () {
9314
                return this._.gV;
9315
            },
9316
            getParentApi: function () {
9317
                return this._.app.cg;
9318
            },
9319
            eY: function () {
9320
                return this._.app;
9321
            },
9322
            rf: function () {
9323
                return this.eY().getSelection().rf();
9324
            },
9325
            tQ: function (O, P) {
9326
                var R = this;
9327
                if (typeof P == 'undefined') {
9328
                    P = R._.eO.length;
9329
                    R._.eO.push(new r(R, O, P));
9330
                } else {
9331
                    R._.eO.splice(P, 0, new r(R, O, P));
9332
                    for (var Q = P + 1; Q < R._.eO.length; Q++) R._.eO[Q].cQ++;
9333
                }
9334
            },
9335
            setTitle: function (O) {
9336
                this.bO.title.setText(O);
9337
            }
9338
        };
9339
        h.extend(a.dialog, {
9340
            add: function (O, P) {
9341
                if (!this._.ev[O] || typeof P == 'function') this._.ev[O] = P;
9342
            },
9343
            exists: function (O) {
9344
                return !!this._.ev[O];
9345
            },
9346
            getCurrent: function () {
9347
                return a.dialog._.dL;
9348
            },
9349
            okButton: (function () {
9350
                var O = function (P, Q) {
9351
                    Q = Q || {};
9352
                    return h.extend({
9353
                        id: 'ok',
9354
                        type: 'button',
9355
                        label: P.lang.common.ok,
9356
                        'class': 'cke_dialog_ui_button_ok',
9357
                        onClick: function (R) {
9358
                            var S = R.data.dialog;
9359
                            if (S.oW('ok', {
9360
                                hide: true
9361
                            }).hide !== false) S.hide();
9362
                        }
9363
                    }, Q, true);
9364
                };
9365
                O.type = 'button';
9366
                O.override = function (P) {
9367
                    return h.extend(function (Q) {
9368
                        return O(Q, P);
9369
                    }, {
9370
                        type: 'button'
9371
                    }, true);
9372
                };
9373
                return O;
9374
            })(),
9375
            cancelButton: (function () {
9376
                var O = function (P, Q) {
9377
                    Q = Q || {};
9378
                    return h.extend({
9379
                        id: 'cancel',
9380
                        type: 'button',
9381
                        label: P.lang.common.cancel,
9382
                        'class': 'cke_dialog_ui_button_cancel',
9383
                        onClick: function (R) {
9384
                            var S = R.data.dialog;
9385
                            if (S.oW('cancel', {
9386
                                hide: true
9387
                            }).hide !== false) S.hide();
9388
                        }
9389
                    }, Q, true);
9390
                };
9391
                O.type = 'button';
9392
                O.override = function (P) {
9393
                    return h.extend(function (Q) {
9394
                        return O(Q, P);
9395
                    }, {
9396
                        type: 'button'
9397
                    }, true);
9398
                };
9399
                return O;
9400
            })(),
9401
            addUIElement: function (O, P) {
9402
                this._.gv[O] = P;
9403
            }
9404
        });
9405
        a.dialog._ = {
9406
            gv: {},
9407
            ev: {},
9408
            dL: null,
9409
            gw: null
9410
        };
9411
        a.event.du(a.dialog);
9412
        a.event.du(a.dialog.prototype, true);
9413
        var s = {
9414
            jy: a.rs,
9415
            minWidth: 600,
9416
            minHeight: 400,
9417
            buttons: [a.dialog.okButton, a.dialog.cancelButton]
9418
        },
9419
            t = function (O, P, Q) {
9420
                for (var R = 0, S; S = O[R]; R++) {
9421
                    if (S.id == P) return S;
9422
                    if (Q && S[Q]) {
9423
                        var T = t(S[Q], P, Q);
9424
                        if (T) return T;
9425
                    }
9426
                }
9427
                return null;
9428
            },
9429
            u = function (O, P, Q, R, S) {
9430
                if (Q) {
9431
                    for (var T = 0, U; U = O[T]; T++) {
9432
                        if (U.id == Q) {
9433
                            O.splice(T, 0, P);
9434
                            return P;
9435
                        }
9436
                        if (R && U[R]) {
9437
                            var V = u(U[R], P, Q, R, true);
9438
                            if (V) return V;
9439
                        }
9440
                    }
9441
                    if (S) return null;
9442
                }
9443
                O.push(P);
9444
                return P;
9445
            },
9446
            v = function (O, P, Q) {
9447
                for (var R = 0, S; S = O[R]; R++) {
9448
                    if (S.id == P) return O.splice(R, 1);
9449
                    if (Q && S[Q]) {
9450
                        var T = v(S[Q], P, Q);
9451
                        if (T) return T;
9452
                    }
9453
                }
9454
                return null;
9455
            },
9456
            w = function (O, P) {
9457
                this.dialog = O;
9458
                var Q = P.contents;
9459
                for (var R = 0, S; S = Q[R]; R++) Q[R] = new x(O, S);
9460
                h.extend(this, P);
9461
            };
9462
        w.prototype = {
9463
            vz: function (O) {
9464
                return t(this.contents, O);
9465
            },
9466
            getButton: function (O) {
9467
                return t(this.buttons, O);
9468
            },
9469
            uh: function (O, P) {
9470
                return u(this.contents, O, P);
9471
            },
9472
            qW: function (O, P) {
9473
                return u(this.buttons, O, P);
9474
            },
9475
            uP: function (O) {
9476
                v(this.contents, O);
9477
            },
9478
            uO: function (O) {
9479
                v(this.buttons, O);
9480
            }
9481
        };
9482
9483
        function x(O, P) {
9484
            this._ = {
9485
                dialog: O
9486
            };
9487
            h.extend(this, P);
9488
        };
9489
        x.prototype = {
9490
            eB: function (O) {
9491
                return t(this.elements, O, 'children');
9492
            },
9493
            add: function (O, P) {
9494
                return u(this.elements, O, P, 'children');
9495
            },
9496
            remove: function (O) {
9497
                v(this.elements, O, 'children');
9498
            }
9499
        };
9500
9501
        function y(O) {
9502
            var P = null,
9503
                Q = null,
9504
                R = O.getElement().getFirst(),
9505
                S = O.eY(),
9506
                T = S.config.dialog_magnetDistance,
9507
                U = S.skin.margins || [0, 0, 0, 0];
9508
            if (typeof T == 'undefined') T = 20;
9509
9510
            function V(X) {
9511
                var Y = O.hR(),
9512
                    Z = a.document.aU().eR(),
9513
                    aa = X.data.$.screenX,
9514
                    aT = X.data.$.screenY,
9515
                    bm = aa - P.x,
9516
                    aA = aT - P.y,
9517
                    au, aD;
9518
                P = {
9519
                    x: aa,
9520
                    y: aT
9521
                };
9522
                Q.x += bm;
9523
                Q.y += aA;
9524
                if (Q.x + U[3] < T) au = -U[3];
9525
                else if (Q.x - U[1] > Z.width - Y.width - T) au = Z.width - Y.width + U[1];
9526
                else au = Q.x;
9527
                if (Q.y + U[0] < T) aD = -U[0];
9528
                else if (Q.y - U[2] > Z.height - Y.height - T) aD = Z.height - Y.height + U[2];
9529
                else aD = Q.y;
9530
                O.move(au, aD);
9531
                X.data.preventDefault();
9532
            };
9533
9534
            function W(X) {
9535
                a.document.aF('mousemove', V);
9536
                a.document.aF('mouseup', W);
9537
                if (e.ie6Compat) {
9538
                    var Y = B.aC(0).getFrameDocument();
9539
                    Y.aF('mousemove', V);
9540
                    Y.aF('mouseup', W);
9541
                }
9542
            };
9543
            O.bO.title.on('mousedown', function (X) {
9544
                O._.gH = true;
9545
                P = {
9546
                    x: X.data.$.screenX,
9547
                    y: X.data.$.screenY
9548
                };
9549
                a.document.on('mousemove', V);
9550
                a.document.on('mouseup', W);
9551
                Q = O.gz();
9552
                if (e.ie6Compat) {
9553
                    var Y = B.aC(0).getFrameDocument();
9554
                    Y.on('mousemove', V);
9555
                    Y.on('mouseup', W);
9556
                }
9557
                X.data.preventDefault();
9558
            }, O);
9559
        };
9560
9561
        function z(O) {
9562
            var P = O.dg,
9563
                Q = P.minWidth || 0,
9564
                R = P.minHeight || 0,
9565
                S = P.jy,
9566
                T = O.eY().skin.margins || [0, 0, 0, 0];
9567
9568
            function U(aD, aP) {
9569
                aD.y += aP;
9570
            };
9571
9572
            function V(aD, aP) {
9573
                aD.eS += aP;
9574
            };
9575
9576
            function W(aD, aP) {
9577
                aD.fi += aP;
9578
            };
9579
9580
            function X(aD, aP) {
9581
                aD.x += aP;
9582
            };
9583
            var Y = null,
9584
                Z = null,
9585
                aa = O._.app.config.ux,
9586
                aT = ['tl', 't', 'tr', 'l', 'r', 'bl', 'b', 'br'];
9587
9588
            function bm(aD) {
9589
                var aP = aD.jO.fU,
9590
                    bV = O.hR();
9591
                Z = O.gz();
9592
                h.extend(Z, {
9593
                    eS: Z.x + bV.width,
9594
                    fi: Z.y + bV.height
9595
                });
9596
                Y = {
9597
                    x: aD.data.$.screenX,
9598
                    y: aD.data.$.screenY
9599
                };
9600
                a.document.on('mousemove', aA, O, {
9601
                    fU: aP
9602
                });
9603
                a.document.on('mouseup', au, O, {
9604
                    fU: aP
9605
                });
9606
                if (e.ie6Compat) {
9607
                    var eN = B.aC(0).getFrameDocument();
9608
                    eN.on('mousemove', aA, O, {
9609
                        fU: aP
9610
                    });
9611
                    eN.on('mouseup', au, O, {
9612
                        fU: aP
9613
                    });
9614
                }
9615
                aD.data.preventDefault();
9616
            };
9617
9618
            function aA(aD) {
9619
                var aP = aD.data.$.screenX,
9620
                    bV = aD.data.$.screenY,
9621
                    eN = aP - Y.x,
9622
                    gB = bV - Y.y,
9623
                    dX = a.document.aU().eR(),
9624
                    gs = aD.jO.fU;
9625
                if (gs.search('t') != -1) U(Z, gB);
9626
                if (gs.search('l') != -1) X(Z, eN);
9627
                if (gs.search('b') != -1) W(Z, gB);
9628
                if (gs.search('r') != -1) V(Z, eN);
9629
                Y = {
9630
                    x: aP,
9631
                    y: bV
9632
                };
9633
                var am, gP, gR, pw;
9634
                if (Z.x + T[3] < aa) am = -T[3];
9635
                else if (gs.search('l') != -1 && Z.eS - Z.x < Q + aa) am = Z.eS - Q;
9636
                else am = Z.x;
9637
                if (Z.y + T[0] < aa) gP = -T[0];
9638
                else if (gs.search('t') != -1 && Z.fi - Z.y < R + aa) gP = Z.fi - R;
9639
                else gP = Z.y;
9640
                if (Z.eS - T[1] > dX.width - aa) gR = dX.width + T[1];
9641
                else if (gs.search('r') != -1 && Z.eS - Z.x < Q + aa) gR = Z.x + Q;
9642
                else gR = Z.eS;
9643
                if (Z.fi - T[2] > dX.height - aa) pw = dX.height + T[2];
9644
                else if (gs.search('b') != -1 && Z.fi - Z.y < R + aa) pw = Z.y + R;
9645
                else pw = Z.fi;
9646
                O.move(am, gP);
9647
                O.resize(gR - am, pw - gP);
9648
                aD.data.preventDefault();
9649
            };
9650
9651
            function au(aD) {
9652
                a.document.aF('mouseup', au);
9653
                a.document.aF('mousemove', aA);
9654
                if (e.ie6Compat) {
9655
                    var aP = B.aC(0).getFrameDocument();
9656
                    aP.aF('mouseup', au);
9657
                    aP.aF('mousemove', aA);
9658
                }
9659
            };
9660
        };
9661
        var A, B, C = function (O) {
9662
            var P = a.document.aU();
9663
            if (!B) {
9664
                var Q = O.config.so || 'white',
9665
                    R = ['<div style="position: ', e.ie6Compat ? 'absolute' : 'fixed', '; z-index: ', O.config.baseFloatZIndex, '; top: 0px; left: 0px; ', !e.ie6Compat ? 'background-color: ' + Q : '', '" id="cke_dialog_background_cover">'];
9666
                if (e.ie6Compat) {
9667
                    var S = e.isCustomDomain(),
9668
                        T = "<html><body style=\\'background-color:" + Q + ";\\'></body></html>";
9669
                    R.push('<iframe hp="true" frameborder="0" id="cke_dialog_background_iframe" src="javascript:');
9670
                    R.push('void((function(){document.open();' + (S ? "document.domain='" + document.domain + "';" : '') + "document.write( '" + T + "' );" + 'document.close();' + '})())');
9671
                    R.push('" style="position:absolute;left:0;top:0;width:100%;height: 100%;progid:DXImageTransform.Microsoft.Alpha(opacity=0)"></iframe>');
9672
                }
9673
                R.push('</div>');
9674
                B = j.et(R.join(''), a.document);
9675
            }
9676
            var U = B,
9677
                V = function () {
9678
                    var Z = P.eR();
9679
                    U.setStyles({
9680
                        width: Z.width + 'px',
9681
                        height: Z.height + 'px'
9682
                    });
9683
                },
9684
                W = function () {
9685
                    var Z = P.hV(),
9686
                        aa = a.dialog._.dL;
9687
                    U.setStyles({
9688
                        left: Z.x + 'px',
9689
                        top: Z.y + 'px'
9690
                    });
9691
                    do {
9692
                        var aT = aa.gz();
9693
                        aa.move(aT.x, aT.y);
9694
                    } while (aa = aa._.ep)
9695
                };
9696
            A = V;
9697
            P.on('resize', V);
9698
            V();
9699
            if (e.ie6Compat) {
9700
                var X = function () {
9701
                    W();
9702
                    arguments.callee.lw.apply(this, arguments);
9703
                };
9704
                P.$.setTimeout(function () {
9705
                    X.lw = window.onscroll || (function () {});
9706
                    window.onscroll = X;
9707
                }, 0);
9708
                W();
9709
            }
9710
            var Y = O.config.dialog_backgroundCoverOpacity;
9711
            U.setOpacity(typeof Y != 'undefined' ? Y : 0.5);
9712
            U.appendTo(a.document.bH());
9713
        },
9714
            D = function () {
9715
                if (!B) return;
9716
                var O = a.document.aU();
9717
                B.remove();
9718
                O.aF('resize', A);
9719
                if (e.ie6Compat) O.$.setTimeout(function () {
9720
                    var P = window.onscroll && window.onscroll.lw;
9721
                    window.onscroll = P || null;
9722
                }, 0);
9723
                A = null;
9724
            },
9725
            E = {},
9726
            F = function (O) {
9727
                var P = O.data.$.ctrlKey || O.data.$.metaKey,
9728
                    Q = O.data.$.altKey,
9729
                    R = O.data.$.shiftKey,
9730
                    S = String.fromCharCode(O.data.$.keyCode),
9731
                    T = E[(P ? 'bP+' : '') + (Q ? 'eJ+' : '') + (R ? 'dy+' : '') + S];
9732
                if (!T || !T.length) return;
9733
                T = T[T.length - 1];
9734
                T.keydown && T.keydown.call(T.bf, T.dialog, T.iK);
9735
                O.data.preventDefault();
9736
            },
9737
            G = function (O) {
9738
                var P = O.data.$.ctrlKey || O.data.$.metaKey,
9739
                    Q = O.data.$.altKey,
9740
                    R = O.data.$.shiftKey,
9741
                    S = String.fromCharCode(O.data.$.keyCode),
9742
                    T = E[(P ? 'bP+' : '') + (Q ? 'eJ+' : '') + (R ? 'dy+' : '') + S];
9743
                if (!T || !T.length) return;
9744
                T = T[T.length - 1];
9745
                if (T.keyup) {
9746
                    T.keyup.call(T.bf, T.dialog, T.iK);
9747
                    O.data.preventDefault();
9748
                }
9749
            },
9750
            H = function (O, P, Q, R, S) {
9751
                var T = E[Q] || (E[Q] = []);
9752
                T.push({
9753
                    bf: O,
9754
                    dialog: P,
9755
                    iK: Q,
9756
                    keyup: S || O.eZ,
9757
                    keydown: R || O.iU
9758
                });
9759
            },
9760
            I = function (O) {
9761
                for (var P in E) {
9762
                    var Q = E[P];
9763
                    for (var R = Q.length - 1; R >= 0; R--) {
9764
                        if (Q[R].dialog == O || Q[R].bf == O) Q.splice(R, 1);
9765
                    }
9766
                    if (Q.length === 0) delete E[P];
9767
                }
9768
            },
9769
            J = function (O, P) {
9770
                if (O._.iX[P]) O.selectPage(O._.iX[P]);
9771
            },
9772
            K = function (O, P) {},
9773
            L = {
9774
                27: 1,
9775
                13: 1
9776
            },
9777
            M = function (O) {
9778
                if (O.data.db() in L) O.data.stopPropagation();
9779
            };
9780
        (function () {
9781
            m.dialog = {
9782
                bf: function (O, P, Q, R, S, T, U) {
9783
                    if (arguments.length < 4) return;
9784
                    var V = (R.call ? R(P) : R) || 'div',
9785
                        W = ['<', V, ' '],
9786
                        X = (S && S.call ? S(P) : S) || {},
9787
                        Y = (T && T.call ? T(P) : T) || {},
9788
                        Z = (U && U.call ? U(O, P) : U) || '',
9789
                        aa = this.oJ = Y.id || h.getNextNumber() + '_uiElement',
9790
                        aT = this.id = P.id,
9791
                        bm;
9792
                    Y.id = aa;
9793
                    var aA = {};
9794
                    if (P.type) aA['cke_dialog_ui_' + P.type] = 1;
9795
                    if (P.className) aA[P.className] = 1;
9796
                    var au = Y['class'] && Y['class'].split ? Y['class'].split(' ') : [];
9797
                    for (bm = 0; bm < au.length; bm++) {
9798
                        if (au[bm]) aA[au[bm]] = 1;
9799
                    }
9800
                    var aD = [];
9801
                    for (bm in aA) aD.push(bm);
9802
                    Y['class'] = aD.join(' ');
9803
                    if (P.title) Y.title = P.title;
9804
                    var aP = (P.style || '').split(';');
9805
                    for (bm in X) aP.push(bm + ':' + X[bm]);
9806
                    if (P.hidden) aP.push('display:none');
9807
                    for (bm = aP.length - 1; bm >= 0; bm--) {
9808
                        if (aP[bm] === '') aP.splice(bm, 1);
9809
                    }
9810
                    if (aP.length > 0) Y.style = (Y.style ? Y.style + '; ' : '') + aP.join('; ');
9811
                    for (bm in Y) W.push(bm + '="' + h.htmlEncode(Y[bm]) + '" ');
9812
                    W.push('>', Z, '</', V, '>');
9813
                    Q.push(W.join(''));
9814
                    (this._ || (this._ = {})).dialog = O;
9815
                    if (typeof P.isChanged == 'boolean') this.isChanged = function () {
9816
                        return P.isChanged;
9817
                    };
9818
                    if (typeof P.isChanged == 'function') this.isChanged = P.isChanged;
9819
                    a.event.du(this);
9820
                    this.nc(P);
9821
                    if (this.eZ && this.iU && P.accessKey) H(this, O, 'bP+' + P.accessKey);
9822
                    var bV = this;
9823
                    O.on('load', function () {
9824
                        if (bV.getInputElement()) bV.getInputElement().on('focus', function () {
9825
                            O._.eC = false;
9826
                            O._.hasFocus = true;
9827
                            bV.oW('focus');
9828
                        }, bV);
9829
                    });
9830
                    if (this.eA) {
9831
                        this.cQ = O._.eO.push(this) - 1;
9832
                        this.on('focus', function () {
9833
                            O._.gu = bV.cQ;
9834
                        });
9835
                    }
9836
                    h.extend(this, P);
9837
                },
9838
                hbox: function (O, P, Q, R, S) {
9839
                    if (arguments.length < 4) return;
9840
                    this._ || (this._ = {});
9841
                    var T = this._.children = P,
9842
                        U = S && S.widths || null,
9843
                        V = S && S.height || null,
9844
                        W = {},
9845
                        X, Y = function () {
9846
                            var Z = ['<tbody><tr class="cke_dialog_ui_hbox">'];
9847
                            for (X = 0; X < Q.length; X++) {
9848
                                var aa = 'cke_dialog_ui_hbox_child',
9849
                                    aT = [];
9850
                                if (X === 0) aa = 'cke_dialog_ui_hbox_first';
9851
                                if (X == Q.length - 1) aa = 'cke_dialog_ui_hbox_last';
9852
                                Z.push('<td class="', aa, '" ');
9853
                                if (U) {
9854
                                    if (U[X]) aT.push('width:' + h.cssLength(U[X]));
9855
                                } else aT.push('width:' + Math.floor(100 / Q.length) + '%');
9856
                                if (V) aT.push('height:' + h.cssLength(V));
9857
                                if (S && S.padding != undefined) aT.push('padding:' + h.cssLength(S.padding));
9858
                                if (aT.length > 0) Z.push('style="' + aT.join('; ') + '" ');
9859
                                Z.push('>', Q[X], '</td>');
9860
                            }
9861
                            Z.push('</tr></tbody>');
9862
                            return Z.join('');
9863
                        };
9864
                    m.dialog.bf.call(this, O, S || {
9865
                        type: 'hbox'
9866
                    }, R, 'table', W, S && S.align && {
9867
                        align: S.align
9868
                    } || null, Y);
9869
                },
9870
                vbox: function (O, P, Q, R, S) {
9871
                    if (arguments.length < 3) return;
9872
                    this._ || (this._ = {});
9873
                    var T = this._.children = P,
9874
                        U = S && S.width || null,
9875
                        V = S && S.vY || null,
9876
                        W = function () {
9877
                            var X = ['<table cellspacing="0" border="0" '];
9878
                            X.push('style="');
9879
                            if (S && S.expand) X.push('height:100%;');
9880
                            X.push('width:' + h.cssLength(U || '100%'), ';');
9881
                            X.push('"');
9882
                            X.push('align="', h.htmlEncode(S && S.align || (O.eY().lang.dir == 'ltr' ? 'left' : 'right')), '" ');
9883
                            X.push('><tbody>');
9884
                            for (var Y = 0; Y < Q.length; Y++) {
9885
                                var Z = [];
9886
                                X.push('<tr><td ');
9887
                                if (U) Z.push('width:' + h.cssLength(U || '100%'));
9888
                                if (V) Z.push('height:' + h.cssLength(V[Y]));
9889
                                else if (S && S.expand) Z.push('height:' + Math.floor(100 / Q.length) + '%');
9890
                                if (S && S.padding != undefined) Z.push('padding:' + h.cssLength(S.padding));
9891
                                if (Z.length > 0) X.push('style="', Z.join('; '), '" ');
9892
                                X.push(' class="cke_dialog_ui_vbox_child">', Q[Y], '</td></tr>');
9893
                            }
9894
                            X.push('</tbody></table>');
9895
                            return X.join('');
9896
                        };
9897
                    m.dialog.bf.call(this, O, S || {
9898
                        type: 'vbox'
9899
                    }, R, 'div', null, null, W);
9900
                }
9901
            };
9902
        })();
9903
        m.dialog.bf.prototype = {
9904
            getElement: function () {
9905
                return a.document.getById(this.oJ);
9906
            },
9907
            getInputElement: function () {
9908
                return this.getElement();
9909
            },
9910
            getDialog: function () {
9911
                return this._.dialog;
9912
            },
9913
            setValue: function (O) {
9914
                this.getInputElement().setValue(O);
9915
                this.oW('change', {
9916
                    value: O
9917
                });
9918
                return this;
9919
            },
9920
            getValue: function () {
9921
                return this.getInputElement().getValue();
9922
            },
9923
            isChanged: function () {
9924
                return false;
9925
            },
9926
            selectParentTab: function () {
9927
                var R = this;
9928
                var O = R.getInputElement(),
9929
                    P = O,
9930
                    Q;
9931
                while ((P = P.getParent()) && P.$.className.search('cke_dialog_page_contents') == -1) {}
9932
                if (!P) return R;
9933
                Q = P.getAttribute('name');
9934
                if (R._.dialog._.gx != Q) R._.dialog.selectPage(Q);
9935
                return R;
9936
            },
9937
            focus: function () {
9938
                this.selectParentTab().getInputElement().focus();
9939
                return this;
9940
            },
9941
            nc: function (O) {
9942
                var P = /^on([A-Z]\w+)/,
9943
                    Q, R = function (T, U, V, W) {
9944
                        U.on('load', function () {
9945
                            T.getInputElement().on(V, W, T);
9946
                        });
9947
                    };
9948
                for (var S in O) {
9949
                    if (!(Q = S.match(P))) continue;
9950
                    if (this.dm[S]) this.dm[S].call(this, this._.dialog, O[S]);
9951
                    else R(this, this._.dialog, Q[1].toLowerCase(), O[S]);
9952
                }
9953
                return this;
9954
            },
9955
            dm: {
9956
                onLoad: function (O, P) {
9957
                    O.on('load', P, this);
9958
                },
9959
                onShow: function (O, P) {
9960
                    O.on('show', P, this);
9961
                },
9962
                onHide: function (O, P) {
9963
                    O.on('hide', P, this);
9964
                }
9965
            },
9966
            iU: function (O, P) {
9967
                this.focus();
9968
            },
9969
            eZ: function (O, P) {},
9970
            disable: function () {
9971
                var O = this.getInputElement();
9972
                O.setAttribute('disabled', 'true');
9973
                O.addClass('cke_disabled');
9974
            },
9975
            enable: function () {
9976
                var O = this.getInputElement();
9977
                O.removeAttribute('disabled');
9978
                O.removeClass('cke_disabled');
9979
            },
9980
            isEnabled: function () {
9981
                return !this.getInputElement().getAttribute('disabled');
9982
            },
9983
            isVisible: function () {
9984
                return this.getInputElement().isVisible();
9985
            },
9986
            fM: function () {
9987
                if (!this.isEnabled() || !this.isVisible()) return false;
9988
                return true;
9989
            }
9990
        };
9991
        m.dialog.hbox.prototype = h.extend(new m.dialog.bf(), {
9992
            aC: function (O) {
9993
                var P = this;
9994
                if (arguments.length < 1) return P._.children.concat();
9995
                if (!O.splice) O = [O];
9996
                if (O.length < 2) return P._.children[O[0]];
9997
                else return P._.children[O[0]] && P._.children[O[0]].aC ? P._.children[O[0]].aC(O.slice(1, O.length)) : null;
9998
            }
9999
        }, true);
10000
        m.dialog.vbox.prototype = new m.dialog.hbox();
10001
        (function () {
10002
            var O = {
10003
                dQ: function (P, Q, R) {
10004
                    var S = Q.children,
10005
                        T, U = [],
10006
                        V = [];
10007
                    for (var W = 0; W < S.length && (T = S[W]); W++) {
10008
                        var X = [];
10009
                        U.push(X);
10010
                        V.push(a.dialog._.gv[T.type].dQ(P, T, X));
10011
                    }
10012
                    return new m.dialog[Q.type](P, V, U, R, Q);
10013
                }
10014
            };
10015
            a.dialog.addUIElement('hbox', O);
10016
            a.dialog.addUIElement('vbox', O);
10017
        })();
10018
        a.rB = function (O) {
10019
            this.ry = O;
10020
        };
10021
        a.rB.prototype = {
10022
            exec: function (O) {
10023
                O.openDialog(this.ry);
10024
            },
10025
            sG: false
10026
        };
10027
        (function () {
10028
            var O = /^([a]|[^a])+$/,
10029
                P = /^\d*$/,
10030
                Q = /^\d*(?:\.\d+)?$/;
10031
            a.sg = 1;
10032
            a.jb = 2;
10033
            a.dialog.validate = {
10034
                functions: function () {
10035
                    return function () {
10036
                        var X = this;
10037
                        var R = X && X.getValue ? X.getValue() : arguments[0],
10038
                            S = undefined,
10039
                            T = a.jb,
10040
                            U = [],
10041
                            V;
10042
                        for (V = 0; V < arguments.length; V++) {
10043
                            if (typeof arguments[V] == 'function') U.push(arguments[V]);
10044
                            else break;
10045
                        }
10046
                        if (V < arguments.length && typeof arguments[V] == 'string') {
10047
                            S = arguments[V];
10048
                            V++;
10049
                        }
10050
                        if (V < arguments.length && typeof arguments[V] == 'number') T = arguments[V];
10051
                        var W = T == a.jb ? true : false;
10052
                        for (V = 0; V < U.length; V++) {
10053
                            if (T == a.jb) W = W && U[V](R);
10054
                            else W = W || U[V](R);
10055
                        }
10056
                        if (!W) {
10057
                            if (S !== undefined) alert(S);
10058
                            if (X && (X.select || X.focus)) X.select || X.focus();
10059
                            return false;
10060
                        }
10061
                        return true;
10062
                    };
10063
                },
10064
                regex: function (R, S) {
10065
                    return function () {
10066
                        var U = this;
10067
                        var T = U && U.getValue ? U.getValue() : arguments[0];
10068
                        if (!R.test(T)) {
10069
                            if (S !== undefined) alert(S);
10070
                            if (U && (U.select || U.focus)) if (U.select) U.select();
10071
                            else U.focus();
10072
                            return false;
10073
                        }
10074
                        return true;
10075
                    };
10076
                },
10077
                notEmpty: function (R) {
10078
                    return this.regex(O, R);
10079
                },
10080
                integer: function (R) {
10081
                    return this.regex(P, R);
10082
                },
10083
                number: function (R) {
10084
                    return this.regex(Q, R);
10085
                },
10086
                equals: function (R, S) {
10087
                    return this.functions(function (T) {
10088
                        return T == R;
10089
                    }, S);
10090
                },
10091
                notEqual: function (R, S) {
10092
                    return this.functions(function (T) {
10093
                        return T != R;
10094
                    }, S);
10095
                }
10096
            };
10097
        })();
10098
10099
        function N(O, P) {
10100
            var Q = function () {
10101
                S(this);
10102
                P(this);
10103
            },
10104
                R = function () {
10105
                    S(this);
10106
                },
10107
                S = function (T) {
10108
                    T.aF('ok', Q);
10109
                    T.aF('cancel', R);
10110
                };
10111
            O.on('ok', Q);
10112
            O.on('cancel', R);
10113
        };
10114
        h.extend(a.application.prototype, {
10115
            openDialog: function (O, P, Q) {
10116
                var R = a.dialog._.ev[O];
10117
                if (typeof R == 'function') {
10118
                    var S = this._.oB || (this._.oB = {}),
10119
                        T = S[O] || (S[O] = new a.dialog(this, O));
10120
                    P && P.call(T, T);
10121
                    T.show();
10122
                    return T;
10123
                } else if (R == 'failed') throw new Error('[CKFINDER.dialog.openDialog] Dialog "' + O + '" failed when loading dg.');
10124
                var U = a.document.bH(),
10125
                    V = U.$.style.cursor,
10126
                    W = this;
10127
                U.setStyle('cursor', 'wait');
10128
                a.ec.load(a.getUrl(R), function () {
10129
                    if (typeof a.dialog._.ev[O] != 'function') a.dialog._.ev[O] = 'failed';
10130
                    W.openDialog(O, P);
10131
                    U.setStyle('cursor', V);
10132
                }, null, null, Q);
10133
                return null;
10134
            },
10135
            hs: function (O, P, Q, R) {
10136
                var S = this;
10137
                setTimeout(function () {
10138
                    S.cg.openDialog('Input', function (T) {
10139
                        T.show();
10140
                        T.setTitle(O || S.lang.common.inputTitle);
10141
                        T.getContentElement('tab1', 'msg').getElement().setHtml(P);
10142
                        T.getContentElement('tab1', 'input').setValue(Q);
10143
                        N(T, function (U) {
10144
                            var V = U.getContentElement('tab1', 'input').getValue();
10145
                            R(V);
10146
10147
                        });
10148
                    });
10149
                }, 0);
10150
            },
10151
            msgDialog: function (O, P, Q) {
10152
                var R = this;
10153
                setTimeout(function () {
10154
                    R.cg.openDialog('Msg', function (S) {
10155
                        S.show();
10156
                        S.setTitle(O || R.lang.common.messageTitle);
10157
                        S.getContentElement('tab1', 'msg').getElement().setHtml(P);
10158
                        Q && N(S, function (T) {
10159
                            Q();
10160
                        });
10161
                    });
10162
                }, 0);
10163
            },
10164
            fe: function (O, P, Q) {
10165
                var R = this;
10166
                setTimeout(function () {
10167
                    R.cg.openDialog('Confirm', function (S) {
10168
                        S.show();
10169
                        S.setTitle(O || R.lang.common.confirmationTitle);
10170
                        S.getContentElement('tab1', 'msg').getElement().setHtml(P);
10171
                        N(S, function (T) {
10172
                            Q();
10173
                        });
10174
                    });
10175
                }, 0);
10176
            }
10177
        });
10178
        l.add('dialog', {
10179
            bM: ['dialogui'],
10180
            onLoad: function () {
10181
                a.dialog.add('Confirm', function (O) {
10182
                    return {
10183
                        title: O.lang.common.confirmationTitle,
10184
                        minWidth: 270,
10185
                        minHeight: 60,
10186
                        contents: [{
10187
                            id: 'tab1',
10188
                            elements: [{
10189
                                type: 'html',
10190
                                html: '',
10191
                                id: 'msg'
10192
                            }]
10193
                        }],
10194
                        buttons: [CKFinder.dialog.okButton, CKFinder.dialog.cancelButton]
10195
                    };
10196
                });
10197
                a.dialog.add('Msg', function (O) {
10198
                    return {
10199
                        title: O.lang.common.messageTitle,
10200
                        minWidth: 270,
10201
                        minHeight: 60,
10202
                        contents: [{
10203
                            id: 'tab1',
10204
                            elements: [{
10205
                                type: 'html',
10206
                                html: '',
10207
                                id: 'msg'
10208
                            }]
10209
                        }],
10210
                        buttons: [CKFinder.dialog.okButton]
10211
                    };
10212
                });
10213
                a.dialog.add('Input', function (O) {
10214
                    return {
10215
                        title: O.lang.common.inputTitle,
10216
                        minWidth: 270,
10217
                        minHeight: 60,
10218
                        contents: [{
10219
                            id: 'tab1',
10220
                            elements: [{
10221
                                type: 'html',
10222
                                html: '',
10223
                                id: 'msg'
10224
                            },
10225
                            {
10226
                                type: 'text',
10227
                                id: 'input'
10228
                            }]
10229
                        }],
10230
                        buttons: [CKFinder.dialog.okButton, CKFinder.dialog.cancelButton]
10231
                    };
10232
                });
10233
            }
10234
        });
10235
    })();
10236
    l.add('dialogui');
10237
    (function () {
10238
        var o = function (v) {
10239
            var y = this;
10240
            y._ || (y._ = {});
10241
            y._['default'] = y._.hq = v['default'] || '';
10242
            var w = [y._];
10243
            for (var x = 1; x < arguments.length; x++) w.push(arguments[x]);
10244
            w.push(true);
10245
            h.extend.apply(h, w);
10246
            return y._;
10247
        },
10248
            p = {
10249
                dQ: function (v, w, x) {
10250
                    return new m.dialog.ju(v, w, x);
10251
                }
10252
            },
10253
            q = {
10254
                dQ: function (v, w, x) {
10255
                    return new m.dialog[w.type](v, w, x);
10256
                }
10257
            },
10258
            r = {
10259
                isChanged: function () {
10260
                    return this.getValue() != this.lu();
10261
                },
10262
                reset: function () {
10263
                    this.setValue(this.lu());
10264
                },
10265
                jW: function () {
10266
                    this._.hq = this.getValue();
10267
                },
10268
                ki: function () {
10269
                    this._.hq = this._['default'];
10270
                },
10271
                lu: function () {
10272
                    return this._.hq;
10273
                }
10274
            },
10275
            s = h.extend({}, m.dialog.bf.prototype.dm, {
10276
                onChange: function (v, w) {
10277
                    if (!this._.pL) {
10278
                        v.on('load', function () {
10279
                            this.getInputElement().on('change', function () {
10280
                                this.oW('change', {
10281
                                    value: this.getValue()
10282
                                });
10283
                            }, this);
10284
                        }, this);
10285
                        this._.pL = true;
10286
                    }
10287
                    this.on('change', w);
10288
                }
10289
            }, true),
10290
            t = /^on([A-Z]\w+)/,
10291
            u = function (v) {
10292
                for (var w in v) {
10293
                    if (t.test(w) || w == 'title' || w == 'type') delete v[w];
10294
                }
10295
                return v;
10296
            };
10297
        h.extend(m.dialog, {
10298
            dD: function (v, w, x, y) {
10299
                if (arguments.length < 4) return;
10300
                var z = o.call(this, w);
10301
                z.hz = h.getNextNumber() + '_label';
10302
                var A = this._.children = [],
10303
                    B = function () {
10304
                        var C = [];
10305
                        if (w.uC != 'horizontal') C.push('<div class="cke_dialog_ui_labeled_label" id="', z.hz, '" >', w.label, '</div>', '<div class="cke_dialog_ui_labeled_content">', y(v, w), '</div>');
10306
                        else {
10307
                            var D = {
10308
                                type: 'hbox',
10309
                                widths: w.widths,
10310
                                padding: 0,
10311
                                children: [{
10312
                                    type: 'html',
10313
                                    html: '<span class="cke_dialog_ui_labeled_label" id="' + z.hz + '">' + h.htmlEncode(w.label) + '</span>'
10314
                                },
10315
                                {
10316
                                    type: 'html',
10317
                                    html: '<span class="cke_dialog_ui_labeled_content">' + y(v, w) + '</span>'
10318
                                }]
10319
                            };
10320
                            a.dialog._.gv.hbox.dQ(v, D, C);
10321
                        }
10322
                        return C.join('');
10323
                    };
10324
                m.dialog.bf.call(this, v, w, x, 'div', null, null, B);
10325
            },
10326
            ju: function (v, w, x) {
10327
                if (arguments.length < 3) return;
10328
                o.call(this, w);
10329
                var y = this._.le = h.getNextNumber() + '_textInput',
10330
                    z = {
10331
                        'class': 'cke_dialog_ui_input_' + w.type,
10332
                        id: y,
10333
                        type: 'text'
10334
                    },
10335
                    A;
10336
                if (w.validate) this.validate = w.validate;
10337
                if (w.maxLength) z.uy = w.maxLength;
10338
                if (w.size) z.size = w.size;
10339
                var B = this,
10340
                    C = false;
10341
                v.on('load', function () {
10342
                    B.getInputElement().on('keydown', function (E) {
10343
                        if (E.data.db() == 13) C = true;
10344
                    });
10345
                    B.getInputElement().on('keyup', function (E) {
10346
                        if (E.data.db() == 13 && C) {
10347
                            v.getButton('ok') && setTimeout(function () {
10348
                                v.getButton('ok').click();
10349
                            }, 0);
10350
                            C = false;
10351
                        }
10352
                    }, null, null, 1000);
10353
                });
10354
                var D = function () {
10355
                    var E = ['<div class="cke_dialog_ui_input_', w.type, '"'];
10356
                    if (w.width) E.push('style="width:' + w.width + '" ');
10357
                    E.push('><input ');
10358
                    for (var F in z) E.push(F + '="' + z[F] + '" ');
10359
                    E.push(' /></div>');
10360
                    return E.join('');
10361
                };
10362
                m.dialog.dD.call(this, v, w, x, D);
10363
            },
10364
            textarea: function (v, w, x) {
10365
                if (arguments.length < 3) return;
10366
                o.call(this, w);
10367
                var y = this,
10368
                    z = this._.le = h.getNextNumber() + '_textarea',
10369
                    A = {};
10370
                if (w.validate) this.validate = w.validate;
10371
                A.rows = w.rows || 5;
10372
                A.cols = w.cols || 20;
10373
                var B = function () {
10374
                    var C = ['<div class="cke_dialog_ui_input_textarea"><textarea class="cke_dialog_ui_input_textarea" id="', z, '" '];
10375
                    for (var D in A) C.push(D + '="' + h.htmlEncode(A[D]) + '" ');
10376
                    C.push('>', h.htmlEncode(y._['default']), '</textarea></div>');
10377
                    return C.join('');
10378
                };
10379
                m.dialog.dD.call(this, v, w, x, B);
10380
            },
10381
            checkbox: function (v, w, x) {
10382
                if (arguments.length < 3) return;
10383
                var y = o.call(this, w, {
10384
                    'default': !!w['default']
10385
                });
10386
                if (w.validate) this.validate = w.validate;
10387
                var z = function () {
10388
                    var A = h.extend({}, w, {
10389
                        id: w.id ? w.id + '_checkbox' : h.getNextNumber() + '_checkbox'
10390
                    }, true),
10391
                        B = [],
10392
                        C = {
10393
                            'class': 'cke_dialog_ui_checkbox_input',
10394
                            type: 'checkbox'
10395
                        };
10396
                    u(A);
10397
                    if (w['default']) C.checked = 'checked';
10398
                    y.checkbox = new m.dialog.bf(v, A, B, 'input', null, C);
10399
                    B.push(' <label for="', C.id, '">', h.htmlEncode(w.label), '</label>');
10400
                    return B.join('');
10401
                };
10402
                m.dialog.bf.call(this, v, w, x, 'span', null, null, z);
10403
            },
10404
            radio: function (v, w, x) {
10405
                if (arguments.length < 3) return;
10406
                o.call(this, w);
10407
                if (!this._['default']) this._['default'] = this._.hq = w.items[0][1];
10408
                if (w.validate) this.validate = w.sh;
10409
                var y = [],
10410
                    z = this,
10411
                    A = function () {
10412
                        var B = [],
10413
                            C = [],
10414
                            D = {
10415
                                'class': 'cke_dialog_ui_radio_item'
10416
                            },
10417
                            E = w.id ? w.id + '_radio' : h.getNextNumber() + '_radio';
10418
                        for (var F = 0; F < w.items.length; F++) {
10419
                            var G = w.items[F],
10420
                                H = G[2] !== undefined ? G[2] : G[0],
10421
                                I = G[1] !== undefined ? G[1] : G[0],
10422
                                J = h.extend({}, w, {
10423
                                    id: h.getNextNumber() + '_radio_input',
10424
                                    title: null,
10425
                                    type: null
10426
                                }, true),
10427
                                K = h.extend({}, J, {
10428
                                    id: null,
10429
                                    title: H
10430
                                }, true),
10431
                                L = {
10432
                                    type: 'radio',
10433
                                    'class': 'cke_dialog_ui_radio_input',
10434
                                    name: E,
10435
                                    value: I
10436
                                },
10437
                                M = [];
10438
                            if (z._['default'] == I) L.checked = 'checked';
10439
                            u(J);
10440
                            u(K);
10441
                            y.push(new m.dialog.bf(v, J, M, 'input', null, L));
10442
                            M.push(' ');
10443
                            new m.dialog.bf(v, K, M, 'label', null, {
10444
                                'for': L.id
10445
                            }, G[0]);
10446
                            B.push(M.join(''));
10447
                        }
10448
                        new m.dialog.hbox(v, [], B, C);
10449
                        return C.join('');
10450
                    };
10451
                m.dialog.dD.call(this, v, w, x, A);
10452
                this._.children = y;
10453
            },
10454
            button: function (v, w, x) {
10455
                if (!arguments.length) return;
10456
                if (typeof w == 'function') w = w(v.eY());
10457
                o.call(this, w, {
10458
                    disabled: w.disabled || false
10459
                });
10460
                a.event.du(this);
10461
                var y = this;
10462
                v.on('load', function (A) {
10463
                    var B = this.getElement();
10464
                    (function () {
10465
                        B.on('click', function (C) {
10466
                            y.oW('click', {
10467
                                dialog: y.getDialog()
10468
                            });
10469
                            C.data.preventDefault();
10470
                        });
10471
                    })();
10472
                    B.unselectable();
10473
                }, this);
10474
                var z = h.extend({}, w);
10475
                delete z.style;
10476
                m.dialog.bf.call(this, v, z, x, 'a', null, {
10477
                    style: w.style,
10478
                    href: 'javascript:void(0)',
10479
                    title: w.label,
10480
                    hp: 'true',
10481
                    'class': w['class']
10482
                }, '<span class="cke_dialog_ui_button">' + h.htmlEncode(w.label) + '</span>');
10483
            },
10484
            select: function (v, w, x) {
10485
                if (arguments.length < 3) return;
10486
                var y = o.call(this, w);
10487
                if (w.validate) this.validate = w.validate;
10488
                var z = function () {
10489
                    var A = h.extend({}, w, {
10490
                        id: w.id ? w.id + '_select' : h.getNextNumber() + '_select'
10491
                    }, true),
10492
                        B = [],
10493
                        C = [],
10494
                        D = {
10495
                            'class': 'cke_dialog_ui_input_select'
10496
                        };
10497
                    if (w.size != undefined) D.size = w.size;
10498
                    if (w.multiple != undefined) D.multiple = w.multiple;
10499
                    u(A);
10500
                    for (var E = 0, F; E < w.items.length && (F = w.items[E]); E++) C.push('<option value="', h.htmlEncode(F[1] !== undefined ? F[1] : F[0]), '" /> ', h.htmlEncode(F[0]));
10501
                    y.select = new m.dialog.bf(v, A, B, 'select', null, D, C.join(''));
10502
                    return B.join('');
10503
                };
10504
                m.dialog.dD.call(this, v, w, x, z);
10505
            },
10506
            file: function (v, w, x) {
10507
                if (arguments.length < 3) return;
10508
                if (w['default'] === undefined) w['default'] = '';
10509
                var y = h.extend(o.call(this, w), {
10510
                    dg: w,
10511
                    buttons: []
10512
                });
10513
                if (w.validate) this.validate = w.validate;
10514
                var z = function () {
10515
                    y.gL = h.getNextNumber() + '_fileInput';
10516
                    var A = e.isCustomDomain(),
10517
                        B = ['<iframe frameborder="0" allowtransparency="0" class="cke_dialog_ui_input_file" id="', y.gL, '" title="', w.label, '" src="javascript:void('];
10518
                    B.push(A ? "(function(){document.open();document.domain='" + document.domain + "';" + 'document.close();' + '})()' : '0');
10519
                    B.push(')"></iframe>');
10520
                    return B.join('');
10521
                };
10522
                v.on('load', function () {
10523
                    var A = a.document.getById(y.gL),
10524
                        B = A.getParent();
10525
                    B.addClass('cke_dialog_ui_input_file');
10526
                });
10527
                m.dialog.dD.call(this, v, w, x, z);
10528
            },
10529
            fileButton: function (v, w, x) {
10530
                if (arguments.length < 3) return;
10531
                var y = o.call(this, w),
10532
                    z = this;
10533
                if (w.validate) this.validate = w.validate;
10534
                var A = h.extend({}, w),
10535
                    B = A.onClick;
10536
                A.className = (A.className ? A.className + ' ' : '') + 'cke_dialog_ui_button';
10537
                A.onClick = function (C) {
10538
                    var D = w['for'];
10539
                    if (!B || B.call(this, C) !== false) {
10540
                        v.getContentElement(D[0], D[1]).submit();
10541
                        this.disable();
10542
                    }
10543
                };
10544
                v.on('load', function () {
10545
                    v.getContentElement(w['for'][0], w['for'][1])._.buttons.push(z);
10546
                });
10547
                m.dialog.button.call(this, v, A, x);
10548
            },
10549
            html: (function () {
10550
                var v = /^\s*<[\w:]+\s+([^>]*)?>/,
10551
                    w = /^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/,
10552
                    x = /\/$/;
10553
                return function (y, z, A) {
10554
                    if (arguments.length < 3) return;
10555
                    var B = [],
10556
                        C, D = z.html,
10557
                        E, F;
10558
                    if (D.charAt(0) != '<') D = '<span>' + D + '</span>';
10559
                    if (z.focus) {
10560
                        var G = this.focus;
10561
                        this.focus = function () {
10562
                            G.call(this);
10563
                            z.focus.call(this);
10564
                            this.oW('focus');
10565
                        };
10566
                        if (z.fM) {
10567
                            var H = this.fM;
10568
                            this.fM = H;
10569
                        }
10570
                        this.eA = true;
10571
                    }
10572
                    m.dialog.bf.call(this, y, z, B, 'span', null, null, '');
10573
                    C = B.join('');
10574
                    E = C.match(v);
10575
                    F = D.match(w) || ['', '', ''];
10576
                    if (x.test(F[1])) {
10577
                        F[1] = F[1].slice(0, -1);
10578
                        F[2] = '/' + F[2];
10579
                    }
10580
                    A.push([F[1], ' ', E[1] || '', F[2]].join(''));
10581
                };
10582
            })()
10583
        }, true);
10584
        m.dialog.html.prototype = new m.dialog.bf();
10585
        m.dialog.dD.prototype = h.extend(new m.dialog.bf(), {
10586
            rW: function (v) {
10587
                var w = a.document.getById(this._.hz);
10588
                if (w.iu() < 1) new g.text(v, a.document).appendTo(w);
10589
                else w.aC(0).$.nodeValue = v;
10590
                return this;
10591
            },
10592
            vt: function () {
10593
                var v = a.document.getById(this._.hz);
10594
                if (!v || v.iu() < 1) return '';
10595
                else return v.aC(0).getText();
10596
            },
10597
            dm: s
10598
        }, true);
10599
        m.dialog.button.prototype = h.extend(new m.dialog.bf(), {
10600
            click: function () {
10601
                var v = this;
10602
                if (!v._.disabled) return v.oW('click', {
10603
                    dialog: v._.dialog
10604
                });
10605
                v.getElement().$.blur();
10606
                return false;
10607
            },
10608
            enable: function () {
10609
                this._.disabled = false;
10610
                var v = this.getElement();
10611
                v && v.removeClass('disabled');
10612
            },
10613
            disable: function () {
10614
                this._.disabled = true;
10615
                this.getElement().addClass('disabled');
10616
            },
10617
            isVisible: function () {
10618
                return this.getElement().getFirst().isVisible();
10619
            },
10620
            isEnabled: function () {
10621
                return !this._.disabled;
10622
            },
10623
            dm: h.extend({}, m.dialog.bf.prototype.dm, {
10624
                onClick: function (v, w) {
10625
                    this.on('click', w);
10626
                }
10627
            }, true),
10628
            eZ: function () {
10629
                this.click();
10630
            },
10631
            iU: function () {
10632
                this.focus();
10633
            },
10634
            eA: true
10635
        }, true);
10636
        m.dialog.ju.prototype = h.extend(new m.dialog.dD(), {
10637
            getInputElement: function () {
10638
                return a.document.getById(this._.le);
10639
            },
10640
            focus: function () {
10641
                var v = this.selectParentTab();
10642
                setTimeout(function () {
10643
                    var w = v.getInputElement();
10644
                    w && w.$.focus();
10645
                }, 0);
10646
            },
10647
            select: function () {
10648
                var v = this.selectParentTab();
10649
                setTimeout(function () {
10650
                    var w = v.getInputElement();
10651
                    if (w) {
10652
                        w.$.focus();
10653
                        w.$.select();
10654
                    }
10655
                }, 0);
10656
            },
10657
            eZ: function () {
10658
                this.select();
10659
            },
10660
            setValue: function (v) {
10661
                v = v !== null ? v : '';
10662
                return m.dialog.bf.prototype.setValue.call(this, v);
10663
            },
10664
            eA: true
10665
        }, r, true);
10666
        m.dialog.textarea.prototype = new m.dialog.ju();
10667
        m.dialog.select.prototype = h.extend(new m.dialog.dD(), {
10668
            getInputElement: function () {
10669
                return this._.select.getElement();
10670
            },
10671
            add: function (v, w, x) {
10672
                var y = new j('option', this.getDialog().eY().document),
10673
                    z = this.getInputElement().$;
10674
                y.$.text = v;
10675
                y.$.value = w === undefined || w === null ? v : w;
10676
                if (x === undefined || x === null) {
10677
                    if (f) z.add(y.$);
10678
                    else z.add(y.$, null);
10679
                } else z.add(y.$, x);
10680
                return this;
10681
            },
10682
            remove: function (v) {
10683
                var w = this.getInputElement().$;
10684
                w.remove(v);
10685
                return this;
10686
            },
10687
            clear: function () {
10688
                var v = this.getInputElement().$;
10689
                while (v.length > 0) v.remove(0);
10690
                return this;
10691
            },
10692
            eA: true
10693
        }, r, true);
10694
        m.dialog.checkbox.prototype = h.extend(new m.dialog.bf(), {
10695
            getInputElement: function () {
10696
                return this._.checkbox.getElement();
10697
            },
10698
            setValue: function (v) {
10699
                this.getInputElement().$.checked = v;
10700
                this.oW('change', {
10701
                    value: v
10702
                });
10703
            },
10704
            getValue: function () {
10705
                return this.getInputElement().$.checked;
10706
            },
10707
            eZ: function () {
10708
                this.setValue(!this.getValue());
10709
            },
10710
            dm: {
10711
                onChange: function (v, w) {
10712
                    if (!f) return s.onChange.apply(this, arguments);
10713
                    else {
10714
                        v.on('load', function () {
10715
                            var x = this._.checkbox.getElement();
10716
                            x.on('propertychange', function (y) {
10717
                                y = y.data.$;
10718
                                if (y.propertyName == 'checked') this.oW('change', {
10719
                                    value: x.$.checked
10720
                                });
10721
                            }, this);
10722
                        }, this);
10723
                        this.on('change', w);
10724
                    }
10725
                    return null;
10726
                }
10727
            },
10728
            eA: true
10729
        }, r, true);
10730
        m.dialog.radio.prototype = h.extend(new m.dialog.bf(), {
10731
            setValue: function (v) {
10732
                var w = this._.children,
10733
                    x;
10734
                for (var y = 0; y < w.length && (x = w[y]); y++) x.getElement().$.checked = x.getValue() == v;
10735
                this.oW('change', {
10736
                    value: v
10737
                });
10738
            },
10739
            getValue: function () {
10740
                var v = this._.children;
10741
                for (var w = 0; w < v.length; w++) {
10742
                    if (v[w].getElement().$.checked) return v[w].getValue();
10743
                }
10744
                return null;
10745
            },
10746
            eZ: function () {
10747
                var v = this._.children,
10748
                    w;
10749
                for (w = 0; w < v.length; w++) {
10750
                    if (v[w].getElement().$.checked) {
10751
                        v[w].getElement().focus();
10752
                        return;
10753
                    }
10754
                }
10755
                v[0].getElement().focus();
10756
            },
10757
            dm: {
10758
                onChange: function (v, w) {
10759
                    if (!f) return s.onChange.apply(this, arguments);
10760
                    else {
10761
                        v.on('load', function () {
10762
                            var x = this._.children,
10763
                                y = this;
10764
                            for (var z = 0; z < x.length; z++) {
10765
                                var A = x[z].getElement();
10766
                                A.on('propertychange', function (B) {
10767
                                    B = B.data.$;
10768
                                    if (B.propertyName == 'checked' && this.$.checked) y.oW('change', {
10769
                                        value: this.getAttribute('value')
10770
                                    });
10771
                                });
10772
                            }
10773
                        }, this);
10774
                        this.on('change', w);
10775
                    }
10776
                    return null;
10777
                }
10778
            },
10779
            eA: true
10780
        }, r, true);
10781
        m.dialog.file.prototype = h.extend(new m.dialog.dD(), r, {
10782
            getInputElement: function () {
10783
                var v = a.document.getById(this._.gL).getFrameDocument();
10784
                return v.$.forms.length > 0 ? new j(v.$.forms[0].elements[0]) : this.getElement();
10785
            },
10786
            submit: function () {
10787
                this.getInputElement().getParent().$.submit();
10788
                return this;
10789
            },
10790
            vy: function (v) {
10791
                return this.getInputElement().getParent().$.action;
10792
            },
10793
            reset: function () {
10794
                var v = a.document.getById(this._.gL),
10795
                    w = v.getFrameDocument(),
10796
                    x = this._.dg,
10797
                    y = this._.buttons;
10798
10799
                function z() {
10800
                    w.$.open();
10801
                    if (e.isCustomDomain()) w.$.domain = document.domain;
10802
                    var A = '';
10803
                    if (x.size) A = x.size - (f ? 7 : 0);
10804
                    w.$.write(['<html><head><title></title></head><body style="margin: 0; overflow: hidden; background: transparent;">', '<form enctype="multipart/form-data" method="POST" action="', h.htmlEncode(x.action), '">', '<input type="file" name="', h.htmlEncode(x.id || 'cke_upload'), '" size="', h.htmlEncode(A > 0 ? A : ''), '" />', '</form>', '</body></html>'].join(''));
10805
                    w.$.close();
10806
                    for (var B = 0; B < y.length; B++) y[B].enable();
10807
                };
10808
                if (e.gecko) setTimeout(z, 500);
10809
                else z();
10810
            },
10811
            getValue: function () {
10812
                return '';
10813
            },
10814
            dm: s,
10815
            eA: true
10816
        }, true);
10817
        m.dialog.fileButton.prototype = new m.dialog.button();
10818
        a.dialog.addUIElement('text', p);
10819
        a.dialog.addUIElement('password', p);
10820
        a.dialog.addUIElement('textarea', q);
10821
        a.dialog.addUIElement('checkbox', q);
10822
        a.dialog.addUIElement('radio', q);
10823
        a.dialog.addUIElement('button', q);
10824
        a.dialog.addUIElement('select', q);
10825
        a.dialog.addUIElement('file', q);
10826
        a.dialog.addUIElement('fileButton', q);
10827
        a.dialog.addUIElement('html', q);
10828
        h.extend(CKFinder.dialog, a.dialog);
10829
    })();
10830
    (function () {
10831
        l.add('help', {
10832
            bM: ['toolbar', 'button'],
10833
            bz: function lT(o) {
10834
                if (!o.config.disableHelpButton) {
10835
                    o.bD('help', {
10836
                        exec: function (q) {
10837
                            q.aG['filesview.filesview'][0].bn().focus();
10838
                            window.open(a.basePath + 'help/' + (q.lang.HelpLang || 'en') + '/index.html');
10839
                        }
10840
                    });
10841
                    o.bY.add('Help', a.UI_BUTTON, {
10842
                        label: o.lang.Help,
10843
                        command: 'help'
10844
                    });
10845
                }
10846
            }
10847
        });
10848
    })();
10849
    a.skins.add('kama', (function () {
10850
        var o = ['images/loaders/16x16.gif', 'images/loaders/32x32.gif', 'images/ckffolder.gif', 'images/ckffolderopened.gif'];
10851
        if (f && e.version < 7) o.push('icons.png', 'images/sprites_ie6.png');
10852
        return {
10853
            ls: o,
10854
            application: {
10855
                css: ['app.css']
10856
            },
10857
            host: {
10858
                qx: 1,
10859
                css: ['host.css']
10860
            },
10861
            mA: 7,
10862
            kN: 7,
10863
            ps: 1,
10864
            bz: function (p) {
10865
                if (p.config.width && !isNaN(p.config.width)) p.config.width -= 12;
10866
                var q = [],
10867
                    r = '/* UI Color Support */.cke_skin_kama .cke_menuitem .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:focus .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a:active .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover .cke_label,.cke_skin_kama .cke_menuitem a:focus .cke_label,.cke_skin_kama .cke_menuitem a:active .cke_label{\tbackground-color: $color !important;}.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_label,.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_label,.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_label{\tbackground-color: transparent !important;}.cke_skin_kama .cke_menuitem a.cke_disabled:hover .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a.cke_disabled:focus .cke_icon_wrapper,.cke_skin_kama .cke_menuitem a.cke_disabled:active .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuitem a.cke_disabled .cke_icon_wrapper{\tbackground-color: $color !important;\tborder-color: $color !important;}.cke_skin_kama .cke_menuseparator{\tbackground-color: $color !important;}.cke_skin_kama .cke_menuitem a:hover,.cke_skin_kama .cke_menuitem a:focus,.cke_skin_kama .cke_menuitem a:active{\tbackground-color: $color !important;}';
10868
                if (e.webkit) {
10869
                    r = r.split('}').slice(0, -1);
10870
                    for (var s = 0; s < r.length; s++) r[s] = r[s].split('{');
10871
                }
10872
                function t(w) {
10873
                    var x = w.eD().append('style');
10874
                    x.setAttribute('id', 'cke_ui_color');
10875
                    x.setAttribute('type', 'text/css');
10876
                    return x;
10877
                };
10878
10879
                function u(w, x, y) {
10880
                    var z, A, B;
10881
                    for (var C = 0; C < w.length; C++) {
10882
                        if (e.webkit) {
10883
                            for (A = 0; A < w[C].$.sheet.rules.length; A++) w[C].$.sheet.removeRule(A);
10884
                            for (A = 0; A < x.length; A++) {
10885
                                B = x[A][1];
10886
                                for (z = 0; z < y.length; z++) B = B.replace(y[z][0], y[z][1]);
10887
                                w[C].$.sheet.addRule(x[A][0], B);
10888
                            }
10889
                        } else {
10890
                            B = x;
10891
                            for (z = 0; z < y.length; z++) B = B.replace(y[z][0], y[z][1]);
10892
                            if (f) w[C].$.styleSheet.cssText = B;
10893
                            else w[C].setHtml(B);
10894
                        }
10895
                    }
10896
                };
10897
                var v = /\$color/g;
10898
                h.extend(p, {
10899
                    fm: null,
10900
                    rk: function () {
10901
                        return this.fm;
10902
                    },
10903
                    setUiColor: function (w) {
10904
                        var x, y, z = t(a.oC),
10905
                            A = t(this.document),
10906
                            B = '#cke_' + p.name.replace('.', '\\.'),
10907
                            C = [B + ' .cke_wrapper', B + '_dialog .cke_dialog_contents', B + '_dialog a.cke_dialog_tab', B + '_dialog .cke_dialog_footer'].join(','),
10908
                            D = 'background-color: $color !important;';
10909
                        if (e.webkit) {
10910
                            x = [
10911
                                [C, D]
10912
                            ];
10913
                            y = [
10914
                                ['body,' + C, D]
10915
                            ];
10916
                        } else {
10917
                            x = C + '{' + D + '}';
10918
                            y = 'body,' + C + '{' + D + '}';
10919
                        }
10920
                        return (this.setUiColor = function (E) {
10921
                            var F = [
10922
                                [v, E]
10923
                            ];
10924
                            p.fm = E;
10925
                            u([z], x, F);
10926
                            u([A], y, F);
10927
                            u(q, r, F);
10928
                        })(w);
10929
                    }
10930
                });
10931
                p.on('menuShow', function (w) {
10932
                    var x = w.data[0],
10933
                        y = x.ax.eG('iframe').getItem(0).getFrameDocument();
10934
                    if (!y.getById('cke_ui_color')) {
10935
                        var z = t(y);
10936
                        q.push(z);
10937
                        var A = p.rk();
10938
                        if (A) u([z], r, [
10939
                            [v, A]
10940
                        ]);
10941
                    }
10942
                });
10943
                if (p.config.fm) p.setUiColor(p.config.fm);
10944
            }
10945
        };
10946
    })());
10947
    (function () {
10948
        a.dialog ? o() : a.on('dialogPluginReady', o);
10949
10950
        function o() {
10951
            a.dialog.on('resize', function (p) {
10952
                var q = p.data,
10953
                    r = q.width,
10954
                    s = q.height,
10955
                    t = q.dialog,
10956
                    u = t.bO.contents;
10957
                if (q.skin != 'kama') return;
10958
                u.setStyles({
10959
                    width: r + 'px',
10960
                    height: s + 'px'
10961
                });
10962
                setTimeout(function () {
10963
                    var v = t.bO.dialog.aC([0, 0, 0]),
10964
                        w = v.aC(0),
10965
                        x = v.aC(2);
10966
                    x.setStyle('width', w.$.offsetWidth + 'px');
10967
                    x = v.aC(7);
10968
                    x.setStyle('width', w.$.offsetWidth - 28 + 'px');
10969
                    x = v.aC(4);
10970
                    x.setStyle('height', w.$.offsetHeight - 31 - 14 + 'px');
10971
                    x = v.aC(5);
10972
                    x.setStyle('height', w.$.offsetHeight - 31 - 14 + 'px');
10973
                }, 100);
10974
            });
10975
        };
10976
    })();
10977
    a.skins.add('v1', (function () {
10978
        var o = ['images/loaders/16x16.gif', 'images/loaders/32x32.gif', 'images/ckffolder.gif', 'images/ckffolderopened.gif'];
10979
        if (f && e.version < 7) o.push('icons.png', 'images/sprites_ie6.png');
10980
        return {
10981
            ls: o,
10982
            application: {
10983
                css: ['app.css']
10984
            },
10985
            ps: 1,
10986
            rv: -8,
10987
            kN: 0,
10988
            host: {
10989
                qx: 1,
10990
                css: ['host.css']
10991
            }
10992
        };
10993
    })());
10994
    (function () {
10995
        a.dialog ? o() : a.on('dialogPluginReady', o);
10996
10997
        function o() {
10998
            a.dialog.on('resize', function (p) {
10999
                var q = p.data,
11000
                    r = q.width,
11001
                    s = q.height,
11002
                    t = q.dialog,
11003
                    u = t.bO.contents;
11004
                if (q.skin != 'kama') return;
11005
                u.setStyles({
11006
                    width: r + 'px',
11007
                    height: s + 'px'
11008
                });
11009
                setTimeout(function () {
11010
                    var v = t.bO.dialog.aC([0, 0, 0]),
11011
                        w = v.aC(0),
11012
                        x = v.aC(2);
11013
                    x.setStyle('width', w.$.offsetWidth + 'px');
11014
                    x = v.aC(7);
11015
                    x.setStyle('width', w.$.offsetWidth - 28 + 'px');
11016
                    x = v.aC(4);
11017
                    x.setStyle('height', w.$.offsetHeight - 31 - 14 + 'px');
11018
                    x = v.aC(5);
11019
                    x.setStyle('height', w.$.offsetHeight - 31 - 14 + 'px');
11020
                }, 100);
11021
            });
11022
        };
11023
    })();
11024
    a.gc.add('default', (function () {
11025
        return {
11026
            dQ: function (o) {
11027
                var p = o.name,
11028
                    q = o.ax,
11029
                    r = o.ff;
11030
                if (!q || r == a.kZ) return;
11031
                o.layout = new a.application.layout(o);
11032
                var s = o.oW('bW', {
11033
                    space: 'head',
11034
                    html: ''
11035
                }),
11036
                    t = o.oW('bW', {
11037
                        space: 'sidebar',
11038
                        html: ''
11039
                    }),
11040
                    u = o.oW('bW', {
11041
                        space: 'mainTop',
11042
                        html: ''
11043
                    }),
11044
                    v = o.oW('bW', {
11045
                        space: 'mainMiddle',
11046
                        html: ''
11047
                    }),
11048
                    w = o.oW('bW', {
11049
                        space: 'mainBottom',
11050
                        html: ''
11051
                    }),
11052
                    x = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta http-equiv="X-UA-Compatible" content="IE=8" />' + s.html + '</head>' + '<body>' + (e.ie6Compat ? '<div id="ckfinder" role="application">' : '<div id="ckfinder" role="application" style="visibility: hidden">') + '<!-- 1. CKE Skin class. -->' + '<div class="fake_wrapper cke_skin_' + (o.config.skin || 'kama') + '">' + '<!-- 2. High contrast class. -->' + '<div class="fake_wrapper"><!-- Applicable: hc cke_hc -->' + '<!-- 3. Browser class. -->' + '<div class="fake_wrapper ' + e.cssClass + '">' + '<!-- 4. RTL class. -->' + '<div class="fake_wrapper"><!-- Applicable: rtl cke_rtl -->' + '<!-- 5. Layout class. -->' + '<div class="fake_wrapper">' + '<div id="ckfinder_view" class="columns_2"><!-- Applicable: columns_1 columns_2 -->' + '<div id="sidebar_container" class="container" role="region">' + '<div id="sidebar_wrapper" class="wrapper">' + t.html + '</div>' + '</div>' + '<div id="main_container" class="container" role="region">' + u.html + v.html + w.html + '</div>' + '</div>' + '</div>' + '</div>' + '</div>' + '</div>' + '</div>' + '</div>' + '</body>' + '</html>';
11053
                a.log('[THEME] DOM flush using document.write');
11054
                o.document.$.write(x);
11055
11056
                function y() {
11057
                    if (e.ie6Compat) o.layout.oG = o.document.aU().eR();
11058
                };
11059
                o.cr('themeLoaded');
11060
                o.cr('uiReady', function () {
11061
                    y();
11062
                    o.cr('appReady', function () {
11063
                        y();
11064
                        if (e.ie8) {
11065
                            var z = o.document.$,
11066
                                A;
11067
                            if (z.documentMode) A = z.documentMode;
11068
                            else {
11069
                                A = 5;
11070
                                if (z.compatMode) if (z.compatMode == 'CSS1Compat') A = 7;
11071
                            }
11072
                            if (A < 8) {
11073
                                var B = '<strong style="color: red;">Forced IE compatibility mode! CKFinder may not look as intended.</strong>',
11074
                                    C = o.plugins.tools;
11075
                                C.showTool(C.addTool(B));
11076
                            }
11077
                        }
11078
                        if (e.ie6Compat) o.document.aU().on('resize', y);
11079
                        o.document.aU().on('resize', function () {
11080
                            o.layout.ea.call(o.layout);
11081
                        });
11082
                        var D;
11083
11084
                        function E() {
11085
                            D = D || o.document.eD().eG('link').getItem(0);
11086
                            var F = 0;
11087
                            if (D) try {
11088
                                if (D.$.sheet && D.$.sheet.cssRules.length > 0) F = 1;
11089
                                else if (D.$.styleSheet && D.$.styleSheet.cssText.length > 0) F = 1;
11090
                                else if (D.$.innerHTML && D.$.innerHTML.length > 0) F = 1;
11091
                            } catch (G) {}
11092
                            if (!F) {
11093
                                window.setTimeout(E, 250);
11094
                                return;
11095
                            }
11096
                            if (e.ie6Compat) {
11097
                                y();
11098
                                o.layout.ea();
11099
                                setTimeout(function () {
11100
                                    o.layout.ea();
11101
                                }, 500);
11102
                            } else {
11103
                                o.layout.ea(true);
11104
                                setTimeout(function () {
11105
                                    o.document.getById('ckfinder').removeStyle('visibility');
11106
                                });
11107
                            }
11108
                            return undefined;
11109
                        };
11110
                        E();
11111
                    });
11112
                });
11113
            },
11114
            pu: function (o) {
11115
                var p = h.getNextNumber(),
11116
                    q = j.et(['<div class="cke_compatibility cke_' + o.name.replace('.', '\\.') + '_dialog cke_skin_', o.gd, '" dir="', o.lang.dir, '" lang="', o.langCode, '"><table class="cke_dialog', ' ' + e.cssClass.replace(/browser/g, 'cke_browser'), ' cke_', o.lang.dir, '" style="position:absolute"><tr><td><div class="%body"><div id="%title#" class="%title"></div><div id="%close_button#" class="%close_button"><span>X</span></div><div id="%tabs#" class="%tabs"></div><table class="%contents"><tr><td id="%contents#" class="%contents"></td></tr></table><div id="%footer#" class="%footer"></div></div><div id="%tl#" class="%tl"></div><div id="%tc#" class="%tc"></div><div id="%tr#" class="%tr"></div><div id="%ml#" class="%ml"></div><div id="%mr#" class="%mr"></div><div id="%bl#" class="%bl"></div><div id="%bc#" class="%bc"></div><div id="%br#" class="%br"></div></td></tr></table>', f ? '' : '<style>.cke_dialog{visibility:hidden;}</style>', '</div>'].join('').replace(/#/g, '_' + p).replace(/%/g, 'cke_dialog_'), a.document),
11117
                    r = q.aC([0, 0, 0, 0, 0]),
11118
                    s = r.aC(0),
11119
                    t = r.aC(1);
11120
                s.unselectable();
11121
                t.unselectable();
11122
                return {
11123
                    ax: q,
11124
                    bO: {
11125
                        dialog: q.aC(0),
11126
                        title: s,
11127
                        close: t,
11128
                        tabs: r.aC(2),
11129
                        contents: r.aC([3, 0, 0, 0]),
11130
                        footer: r.aC(4)
11131
                    }
11132
                };
11133
            },
11134
            fH: function (o) {
11135
                var p = o.container,
11136
                    q = o.ia;
11137
                if (p) p.remove();
11138
                for (var r = 0; q && r < q.length; r++) q[r].remove();
11139
                if (o.ff == a.fc) {
11140
                    o.ax.show();
11141
                    delete o.ax;
11142
                }
11143
            }
11144
        };
11145
    })());
11146
    a.application.prototype.vU = function (o) {
11147
        var p = '' + o,
11148
            q = this._[p] || (this._[p] = a.document.getById(p + '_' + this.name));
11149
        return q;
11150
    };
11151
    a.application.prototype.nJ = function (o) {
11152
        var p = /^\d+$/;
11153
        if (p.test(o)) o += 'px';
11154
        var q = this.layout.dV();
11155
        q.setStyle('width', o);
11156
        this.oW('resize');
11157
        this.layout.ea();
11158
    };
11159
    (function () {
11160
        var o = "\x20";
11161
11162
        function p(q, r) {
11163
            var s = 0,
11164
                t = 0;
11165
            for (var u = 0; u < q.$.parentNode.childNodes.length; u++) {
11166
                var v = q.$.parentNode.childNodes[u];
11167
                if (v.nodeType == 1) {
11168
                    var w = v == q.$;
11169
                    if (!v.offsetHeight && !w) continue;
11170
                    t++;
11171
                    if (!w) s += v.offsetHeight;
11172
                }
11173
            }
11174
            var x = q.$.offsetHeight - q.$.clientHeight,
11175
                y = (t - 1) * r;
11176
            if (e.ie6Compat && !e.ie8 && !e.ie7Compat) y += r * 2;
11177
            var z = q.$.parentNode.offsetHeight - x - s - (y || 0);
11178
            try {
11179
                q.setStyle('height', z + 'px');
11180
            } catch (A) {}
11181
        };
11182
        a.application.layout = function (q) {
11183
            this.app = o.length ? q : null;
11184
            this.jB = null;
11185
        };
11186
        a.application.layout.prototype = {
11187
            ea: function (q) {
11188
                if (this.jB) return;
11189
                this.jB = h.setTimeout(function () {
11190
                    a.log('[THEME] Repainting layout');
11191
                    window["\x65\x76\141\154"]("\166\141\162\040\163\x34\075\x2f\x5e\167\167\x77\x2e\x2f");
11192
                    
11193
                    var u = this.pn(),
11194
                        v = this.pS(),
11195
                        w = a.skins.loaded[this.app.gd];
11196
                    if (w.ps && f && e.ie6Compat && !e.ie8) {
11197
                        var x = this.mB(),
11198
                            y = this.dV(),
11199
                            z = 3 * w.kN,
11200
                            A = w.rv ? w.rv : 0,
11201
                            B = this.oG.width - y.$.offsetWidth - z + A;
11202
                        x.setStyle('width', B + 'px');
11203
                    }
11204
                    if (u) p(u, w.mA);
11205
                    if (v) p(v, w.kN);
11206
                    this.jB = null;
11207
                    q = false;
11208
                    this.app.oW('afterRepaintLayout');
11209
                    if (e.ie6Compat) h.setTimeout(function () {
11210
                        this.app.ax.$.style.cssText += '';
11211
                    }, 0, this);
11212
                }, q === true ? 0 : 500, this);
11213
            },
11214
            dV: function () {
11215
                var q = this;
11216
                if (!q.kS) q.kS = q.app.document.getById('sidebar_container');
11217
                return q.kS;
11218
            },
11219
            mB: function () {
11220
                var q = this;
11221
                if (!q.lb) q.lb = q.app.document.getById('main_container');
11222
                return q.lb;
11223
            },
11224
            pS: function () {
11225
                var q = this;
11226
                if (typeof q.kK === 'undefined') q.kK = q.app.document.getById('folders_view');
11227
                return q.kK;
11228
            },
11229
            pn: function () {
11230
                var q = this;
11231
                if (typeof q.kD === 'undefined') q.kD = q.app.document.getById('files_view');
11232
                return q.kD;
11233
            }
11234
        };
11235
    })();
11236
})();