admin
2020-07-13 85475c02ae604b37c40b3e3411b73424b8cbc99d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
//v1.7.7 2019/01/14 21:51
 
! function(e, t, n) {
    "undefined" != typeof module && module.exports ? module.exports = n() : "function" == typeof define && define.amd ?
        define(n) : t.Fingerprint = n()
}(0, this, function() {
    "use strict";
    var e = function(e) {
        var t, n;
        t = Array.prototype.forEach, n = Array.prototype.map, this.each = function(e, n, r) {
            if (null !== e)
                if (t && e.forEach === t) e.forEach(n, r);
                else if (e.length === +e.length) {
                for (var i = 0, o = e.length; i < o; i++)
                    if (n.call(r, e[i], i, e) === {}) return
            } else
                for (var a in e)
                    if (e.hasOwnProperty(a) && n.call(r, e[a], a, e) === {}) return
        }, this.map = function(e, t, r) {
            var i = [];
            return null == e ? i : n && e.map === n ? e.map(t, r) : (this.each(e, function(e, n, o) {
                i[i.length] = t.call(r, e, n, o)
            }), i)
        }, "object" == typeof e ? (this.hasher = e.hasher, this.screen_resolution = e.screen_resolution, this.screen_orientation =
            e.screen_orientation, this.canvas = e.canvas, this.ie_activex = e.ie_activex) : "function" == typeof e && (this.hasher =
            e)
    };
    return e.prototype = {
        get: function() {
            var e = [];
            if (e.push(navigator.userAgent), e.push(navigator.language), e.push(screen.colorDepth), this.screen_resolution) {
                var t = this.getScreenResolution();
                void 0 !== t && e.push(t.join("x"))
            }
            return e.push((new Date).getTimezoneOffset()), e.push(this.hasSessionStorage()), e.push(this.hasLocalStorage()),
                e.push(this.hasIndexDb()), document.body ? e.push(typeof document.body.addBehavior) : e.push("undefined"), e.push(
                    typeof window.openDatabase), e.push(navigator.cpuClass), e.push(navigator.platform), e.push(navigator.doNotTrack),
                e.push(this.getPluginsString()), this.canvas && this.isCanvasSupported() && e.push(this.getCanvasFingerprint()),
                this.hasher ? this.hasher(e.join("###"), 31) : this.murmurhash3_32_gc(e.join("###"), 31)
        },
        murmurhash3_32_gc: function(e, t) {
            var n, r, i, o, a, s, d, c;
            for (n = 3 & e.length, r = e.length - n, i = t, a = 3432918353, s = 461845907, c = 0; c < r;) d = 255 & e.charCodeAt(
                    c) | (255 & e.charCodeAt(++c)) << 8 | (255 & e.charCodeAt(++c)) << 16 | (255 & e.charCodeAt(++c)) << 24, ++c, i =
                27492 + (65535 & (o = 5 * (65535 & (i = (i ^= d = (65535 & (d = (d = (65535 & d) * a + (((d >>> 16) * a & 65535) <<
                        16) & 4294967295) << 15 | d >>> 17)) * s + (((d >>> 16) * s & 65535) << 16) & 4294967295) << 13 | i >>> 19)) +
                    ((5 * (i >>> 16) & 65535) << 16) & 4294967295)) + ((58964 + (o >>> 16) & 65535) << 16);
            switch (d = 0, n) {
                case 3:
                    d ^= (255 & e.charCodeAt(c + 2)) << 16;
                case 2:
                    d ^= (255 & e.charCodeAt(c + 1)) << 8;
                case 1:
                    i ^= d = (65535 & (d = (d = (65535 & (d ^= 255 & e.charCodeAt(c))) * a + (((d >>> 16) * a & 65535) << 16) &
                        4294967295) << 15 | d >>> 17)) * s + (((d >>> 16) * s & 65535) << 16) & 4294967295
            }
            return i ^= e.length, i = 2246822507 * (65535 & (i ^= i >>> 16)) + ((2246822507 * (i >>> 16) & 65535) << 16) &
                4294967295, i = 3266489909 * (65535 & (i ^= i >>> 13)) + ((3266489909 * (i >>> 16) & 65535) << 16) & 4294967295,
                (i ^= i >>> 16) >>> 0
        },
        hasLocalStorage: function() {
            try {
                return !!window.localStorage
            } catch (e) {
                return !0
            }
        },
        hasSessionStorage: function() {
            try {
                return !!window.sessionStorage
            } catch (e) {
                return !0
            }
        },
        hasIndexDb: function() {
            try {
                return !!window.indexedDB
            } catch (e) {
                return !0
            }
        },
        isCanvasSupported: function() {
            var e = document.createElement("canvas");
            return !(!e.getContext || !e.getContext("2d"))
        },
        isIE: function() {
            return "Microsoft Internet Explorer" === navigator.appName || !("Netscape" !== navigator.appName || !/Trident/.test(
                navigator.userAgent))
        },
        getPluginsString: function() {
            return this.isIE() && this.ie_activex ? this.getIEPluginsString() : this.getRegularPluginsString()
        },
        getRegularPluginsString: function() {
            return this.map(navigator.plugins, function(e) {
                var t = this.map(e, function(e) {
                    return [e.type, e.suffixes].join("~")
                }).join(",");
                return [e.name, e.description, t].join("::")
            }, this).join(";")
        },
        getIEPluginsString: function() {
            return window.ActiveXObject ? this.map(["ShockwaveFlash.ShockwaveFlash", "AcroPDF.PDF", "PDF.PdfCtrl",
                "QuickTime.QuickTime", "rmocx.RealPlayer G2 Control", "rmocx.RealPlayer G2 Control.1",
                "RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)", "RealVideo.RealVideo(tm) ActiveX Control (32-bit)",
                "RealPlayer", "SWCtl.SWCtl", "WMPlayer.OCX", "AgControl.AgControl", "Skype.Detection"
            ], function(e) {
                try {
                    return new ActiveXObject(e), e
                } catch (e) {
                    return null
                }
            }).join(";") : ""
        },
        getScreenResolution: function() {
            return this.screen_orientation ? screen.height > screen.width ? [screen.height, screen.width] : [screen.width,
                screen.height
            ] : [screen.height, screen.width]
        },
        getCanvasFingerprint: function() {
            var e = document.createElement("canvas"),
                t = e.getContext("2d"),
                n = "http://valve.github.io";
            return t.textBaseline = "top", t.font = "14px 'Arial'", t.textBaseline = "alphabetic", t.fillStyle = "#f60", t.fillRect(
                125, 1, 62, 20), t.fillStyle = "#069", t.fillText(n, 2, 15), t.fillStyle = "rgba(102, 204, 0, 0.7)", t.fillText(
                n, 4, 17), e.toDataURL()
        }
    }, e
}), doui = {
    importReady: !0,
    douiCss: null,
    sizeReady: !1,
    winW: 0,
    winH: 0,
    winWrem: 0,
    winHrem: 0,
    threadTimeout: null,
    threadInterval: null,
    AjaxList: [],
    windowReady: function(e) {
        null == e && (e = function() {}), document.addEventListener ? document.addEventListener("DOMContentLoaded",
            function() {
                document.removeEventListener("DOMContentLoaded", arguments.callee, !1), e()
            }, !1) : document.attachEvent && document.attachEvent("onreadystatechange", function() {
            "complete" == document.readyState && (document.detachEvent("onreadystatechange", arguments.callee), e())
        })
    },
    onReady: function(e) {
        null != doui.threadInterval && clearInterval(doui.threadInterval), doui.threadInterval = setInterval(function() {
            console.log("interval: doui的onReady监控"), 1 == doui.importReady && 1 == doui.sizeReady && (clearInterval(doui.threadInterval),
                e())
        }, 200)
    },
    importSet: function(e) {
        if (null == e || e.length <= 0) doui.importReady = !0;
        else {
            doui.importReady = !1;
            for (var t = document.getElementsByTagName("head")[0], n = new RegExp(".css$"), r = new RegExp(".js$"), i = 0, o =
                    0; o < e.length; o++)
                if (n.test(e[o])) {
                    var a = document.createElement("link");
                    a.type = "text/css", a.rel = "stylesheet", a.href = e[o], t.appendChild(a), a.onerror = function() {
                        alert("引入失败:" + a.href), doui.importReady = !1, a.onerror = null
                    }, a.onload = a.onreadystatechange = function() {
                        ++i >= e.length && (doui.importReady = !0)
                    }
                } else if (r.test(e[o])) {
                var s = document.createElement("script");
                s.type = "text/javascript", s.src = e[o], t.appendChild(s), s.onerror = function() {
                    alert("引入失败:" + s.src), doui.importReady = !1, s.onerror = null
                }, s.onload = s.onreadystatechange = function() {
                    ++i >= e.length && (doui.importReady = !0)
                }
            }
        }
    },
    sizeSet: function() {
        try {
            var e = window.innerWidth,
                t = window.innerHeight;
            doui.winW = e, doui.winH = t
        } catch (e) {
            return doui.sizeReady = !1, alert("屏幕可用大小获取失败"), !1
        }
        var n = parseFloat(750 * doui.winH / doui.winW),
            r = 100 * parseFloat(doui.winW / 750);
        if (doui.winWrem = 7.5, doui.winHrem = n / 100, null == doui.douiCss) {
            for (var i = null, o = document.styleSheets, a = new RegExp("doui"), s = 0; s < o.length; s++)
                if (a.test(o[s].href)) {
                    i = o[s];
                    break
                } if (!(null != i && i.cssRules && i.cssRules.length > 0)) return alert("请本地载入doui.css"), doui.sizeReady = !1, !1;
            doui.douiCss = i
        }
        for (s = 0; s < doui.douiCss.cssRules.length; s++)
            if ("html" == doui.douiCss.cssRules[s].selectorText) doui.douiCss.cssRules[s].style.fontSize = r + "px";
            else if ("body" == doui.douiCss.cssRules[s].selectorText) doui.douiCss.cssRules[s].style.width = doui.winW + "px",
            doui.douiCss.cssRules[s].style.height = doui.winH + "px";
        else if (".winSizeBox" == doui.douiCss.cssRules[s].selectorText) doui.douiCss.cssRules[s].style.width = doui.winW +
            "px", doui.douiCss.cssRules[s].style.height = doui.winH + "px";
        else if (".heightenBox" == doui.douiCss.cssRules[s].selectorText) doui.douiCss.cssRules[s].style.width = doui.winW +
            "px", doui.douiCss.cssRules[s].style.minHeight = doui.winH + "px";
        else if (".main" == doui.douiCss.cssRules[s].selectorText) {
            doui.douiCss.cssRules[s].style.minHeight = doui.winH + "px";
            break
        }
        doui.sizeReady = !0
    },
    showToast: function(e) {
        (null == e || e.length <= 0) && (e = "亲,我很迷茫啊……");
        var t = document.getElementById("zdo_toast");
        t && t.parentNode.removeChild(t), null != doui.threadTimeout && clearTimeout(doui.threadTimeout);
        var n = "font26",
            r = "3.7rem",
            i = "1.5rem",
            o = "1.9rem",
            a = "0.33rem",
            s = "0.33rem";
        doui.winW >= doui.winH && (n = "font6", r = doui.winH / 4 + "px", i = doui.winH / 6 + "px", o = (doui.winW - doui.winH /
            4) / 2 + "px", a = doui.winH / 40 + "px", s = doui.winH / 40 + "px");
        var d = "";
        d += '<div id="zdo_toast" class="fboxRow Xcenter Ycenter" style="width:' + r + "; height:auto; bottom:" + i +
            "; left:" + o + ';">', d += '<div class="' + n + ' font-white font-ell2" style="max-width:80%; margin-top:' + a +
            "; margin-bottom:" + s + '; line-height:1.5; text-align:center;">', d += "<span>" + e + "</span>", d += "</div>",
            d += "</div>";
        var c = document.createElement("div");
        c.innerHTML = d;
        var l = c.childNodes[0];
        document.getElementsByTagName("body")[0].appendChild(l), doui.threadTimeout = setTimeout(function() {
            var e = document.getElementById("zdo_toast");
            e && e.parentNode.removeChild(e)
        }, 2500)
    },
    showLoading: function(e) {
        if ((null == e || e.length <= 0) && (e = ""), document.getElementById("zdo_loading")) document.getElementById(
            "zdo_loadcont").innerHTML = e;
        else {
            var t = doui.winH / 2 + "px",
                n = "1.8rem",
                r = "2.85rem",
                i = "font26",
                o = "1.2rem",
                a = "1.06rem",
                s = "0.07rem";
            doui.winW >= doui.winH && (t = doui.winH / 2 + "px", n = doui.winH / 8 + "px", r = (doui.winW - doui.winH / 8) / 2 +
                "px", i = "font6", o = doui.winH / 9 + "px", a = doui.winH / 9 - 12 + "px", s = "6px");
            var d = "";
            d += '<div id="zdo_loading" class="fboxCol Xstart Ycenter" style="width:' + n + "; height:auto; top:" + t +
                "; left:" + r + ';">', d += '<div class="zdo_loadBg" style="width:' + o + "; height:" + o + ';">', d +=
                '<div class="zdo_loadLeft" style="width:' + a + "; height:" + a + "; border-width:" + s + ';"></div>', d +=
                '<div class="zdo_loadRight" style="width:' + a + "; height:" + a + "; border-width:" + s + ';"></div>', d +=
                "</div>", d += '<div class="' + i + ' font-white font-ell2" style="width:' + n +
                '; margin-top:10px; line-height:1.5; text-align:center;">', d +=
                '<span id="zdo_loadcont" style="text-shadow:0 0 5px black;">' + e + "</span>", d += "</div>", d += "</div>";
            var c = document.createElement("div");
            c.innerHTML = d;
            var l = c.childNodes[0];
            document.getElementsByTagName("body")[0].appendChild(l)
        }
    },
    hideLoading: function() {
        var e = document.getElementById("zdo_loading");
        e && e.parentNode.removeChild(e)
    },
    showModal: function(e, t) {
        (null == e || e.length <= 0) && (e = "亲,我很迷茫啊……"), null == t && (t = function() {});
        var n = document.getElementById("zdo_modal");
        n && n.parentNode.removeChild(n);
        var r = "4.3rem",
            i = "font26",
            o = "0.4rem",
            a = "0.4rem",
            s = "font27",
            d = "0.8rem";
        doui.winW >= doui.winH && (r = doui.winH / 4 + "px", i = "font6", o = doui.winH / 40 + "px", a = doui.winH / 40 +
            "px", s = "font6", d = doui.winH / 22 + "px");
        var c = "";
        c += '<div id="zdo_modal" class="fboxRow Xcenter Ycenter" style="height:' + doui.winH + 'px;">', c +=
            '<div id="zdo_modalnei" class="fboxCol Xcenter Ycenter" style="width:' + r + "; height:auto; max-height:" + doui.winH +
            'px;">', c += '<div class="' + i + ' font-black" style="max-width:80%; margin-top:' + o + "; margin-bottom:" + a +
            '; line-height:1.5; text-align:center;">', c += "<span>" + e + "</span>", c += "</div>", c +=
            '<div class="fboxRow" style="width:100%; height:' + d + '; border-top:1px solid #CCC">', c +=
            '<div class="flex1 fboxRow Xcenter Ycenter zdo_modaldan click-color">', c += '<div class="' + s +
            ' font-black do-default">取消</div>', c += "</div>", c +=
            '<div style="width:1px; height:100%; background-color:#CCC;"></div>', c +=
            '<div class="flex1 fboxRow Xcenter Ycenter zdo_modaldan click-color">', c += '<div class="' + s +
            ' font-green do-default">确认</div>', c += "</div>", c += "</div>", c += "</div>", c += "</div>";
        var l = document.createElement("div");
        l.innerHTML = c;
        var u = l.childNodes[0];
        document.getElementsByTagName("body")[0].appendChild(u), document.getElementsByClassName("zdo_modaldan")[0].onclick =
            function() {
                var e = document.getElementById("zdo_modal");
                e && e.parentNode.removeChild(e), t(!1)
            }, document.getElementsByClassName("zdo_modaldan")[1].onclick = function() {
                var e = document.getElementById("zdo_modal");
                e && e.parentNode.removeChild(e), t(!0)
            }
    },
    showScrollLoading: function(e, t, n) {
        if (null == e && (e = ""), null == t && (t = function() {}), null == n && (n = !1), document.getElementsByClassName(
                "do-scrollLoading").length <= 0) doui.showToast("未放入载入框组件");
        else {
            var r = "";
            if (r += '<div class="fboxRow Xcenter Ycenter">', r += '<div style="width:24px; height:24px; position:relative;">',
                r += '<div class="zdo_scrollloadxian"></div>', r += '<div class="zdo_scrollloadxian"></div>', r +=
                '<div class="zdo_scrollloadxian"></div>', r += '<div class="zdo_scrollloadxian"></div>', r +=
                '<div class="zdo_scrollloadxian"></div>', r += '<div class="zdo_scrollloadxian"></div>', r +=
                '<div class="zdo_scrollloadxian"></div>', r += '<div class="zdo_scrollloadxian"></div>', r += "</div>", e.length >
                0 && (r += '<div style="margin-left:0.2rem;" class="font25 font-gray">', r += "<span>" + e + "</span>", r +=
                    "</div>"), r += "</div>", document.getElementsByClassName("do-scrollLoading")[0].childNodes.length <= 0) document
                .getElementsByClassName("do-scrollLoading")[0].innerHTML = r, t();
            else if (1 == n) {
                var i = document.getElementsByClassName("do-scrollLoading")[0].childNodes[0];
                i && i.parentNode.removeChild(i), document.getElementsByClassName("do-scrollLoading")[0].innerHTML = r, t()
            }
        }
    },
    hideScrollLoading: function(e) {
        var t = document.getElementsByClassName("do-scrollLoading")[0].childNodes[0];
        if (t && t.parentNode.removeChild(t), e && e.length > 0) {
            var n = "";
            n += '<div class="fboxRow Xcenter Ystart font-ell1 font-gray">', n += "<span>" + e + "</span>", n += "</div>",
                document.getElementsByClassName("do-scrollLoading").length <= 0 ? doui.showToast("未放入载入框组件") : document.getElementsByClassName(
                    "do-scrollLoading")[0].innerHTML = n
        }
    },
    scrollTo: function(e, t, n) {
        if (null == t && (t = 0), null == n && (n = !0), "html" == e || "body" == e || e == window)
            if (1 == n) {
                var r = null;
                cancelAnimationFrame(r), r = requestAnimationFrame(function e() {
                    var n = document.body.scrollTop || document.documentElement.scrollTop,
                        i = Math.ceil(n / 10);
                    n > 2e3 ? (scrollTo(0, 2e3), r = requestAnimationFrame(e)) : n > t ? (scrollTo(0, n - i), r =
                        requestAnimationFrame(e)) : (scrollTo(0, t), cancelAnimationFrame(r))
                })
            } else scrollTo(0, t);
        else {
            var i = null;
            if (-1 != e.indexOf("#")) {
                var o = e.slice(e.indexOf("#") + 1);
                i = document.getElementById(o)
            } else -1 != e.indexOf(".") && (o = e.slice(e.indexOf(".") + 1), i = document.getElementsByClassName(o)[0]);
            1 == n ? (r = null, cancelAnimationFrame(r), r = requestAnimationFrame(function e() {
                var n = i.scrollTop,
                    o = Math.ceil(n / 10);
                n > 2e3 ? (i.scrollTop = 2e3, r = requestAnimationFrame(e)) : n > t ? (i.scrollTop = n - o, r =
                    requestAnimationFrame(e)) : (i.scrollTop = t, cancelAnimationFrame(r))
            })) : i.scrollTop = t
        }
    },
    scrolling: function(e, t) {
        null == t && (t = function() {});
        var n = {
                scrollTop: 0,
                overBottom: !1
            },
            r = null;
        if (-1 != e.indexOf("#")) {
            var i = e.slice(e.indexOf("#") + 1);
            r = document.getElementById(i)
        } else -1 != e.indexOf(".") && (i = e.slice(e.indexOf(".") + 1), r = document.getElementsByClassName(i)[0]);
        "html" == e || "body" == e || e == window ? document.body.onscroll = document.documentElement.onscroll = function() {
            var e = document.documentElement.clientHeight,
                r = Math.max(document.body.scrollHeight, document.documentElement.scrollHeight),
                i = 0;
            document.documentElement && document.documentElement.scrollTop ? i = document.documentElement.scrollTop :
                document.body && (i = document.body.scrollTop), n.scrollTop = i, n.overBottom = i > 0 && e + i >= r, t(n)
        } : r.onscroll = function() {
            var e = r.clientHeight,
                i = r.scrollHeight,
                o = r.scrollTop;
            n.scrollTop = o, n.overBottom = o > 0 && e + o >= i, t(n)
        }
    },
    systemInfoGet: function() {
        var e = {
                fingerprint: "",
                platform: "PC",
                version: "0",
                browserName: "",
                browserVersion: "0",
                inWX: !1,
                cookieEnabled: !0,
                windowWidth: 0,
                windowHeight: 0,
                windowWidthRem: 0,
                windowHeightRem: 0
            },
            t = navigator.userAgent,
            n = navigator.userAgent.toLowerCase();
        if (t.indexOf("Android") > -1 || t.indexOf("Linux") > -1) e.platform = "Android";
        else if (t.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)) e.platform = "IOS";
        else
            for (var r = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"], i = 0; i < r.length; i++)
                if (t.indexOf(r[i]) > 0) {
                    e.platform = "PC";
                    break
                } try {
            "Android" == e.platform ? e.version = n.match(/android ([\d.]+)/)[1] : "IOS" == e.platform ? e.version = n.match(
                /version\/([\d.]+)/)[1] : "PC" == e.platform && (e.version = navigator.platform)
        } catch (e) {}
        t.indexOf("OPR") > -1 || t.indexOf("Opera") > -1 ? e.browserName = "Opera" : t.indexOf("Firefox") > -1 ? e.browserName =
            "FireFox" : t.indexOf("Chrome") > -1 ? e.browserName = "Chrome" : t.indexOf("Safari") > -1 ? e.browserName =
            "Safari" : (n.indexOf("msie") > -1 || t.indexOf("rv") > -1) && (e.browserName = "IE");
        try {
            "Opera" == e.browserName ? e.browserVersion = n.match(/opera.([\d.]+)/)[1] : "FireFox" == e.browserName ? e.browserVersion =
                n.match(/firefox\/([\d.]+)/)[1] : "Chrome" == e.browserName ? e.browserVersion = n.match(/chrome\/([\d.]+)/)[1] :
                "Safari" == e.browserName ? e.browserVersion = n.match(/safari\/([\d.]+)/)[1] : "IE" == e.browserName && (e.browserVersion =
                    n.match(/msie ([\d.]+)/)[1])
        } catch (e) {}
        "micromessenger" == n.match(/MicroMessenger/i) ? e.inWX = !0 : e.inWX = !1, e.cookieEnabled = navigator.cookieEnabled,
            e.windowWidth = doui.winW, e.windowHeight = doui.winH, e.windowWidthRem = doui.winWrem, e.windowHeightRem = doui.winHrem;
        var o = (new Fingerprint).get();
        return e.fingerprint = o, e
    },
    urlParamGet: function() {
        var e = window.location.search,
            t = new Object;
        if (-1 != e.indexOf("?"))
            for (var n = e.slice(e.indexOf("?") + 1).split("&"), r = 0; r < n.length; r++) {
                var i = n[r].indexOf("="),
                    o = n[r].substring(0, i),
                    a = decodeURI(n[r].slice(i + 1));
                t[o] = a
            }
        return t
    },
    cookieSet: function(e, t, n) {
        var r = "";
        "string" == typeof t ? r = t : "object" == typeof t && (r = JSON.stringify(t));
        var i = new Date;
        i.setTime(i.getTime() + Math.ceil(36e5 * parseFloat(n)));
        var o = "expires=" + i.toGMTString();
        document.cookie = e + "=" + r + "; " + o + "; path=/"
    },
    cookieGet: function(e) {
        var t = null;
        e || (e = "", t = {});
        for (var n = document.cookie.split(";"), r = 0; r < n.length; r++) {
            var i = n[r].trim(),
                o = i.indexOf("="),
                a = i.substring(0, o),
                s = i.slice(o + 1);
            if (doui.isJsonString(s) && (s = JSON.parse(s)), e.length <= 0) t[a] = s;
            else if (a == e) {
                t = s;
                break
            }
        }
        return t
    },
    cookieDel: function(e) {
        document.cookie = e + "= ; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/"
    },
    localStorageSet: function(e, t) {
        if ("string" == typeof t) localStorage.setItem(e, t);
        else if ("object" == typeof t) {
            var n = JSON.stringify(t);
            localStorage.setItem(e, n)
        }
    },
    localStorageGet: function(e) {
        var t = null,
            n = localStorage.getItem(e);
        return n && (t = doui.isJsonString(n) ? JSON.parse(n) : n), t
    },
    localStorageDel: function(e) {
        localStorage.removeItem(e)
    },
    sessionStorageSet: function(e, t) {
        if ("string" == typeof t) sessionStorage.setItem(e, t);
        else if ("object" == typeof t) {
            var n = JSON.stringify(t);
            sessionStorage.setItem(e, n)
        }
    },
    sessionStorageGet: function(e) {
        var t = null,
            n = sessionStorage.getItem(e);
        return n && (t = doui.isJsonString(n) ? JSON.parse(n) : n), t
    },
    sessionStorageDel: function(e) {
        sessionStorage.removeItem(e)
    },
    pageToUrl: function(e) {
        window.location.href = e
    },
    pageReplaceUrl: function(e) {
        window.location.replace(e)
    },
    pageOpenUrl: function(e) {
        window.open(e)
    },
    timestampForDate: function(e) {
        e = parseFloat(e);
        var t = new Date(e),
            n = t.getFullYear(),
            r = t.getMonth() + 1;
        r < 10 && (r = "0" + r);
        var i = t.getDate();
        i < 10 && (i = "0" + i);
        var o = t.getHours();
        o < 10 && (o = "0" + o);
        var a = t.getMinutes();
        return a < 10 && (a = "0" + a), n + "/" + r + "/" + i + " " + o + ":" + a
    },
    strRandomGet: function(e) {
        for (var t = "", n = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", r = 0; r < e; r++) {
            var i = Math.round(Math.random() * (n.length - 1));
            t += n.charAt(i)
        }
        return t
    },
    strJsonHtmlGet: function(e) {
        var t = "",
            n = "";
        try {
            "string" == typeof e ? (t = JSON.parse(e), t = JSON.stringify(t, null, 4)) : t = JSON.stringify(e, null, 4), n = t
                .replace(/\n/g, "<br>").replace(/\s/g, "&nbsp;")
        } catch (e) {
            doui.showToast("strJsonHtmlGet: 不是Json格式")
        }
        return n
    },
    Base64: function(e, t) {
        var n = "初始str",
            r = {
                _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
                encode: function(e) {
                    var t, n, i, o, a, s, d, c = "",
                        l = 0;
                    for (e = r._utf8_encode(e); l < e.length;) o = (t = e.charCodeAt(l++)) >> 2, a = (3 & t) << 4 | (n = e.charCodeAt(
                            l++)) >> 4, s = (15 & n) << 2 | (i = e.charCodeAt(l++)) >> 6, d = 63 & i, isNaN(n) ? s = d = 64 : isNaN(i) &&
                        (d = 64), c = c + this._keyStr.charAt(o) + this._keyStr.charAt(a) + this._keyStr.charAt(s) + this._keyStr.charAt(
                            d);
                    return c
                },
                decode: function(e) {
                    var t, n, i, o, a, s, d = "",
                        c = 0;
                    for (e = e.replace(/[^A-Za-z0-9+/=]/g, ""); c < e.length;) t = this._keyStr.indexOf(e.charAt(c++)) << 2 | (o =
                            this._keyStr.indexOf(e.charAt(c++))) >> 4, n = (15 & o) << 4 | (a = this._keyStr.indexOf(e.charAt(c++))) >> 2,
                        i = (3 & a) << 6 | (s = this._keyStr.indexOf(e.charAt(c++))), d += String.fromCharCode(t), 64 != a && (d +=
                            String.fromCharCode(n)), 64 != s && (d += String.fromCharCode(i));
                    return d = r._utf8_decode(d)
                },
                _utf8_encode: function(e) {
                    e = e.replace(/rn/g, "n");
                    for (var t = "", n = 0; n < e.length; n++) {
                        var r = e.charCodeAt(n);
                        r < 128 ? t += String.fromCharCode(r) : r > 127 && r < 2048 ? (t += String.fromCharCode(r >> 6 | 192), t +=
                            String.fromCharCode(63 & r | 128)) : (t += String.fromCharCode(r >> 12 | 224), t += String.fromCharCode(r >>
                            6 & 63 | 128), t += String.fromCharCode(63 & r | 128))
                    }
                    return t
                },
                _utf8_decode: function(e) {
                    for (var t, n, r = "", i = 0, o = 0; i < e.length;)(t = e.charCodeAt(i)) < 128 ? (r += String.fromCharCode(t),
                        i++) : t > 191 && t < 224 ? (n = e.charCodeAt(i + 1), r += String.fromCharCode((31 & t) << 6 | 63 & n), i +=
                        2) : (n = e.charCodeAt(i + 1), o = e.charCodeAt(i + 2), r += String.fromCharCode((15 & t) << 12 | (63 & n) <<
                        6 | 63 & o), i += 3);
                    return r
                }
            };
        return "en" == e ? n = r.encode(t) : "de" == e && (n = r.decode(t)), n
    },
    Aes: function(e, t, n, r) {
        var i, o, a, s, d, c, l, u, h, f, p, m, g = g || (i = Math, o = Object.create || function() {
            function e() {}
            return function(t) {
                var n;
                return e.prototype = t, n = new e, e.prototype = null, n
            }
        }(), s = (a = {}).lib = {}, d = s.Base = {
            extend: function(e) {
                var t = o(this);
                return e && t.mixIn(e), t.hasOwnProperty("init") && this.init !== t.init || (t.init = function() {
                    t.$super.init.apply(this, arguments)
                }), t.init.prototype = t, t.$super = this, t
            },
            create: function() {
                var e = this.extend();
                return e.init.apply(e, arguments), e
            },
            init: function() {},
            mixIn: function(e) {
                for (var t in e) e.hasOwnProperty(t) && (this[t] = e[t]);
                e.hasOwnProperty("toString") && (this.toString = e.toString)
            },
            clone: function() {
                return this.init.prototype.extend(this)
            }
        }, c = s.WordArray = d.extend({
            init: function(e, t) {
                e = this.words = e || [], this.sigBytes = null != t ? t : 4 * e.length
            },
            toString: function(e) {
                return (e || u).stringify(this)
            },
            concat: function(e) {
                var t = this.words,
                    n = e.words,
                    r = this.sigBytes,
                    i = e.sigBytes;
                if (this.clamp(), r % 4)
                    for (var o = 0; o < i; o++) {
                        var a = n[o >>> 2] >>> 24 - o % 4 * 8 & 255;
                        t[r + o >>> 2] |= a << 24 - (r + o) % 4 * 8
                    } else
                        for (o = 0; o < i; o += 4) t[r + o >>> 2] = n[o >>> 2];
                return this.sigBytes += i, this
            },
            clamp: function() {
                var e = this.words,
                    t = this.sigBytes;
                e[t >>> 2] &= 4294967295 << 32 - t % 4 * 8, e.length = i.ceil(t / 4)
            },
            clone: function() {
                var e = d.clone.call(this);
                return e.words = this.words.slice(0), e
            },
            random: function(e) {
                for (var t, n = [], r = function(e) {
                        e = e;
                        var t = 987654321,
                            n = 4294967295;
                        return function() {
                            var r = ((t = 36969 * (65535 & t) + (t >> 16) & n) << 16) + (e = 18e3 * (65535 & e) + (e >> 16) & n) & n;
                            return r /= 4294967296, (r += .5) * (i.random() > .5 ? 1 : -1)
                        }
                    }, o = 0; o < e; o += 4) {
                    var a = r(4294967296 * (t || i.random()));
                    t = 987654071 * a(), n.push(4294967296 * a() | 0)
                }
                return new c.init(n, e)
            }
        }), l = a.enc = {}, u = l.Hex = {
            stringify: function(e) {
                for (var t = e.words, n = e.sigBytes, r = [], i = 0; i < n; i++) {
                    var o = t[i >>> 2] >>> 24 - i % 4 * 8 & 255;
                    r.push((o >>> 4).toString(16)), r.push((15 & o).toString(16))
                }
                return r.join("")
            },
            parse: function(e) {
                for (var t = e.length, n = [], r = 0; r < t; r += 2) n[r >>> 3] |= parseInt(e.substr(r, 2), 16) << 24 - r % 8 *
                    4;
                return new c.init(n, t / 2)
            }
        }, h = l.Latin1 = {
            stringify: function(e) {
                for (var t = e.words, n = e.sigBytes, r = [], i = 0; i < n; i++) {
                    var o = t[i >>> 2] >>> 24 - i % 4 * 8 & 255;
                    r.push(String.fromCharCode(o))
                }
                return r.join("")
            },
            parse: function(e) {
                for (var t = e.length, n = [], r = 0; r < t; r++) n[r >>> 2] |= (255 & e.charCodeAt(r)) << 24 - r % 4 * 8;
                return new c.init(n, t)
            }
        }, f = l.Utf8 = {
            stringify: function(e) {
                try {
                    return decodeURIComponent(escape(h.stringify(e)))
                } catch (e) {
                    throw new Error("Malformed UTF-8 data")
                }
            },
            parse: function(e) {
                return h.parse(unescape(encodeURIComponent(e)))
            }
        }, p = s.BufferedBlockAlgorithm = d.extend({
            reset: function() {
                this._data = new c.init, this._nDataBytes = 0
            },
            _append: function(e) {
                "string" == typeof e && (e = f.parse(e)), this._data.concat(e), this._nDataBytes += e.sigBytes
            },
            _process: function(e) {
                var t = this._data,
                    n = t.words,
                    r = t.sigBytes,
                    o = this.blockSize,
                    a = r / (4 * o),
                    s = (a = e ? i.ceil(a) : i.max((0 | a) - this._minBufferSize, 0)) * o,
                    d = i.min(4 * s, r);
                if (s) {
                    for (var l = 0; l < s; l += o) this._doProcessBlock(n, l);
                    var u = n.splice(0, s);
                    t.sigBytes -= d
                }
                return new c.init(u, d)
            },
            clone: function() {
                var e = d.clone.call(this);
                return e._data = this._data.clone(), e
            },
            _minBufferSize: 0
        }), s.Hasher = p.extend({
            cfg: d.extend(),
            init: function(e) {
                this.cfg = this.cfg.extend(e), this.reset()
            },
            reset: function() {
                p.reset.call(this), this._doReset()
            },
            update: function(e) {
                return this._append(e), this._process(), this
            },
            finalize: function(e) {
                return e && this._append(e), this._doFinalize()
            },
            blockSize: 16,
            _createHelper: function(e) {
                return function(t, n) {
                    return new e.init(n).finalize(t)
                }
            },
            _createHmacHelper: function(e) {
                return function(t, n) {
                    return new m.HMAC.init(e, n).finalize(t)
                }
            }
        }), m = a.algo = {}, a);
        ! function() {
            var e = g,
                t = e.lib,
                n = t.Base,
                r = t.WordArray,
                i = e.algo,
                o = i.MD5,
                a = i.EvpKDF = n.extend({
                    cfg: n.extend({
                        keySize: 4,
                        hasher: o,
                        iterations: 1
                    }),
                    init: function(e) {
                        this.cfg = this.cfg.extend(e)
                    },
                    compute: function(e, t) {
                        for (var n = this.cfg, i = n.hasher.create(), o = r.create(), a = o.words, s = n.keySize, d = n.iterations; a
                            .length < s;) {
                            c && i.update(c);
                            var c = i.update(e).finalize(t);
                            i.reset();
                            for (var l = 1; l < d; l++) c = i.finalize(c), i.reset();
                            o.concat(c)
                        }
                        return o.sigBytes = 4 * s, o
                    }
                });
            e.EvpKDF = function(e, t, n) {
                return a.create(n).compute(e, t)
            }
        }(),
        function() {
            var e = g,
                t = e.lib.WordArray;
            e.enc.Base64 = {
                stringify: function(e) {
                    var t = e.words,
                        n = e.sigBytes,
                        r = this._map;
                    e.clamp();
                    for (var i = [], o = 0; o < n; o += 3)
                        for (var a = (t[o >>> 2] >>> 24 - o % 4 * 8 & 255) << 16 | (t[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255) <<
                                8 | t[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, s = 0; s < 4 && o + .75 * s < n; s++) i.push(r.charAt(a >>>
                            6 * (3 - s) & 63));
                    var d = r.charAt(64);
                    if (d)
                        for (; i.length % 4;) i.push(d);
                    return i.join("")
                },
                parse: function(e) {
                    var n = e.length,
                        r = this._map,
                        i = this._reverseMap;
                    if (!i) {
                        i = this._reverseMap = [];
                        for (var o = 0; o < r.length; o++) i[r.charCodeAt(o)] = o
                    }
                    var a = r.charAt(64);
                    if (a) {
                        var s = e.indexOf(a); - 1 !== s && (n = s)
                    }
                    return function(e, n, r) {
                        for (var i = [], o = 0, a = 0; a < n; a++)
                            if (a % 4) {
                                var s = r[e.charCodeAt(a - 1)] << a % 4 * 2,
                                    d = r[e.charCodeAt(a)] >>> 6 - a % 4 * 2;
                                i[o >>> 2] |= (s | d) << 24 - o % 4 * 8, o++
                            } return t.create(i, o)
                    }(e, n, i)
                },
                _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
            }
        }(), g.lib.Cipher || function(e) {
                var t = g,
                    n = t.lib,
                    r = n.Base,
                    i = n.WordArray,
                    o = n.BufferedBlockAlgorithm,
                    a = t.enc,
                    s = (a.Utf8, a.Base64),
                    d = t.algo.EvpKDF,
                    c = n.Cipher = o.extend({
                        cfg: r.extend(),
                        createEncryptor: function(e, t) {
                            return this.create(this._ENC_XFORM_MODE, e, t)
                        },
                        createDecryptor: function(e, t) {
                            return this.create(this._DEC_XFORM_MODE, e, t)
                        },
                        init: function(e, t, n) {
                            this.cfg = this.cfg.extend(n), this._xformMode = e, this._key = t, this.reset()
                        },
                        reset: function() {
                            o.reset.call(this), this._doReset()
                        },
                        process: function(e) {
                            return this._append(e), this._process()
                        },
                        finalize: function(e) {
                            return e && this._append(e), this._doFinalize()
                        },
                        keySize: 4,
                        ivSize: 4,
                        _ENC_XFORM_MODE: 1,
                        _DEC_XFORM_MODE: 2,
                        _createHelper: function() {
                            function e(e) {
                                return "string" == typeof e ? w : v
                            }
                            return function(t) {
                                return {
                                    encrypt: function(n, r, i) {
                                        return e(r).encrypt(t, n, r, i)
                                    },
                                    decrypt: function(n, r, i) {
                                        return e(r).decrypt(t, n, r, i)
                                    }
                                }
                            }
                        }()
                    }),
                    l = (n.StreamCipher = c.extend({
                        _doFinalize: function() {
                            return this._process(!0)
                        },
                        blockSize: 1
                    }), t.mode = {}),
                    u = n.BlockCipherMode = r.extend({
                        createEncryptor: function(e, t) {
                            return this.Encryptor.create(e, t)
                        },
                        createDecryptor: function(e, t) {
                            return this.Decryptor.create(e, t)
                        },
                        init: function(e, t) {
                            this._cipher = e, this._iv = t
                        }
                    }),
                    h = l.CBC = function() {
                        var t = u.extend();
 
                        function n(t, n, r) {
                            var i = this._iv;
                            if (i) {
                                var o = i;
                                this._iv = e
                            } else o = this._prevBlock;
                            for (var a = 0; a < r; a++) t[n + a] ^= o[a]
                        }
                        return t.Encryptor = t.extend({
                            processBlock: function(e, t) {
                                var r = this._cipher,
                                    i = r.blockSize;
                                n.call(this, e, t, i), r.encryptBlock(e, t), this._prevBlock = e.slice(t, t + i)
                            }
                        }), t.Decryptor = t.extend({
                            processBlock: function(e, t) {
                                var r = this._cipher,
                                    i = r.blockSize,
                                    o = e.slice(t, t + i);
                                r.decryptBlock(e, t), n.call(this, e, t, i), this._prevBlock = o
                            }
                        }), t
                    }(),
                    f = (t.pad = {}).Pkcs7 = {
                        pad: function(e, t) {
                            for (var n = 4 * t, r = n - e.sigBytes % n, o = r << 24 | r << 16 | r << 8 | r, a = [], s = 0; s < r; s += 4)
                                a.push(o);
                            var d = i.create(a, r);
                            e.concat(d)
                        },
                        unpad: function(e) {
                            var t = 255 & e.words[e.sigBytes - 1 >>> 2];
                            e.sigBytes -= t
                        }
                    },
                    p = (n.BlockCipher = c.extend({
                        cfg: c.cfg.extend({
                            mode: h,
                            padding: f
                        }),
                        reset: function() {
                            c.reset.call(this);
                            var e = this.cfg,
                                t = e.iv,
                                n = e.mode;
                            if (this._xformMode == this._ENC_XFORM_MODE) var r = n.createEncryptor;
                            else r = n.createDecryptor, this._minBufferSize = 1;
                            this._mode && this._mode.__creator == r ? this._mode.init(this, t && t.words) : (this._mode = r.call(n,
                                this, t && t.words), this._mode.__creator = r)
                        },
                        _doProcessBlock: function(e, t) {
                            this._mode.processBlock(e, t)
                        },
                        _doFinalize: function() {
                            var e = this.cfg.padding;
                            if (this._xformMode == this._ENC_XFORM_MODE) {
                                e.pad(this._data, this.blockSize);
                                var t = this._process(!0)
                            } else t = this._process(!0), e.unpad(t);
                            return t
                        },
                        blockSize: 4
                    }), n.CipherParams = r.extend({
                        init: function(e) {
                            this.mixIn(e)
                        },
                        toString: function(e) {
                            return (e || this.formatter).stringify(this)
                        }
                    })),
                    m = (t.format = {}).OpenSSL = {
                        stringify: function(e) {
                            var t = e.ciphertext,
                                n = e.salt;
                            if (n) var r = i.create([1398893684, 1701076831]).concat(n).concat(t);
                            else r = t;
                            return r.toString(s)
                        },
                        parse: function(e) {
                            var t = s.parse(e),
                                n = t.words;
                            if (1398893684 == n[0] && 1701076831 == n[1]) {
                                var r = i.create(n.slice(2, 4));
                                n.splice(0, 4), t.sigBytes -= 16
                            }
                            return p.create({
                                ciphertext: t,
                                salt: r
                            })
                        }
                    },
                    v = n.SerializableCipher = r.extend({
                        cfg: r.extend({
                            format: m
                        }),
                        encrypt: function(e, t, n, r) {
                            r = this.cfg.extend(r);
                            var i = e.createEncryptor(n, r),
                                o = i.finalize(t),
                                a = i.cfg;
                            return p.create({
                                ciphertext: o,
                                key: n,
                                iv: a.iv,
                                algorithm: e,
                                mode: a.mode,
                                padding: a.padding,
                                blockSize: e.blockSize,
                                formatter: r.format
                            })
                        },
                        decrypt: function(e, t, n, r) {
                            return r = this.cfg.extend(r), t = this._parse(t, r.format), e.createDecryptor(n, r).finalize(t.ciphertext)
                        },
                        _parse: function(e, t) {
                            return "string" == typeof e ? t.parse(e, this) : e
                        }
                    }),
                    y = (t.kdf = {}).OpenSSL = {
                        execute: function(e, t, n, r) {
                            r || (r = i.random(8));
                            var o = d.create({
                                    keySize: t + n
                                }).compute(e, r),
                                a = i.create(o.words.slice(t), 4 * n);
                            return o.sigBytes = 4 * t, p.create({
                                key: o,
                                iv: a,
                                salt: r
                            })
                        }
                    },
                    w = n.PasswordBasedCipher = v.extend({
                        cfg: v.cfg.extend({
                            kdf: y
                        }),
                        encrypt: function(e, t, n, r) {
                            var i = (r = this.cfg.extend(r)).kdf.execute(n, e.keySize, e.ivSize);
                            r.iv = i.iv;
                            var o = v.encrypt.call(this, e, t, i.key, r);
                            return o.mixIn(i), o
                        },
                        decrypt: function(e, t, n, r) {
                            r = this.cfg.extend(r), t = this._parse(t, r.format);
                            var i = r.kdf.execute(n, e.keySize, e.ivSize, t.salt);
                            return r.iv = i.iv, v.decrypt.call(this, e, t, i.key, r)
                        }
                    })
            }(),
            function() {
                var e = g,
                    t = e.lib.Base,
                    n = e.enc.Utf8;
                e.algo.HMAC = t.extend({
                    init: function(e, t) {
                        e = this._hasher = new e.init, "string" == typeof t && (t = n.parse(t));
                        var r = e.blockSize,
                            i = 4 * r;
                        t.sigBytes > i && (t = e.finalize(t)), t.clamp();
                        for (var o = this._oKey = t.clone(), a = this._iKey = t.clone(), s = o.words, d = a.words, c = 0; c < r; c++)
                            s[c] ^= 1549556828, d[c] ^= 909522486;
                        o.sigBytes = a.sigBytes = i, this.reset()
                    },
                    reset: function() {
                        var e = this._hasher;
                        e.reset(), e.update(this._iKey)
                    },
                    update: function(e) {
                        return this._hasher.update(e), this
                    },
                    finalize: function(e) {
                        var t = this._hasher,
                            n = t.finalize(e);
                        return t.reset(), t.finalize(this._oKey.clone().concat(n))
                    }
                })
            }(), g.mode.ECB = function() {
                var e = g.lib.BlockCipherMode.extend();
                return e.Encryptor = e.extend({
                    processBlock: function(e, t) {
                        this._cipher.encryptBlock(e, t)
                    }
                }), e.Decryptor = e.extend({
                    processBlock: function(e, t) {
                        this._cipher.decryptBlock(e, t)
                    }
                }), e
            }(), g.pad.Iso10126 = {
                pad: function(e, t) {
                    var n = 4 * t,
                        r = n - e.sigBytes % n;
                    e.concat(g.lib.WordArray.random(r - 1)).concat(g.lib.WordArray.create([r << 24], 1))
                },
                unpad: function(e) {
                    var t = 255 & e.words[e.sigBytes - 1 >>> 2];
                    e.sigBytes -= t
                }
            },
            function() {
                var e = g,
                    t = e.lib.BlockCipher,
                    n = e.algo,
                    r = [],
                    i = [],
                    o = [],
                    a = [],
                    s = [],
                    d = [],
                    c = [],
                    l = [],
                    u = [],
                    h = [];
                ! function() {
                    for (var e = [], t = 0; t < 256; t++) e[t] = t < 128 ? t << 1 : t << 1 ^ 283;
                    var n = 0,
                        f = 0;
                    for (t = 0; t < 256; t++) {
                        var p = f ^ f << 1 ^ f << 2 ^ f << 3 ^ f << 4;
                        p = p >>> 8 ^ 255 & p ^ 99, r[n] = p, i[p] = n;
                        var m = e[n],
                            g = e[m],
                            v = e[g],
                            y = 257 * e[p] ^ 16843008 * p;
                        o[n] = y << 24 | y >>> 8, a[n] = y << 16 | y >>> 16, s[n] = y << 8 | y >>> 24, d[n] = y, y = 16843009 * v ^
                            65537 * g ^ 257 * m ^ 16843008 * n, c[p] = y << 24 | y >>> 8, l[p] = y << 16 | y >>> 16, u[p] = y << 8 | y >>>
                            24, h[p] = y, n ? (n = m ^ e[e[e[v ^ m]]], f ^= e[e[f]]) : n = f = 1
                    }
                }();
                var f = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54],
                    p = n.AES = t.extend({
                        _doReset: function() {
                            if (!this._nRounds || this._keyPriorReset !== this._key) {
                                for (var e = this._keyPriorReset = this._key, t = e.words, n = e.sigBytes / 4, i = 4 * ((this._nRounds = n +
                                        6) + 1), o = this._keySchedule = [], a = 0; a < i; a++)
                                    if (a < n) o[a] = t[a];
                                    else {
                                        var s = o[a - 1];
                                        a % n ? n > 6 && a % n == 4 && (s = r[s >>> 24] << 24 | r[s >>> 16 & 255] << 16 | r[s >>> 8 & 255] << 8 |
                                            r[255 & s]) : (s = r[(s = s << 8 | s >>> 24) >>> 24] << 24 | r[s >>> 16 & 255] << 16 | r[s >>> 8 & 255] <<
                                            8 | r[255 & s], s ^= f[a / n | 0] << 24), o[a] = o[a - n] ^ s
                                    } for (var d = this._invKeySchedule = [], p = 0; p < i; p++) a = i - p, s = p % 4 ? o[a] : o[a - 4], d[p] =
                                    p < 4 || a <= 4 ? s : c[r[s >>> 24]] ^ l[r[s >>> 16 & 255]] ^ u[r[s >>> 8 & 255]] ^ h[r[255 & s]]
                            }
                        },
                        encryptBlock: function(e, t) {
                            this._doCryptBlock(e, t, this._keySchedule, o, a, s, d, r)
                        },
                        decryptBlock: function(e, t) {
                            var n = e[t + 1];
                            e[t + 1] = e[t + 3], e[t + 3] = n, this._doCryptBlock(e, t, this._invKeySchedule, c, l, u, h, i), n = e[t +
                                1], e[t + 1] = e[t + 3], e[t + 3] = n
                        },
                        _doCryptBlock: function(e, t, n, r, i, o, a, s) {
                            for (var d = this._nRounds, c = e[t] ^ n[0], l = e[t + 1] ^ n[1], u = e[t + 2] ^ n[2], h = e[t + 3] ^ n[3],
                                    f = 4, p = 1; p < d; p++) {
                                var m = r[c >>> 24] ^ i[l >>> 16 & 255] ^ o[u >>> 8 & 255] ^ a[255 & h] ^ n[f++],
                                    g = r[l >>> 24] ^ i[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ a[255 & c] ^ n[f++],
                                    v = r[u >>> 24] ^ i[h >>> 16 & 255] ^ o[c >>> 8 & 255] ^ a[255 & l] ^ n[f++],
                                    y = r[h >>> 24] ^ i[c >>> 16 & 255] ^ o[l >>> 8 & 255] ^ a[255 & u] ^ n[f++];
                                c = m, l = g, u = v, h = y
                            }
                            m = (s[c >>> 24] << 24 | s[l >>> 16 & 255] << 16 | s[u >>> 8 & 255] << 8 | s[255 & h]) ^ n[f++], g = (s[l >>>
                                24] << 24 | s[u >>> 16 & 255] << 16 | s[h >>> 8 & 255] << 8 | s[255 & c]) ^ n[f++], v = (s[u >>> 24] << 24 |
                                s[h >>> 16 & 255] << 16 | s[c >>> 8 & 255] << 8 | s[255 & l]) ^ n[f++], y = (s[h >>> 24] << 24 | s[c >>>
                                16 & 255] << 16 | s[l >>> 8 & 255] << 8 | s[255 & u]) ^ n[f++], e[t] = m, e[t + 1] = g, e[t + 2] = v, e[t +
                                3] = y
                        },
                        keySize: 8
                    });
                e.AES = t._createHelper(p)
            }(),
            function() {
                var e = g,
                    t = e.lib.WordArray,
                    n = e.enc;
 
                function r(e) {
                    return e << 8 & 4278255360 | e >>> 8 & 16711935
                }
                n.Utf16 = n.Utf16BE = {
                    stringify: function(e) {
                        for (var t = e.words, n = e.sigBytes, r = [], i = 0; i < n; i += 2) {
                            var o = t[i >>> 2] >>> 16 - i % 4 * 8 & 65535;
                            r.push(String.fromCharCode(o))
                        }
                        return r.join("")
                    },
                    parse: function(e) {
                        for (var n = e.length, r = [], i = 0; i < n; i++) r[i >>> 1] |= e.charCodeAt(i) << 16 - i % 2 * 16;
                        return t.create(r, 2 * n)
                    }
                }, n.Utf16LE = {
                    stringify: function(e) {
                        for (var t = e.words, n = e.sigBytes, i = [], o = 0; o < n; o += 2) {
                            var a = r(t[o >>> 2] >>> 16 - o % 4 * 8 & 65535);
                            i.push(String.fromCharCode(a))
                        }
                        return i.join("")
                    },
                    parse: function(e) {
                        for (var n = e.length, i = [], o = 0; o < n; o++) i[o >>> 1] |= r(e.charCodeAt(o) << 16 - o % 2 * 16);
                        return t.create(i, 2 * n)
                    }
                }
            }(), null == n && (n = "warningiscaution");
        var v = g.enc.Utf8.parse(n),
            y = {
                mode: g.mode.ECB,
                padding: g.pad.Pkcs7
            };
        if (null != r && r.length > 0 && (y = {
                iv: g.enc.Utf8.parse(r),
                mode: g.mode.CBC,
                padding: g.pad.Pkcs7
            }), "en" == e) {
            var w = g.enc.Utf8.parse(t);
            return g.AES.encrypt(w, v, y).toString()
        }
        if ("de" == e) {
            var x = g.AES.decrypt(t, v, y);
            return g.enc.Utf8.stringify(x).toString()
        }
    },
    strMD5Get: function(e) {
        function t(e, t) {
            return e << t | e >>> 32 - t
        }
 
        function n(e, t) {
            var n, r, i, o, a;
            return i = 2147483648 & e, o = 2147483648 & t, a = (1073741823 & e) + (1073741823 & t), (n = 1073741824 & e) & (r =
                    1073741824 & t) ? 2147483648 ^ a ^ i ^ o : n | r ? 1073741824 & a ? 3221225472 ^ a ^ i ^ o : 1073741824 ^ a ^ i ^
                o : a ^ i ^ o
        }
 
        function r(e, r, i, o, a, s, d) {
            var c;
            return n(t(e = n(e, n(n((c = r) & i | ~c & o, a), d)), s), r)
        }
 
        function i(e, r, i, o, a, s, d) {
            var c;
            return n(t(e = n(e, n(n(r & (c = o) | i & ~c, a), d)), s), r)
        }
 
        function o(e, r, i, o, a, s, d) {
            return n(t(e = n(e, n(n(r ^ i ^ o, a), d)), s), r)
        }
 
        function a(e, r, i, o, a, s, d) {
            return n(t(e = n(e, n(n(i ^ (r | ~o), a), d)), s), r)
        }
 
        function s(e) {
            var t, n = "",
                r = "";
            for (t = 0; t <= 3; t++) n += (r = "0" + (e >>> 8 * t & 255).toString(16)).substr(r.length - 2, 2);
            return n
        }
        return function(e) {
            var t, d, c, l, u, h, f, p, m, g = Array();
            for (g = function(e) {
                    for (var t, n = e.length, r = n + 8, i = 16 * ((r - r % 64) / 64 + 1), o = Array(i - 1), a = 0, s = 0; s < n;) a =
                        s % 4 * 8, o[t = (s - s % 4) / 4] = o[t] | e.charCodeAt(s) << a, s++;
                    return a = s % 4 * 8, o[t = (s - s % 4) / 4] = o[t] | 128 << a, o[i - 2] = n << 3, o[i - 1] = n >>> 29, o
                }(e = function(e) {
                    for (var t = "", n = 0; n < e.length; n++) {
                        var r = e.charCodeAt(n);
                        r < 128 ? t += String.fromCharCode(r) : r > 127 && r < 2048 ? (t += String.fromCharCode(r >> 6 | 192), t +=
                            String.fromCharCode(63 & r | 128)) : (t += String.fromCharCode(r >> 12 | 224), t += String.fromCharCode(r >>
                            6 & 63 | 128), t += String.fromCharCode(63 & r | 128))
                    }
                    return t
                }(e)), h = 1732584193, f = 4023233417, p = 2562383102, m = 271733878, t = 0; t < g.length; t += 16) d = h, c = f,
                l = p, u = m, f = a(f = a(f = a(f = a(f = o(f = o(f = o(f = o(f = i(f = i(f = i(f = i(f = r(f = r(f = r(f = r(f,
                                            p = r(p, m = r(m, h = r(h, f, p, m, g[t + 0], 7, 3614090360), f, p, g[t + 1], 12, 3905402710), h,
                                                f, g[t + 2], 17, 606105819), m, h, g[t + 3], 22, 3250441966), p = r(p, m = r(m, h = r(h, f, p,
                                            m, g[t + 4], 7, 4118548399), f, p, g[t + 5], 12, 1200080426), h, f, g[t + 6], 17, 2821735955), m,
                                        h, g[t + 7], 22, 4249261313), p = r(p, m = r(m, h = r(h, f, p, m, g[t + 8], 7, 1770035416), f, p,
                                        g[t + 9], 12, 2336552879), h, f, g[t + 10], 17, 4294925233), m, h, g[t + 11], 22, 2304563134), p =
                                    r(p, m = r(m, h = r(h, f, p, m, g[t + 12], 7, 1804603682), f, p, g[t + 13], 12, 4254626195), h, f,
                                        g[t + 14], 17, 2792965006), m, h, g[t + 15], 22, 1236535329), p = i(p, m = i(m, h = i(h, f, p, m,
                                    g[t + 1], 5, 4129170786), f, p, g[t + 6], 9, 3225465664), h, f, g[t + 11], 14, 643717713), m, h, g[
                                    t + 0], 20, 3921069994), p = i(p, m = i(m, h = i(h, f, p, m, g[t + 5], 5, 3593408605), f, p, g[t +
                                    10], 9, 38016083), h, f, g[t + 15], 14, 3634488961), m, h, g[t + 4], 20, 3889429448), p = i(p, m = i(
                                        m, h = i(h, f, p, m, g[t + 9], 5, 568446438), f, p, g[t + 14], 9, 3275163606), h, f, g[t + 3], 14,
                                    4107603335), m, h, g[t + 8], 20, 1163531501), p = i(p, m = i(m, h = i(h, f, p, m, g[t + 13], 5,
                                    2850285829), f, p, g[t + 2], 9, 4243563512), h, f, g[t + 7], 14, 1735328473), m, h, g[t + 12], 20,
                                2368359562), p = o(p, m = o(m, h = o(h, f, p, m, g[t + 5], 4, 4294588738), f, p, g[t + 8], 11,
                                2272392833), h, f, g[t + 11], 16, 1839030562), m, h, g[t + 14], 23, 4259657740), p = o(p, m = o(m, h = o(
                                h, f, p, m, g[t + 1], 4, 2763975236), f, p, g[t + 4], 11, 1272893353), h, f, g[t + 7], 16, 4139469664),
                            m, h, g[t + 10], 23, 3200236656), p = o(p, m = o(m, h = o(h, f, p, m, g[t + 13], 4, 681279174), f, p, g[t +
                            0], 11, 3936430074), h, f, g[t + 3], 16, 3572445317), m, h, g[t + 6], 23, 76029189), p = o(p, m = o(m, h =
                            o(h, f, p, m, g[t + 9], 4, 3654602809), f, p, g[t + 12], 11, 3873151461), h, f, g[t + 15], 16, 530742520),
                        m, h, g[t + 2], 23, 3299628645), p = a(p, m = a(m, h = a(h, f, p, m, g[t + 0], 6, 4096336452), f, p, g[t +
                        7], 10, 1126891415), h, f, g[t + 14], 15, 2878612391), m, h, g[t + 5], 21, 4237533241), p = a(p, m = a(m, h =
                        a(h, f, p, m, g[t + 12], 6, 1700485571), f, p, g[t + 3], 10, 2399980690), h, f, g[t + 10], 15, 4293915773),
                    m, h, g[t + 1], 21, 2240044497), p = a(p, m = a(m, h = a(h, f, p, m, g[t + 8], 6, 1873313359), f, p, g[t + 15],
                    10, 4264355552), h, f, g[t + 6], 15, 2734768916), m, h, g[t + 13], 21, 1309151649), p = a(p, m = a(m, h = a(h,
                    f, p, m, g[t + 4], 6, 4149444226), f, p, g[t + 11], 10, 3174756917), h, f, g[t + 2], 15, 718787259), m, h, g[t +
                    9], 21, 3951481745), h = n(h, d), f = n(f, c), p = n(p, l), m = n(m, u);
            return (s(h) + s(f) + s(p) + s(m)).toUpperCase()
        }(e)
    },
    AjaxData: function(e, t) {
        null == e && (e = {}), null == t && (t = "thisWarning");
        var n = e;
        n.timestamp = (new Date).getTime();
        var r = new Array;
        for (var i in n) "object" == typeof n[i] && (n[i] = JSON.stringify(n[i])), r.push(n[i]);
        r.sort();
        var o = r.join("###") + "###" + t,
            a = doui.strMD5Get(o);
        return n.sign = a, n
    },
    AjaxRepeat: function(e, t) {
        var n = {
            url: "",
            over: !1
        };
        n.url = t;
        var r = !1;
        if ("add" == e) {
            for (var i = null, o = 0; o < doui.AjaxList.length; o++)
                if (n.url == doui.AjaxList[o].url) {
                    i = o;
                    break
                } null == i ? (doui.AjaxList.push(n), r = !0) : 1 == doui.AjaxList[i].over ? (doui.AjaxList[i].over = !1, r = !0) :
                r = !1
        } else if ("over" == e)
            for (o = 0; o < doui.AjaxList.length; o++)
                if (t == doui.AjaxList[o].url) {
                    doui.AjaxList[o].over = !0, r = !0;
                    break
                } return r
    },
    AjaxPost: function(e, t, n, r) {
        null == r && (r = !1);
        var i = {
            code: 0,
            data: {},
            msg: "请求成功"
        };
        if (1 == r || doui.AjaxRepeat("add", e)) {
            var o = e,
                a = t,
                s = null;
            (s = window.XMLHttpRequest ? new XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP")).open("POST", o, !0), s.setRequestHeader(
                "Content-type", "application/json"), s.withCredentials = !0;
            var d = setTimeout(function() {
                s.abort(), doui.AjaxRepeat("over", o), i.code = 404, i.msg = "请求超时", n(i)
            }, 3e5);
            s.onreadystatechange = function() {
                if (4 == s.readyState && 200 == s.status) {
                    null != d && clearTimeout(d), doui.AjaxRepeat("over", o);
                    var e = null;
                    s.responseText ? e = s.responseText : s.responseXML && (e = s.responseXML), doui.isJsonString(e) ? i = JSON.parse(
                        e) : (i.code = 200, i.data = e, i.msg = "返回数据不是json格式"), n(i)
                } else 4 == s.readyState && (null != d && clearTimeout(d), doui.AjaxRepeat("over", o), i.code = 404, i.data = s.responseText,
                    i.msg = "无法链接,请检查网络", n(i))
            }, s.send(JSON.stringify(a))
        }
    },
    AjaxGet: function(e, t, n, r) {
        null == r && (r = !1);
        var i = {
            code: 0,
            data: {},
            msg: "请求成功"
        };
        if (1 == r || doui.AjaxRepeat("add", e)) {
            var o = e,
                a = t,
                s = null;
            s = window.XMLHttpRequest ? new XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP");
            var d = o + "?";
            for (var c in a) d += c + "=" + a[c] + "&";
            d = d.substring(0, d.length - 1), s.open("GET", d, !0), s.withCredentials = !0;
            var l = setTimeout(function() {
                s.abort(), doui.AjaxRepeat("over", o), i.code = 404, i.msg = "请求超时", n(i)
            }, 3e5);
            s.onreadystatechange = function() {
                if (4 == s.readyState && 200 == s.status) {
                    null != l && clearTimeout(l), doui.AjaxRepeat("over", o);
                    var e = null;
                    s.responseText ? e = s.responseText : s.responseXML && (e = s.responseXML), doui.isJsonString(e) ? i = JSON.parse(
                        e) : (i.code = 200, i.data = e, i.msg = "返回数据不是json格式"), n(i)
                } else 4 == s.readyState && (null != l && clearTimeout(l), doui.AjaxRepeat("over", o), i.code = 404, i.data = s.responseText,
                    i.msg = "无法链接,请检查网络", n(i))
            }, s.send()
        }
    },
    
    AjaxJsonp: function(e, t, n, r) {
        var system = doui.localStorageGet("system");
        if (system != null)
            t.system = system;
        
        null == r && (r = !1);
        var i = {
            code: 0,
            data: {},
            msg: "请求成功"
        };
        if (1 == r || doui.AjaxRepeat("add", e)) {
            var o = e,
                a = t,
                s = "douiJsonp_" + doui.strRandomGet(8);
            a.callback = s;
            var d = o + "?";
            for (var c in a) d += c + "=" + a[c] + "&";
            d = d.substring(0, d.length - 1), d = encodeURI(d);
            var l = document.createElement("script");
            l.type = "text/javascript", l.src = d, document.getElementsByTagName("head")[0].appendChild(l);
            var u = setTimeout(function() {
                l && l.parentNode.removeChild(l), doui.AjaxRepeat("over", o), i.code = 404, i.msg = "请求超时", n(i)
            }, 3e5);
            l.onerror = function() {
                l && l.parentNode.removeChild(l), null != u && clearTimeout(u), doui.AjaxRepeat("over", o), i.code = 404, i.msg =
                    "无法链接,请检查网络", n(i)
            }, window[s] = function(e) {
                var t = e;
                l && l.parentNode.removeChild(l), null != u && clearTimeout(u), doui.AjaxRepeat("over", o), "object" == typeof t ?
                    i = t : "string" == typeof t && doui.isJsonString(t) ? i = JSON.parse(t) : (i.code = 200, i.data = t, i.msg =
                        "返回数据不是json格式"), n(i)
            }
        }
    },
    AjaxUpload: function(e, t, n, r) {
        var system = doui.localStorageGet("system");
        if (system != null)
            t.system = system;
        var i = {
                code: 0,
                data: {},
                msg: "请求成功"
            },
            o = e,
            a = new FormData;
        for (var s in t) a.append(s, t[s]);
        var d = null;
        if (d = window.XMLHttpRequest ? new XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP"), r) {
            var c = {
                total: 0,
                loaded: 0,
                percentage: 0
            };
            d.upload.onprogress = function(e) {
                e.lengthComputable && (c.total = e.total, c.loaded = e.loaded, c.percentage = Math.round(1e3 * parseFloat(e.loaded /
                    e.total)) / 10, r(c))
            }
        }
        d.open("POST", o, !0), d.withCredentials = !0, d.onreadystatechange = function() {
            if (4 == d.readyState && 200 == d.status) {
                var e = null;
                d.responseText ? e = d.responseText : d.responseXML && (e = d.responseXML), doui.isJsonString(e) ? i = JSON.parse(
                    e) : (i.code = 200, i.data = e, i.msg = "返回数据不是json格式"), n(i)
            } else 4 == d.readyState && (i.code = 404, i.data = d.responseText, i.msg = "无法链接,请检查网络", n(i))
        }, d.send(a)
    },
    isJsonString: function(e) {
        try {
            if ("object" == typeof JSON.parse(e)) return !0
        } catch (e) {}
        return !1
    }
}, doui.windowReady(function() {
    doui.sizeSet()
}), window.onresize = function() {
    doui.sizeSet()
};