efront 3.35.13 → 3.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/apps/blank/index.html +1 -21
  2. package/apps/blank/main.js +1 -1
  3. package/apps/kugou/singer/keywords.less +1 -0
  4. package/apps/sciters/main.js +31 -0
  5. package/coms/basic/#loader.js +3 -4
  6. package/coms/basic/i18n.js +25 -0
  7. package/coms/basic/i18n.md +10 -0
  8. package/coms/basic/parseYML.js +1 -0
  9. package/coms/basic/refilm_decode.js +2 -1
  10. package/coms/basic/strings.js +3 -3
  11. package/coms/compile/Javascript.js +1 -20
  12. package/coms/compile/autoi18n.js +17 -0
  13. package/coms/compile/autoi18n_test.js +6 -0
  14. package/coms/compile/common.js +22 -0
  15. package/coms/compile/namelist.js +19 -11
  16. package/coms/compile/translate.js +131 -0
  17. package/coms/compile/wraphtml.js +3 -0
  18. package/coms/docs/md5.js +174 -0
  19. package/coms/frame/route.js +1 -1
  20. package/coms/zimoli/XMLHttpRequest.js +33 -1
  21. package/coms/zimoli/alert.js +1 -1
  22. package/coms/zimoli/appendChild.js +2 -1
  23. package/coms/zimoli/button.less +1 -0
  24. package/coms/zimoli/createEvent.js +8 -3
  25. package/coms/zimoli/cross.js +1 -1
  26. package/coms/zimoli/cross_test.js +8 -2
  27. package/coms/zimoli/forceUpdate.js +2 -6
  28. package/coms/zimoli/list.js +1 -0
  29. package/coms/zimoli/on.js +4 -2
  30. package/coms/zimoli/render.js +5 -2
  31. package/coms/zimoli/transition.js +4 -5
  32. package/coms/zimoli/tree.js +12 -9
  33. package/coms/zimoli/zimoli.js +3 -3
  34. package/docs/index.html +1 -12
  35. package/docs/main.xht +2 -1
  36. package/docs//345/267/245/345/205/267//345/233/275/351/231/205/345/214/226.xht +578 -0
  37. package/package.json +1 -1
  38. package/public/efront.js +1 -1
  39. package/readme.md +1 -1
  40. package/coms/zimoli/i18n.js +0 -192
@@ -8,32 +8,12 @@
8
8
  <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
9
9
  <meta charset="utf-8" />
10
10
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
11
- <link rel="Shortcut Icon" href="/favicon.ico" type="image/x-icon" />
11
+ <link rel="Shortcut Icon" href="http://efront.cc/favicon.ico" type="image/x-icon" />
12
12
  <meta name="viewport" content="initial-scale=1,maximum-scale=1,width=device-width" />
13
13
  <title>Efront 空项目</title>
14
14
  <script deleteoncompile efrontloader>
15
15
  // 若要在开发环境使用内置组件,请保留此script标签中的代码,在编译发布时,这里的代码会自动删除
16
16
  </script>
17
- <style>
18
- html {
19
- height: 100%;
20
- font-family: "SF Pro SC", "SF Pro Text", "SF Pro Icons", "PingFang SC", "Helvetica Neue", "Helvetica", "Arial", sans-serif;
21
- }
22
-
23
- *,
24
- ::before,
25
- ::after {
26
- box-sizing: border-box;
27
- }
28
-
29
- body {
30
- border: none;
31
- margin: 0;
32
- padding: 0;
33
- height: 100%;
34
- overflow: hidden;
35
- }
36
- </style>
37
17
  </head>
38
18
 
39
19
  <body scroll=no max-render=1440></body>
@@ -1,5 +1,5 @@
1
1
  function main() {
2
2
  var page = document.createElement("div");
3
- page.innerHTML = '这是一个空白项目 ';
3
+ page.innerHTML = i18n`这是一个空白项目`;
4
4
  return page;
5
5
  }
@@ -53,6 +53,7 @@
53
53
  background: #101216;
54
54
  border-radius: 4px 0 4px 0;
55
55
  display: block;
56
+ z-index: 0;
56
57
  }
57
58
  }
58
59
 
@@ -0,0 +1,31 @@
1
+ var init_console = function () {
2
+ init_console = function () { };
3
+ var pad = document.createElement("console");
4
+ css(pad, 'position:fixed;bottom:0;top:0;right:0;width:300px;overflow:auto;padding:6px 10px;background:#eee;border-top:1px solid #ccc');
5
+ pad.style.zIndex = 999;
6
+ var log = function (type, style) {
7
+ return function () {
8
+ var log = document.createElement(type);
9
+ css(log, style);
10
+ css(log, 'display:block');
11
+ log.innerHTML = Array.apply(null, arguments).join(" ").replace(/</g, '&lt;').replace(/>/g, "&gt;");
12
+ pad.appendChild(log);
13
+ }
14
+ };
15
+ console.log = log("log", 'color:#333');
16
+ console.error = log("error", 'color:#f00');
17
+ console.info = log("info", 'color:#02f');
18
+ console.clear = function () {
19
+ remove(pad.children);
20
+ };
21
+ onclick(pad, function () {
22
+ pad.style.transition="background-color 300ms linear"
23
+ // pad.style.backgroundColor = "#000";
24
+ pad.innerHTML= pad.style.getPropertyValue("transition").length;
25
+ })
26
+ document.body.appendChild(pad)
27
+ };
28
+ function main() {
29
+ init_console();
30
+ return alert_test();
31
+ }
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
  var window = this;
3
3
  var isProduction = true;
4
- // <!-- isProduction = false -->
5
-
4
+ // <!-- isProduction = false; -->
6
5
  var {
7
6
  parseInt,
8
7
  XMLHttpRequest,
@@ -832,7 +831,7 @@ modules.modules = modules;
832
831
  var requires_count = 3;
833
832
  var hook = function (requires_count) {
834
833
  if (requires_count !== 0) return;
835
- "alert confirm innerWidth innerHeight close prompt".split(/\s+/).map(removeGlobalProperty);
834
+ "alert confirm innerWidth innerHeight close prompt data".split(/\s+/).map(removeGlobalProperty);
836
835
  modules.Promise = Promise;
837
836
  modules.hook_time = +new Date;
838
837
  if (document) {
@@ -855,7 +854,7 @@ var initIfNotDefined = function (defined, path, onload) {
855
854
  else hook(--requires_count);
856
855
  };
857
856
 
858
- if (document) loadResponseTreeFromStorage();
857
+ if (localStorage) loadResponseTreeFromStorage();
859
858
  initIfNotDefined([].map, "[]map", map => map);
860
859
  "use ../basic_/#checkPromise.js";
861
860
  initIfNotDefined(Promise, "Promise", promise => Promise = promise);
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var languageMap = {};
3
+ var languageIndex = 0;
4
+ function i18n() {
5
+ return arguments[isFinite(this) ? this : languageIndex];
6
+ };
7
+ i18n.lang = function (type) {
8
+ var id = getLanguageIndexFromName(type) || 0;
9
+ return i18n.bind(id);
10
+ };
11
+ var getLanguageIndexFromName = function (language) {
12
+ if (isFinite(language)) return language;
13
+ if (language in languageMap) return languageMap[language];
14
+ language = String(language).toLowerCase();
15
+ for (var k in languageMap) {
16
+ for (var kk of k.toLowerCase().split("-")) {
17
+ if (language.indexOf(kk) >= 0) return languageMap[k];
18
+ }
19
+ }
20
+ return languageIndex;
21
+ };
22
+ i18n.setLanguage = function (language) {
23
+ languageIndex = getLanguageIndexFromName(language);
24
+ };
25
+ if (this.navigator) i18n.setLanguage(this.navigator.language);
@@ -0,0 +1,10 @@
1
+ 国际化工具的时的语法如下:
2
+ ```javascript
3
+ i18n`中文内容${参数}`//参数中不能有执行体,否则可能被执行多次造成异常
4
+ ```
5
+ 在项目目录存在指定的国际化文件时,efront会自动转换为类似如下版本,具体语言语种及内容以国际化文件为主:
6
+
7
+ ```javascript
8
+ i18n(`中文内容${参数}`,`English Content${参数}`)
9
+ ```
10
+ 国际化文件可以在文档国际化工具中扫描生成。
@@ -1,4 +1,5 @@
1
1
 
2
+ var strings = require("./strings");
2
3
  var eval2 = function (data) {
3
4
  if (typeof data === 'string') data = data.replace(/(\r\n|\r|\n)$/, '');
4
5
  if (!data) return null;
@@ -386,7 +386,8 @@ function parse(piece) {
386
386
  } else if (/^[\/]/.test(type)) {
387
387
  type = type.slice(1);
388
388
  }
389
- if (typeof options === "string") {
389
+ if (typeof options === "string" && !/^\$#\d+$/.test(options)) {
390
+ console.log(options)
390
391
  options = is(options);
391
392
  var needUnfold = /^\[|\]$/.test(options);
392
393
  options = options.replace(/^\[|\]$/g, '');
@@ -9,8 +9,8 @@ var escapeMap = {
9
9
  var unescapeMap = {};
10
10
  for (var k in escapeMap) unescapeMap[escapeMap[k]] = k;
11
11
 
12
- function encode(str) {
13
- return "\"" + str.replace(/[\\"]/g, "\\$&").replace(/[\r\n\t\v\f\u0008\u0000-\u001f\u007f-\uffff]/g, a => {
12
+ function encode(str, q = "\"") {
13
+ return q + str.replace(new RegExp(`[\\\\${q}]`, 'g'), "\\$&").replace(/[\r\n\t\v\f\u0008\u0000-\u001f\u007f-\uffff]/g, a => {
14
14
  if (escapeMap.hasOwnProperty(a)) return escapeMap[a];
15
15
  var code = a.charCodeAt(0).toString(16);
16
16
  switch (code.length) {
@@ -22,7 +22,7 @@ function encode(str) {
22
22
  return "\\u0" + code;
23
23
  }
24
24
  return "\\u" + code;
25
- }) + "\"";
25
+ }) + q;
26
26
  }
27
27
  function decode(s) {
28
28
  var r = /^(['"`])([\s\S]*)\1$/.exec(s);
@@ -20,6 +20,7 @@ const {
20
20
  createScoped,
21
21
  snapExpressHead,
22
22
  relink,
23
+ replace,
23
24
  skipAssignment,
24
25
  } = require("./common");
25
26
  var straps = `if,in,do,as,of
@@ -288,26 +289,6 @@ var collectProperty = function (o, text) {
288
289
  q.defined[text] = o;
289
290
  };
290
291
 
291
- var replace = function (o, ...args) {
292
- var queue = o.queue;
293
- var i = queue.indexOf(o);
294
- if (i >= 0) queue.splice(i, 1, ...args);
295
- var prev = o.prev;
296
- var next = o.next;
297
- if (!args.length) {
298
- if (prev) prev.next = next;
299
- else queue.first = next;
300
- if (next) next.prev = prev;
301
- else queue.last = prev;
302
- }
303
- else {
304
- if (prev) prev.next = args[0], args[0].prev = prev;
305
- else queue.first = args[0];
306
- if (next) next.prev = args[args.length - 1], args[args.length - 1].next = next;
307
- else queue.last = args[args.length - 1];
308
- }
309
- return args.length ? args[0] : next;
310
- };
311
292
  var hasComma = function (c) {
312
293
  for (var cc of c) {
313
294
  if (cc.type === STAMP && cc.text === ',') return true;
@@ -0,0 +1,17 @@
1
+ var { SCOPED } = require("./common");
2
+
3
+ var getTranslated = function () {
4
+ };
5
+ module.exports = function (code, i18nfiles) {
6
+ var prefixed = translate.getI18nPrefixed(code);
7
+ for (var p of prefixed) {
8
+ if (p.transtype === "手动") {
9
+ p.type = SCOPED;
10
+ p.entry = '(';
11
+ p.leave = ')';
12
+ delete p.text;
13
+
14
+ }
15
+ }
16
+ console.log(prefixed);
17
+ };
@@ -0,0 +1,6 @@
1
+ var test = function (data) {
2
+ var code = scanner2(data);
3
+ autoi18n(code);
4
+ console.log(code.toString());
5
+ };
6
+ test('i18n`你好`');
@@ -1032,6 +1032,27 @@ var createExpressList = function (code) {
1032
1032
  }
1033
1033
  return list;
1034
1034
  };
1035
+ var replace = function (o, ...args) {
1036
+ var queue = o.queue;
1037
+ var i = queue.indexOf(o);
1038
+ if (i >= 0) queue.splice(i, 1, ...args);
1039
+ var prev = o.prev;
1040
+ var next = o.next;
1041
+ if (!args.length) {
1042
+ if (prev) prev.next = next;
1043
+ else queue.first = next;
1044
+ if (next) next.prev = prev;
1045
+ else queue.last = prev;
1046
+ }
1047
+ else {
1048
+ if (prev) prev.next = args[0], args[0].prev = prev;
1049
+ else queue.first = args[0];
1050
+ if (next) next.prev = args[args.length - 1], args[args.length - 1].next = next;
1051
+ else queue.last = args[args.length - 1];
1052
+ }
1053
+ return args.length ? args[0] : next;
1054
+ };
1055
+
1035
1056
  module.exports = {
1036
1057
  /* 1 */COMMENT,
1037
1058
  /* 2 */SPACE,
@@ -1059,5 +1080,6 @@ module.exports = {
1059
1080
  saveTo,
1060
1081
  rename,
1061
1082
  relink,
1083
+ replace,
1062
1084
  mergeTo
1063
1085
  };
@@ -73,9 +73,9 @@ var keywords = [js_keywords, c_java_go_python, others].join("|").trim().split(/[
73
73
  keywords = new RegExp(`^(${keywords})$`, 'i');
74
74
  var source = `abcdefghijklmnopqrstuvwxyz`;
75
75
  source += source.toUpperCase() + "_$";
76
- var number = source + '0123456789';
77
- // source += "ªµºΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρςστυφχψω";
78
- source += function () {
76
+ var number = '0123456789' + source;
77
+ var counts;
78
+ var source_addition = function () {
79
79
  var reg = /\xAA\xB5\xBA\xC0-\xD5\xD8-\xF2\xF8-\u02AF\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0523\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0621-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA/;
80
80
  var dist = [];
81
81
  reg.source.replace(/\\[xu]([0-9a-f]+)(?:\-\\[xu]([0-9a-f]+))?/ig, function (_, a, b) {
@@ -89,14 +89,18 @@ source += function () {
89
89
  });
90
90
  return String.fromCharCode.apply(String, dist);
91
91
  }();
92
- var source_length = source.length;
93
- var counts = [
94
- source_length,
95
- source_length * 64,
96
- source_length * 64 * 64,
97
- source_length * 64 * 64 * 64,
98
- source_length * 64 * 64 * 64 * 64
99
- ];
92
+ var makeSource = function (qjs) {
93
+ if (!qjs) source = number.slice(10) + source_addition;
94
+ var source_length = source.length;
95
+ counts = [
96
+ source_length,
97
+ source_length * 64,
98
+ source_length * 64 * 64,
99
+ source_length * 64 * 64 * 64,
100
+ source_length * 64 * 64 * 64 * 64
101
+ ];
102
+ };
103
+ makeSource(true);
100
104
  function create(n, length) {
101
105
  var rest = [];
102
106
  while (length > 0) {
@@ -151,4 +155,8 @@ function namelist(count, prevent, skip) {
151
155
  dist.skip = skip0;
152
156
  return dist;
153
157
  }
158
+ namelist.makeSource = function (sciter = false) {
159
+ makeSource(sciter);
160
+ makeSource = function () { };
161
+ };
154
162
  module.exports = namelist;
@@ -0,0 +1,131 @@
1
+ var scanner2 = require("./scanner2");
2
+ var { SCOPED, QUOTED, SCOPED, PIECE, number_reg, replace, createString } = require("./common");
3
+ var strings = require("../basic/strings");
4
+ var program = null;
5
+ var patchTranslate = function (c) {
6
+ if (c.length) {
7
+ c.translate = c.map((o, i) => o.type === PIECE ? strings.decode(`\`${o.text}\``) : ` $#${i + 1 >> 1} `).join('');
8
+ }
9
+ else {
10
+ if (/^['"`]/.test(c.text) && c.text.length > 2) {
11
+ var text = strings.decode(c.text);
12
+ c.translate = text;
13
+ }
14
+ }
15
+
16
+ }
17
+ function getAllText(code, dest = []) {
18
+ for (var cx = 0, dx = code.length; cx < dx; cx++) {
19
+ var c = code[cx];
20
+ if (c.type === QUOTED) {
21
+ if (c.length) {
22
+ getAllText(c, dest);
23
+ if (c.entry !== '`') continue;
24
+ patchTranslate(c);
25
+ dest.push(c);
26
+ }
27
+ else {
28
+ if (/^['"`]/.test(c.text) && c.text.length > 2) {
29
+ var text = strings.decode(c.text);
30
+ if (number_reg.test(text) || program.stamp_reg.test(text) || program.space_reg.test(text)) continue;
31
+ patchTranslate(c);
32
+ dest.push(c);
33
+ }
34
+ }
35
+ }
36
+ else if (c.type === SCOPED) {
37
+ getAllText(c, dest);
38
+ }
39
+ }
40
+ return dest;
41
+ }
42
+
43
+ var [手动, 字段名] = Array(2).fill(0).map((_, i) => i + 1);
44
+ function getI18nPrefixedText(code, dist = []) {
45
+ var { used, envs } = code;
46
+ var get = function (arr, f, t) {
47
+ for (var n of arr) {
48
+ if (!n || n.type !== QUOTED || n.length && n.entry !== '`') continue;
49
+ var c = n;
50
+ c.transtype = t;
51
+ patchTranslate(c);
52
+ f(c);
53
+ }
54
+ };
55
+ if (envs.i18n) get(used.i18n.filter(o => o.text === 'i18n').map(o => {
56
+ var n = o.next;
57
+ if (n && n.type === SCOPED && n.entry !== '{') n = n.next;
58
+ return n;
59
+ }), c => dist.push(c), 手动);
60
+ if (envs.refilm) get(used.refilm.filter(o => o.text === 'refilm').map(o => o.next), c => {
61
+ c.fields = refilm([c.translate]);
62
+ dist.push(c);
63
+ }, 字段名);
64
+ return dist;
65
+ }
66
+
67
+ function translate([imap, supports], code) {
68
+ var texts = getI18nPrefixedText(code);
69
+ var getm = function (tt) {
70
+ if (!imap[tt]) {
71
+ console.warn(`<yellow>国际化翻译缺失:</yellow>${tt}`);
72
+ imap[tt] = supports.map(_ => tt);
73
+ }
74
+ return imap[tt].map(m => strings.encode(m || tt, '`'));
75
+ };
76
+ var used = code.used;
77
+ for (var t of texts) {
78
+ if (t.transtype === 手动) {
79
+ var p = t.prev;
80
+ if (p.type === SCOPED) {
81
+ p.prev.text = 'i18n.lang';
82
+ p.entry = "(";
83
+ p.leave = ")";
84
+ }
85
+ var tt = t.translate;
86
+ replace(t, ...scanner2(`(${getm(tt)})`.replace(/\$#(\d+)/g, (_, i) => {
87
+ var a = (i << 1) - 1;
88
+ if (a in t) return createString(t[a]);
89
+ return _;
90
+ })));
91
+ }
92
+ else if (t.transtype === 字段名) {
93
+ var i = t.queue.indexOf(t.prev);
94
+ var e = t.queue.indexOf(t, i);
95
+ var ui = used.refilm.indexOf(t.prev);
96
+ used.refilm.splice(ui, 1);
97
+ if (!used.i18n) {
98
+ used.i18n = [];
99
+ code.envs.i18n = true;
100
+ }
101
+ t.queue.splice(i, e + 1 - i, ...scanner2("[" + t.fields.map(f => {
102
+ return "{" + Object.keys(f).map(k => {
103
+ var v = f[k];
104
+ if (/\$#\d+/.test(v)) v = v.replace(/\$#(\d+)/g, (_, i) => {
105
+ var a = (i << 1) - 1;
106
+ if (a in t) return createString(t[a]);
107
+ return _;
108
+ });
109
+ else if (k === 'name') v = `i18n(${getm(v)})`;
110
+ else v = JSON.stringify(v);
111
+ return JSON.stringify(k) + ":" + v;
112
+ }).join(',') + "}";
113
+ }).join(',') + "]"));
114
+ }
115
+ }
116
+ if (used.refilm && !used.refilm.length) {
117
+ delete code.envs.refilm;
118
+ delete code.used.refilm;
119
+ }
120
+ }
121
+ translate.getAllText = function (data) {
122
+ var code = scanner2(String(data));
123
+ program = code.program;
124
+ var texts = [];
125
+ getAllText(code, texts);
126
+ return texts;
127
+ };
128
+ translate.手动 = 手动;
129
+ translate.字段名 = 字段名;
130
+ translate.getI18nPrefixed = getI18nPrefixedText;
131
+ module.exports = translate;
@@ -0,0 +1,3 @@
1
+ function wrapHtml(htmldata) {
2
+ return "`" + String(htmldata).trim().replace(/>\s+</g, "><").replace(/\\[^`]/g, "\\$&") + "`";
3
+ }
@@ -0,0 +1,174 @@
1
+ function md5(string) {
2
+
3
+ function RotateLeft(lValue, iShiftBits) {
4
+ return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits));
5
+ }
6
+
7
+ function AddUnsigned(lX,lY) {
8
+ var lX4,lY4,lX8,lY8,lResult;
9
+ lX8 = (lX & 0x80000000);
10
+ lY8 = (lY & 0x80000000);
11
+ lX4 = (lX & 0x40000000);
12
+ lY4 = (lY & 0x40000000);
13
+ lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF);
14
+ if (lX4 & lY4) {
15
+ return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
16
+ }
17
+ if (lX4 | lY4) {
18
+ if (lResult & 0x40000000) {
19
+ return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
20
+ } else {
21
+ return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
22
+ }
23
+ } else {
24
+ return (lResult ^ lX8 ^ lY8);
25
+ }
26
+ }
27
+
28
+ function F(x,y,z) { return (x & y) | ((~x) & z); }
29
+ function G(x,y,z) { return (x & z) | (y & (~z)); }
30
+ function H(x,y,z) { return (x ^ y ^ z); }
31
+ function I(x,y,z) { return (y ^ (x | (~z))); }
32
+
33
+ function FF(a,b,c,d,x,s,ac) {
34
+ a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
35
+ return AddUnsigned(RotateLeft(a, s), b);
36
+ };
37
+
38
+ function GG(a,b,c,d,x,s,ac) {
39
+ a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
40
+ return AddUnsigned(RotateLeft(a, s), b);
41
+ };
42
+
43
+ function HH(a,b,c,d,x,s,ac) {
44
+ a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
45
+ return AddUnsigned(RotateLeft(a, s), b);
46
+ };
47
+
48
+ function II(a,b,c,d,x,s,ac) {
49
+ a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
50
+ return AddUnsigned(RotateLeft(a, s), b);
51
+ };
52
+
53
+ function ConvertToWordArray(codes) {
54
+ var lWordCount;
55
+ var lMessageLength = codes.length;
56
+ var lNumberOfWords_temp1=lMessageLength + 8;
57
+ var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64;
58
+ var lNumberOfWords = (lNumberOfWords_temp2+1)*16;
59
+ var lWordArray=Array(lNumberOfWords-1);
60
+ var lBytePosition = 0;
61
+ var lByteCount = 0;
62
+ while ( lByteCount < lMessageLength ) {
63
+ lWordCount = (lByteCount-(lByteCount % 4))/4;
64
+ lBytePosition = (lByteCount % 4)*8;
65
+ lWordArray[lWordCount] = (lWordArray[lWordCount] | (codes[lByteCount]<<lBytePosition));
66
+ lByteCount++;
67
+ }
68
+ lWordCount = (lByteCount-(lByteCount % 4))/4;
69
+ lBytePosition = (lByteCount % 4)*8;
70
+ lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition);
71
+ lWordArray[lNumberOfWords-2] = lMessageLength<<3;
72
+ lWordArray[lNumberOfWords-1] = lMessageLength>>>29;
73
+ return lWordArray;
74
+ };
75
+
76
+ function WordToHex(lValue) {
77
+ var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;
78
+ for (lCount = 0;lCount<=3;lCount++) {
79
+ lByte = (lValue>>>(lCount*8)) & 255;
80
+ WordToHexValue_temp = "0" + lByte.toString(16);
81
+ WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2);
82
+ }
83
+ return WordToHexValue;
84
+ };
85
+
86
+ var x=Array();
87
+ var k,AA,BB,CC,DD,a,b,c,d;
88
+ var S11=7, S12=12, S13=17, S14=22;
89
+ var S21=5, S22=9 , S23=14, S24=20;
90
+ var S31=4, S32=11, S33=16, S34=23;
91
+ var S41=6, S42=10, S43=15, S44=21;
92
+
93
+ string = encodeUTF8(string);
94
+
95
+ x = ConvertToWordArray(string);
96
+
97
+ a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;
98
+
99
+ for (k=0;k<x.length;k+=16) {
100
+ AA=a; BB=b; CC=c; DD=d;
101
+ a=FF(a,b,c,d,x[k+0], S11,0xD76AA478);
102
+ d=FF(d,a,b,c,x[k+1], S12,0xE8C7B756);
103
+ c=FF(c,d,a,b,x[k+2], S13,0x242070DB);
104
+ b=FF(b,c,d,a,x[k+3], S14,0xC1BDCEEE);
105
+ a=FF(a,b,c,d,x[k+4], S11,0xF57C0FAF);
106
+ d=FF(d,a,b,c,x[k+5], S12,0x4787C62A);
107
+ c=FF(c,d,a,b,x[k+6], S13,0xA8304613);
108
+ b=FF(b,c,d,a,x[k+7], S14,0xFD469501);
109
+ a=FF(a,b,c,d,x[k+8], S11,0x698098D8);
110
+ d=FF(d,a,b,c,x[k+9], S12,0x8B44F7AF);
111
+ c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);
112
+ b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE);
113
+ a=FF(a,b,c,d,x[k+12],S11,0x6B901122);
114
+ d=FF(d,a,b,c,x[k+13],S12,0xFD987193);
115
+ c=FF(c,d,a,b,x[k+14],S13,0xA679438E);
116
+ b=FF(b,c,d,a,x[k+15],S14,0x49B40821);
117
+ a=GG(a,b,c,d,x[k+1], S21,0xF61E2562);
118
+ d=GG(d,a,b,c,x[k+6], S22,0xC040B340);
119
+ c=GG(c,d,a,b,x[k+11],S23,0x265E5A51);
120
+ b=GG(b,c,d,a,x[k+0], S24,0xE9B6C7AA);
121
+ a=GG(a,b,c,d,x[k+5], S21,0xD62F105D);
122
+ d=GG(d,a,b,c,x[k+10],S22,0x2441453);
123
+ c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681);
124
+ b=GG(b,c,d,a,x[k+4], S24,0xE7D3FBC8);
125
+ a=GG(a,b,c,d,x[k+9], S21,0x21E1CDE6);
126
+ d=GG(d,a,b,c,x[k+14],S22,0xC33707D6);
127
+ c=GG(c,d,a,b,x[k+3], S23,0xF4D50D87);
128
+ b=GG(b,c,d,a,x[k+8], S24,0x455A14ED);
129
+ a=GG(a,b,c,d,x[k+13],S21,0xA9E3E905);
130
+ d=GG(d,a,b,c,x[k+2], S22,0xFCEFA3F8);
131
+ c=GG(c,d,a,b,x[k+7], S23,0x676F02D9);
132
+ b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);
133
+ a=HH(a,b,c,d,x[k+5], S31,0xFFFA3942);
134
+ d=HH(d,a,b,c,x[k+8], S32,0x8771F681);
135
+ c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122);
136
+ b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C);
137
+ a=HH(a,b,c,d,x[k+1], S31,0xA4BEEA44);
138
+ d=HH(d,a,b,c,x[k+4], S32,0x4BDECFA9);
139
+ c=HH(c,d,a,b,x[k+7], S33,0xF6BB4B60);
140
+ b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);
141
+ a=HH(a,b,c,d,x[k+13],S31,0x289B7EC6);
142
+ d=HH(d,a,b,c,x[k+0], S32,0xEAA127FA);
143
+ c=HH(c,d,a,b,x[k+3], S33,0xD4EF3085);
144
+ b=HH(b,c,d,a,x[k+6], S34,0x4881D05);
145
+ a=HH(a,b,c,d,x[k+9], S31,0xD9D4D039);
146
+ d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);
147
+ c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);
148
+ b=HH(b,c,d,a,x[k+2], S34,0xC4AC5665);
149
+ a=II(a,b,c,d,x[k+0], S41,0xF4292244);
150
+ d=II(d,a,b,c,x[k+7], S42,0x432AFF97);
151
+ c=II(c,d,a,b,x[k+14],S43,0xAB9423A7);
152
+ b=II(b,c,d,a,x[k+5], S44,0xFC93A039);
153
+ a=II(a,b,c,d,x[k+12],S41,0x655B59C3);
154
+ d=II(d,a,b,c,x[k+3], S42,0x8F0CCC92);
155
+ c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D);
156
+ b=II(b,c,d,a,x[k+1], S44,0x85845DD1);
157
+ a=II(a,b,c,d,x[k+8], S41,0x6FA87E4F);
158
+ d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);
159
+ c=II(c,d,a,b,x[k+6], S43,0xA3014314);
160
+ b=II(b,c,d,a,x[k+13],S44,0x4E0811A1);
161
+ a=II(a,b,c,d,x[k+4], S41,0xF7537E82);
162
+ d=II(d,a,b,c,x[k+11],S42,0xBD3AF235);
163
+ c=II(c,d,a,b,x[k+2], S43,0x2AD7D2BB);
164
+ b=II(b,c,d,a,x[k+9], S44,0xEB86D391);
165
+ a=AddUnsigned(a,AA);
166
+ b=AddUnsigned(b,BB);
167
+ c=AddUnsigned(c,CC);
168
+ d=AddUnsigned(d,DD);
169
+ }
170
+
171
+ var temp = WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d);
172
+
173
+ return temp.toLowerCase();
174
+ }
@@ -171,7 +171,7 @@
171
171
  zimoli.go(menu);
172
172
  return result;
173
173
  };
174
- on("zimoli")(window, function (event) {
174
+ on("zimoli")(document, function (event) {
175
175
  var { zimoli } = event;
176
176
  data.setInstance("option-buttons", zimoli.options || [], false);
177
177
  var menu = getChild(zimoli);