byteoss 1.0.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 (105) hide show
  1. package/README.md +109 -0
  2. package/index.js +147 -0
  3. package/oss/059e300c-9447-401a-9160-bc09b94a5bd4.css +516 -0
  4. package/oss/0fb02e11-31af-4551-a92e-b4457ad4ab0d.svg +3 -0
  5. package/oss/139daa0c-24fd-4be3-b9c6-8e51f96f6b96.svg +3 -0
  6. package/oss/1600dbb0-15a5-483d-bdbc-84971697ad90.svg +15 -0
  7. package/oss/177f61e2-3422-4c87-8110-ff1615758f91.css +153 -0
  8. package/oss/18cab5b9-4981-4274-8c5f-1978588297b0.png +0 -0
  9. package/oss/1c9abd94-340f-4c18-92a3-d28c61a16bbb.js +936 -0
  10. package/oss/258f066d-7574-491d-ba06-0f2e67db0773.js +1 -0
  11. package/oss/28225623-cdb8-4d7b-afe7-a25b9cdf4c79.svg +4 -0
  12. package/oss/2b103172-c38e-4c9c-b67c-753ede400c6b.js +1 -0
  13. package/oss/2cd0609f-d7a7-4c53-a277-79e8dec5dfc6.svg +4 -0
  14. package/oss/332d0e76-3c05-4285-af16-13e9f9bbcbed.css +431 -0
  15. package/oss/36a32028-256f-465d-be90-a65d1df04a90.js +1 -0
  16. package/oss/370921ea-2b94-4c18-9d1a-785aa58bef86.js +770 -0
  17. package/oss/3e98311d-bbf6-40d6-82b7-52b710aca34a.css +198 -0
  18. package/oss/40117c3a-1925-4250-90bf-f3ef878ee97d.svg +3 -0
  19. package/oss/469b8af5-1826-4f55-826f-56d57a896563.js +1 -0
  20. package/oss/49f08903-6594-475c-aab6-4c15b41ebc3a.svg +28 -0
  21. package/oss/4a5a9153-2bd7-443c-b628-aee3d4d55fd6.js +300 -0
  22. package/oss/4f100f7b-f956-431f-93f9-1e9e3a103574.css +197 -0
  23. package/oss/4f14fb89-2a43-49d4-89fe-c245508b451f.js +1 -0
  24. package/oss/50863606-18e8-4eaa-b738-6e98b7ff791f.css +513 -0
  25. package/oss/54a1eff8-ecd1-4604-956e-91e461d0f704.js +705 -0
  26. package/oss/554a3dbe-14c7-4349-956a-236b08a149f6.css +124 -0
  27. package/oss/5cb13f6f-423d-41e9-a081-ce544bf322f1.css +513 -0
  28. package/oss/5fd8e893-8b05-452f-b914-26965c19fd31.svg +1 -0
  29. package/oss/6016b5f9-4473-44d9-9373-c761278cc244.js +2909 -0
  30. package/oss/630ebd92-9296-4c85-a18c-954545b9716b.mp4 +0 -0
  31. package/oss/66127685-903b-4261-bc3a-887459229b79.js +90 -0
  32. package/oss/6bf3a690-882e-47b2-a3bf-07600e1067d9.svg +1 -0
  33. package/oss/6d15d999-42a6-48f8-85dc-d6dd2547d33c.svg +10 -0
  34. package/oss/72ca2a33-968f-4bc4-ba39-417aca989e2a.svg +40 -0
  35. package/oss/74a7f15c-cf9e-41e5-a649-bc7a9960b89d.js +936 -0
  36. package/oss/754fca20-6995-4b15-bf56-2202c2107f41.svg +1 -0
  37. package/oss/7dbeba7d-92dc-4f24-981f-6ee5988326a3.js +90 -0
  38. package/oss/7ec89667-7160-44da-8c5d-8cb2e5b6ed51.css +144 -0
  39. package/oss/80254c08-1b12-4f32-bec9-b56251fb7b6e.svg +14 -0
  40. package/oss/80c9635a-2d99-483a-b46a-eec29d831dbc.svg +1 -0
  41. package/oss/83982b15-f2af-4c7d-98d1-9885c934adee.css +153 -0
  42. package/oss/842d27d8-4c7d-4655-bd81-d19376b9c779.ttf +0 -0
  43. package/oss/86e16498-0990-4f5f-9c78-919d6e901b3e.png +0 -0
  44. package/oss/871ce06b-adf2-4d23-893e-c929ed0dc660.css +1079 -0
  45. package/oss/875441a7-46aa-4510-b395-59d32129b643.js +84 -0
  46. package/oss/886aaec0-d95a-44c0-a809-b611c3a385bc.svg +1 -0
  47. package/oss/8870cb0a-075f-4296-8855-cf708905377f.js +51 -0
  48. package/oss/88a1fdfb-b313-4021-8c2e-97db3dddd4af.svg +26 -0
  49. package/oss/8bd1a260-f002-42d3-a288-9ec0270490ea.svg +14 -0
  50. package/oss/8d1ac209-5712-43a7-9d86-c4a1b4d6734a.json +1 -0
  51. package/oss/917711d3-9f92-4b63-804c-a17050b72502.svg +1 -0
  52. package/oss/92122f36-32a3-44ad-81f9-96427ad7d999.svg +4 -0
  53. package/oss/945aebff-92e3-4f5a-b3e1-9d891c525d95.js +19 -0
  54. package/oss/945aebff-92e3-4f5a-b3e1-9d891c525d95_bak.js +19 -0
  55. package/oss/94b77c89-093d-48ae-b363-9f6648f91ab6.css +2435 -0
  56. package/oss/9697873a-4c40-401e-addd-3736815acf10.svg +3 -0
  57. package/oss/9bd56993-3d11-4a5c-a682-a95e527da09e.svg +1 -0
  58. package/oss/9fa42c0c-617c-44a2-9bb9-aec8994af673.svg +1 -0
  59. package/oss/a25bc2e8-28e3-4bd2-b0cf-c4f577934119.svg +3 -0
  60. package/oss/a2e59c39-138a-4d1e-84c8-bc058454133f.js +434 -0
  61. package/oss/a5535c26-8363-4625-afa2-8fbbee4dab40.css +124 -0
  62. package/oss/a6a7c636-670b-4f99-aa6b-e5cb6f029327.ico +0 -0
  63. package/oss/a6f63612-b3d1-4aba-bf5f-0cd3055a7251.svg +1 -0
  64. package/oss/a85345e2-b625-4917-8c47-d85503226015.svg +12 -0
  65. package/oss/ab70067a-ed3f-4d8c-8776-cd1a7b67097d.svg +8 -0
  66. package/oss/abe3279f-b713-403f-b0d1-7efa24502c11.css +2251 -0
  67. package/oss/b10e7a02-f948-4c79-98a1-504ef025d37a.ttf +0 -0
  68. package/oss/b43dabdf-cf3d-4e74-aaec-46b451089b4b.svg +4 -0
  69. package/oss/b4e5962d-0b64-4667-89aa-bdbfc967f9d5.svg +12 -0
  70. package/oss/b7633fb4-4845-45b1-b516-b76bc0b31692.svg +10 -0
  71. package/oss/bd64bd8e-ad36-4b30-bc3f-047f0b5472af.eot +0 -0
  72. package/oss/be75e4b2-9d84-41a1-b2ad-941100c6eb9f.svg +1 -0
  73. package/oss/bf600662-21bc-427a-a3ff-c7148bfb7a37.css +516 -0
  74. package/oss/bktjgd.js +0 -0
  75. package/oss/bktjwb.js +0 -0
  76. package/oss/c1c43d05-3fe7-4f66-92c3-a4e673de15d2.css +126 -0
  77. package/oss/c40e78e1-28a9-403f-9bb6-6a61bb759f3c.svg +9 -0
  78. package/oss/c5e67efa-03ef-4285-9eb2-979d24b97b0a.js +505 -0
  79. package/oss/ca88122c-71f0-4bdb-801b-845c3e2416c0.js +57 -0
  80. package/oss/ce7d2a57-04d3-4320-95de-a1acb29c2299.svg +1 -0
  81. package/oss/cf261a0a-f683-4e12-92c1-98c42038da76.js +301 -0
  82. package/oss/d13ba061-af1c-420f-a700-4a8c175a6d90.js +51 -0
  83. package/oss/d820804f-af30-4364-b882-9d7b23e98353.js +1 -0
  84. package/oss/dae77962-f0f3-487f-bfff-1251e44b3d98.js +313 -0
  85. package/oss/db0b6693-9a13-4a89-9c67-82a5c2208ed9.svg +1 -0
  86. package/oss/dd3a7016-cf8c-493c-ba87-c7da470f9307.svg +1 -0
  87. package/oss/dd4c56f1-700e-49b8-a40f-530ed2e06934.svg +1 -0
  88. package/oss/de85749c-9ab2-4798-a080-1dafbd2bb89a.css +393 -0
  89. package/oss/dfd0db36-8259-4d6e-a426-7c1167c7657d.svg +18 -0
  90. package/oss/e082736c-726c-4029-b3ce-6c89d83ad9ce.css +3177 -0
  91. package/oss/e0efdb0b-2cf8-41fe-b862-7560a8d957e3.js +193 -0
  92. package/oss/e1d3a1a8-c200-47de-bba9-b92aa112010b.svg +1 -0
  93. package/oss/e937b5e0-2285-474e-84e7-5c478f305280.js +775 -0
  94. package/oss/ed850ceb-a7a3-47f4-9d2e-d6fd2666a8c9.js +936 -0
  95. package/oss/ee0c80ad-d7cb-464f-aa4a-a7f439d76ae8.js +665 -0
  96. package/oss/ef62fbf5-a876-4112-8062-c97b5341f1b9.css +653 -0
  97. package/oss/f343adb3-110f-445e-80b4-abca81ff558a.js +787 -0
  98. package/oss/f4d90992-79bf-4a51-a2d7-7d556fac63d3.js +1 -0
  99. package/oss/f59f0ec0-974b-496d-a518-dfb79e0ecec0.js +51 -0
  100. package/oss/f68472c9-1d02-451a-be1f-6d5f0fa2c6fd.css +145 -0
  101. package/oss/f7b46b4d-6311-4416-95b0-e18ad577c166.css +1 -0
  102. package/oss/home.css +459 -0
  103. package/oss/mjandjlbgd.js +0 -0
  104. package/oss/mjandjlbwb.js +0 -0
  105. package/package.json +17 -0
@@ -0,0 +1,665 @@
1
+ /*
2
+ * jQuery Autocomplete plugin 1.1
3
+ *
4
+ * Copyright (c) 2009 Jörn Zaefferer
5
+ *
6
+ * Dual licensed under the MIT and GPL licenses:
7
+ * http://www.opensource.org/licenses/mit-license.php
8
+ * http://www.gnu.org/licenses/gpl.html
9
+ *
10
+ * Revision: $Id: jquery.autocomplete.js 15 2009-08-22 10:30:27Z joern.zaefferer $
11
+ */;
12
+ $.browser = navigator.userAgent;
13
+ (function($) {
14
+ $.fn.extend({
15
+ autocomplete: function(urlOrData, options) {
16
+ var isUrl = typeof urlOrData == "string";
17
+ options = $.extend({}, $.Autocompleter.defaults, {
18
+ url: isUrl ? urlOrData : null,
19
+ data: isUrl ? null : urlOrData,
20
+ delay: isUrl ? $.Autocompleter.defaults.delay : 10,
21
+ max: options && !options.scroll ? 10 : 150
22
+ }, options);
23
+ options.highlight = options.highlight ||
24
+ function(value) {
25
+ return value;
26
+ };
27
+ options.formatMatch = options.formatMatch || options.formatItem;
28
+ return this.each(function() {
29
+ new $.Autocompleter(this, options);
30
+ });
31
+ },
32
+ result: function(handler) {
33
+ return this.bind("result", handler);
34
+ },
35
+ search: function(handler) {
36
+ return this.trigger("search", [handler]);
37
+ },
38
+ flushCache: function() {
39
+ return this.trigger("flushCache");
40
+ },
41
+ setOptions: function(options) {
42
+ return this.trigger("setOptions", [options]);
43
+ },
44
+ unautocomplete: function() {
45
+ return this.trigger("unautocomplete");
46
+ }
47
+ });
48
+ $.Autocompleter = function(input, options) {
49
+ var KEY = {
50
+ UP: 38,
51
+ DOWN: 40,
52
+ DEL: 46,
53
+ TAB: 9,
54
+ RETURN: 13,
55
+ ESC: 27,
56
+ COMMA: 188,
57
+ PAGEUP: 33,
58
+ PAGEDOWN: 34,
59
+ BACKSPACE: 8
60
+ };
61
+ var $input = $(input).attr("autocomplete", "off").addClass(options.inputClass);
62
+ var timeout;
63
+ var previousValue = "";
64
+ var cache = $.Autocompleter.Cache(options);
65
+ var hasFocus = 0;
66
+ var lastKeyPressCode;
67
+ var config = {
68
+ mouseDownOnSelect: false
69
+ };
70
+ var select = $.Autocompleter.Select(options, input, selectCurrent, config);
71
+ var blockSubmit;
72
+ $.browser.opera && $(input.form).bind("submit.autocomplete", function() {
73
+ if (blockSubmit) {
74
+ blockSubmit = false;
75
+ return false;
76
+ }
77
+ });
78
+ $input.bind(($.browser.opera ? "keypress" : "keydown") + ".autocomplete", function(event) {
79
+ hasFocus = 1;
80
+ lastKeyPressCode = event.keyCode;
81
+ switch (event.keyCode) {
82
+ case KEY.UP:
83
+ event.preventDefault();
84
+ if (select.visible()) {
85
+ select.prev();
86
+ } else {
87
+ onChange(0, true);
88
+ }
89
+ break;
90
+ case KEY.DOWN:
91
+ event.preventDefault();
92
+ if (select.visible()) {
93
+ select.next();
94
+ } else {
95
+ onChange(0, true);
96
+ }
97
+ break;
98
+ case KEY.PAGEUP:
99
+ event.preventDefault();
100
+ if (select.visible()) {
101
+ select.pageUp();
102
+ } else {
103
+ onChange(0, true);
104
+ }
105
+ break;
106
+ case KEY.PAGEDOWN:
107
+ event.preventDefault();
108
+ if (select.visible()) {
109
+ select.pageDown();
110
+ } else {
111
+ onChange(0, true);
112
+ }
113
+ break;
114
+ case options.multiple && $.trim(options.multipleSeparator) == "," && KEY.COMMA:
115
+
116
+ case KEY.TAB:
117
+ if( selectCurrent() ) {
118
+ // stop default to prevent a form submit, Opera needs special handling
119
+ event.preventDefault();
120
+ blockSubmit = true;
121
+ return false;
122
+ }
123
+ break;
124
+ case KEY.RETURN:
125
+ clearTimeout(timeout);
126
+ timeout = setTimeout(onChange, options.delay);
127
+ break;
128
+ case KEY.ESC:
129
+ select.hide();
130
+ break;
131
+ default:
132
+ clearTimeout(timeout);
133
+ timeout = setTimeout(onChange, options.delay);
134
+ break;
135
+ }
136
+ }).focus(function() {
137
+ hasFocus++;
138
+ }).blur(function() {
139
+ hasFocus = 0;
140
+ if (!config.mouseDownOnSelect) {
141
+ hideResults();
142
+ }
143
+ }).click(function() {
144
+ if (hasFocus++ > 1 && !select.visible()) {
145
+ onChange(0, true);
146
+ }
147
+ }).bind("search", function() {
148
+ var fn = (arguments.length > 1) ? arguments[1] : null;
149
+
150
+ function findValueCallback(q, data) {
151
+ var result;
152
+ if (data && data.length) {
153
+ for (var i = 0; i < data.length; i++) {
154
+ if (data[i].result.toLowerCase() == q.toLowerCase()) {
155
+ result = data[i];
156
+ break;
157
+ }
158
+ }
159
+ }
160
+ if (typeof fn == "function") fn(result);
161
+ else $input.trigger("result", result && [result.data, result.value]);
162
+ }
163
+ $.each(trimWords($input.val()), function(i, value) {
164
+ request(value, findValueCallback, findValueCallback);
165
+ });
166
+ }).bind("flushCache", function() {
167
+ cache.flush();
168
+ }).bind("setOptions", function() {
169
+ $.extend(options, arguments[1]);
170
+ if ("data" in arguments[1]) cache.populate();
171
+ }).bind("unautocomplete", function() {
172
+ select.unbind();
173
+ $input.unbind();
174
+ $(input.form).unbind(".autocomplete");
175
+ });
176
+
177
+ function selectCurrent() {
178
+ var selected = select.selected();
179
+ if (!selected) return false;
180
+ var v = selected.result;
181
+ previousValue = v;
182
+ if (options.multiple) {
183
+ var words = trimWords($input.val());
184
+ if (words.length > 1) {
185
+ var seperator = options.multipleSeparator.length;
186
+ var cursorAt = $(input).selection().start;
187
+ var wordAt, progress = 0;
188
+ $.each(words, function(i, word) {
189
+ progress += word.length;
190
+ if (cursorAt <= progress) {
191
+ wordAt = i;
192
+ return false;
193
+ }
194
+ progress += seperator;
195
+ });
196
+ words[wordAt] = v;
197
+ v = words.join(options.multipleSeparator);
198
+ }
199
+ v += options.multipleSeparator;
200
+ }
201
+ $input.val(v);
202
+ hideResultsNow();
203
+ $input.trigger("result", [selected.data, selected.value]);
204
+ return true;
205
+ }
206
+ function onChange(crap, skipPrevCheck) {
207
+ if (lastKeyPressCode == KEY.DEL) {
208
+ select.hide();
209
+ return;
210
+ }
211
+ var currentValue = $input.val();
212
+ if (!skipPrevCheck && currentValue == previousValue) return;
213
+ previousValue = currentValue;
214
+ currentValue = lastWord(currentValue);
215
+ if (currentValue.length >= options.minChars) {
216
+ $input.addClass(options.loadingClass);
217
+ if (!options.matchCase) currentValue = currentValue.toLowerCase();
218
+ request(currentValue, receiveData, hideResultsNow);
219
+ } else {
220
+ stopLoading();
221
+ select.hide();
222
+ }
223
+ };
224
+
225
+ function trimWords(value) {
226
+ if (!value) return [""];
227
+ if (!options.multiple) return [$.trim(value)];
228
+ return $.map(value.split(options.multipleSeparator), function(word) {
229
+ return $.trim(value).length ? $.trim(word) : null;
230
+ });
231
+ }
232
+ function lastWord(value) {
233
+ if (!options.multiple) return value;
234
+ var words = trimWords(value);
235
+ if (words.length == 1) return words[0];
236
+ var cursorAt = $(input).selection().start;
237
+ if (cursorAt == value.length) {
238
+ words = trimWords(value)
239
+ } else {
240
+ words = trimWords(value.replace(value.substring(cursorAt), ""));
241
+ }
242
+ return words[words.length - 1];
243
+ }
244
+ function autoFill(q, sValue) {
245
+ if (options.autoFill && (lastWord($input.val()).toLowerCase() == q.toLowerCase()) && lastKeyPressCode != KEY.BACKSPACE) {
246
+ $input.val($input.val() + sValue.substring(lastWord(previousValue).length));
247
+ $(input).selection(previousValue.length, previousValue.length + sValue.length);
248
+ }
249
+ };
250
+
251
+ function hideResults() {
252
+ clearTimeout(timeout);
253
+ timeout = setTimeout(hideResultsNow, 200);
254
+ };
255
+
256
+ function hideResultsNow() {
257
+ var wasVisible = select.visible();
258
+ select.hide();
259
+ clearTimeout(timeout);
260
+ stopLoading();
261
+ if (options.mustMatch) {
262
+ $input.search(function(result) {
263
+ if (!result) {
264
+ if (options.multiple) {
265
+ var words = trimWords($input.val()).slice(0, -1);
266
+ $input.val(words.join(options.multipleSeparator) + (words.length ? options.multipleSeparator : ""));
267
+ } else {
268
+ $input.val("");
269
+ $input.trigger("result", null);
270
+ }
271
+ }
272
+ });
273
+ }
274
+ };
275
+
276
+ function receiveData(q, data) {
277
+ if (data && data.length && hasFocus) {
278
+ stopLoading();
279
+ select.display(data, q);
280
+ autoFill(q, data[0].value);
281
+ select.show();
282
+ } else {
283
+ hideResultsNow();
284
+ }
285
+ };
286
+
287
+ function request(term, success, failure) {
288
+ if (!options.matchCase) term = term.toLowerCase();
289
+ var data = cache.load(term);
290
+ if (data && data.length) {
291
+ success(term, data);
292
+ } else if ((typeof options.url == "string") && (options.url.length > 0)) {
293
+ var extraParams = {
294
+ timestamp: +new Date()
295
+ };
296
+ $.each(options.extraParams, function(key, param) {
297
+ extraParams[key] = typeof param == "function" ? param() : param;
298
+ });
299
+ $.ajax({
300
+ mode: "abort",
301
+ port: "autocomplete" + input.name,
302
+ dataType: options.dataType,
303
+ url: options.url,
304
+ data: $.extend({
305
+ wd: lastWord(term),
306
+ limit: options.max
307
+ }, extraParams),
308
+ success: function(data) {
309
+ var parsed = options.parse && options.parse(data) || parse(data);
310
+ cache.add(term, parsed);
311
+ success(term, parsed);
312
+ }
313
+ });
314
+ } else {
315
+ select.emptyList();
316
+ failure(term);
317
+ }
318
+ };
319
+
320
+ function parse(data) {
321
+ var parsed = [];
322
+ var rows = data.split("\n");
323
+ for (var i = 0; i < rows.length; i++) {
324
+ var row = $.trim(rows[i]);
325
+ if (row) {
326
+ row = row.split("|");
327
+ parsed[parsed.length] = {
328
+ data: row,
329
+ value: row[0],
330
+ result: options.formatResult && options.formatResult(row, row[0]) || row[0]
331
+ };
332
+ }
333
+ }
334
+ return parsed;
335
+ };
336
+
337
+ function stopLoading() {
338
+ $input.removeClass(options.loadingClass);
339
+ };
340
+ };
341
+ $.Autocompleter.defaults = {
342
+ inputClass: "ac_input",
343
+ resultsClass: "ac_results",
344
+ loadingClass: "ac_loading",
345
+ minChars: 1,
346
+ delay: 400,
347
+ matchCase: false,
348
+ matchSubset: true,
349
+ matchContains: false,
350
+ cacheLength: 10,
351
+ max: 100,
352
+ mustMatch: false,
353
+ extraParams: {},
354
+ selectFirst: true,
355
+ formatItem: function(row) {
356
+ return row[0];
357
+ },
358
+ formatMatch: null,
359
+ autoFill: false,
360
+ width: 0,
361
+ multiple: false,
362
+ multipleSeparator: ", ",
363
+ highlight: function(value, term) {
364
+ return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1") + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>");
365
+ },
366
+ scroll: true,
367
+ scrollHeight: 180
368
+ };
369
+ $.Autocompleter.Cache = function(options) {
370
+ var data = {};
371
+ var length = 0;
372
+
373
+ function matchSubset(s, sub) {
374
+ if (!options.matchCase) s = s.toLowerCase();
375
+ var i = s.indexOf(sub);
376
+ if (options.matchContains == "word") {
377
+ i = s.toLowerCase().search("\\b" + sub.toLowerCase());
378
+ }
379
+ if (i == -1) return false;
380
+ return i == 0 || options.matchContains;
381
+ };
382
+
383
+ function add(q, value) {
384
+ if (length > options.cacheLength) {
385
+ flush();
386
+ }
387
+ if (!data[q]) {
388
+ length++;
389
+ }
390
+ data[q] = value;
391
+ }
392
+ function populate() {
393
+ if (!options.data) return false;
394
+ var stMatchSets = {},
395
+ nullData = 0;
396
+ if (!options.url) options.cacheLength = 1;
397
+ stMatchSets[""] = [];
398
+ for (var i = 0, ol = options.data.length; i < ol; i++) {
399
+ var rawValue = options.data[i];
400
+ rawValue = (typeof rawValue == "string") ? [rawValue] : rawValue;
401
+ var value = options.formatMatch(rawValue, i + 1, options.data.length);
402
+ if (value === false) continue;
403
+ var firstChar = value.charAt(0).toLowerCase();
404
+ if (!stMatchSets[firstChar]) stMatchSets[firstChar] = [];
405
+ var row = {
406
+ value: value,
407
+ data: rawValue,
408
+ result: options.formatResult && options.formatResult(rawValue) || value
409
+ };
410
+ stMatchSets[firstChar].push(row);
411
+ if (nullData++ < options.max) {
412
+ stMatchSets[""].push(row);
413
+ }
414
+ };
415
+ $.each(stMatchSets, function(i, value) {
416
+ options.cacheLength++;
417
+ add(i, value);
418
+ });
419
+ }
420
+ setTimeout(populate, 25);
421
+
422
+ function flush() {
423
+ data = {};
424
+ length = 0;
425
+ }
426
+ return {
427
+ flush: flush,
428
+ add: add,
429
+ populate: populate,
430
+ load: function(q) {
431
+ if (!options.cacheLength || !length) return null;
432
+ if (!options.url && options.matchContains) {
433
+ var csub = [];
434
+ for (var k in data) {
435
+ if (k.length > 0) {
436
+ var c = data[k];
437
+ $.each(c, function(i, x) {
438
+ if (matchSubset(x.value, q)) {
439
+ csub.push(x);
440
+ }
441
+ });
442
+ }
443
+ }
444
+ return csub;
445
+ } else if (data[q]) {
446
+ return data[q];
447
+ } else if (options.matchSubset) {
448
+ for (var i = q.length - 1; i >= options.minChars; i--) {
449
+ var c = data[q.substr(0, i)];
450
+ if (c) {
451
+ var csub = [];
452
+ $.each(c, function(i, x) {
453
+ if (matchSubset(x.value, q)) {
454
+ csub[csub.length] = x;
455
+ }
456
+ });
457
+ return csub;
458
+ }
459
+ }
460
+ }
461
+ return null;
462
+ }
463
+ };
464
+ };
465
+ $.Autocompleter.Select = function(options, input, select, config) {
466
+ var CLASSES = {
467
+ ACTIVE: "ac_over"
468
+ };
469
+ var listItems, active = -1,
470
+ data, term = "",
471
+ needsInit = true,
472
+ element, list;
473
+
474
+ function init() {
475
+ if (!needsInit) return;
476
+ element = $("<div/>").hide().addClass(options.resultsClass).css("position", "absolute").appendTo(document.body);
477
+ list = $("<ul/>").appendTo(element).mouseover(function(event) {
478
+ if (target(event).nodeName && target(event).nodeName.toUpperCase() == 'LI') {
479
+ active = $("li", list).removeClass(CLASSES.ACTIVE).index(target(event));
480
+ $(target(event)).addClass(CLASSES.ACTIVE);
481
+ }
482
+ }).click(function(event) {
483
+ $(target(event)).addClass(CLASSES.ACTIVE);
484
+ select();
485
+ input.focus();
486
+ return false;
487
+ }).mousedown(function() {
488
+ config.mouseDownOnSelect = true;
489
+ }).mouseup(function() {
490
+ config.mouseDownOnSelect = false;
491
+ });
492
+ if (options.width > 0) element.css("width", options.width);
493
+ needsInit = false;
494
+ }
495
+ function target(event) {
496
+ var element = event.target;
497
+ while (element && element.tagName != "LI") element = element.parentNode;
498
+ if (!element) return [];
499
+ return element;
500
+ }
501
+ function moveSelect(step) {
502
+ listItems.slice(active, active + 1).removeClass(CLASSES.ACTIVE);
503
+ movePosition(step);
504
+ var activeItem = listItems.slice(active, active + 1).addClass(CLASSES.ACTIVE);
505
+ if (options.scroll) {
506
+ var offset = 0;
507
+ listItems.slice(0, active).each(function() {
508
+ offset += this.offsetHeight;
509
+ });
510
+ if ((offset + activeItem[0].offsetHeight - list.scrollTop()) > list[0].clientHeight) {
511
+ list.scrollTop(offset + activeItem[0].offsetHeight - list.innerHeight());
512
+ } else if (offset < list.scrollTop()) {
513
+ list.scrollTop(offset);
514
+ }
515
+ }
516
+ };
517
+
518
+ function movePosition(step) {
519
+ active += step;
520
+ if (active < 0) {
521
+ active = listItems.size() - 1;
522
+ } else if (active >= listItems.size()) {
523
+ active = 0;
524
+ }
525
+ }
526
+ function limitNumberOfItems(available) {
527
+ return options.max && options.max < available ? options.max : available;
528
+ }
529
+ function fillList() {
530
+ list.empty();
531
+ var max = limitNumberOfItems(data.length);
532
+ for (var i = 0; i < max; i++) {
533
+ if (!data[i]) continue;
534
+ var formatted = options.formatItem(data[i].data, i + 1, max, data[i].value, term);
535
+ if (formatted === false) continue;
536
+ var li = $("<li/>").html(options.highlight(formatted, term)).addClass(i % 2 == 0 ? "ac_even" : "ac_odd").appendTo(list)[0];
537
+ $.data(li, "ac_data", data[i]);
538
+ }
539
+ listItems = list.find("li");
540
+ if (options.selectFirst) {
541
+ listItems.slice(0, 1).addClass(CLASSES.ACTIVE);
542
+ active = 0;
543
+ }
544
+ if ($.fn.bgiframe) list.bgiframe();
545
+ }
546
+ return {
547
+ display: function(d, q) {
548
+ init();
549
+ data = d;
550
+ term = q;
551
+ fillList();
552
+ },
553
+ next: function() {
554
+ moveSelect(1);
555
+ },
556
+ prev: function() {
557
+ moveSelect(-1);
558
+ },
559
+ pageUp: function() {
560
+ if (active != 0 && active - 8 < 0) {
561
+ moveSelect(-active);
562
+ } else {
563
+ moveSelect(-8);
564
+ }
565
+ },
566
+ pageDown: function() {
567
+ if (active != listItems.size() - 1 && active + 8 > listItems.size()) {
568
+ moveSelect(listItems.size() - 1 - active);
569
+ } else {
570
+ moveSelect(8);
571
+ }
572
+ },
573
+ hide: function() {
574
+ element && element.hide();
575
+ listItems && listItems.removeClass(CLASSES.ACTIVE);
576
+ active = -1;
577
+ },
578
+ visible: function() {
579
+ return element && element.is(":visible");
580
+ },
581
+ current: function() {
582
+ return this.visible() && (listItems.filter("." + CLASSES.ACTIVE)[0] || options.selectFirst && listItems[0]);
583
+ },
584
+ show: function() {
585
+ var offset = $(input).offset();
586
+ element.css({
587
+ width: typeof options.width == "string" || options.width > 0 ? options.width : $(input).width(),
588
+ top: offset.top + input.offsetHeight,
589
+ left: offset.left
590
+ }).show();
591
+ if (options.scroll) {
592
+ list.scrollTop(0);
593
+ list.css({
594
+ maxHeight: options.scrollHeight,
595
+ overflow: 'auto'
596
+ });
597
+ if ($.browser.msie && typeof document.body.style.maxHeight === "undefined") {
598
+ var listHeight = 0;
599
+ listItems.each(function() {
600
+ listHeight += this.offsetHeight;
601
+ });
602
+ var scrollbarsVisible = listHeight > options.scrollHeight;
603
+ list.css('height', scrollbarsVisible ? options.scrollHeight : listHeight);
604
+ if (!scrollbarsVisible) {
605
+ listItems.width(list.width() - parseInt(listItems.css("padding-left")) - parseInt(listItems.css("padding-right")));
606
+ }
607
+ }
608
+ }
609
+ },
610
+ selected: function() {
611
+ var selected = listItems && listItems.filter("." + CLASSES.ACTIVE).removeClass(CLASSES.ACTIVE);
612
+ return selected && selected.length && $.data(selected[0], "ac_data");
613
+ },
614
+ emptyList: function() {
615
+ list && list.empty();
616
+ },
617
+ unbind: function() {
618
+ element && element.remove();
619
+ }
620
+ };
621
+ };
622
+ $.fn.selection = function(start, end) {
623
+ if (start !== undefined) {
624
+ return this.each(function() {
625
+ if (this.createTextRange) {
626
+ var selRange = this.createTextRange();
627
+ if (end === undefined || start == end) {
628
+ selRange.move("character", start);
629
+ selRange.select();
630
+ } else {
631
+ selRange.collapse(true);
632
+ selRange.moveStart("character", start);
633
+ selRange.moveEnd("character", end);
634
+ selRange.select();
635
+ }
636
+ } else if (this.setSelectionRange) {
637
+ this.setSelectionRange(start, end);
638
+ } else if (this.selectionStart) {
639
+ this.selectionStart = start;
640
+ this.selectionEnd = end;
641
+ }
642
+ });
643
+ }
644
+ var field = this[0];
645
+ if (field.createTextRange) {
646
+ var range = document.selection.createRange(),
647
+ orig = field.value,
648
+ teststring = "<->",
649
+ textLength = range.text.length;
650
+ range.text = teststring;
651
+ var caretAt = field.value.indexOf(teststring);
652
+ field.value = orig;
653
+ this.selection(caretAt, caretAt + textLength);
654
+ return {
655
+ start: caretAt,
656
+ end: caretAt + textLength
657
+ }
658
+ } else if (field.selectionStart !== undefined) {
659
+ return {
660
+ start: field.selectionStart,
661
+ end: field.selectionEnd
662
+ }
663
+ }
664
+ };
665
+ })(jQuery);