speedo 0.1.9 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. data/app/assets/javascripts/speedo.js +12 -12
  2. data/app/views/layouts/speedo/application.html.haml +2 -2
  3. data/lib/speedo/sass.rb +1 -1
  4. data/lib/speedo/version.rb +1 -1
  5. data/test/dummy/log/development.log +889 -0
  6. data/test/dummy/tmp/cache/assets/BC8/350/sprockets%2F3357f02a74351649de62769431854154 +0 -0
  7. data/test/dummy/tmp/cache/assets/BFD/090/sprockets%2F50267839603d9c7384477250f0169f0e +0 -0
  8. data/test/dummy/tmp/cache/assets/C4F/220/sprockets%2F19a6a3539a4ed0526c356691798032a3 +0 -0
  9. data/test/dummy/tmp/cache/assets/C55/E10/sprockets%2F9da121566709335e3081059e7774a9bb +957 -0
  10. data/test/dummy/tmp/cache/assets/C5F/4E0/sprockets%2F4c17092a9c628e66645a4586e9b50717 +57 -0
  11. data/test/dummy/tmp/cache/assets/C82/BB0/sprockets%2F904cd2f9283528b32d94a1d2a6711489 +41 -0
  12. data/test/dummy/tmp/cache/assets/CDE/600/sprockets%2F205a8cce7806d7c77117f1dc263146a8 +0 -0
  13. data/test/dummy/tmp/cache/assets/CE0/930/sprockets%2Fb6670296cd6b3ce81034c8d5d31e5725 +8 -0
  14. data/test/dummy/tmp/cache/assets/CE1/3B0/sprockets%2Fe8865654d2d075e6bba1074193e443dc +350 -0
  15. data/test/dummy/tmp/cache/assets/CF5/F40/sprockets%2F72637ea0f394f68dcc931527509e79ec +0 -0
  16. data/test/dummy/tmp/cache/assets/CF9/7C0/sprockets%2F488b6dcdeb1301268a65202e7101ed2a +974 -0
  17. data/test/dummy/tmp/cache/assets/D0C/C60/sprockets%2F39d93fba83bb3b50a75826703c5a28c5 +311 -0
  18. data/test/dummy/tmp/cache/assets/D1D/D50/sprockets%2F5b87bedce3ae871f14e41e2479290866 +0 -0
  19. data/test/dummy/tmp/cache/assets/D2A/5C0/sprockets%2Fe12edc211b1935a76d3aab4e8716006d +394 -0
  20. data/test/dummy/tmp/cache/assets/D3A/090/sprockets%2F0d24039ad1b8ef3525e367fe51905fbb +11635 -0
  21. data/test/dummy/tmp/cache/assets/D3B/1E0/sprockets%2Fe5f2362b8b1eb8273f1a7764cbb15e35 +11618 -0
  22. data/test/dummy/tmp/cache/assets/D3D/F80/sprockets%2Fadfc8f7271b3a873f3462e149a6a34e0 +374 -0
  23. data/test/dummy/tmp/cache/assets/D3F/0A0/sprockets%2Fc4574a4ea12e8efe636123e1a17f7d66 +11773 -0
  24. data/test/dummy/tmp/cache/assets/D42/CB0/sprockets%2F6c01eb50fe79d82720a649960dee5dd0 +20 -0
  25. data/test/dummy/tmp/cache/assets/D49/2B0/sprockets%2F34363288c95affbe232a199c6938ceab +391 -0
  26. data/test/dummy/tmp/cache/assets/D5B/120/sprockets%2F525577d56abcec9969e805ddc2997fd0 +332 -0
  27. data/test/dummy/tmp/cache/assets/D65/820/sprockets%2F4e91290eae5edd2f4d287ca2952be000 +327 -0
  28. data/test/dummy/tmp/cache/assets/D6C/3D0/sprockets%2Fa62ebc5f479b52c204f4c71ea65594ca +55 -0
  29. data/test/dummy/tmp/cache/assets/D71/D90/sprockets%2F7bb9508df3d877f853823addd4b0a22b +19 -0
  30. data/test/dummy/tmp/cache/assets/D84/210/sprockets%2Fabd0103ccec2b428ac62c94e4c40b384 +0 -0
  31. data/test/dummy/tmp/cache/assets/D97/830/sprockets%2Fd55ede995a2705ab74db22acf510dd90 +0 -0
  32. data/test/dummy/tmp/cache/assets/D9B/400/sprockets%2Fec83dc0dc78764b460a3ffc063df25e0 +11789 -0
  33. data/test/dummy/tmp/cache/assets/DA1/670/sprockets%2Fb71f32bbfb530e59ad7a177cf54a888b +0 -0
  34. data/test/dummy/tmp/cache/assets/DA8/760/sprockets%2F1359bb83c703a91d57cfebdaf879a4d7 +9288 -0
  35. data/test/dummy/tmp/cache/assets/DB3/C60/sprockets%2F1ff86e3b1c5bf1c179ac719fced99829 +53 -0
  36. data/test/dummy/tmp/cache/assets/DBE/F80/sprockets%2F8647fc3439abdaa0eb161dadf2fc4304 +694 -0
  37. data/test/dummy/tmp/cache/assets/DC3/CC0/sprockets%2Fa04ece65c59a7a325cab61861da2be7e +0 -0
  38. data/test/dummy/tmp/cache/assets/DC5/290/sprockets%2F1c5dee9b02ab66fbf6e62627a13e27ba +37 -0
  39. data/test/dummy/tmp/cache/assets/DE9/520/sprockets%2Fe9f8259c99da2f355198dc4bcdebb69d +0 -0
  40. data/test/dummy/tmp/cache/assets/DEA/500/sprockets%2F485fc5ba3f81b49ccdd788885ea8de5e +0 -0
  41. data/test/dummy/tmp/cache/assets/DF2/CB0/sprockets%2F4500acae993e0fa07bd48dceee07e2b3 +0 -0
  42. data/test/dummy/tmp/cache/assets/DF9/EB0/sprockets%2Ffcaa51a13d86ac9cf245f2a5d70c9d8c +256 -0
  43. data/test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  44. data/test/dummy/tmp/cache/assets/E7F/BB0/sprockets%2Ffdeefdc424a13a04addae542356dffae +678 -0
  45. data/test/dummy/tmp/cache/assets/E82/D20/sprockets%2Fcdce4acb88dcbeaba64a06a254a9e09f +0 -0
  46. metadata +192 -88
  47. /data/vendor/assets/javascripts/{chosen.jquery.js → speedo/chosen.jquery.js} +0 -0
  48. /data/vendor/assets/javascripts/{jquery.autoSuggest.js → speedo/jquery.autoSuggest.js} +0 -0
  49. /data/vendor/assets/javascripts/{jquery.autogrow.js → speedo/jquery.autogrow.js} +0 -0
  50. /data/vendor/assets/javascripts/{jquery.dataTables.js → speedo/jquery.dataTables.js} +0 -0
  51. /data/vendor/assets/javascripts/{jquery.livequery.js → speedo/jquery.livequery.js} +0 -0
  52. /data/vendor/assets/javascripts/{jquery.mousewheel-3.0.4.pack.js → speedo/jquery.mousewheel-3.0.4.pack.js} +0 -0
  53. /data/vendor/assets/javascripts/{jquery.placeholder.min.js → speedo/jquery.placeholder.min.js} +0 -0
  54. /data/vendor/assets/javascripts/{jquery.spin.js → speedo/jquery.spin.js} +0 -0
  55. /data/vendor/assets/javascripts/{jquery.timeago.js → speedo/jquery.timeago.js} +0 -0
  56. /data/vendor/assets/javascripts/{jquery.tools.min.js → speedo/jquery.tools.min.js} +0 -0
  57. /data/vendor/assets/javascripts/{jquery.uniform.js → speedo/jquery.uniform.js} +0 -0
  58. /data/vendor/assets/javascripts/{modernizr.min.js → speedo/modernizr.min.js} +0 -0
  59. /data/vendor/assets/javascripts/{respond.js → speedo/respond.js} +0 -0
  60. /data/vendor/assets/javascripts/{spin.js → speedo/spin.js} +0 -0
  61. /data/vendor/assets/stylesheets/{autoSuggest.css → speedo/autoSuggest.css} +0 -0
  62. /data/vendor/assets/stylesheets/{chosen-sprite.png → speedo/chosen-sprite.png} +0 -0
  63. /data/vendor/assets/stylesheets/{chosen.css → speedo/chosen.css} +0 -0
  64. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/Sorting icons.psd +0 -0
  65. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/back_disabled.png +0 -0
  66. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/back_enabled.png +0 -0
  67. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/back_enabled_hover.png +0 -0
  68. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/favicon.ico +0 -0
  69. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/forward_disabled.png +0 -0
  70. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/forward_enabled.png +0 -0
  71. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/forward_enabled_hover.png +0 -0
  72. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/sort_asc.png +0 -0
  73. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/sort_asc_disabled.png +0 -0
  74. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/sort_both.png +0 -0
  75. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/sort_desc.png +0 -0
  76. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/sort_desc_disabled.png +0 -0
  77. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  78. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  79. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/ui-bg_glass_65_ffffff_1x400.png +0 -0
  80. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/ui-bg_glass_75_dadada_1x400.png +0 -0
  81. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  82. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/ui-bg_glass_75_ffffff_1x400.png +0 -0
  83. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  84. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/ui-bg_inset-soft_95_fef1ec_1x100.png +0 -0
  85. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/ui-icons_222222_256x240.png +0 -0
  86. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/ui-icons_2e83ff_256x240.png +0 -0
  87. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/ui-icons_454545_256x240.png +0 -0
  88. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/ui-icons_888888_256x240.png +0 -0
  89. /data/vendor/assets/stylesheets/{dataTables → speedo/dataTables}/ui-icons_cd0a0a_256x240.png +0 -0
  90. /data/vendor/assets/stylesheets/{formtastic-buttonless.css → speedo/formtastic-buttonless.css} +0 -0
  91. /data/vendor/assets/stylesheets/{gh-buttons.css → speedo/gh-buttons.css} +0 -0
  92. /data/vendor/assets/stylesheets/{gh-icons.png → speedo/gh-icons.png} +0 -0
  93. /data/vendor/assets/stylesheets/{jquery-ui-1.8.18.custom.css → speedo/jquery-ui-1.8.18.custom.css} +0 -0
  94. /data/vendor/assets/stylesheets/{jquery.dataTables.css → speedo/jquery.dataTables.css} +0 -0
  95. /data/vendor/assets/stylesheets/{jqueryui → speedo/jqueryui}/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  96. /data/vendor/assets/stylesheets/{jqueryui → speedo/jqueryui}/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  97. /data/vendor/assets/stylesheets/{jqueryui → speedo/jqueryui}/ui-bg_glass_65_ffffff_1x400.png +0 -0
  98. /data/vendor/assets/stylesheets/{jqueryui → speedo/jqueryui}/ui-bg_glass_75_dadada_1x400.png +0 -0
  99. /data/vendor/assets/stylesheets/{jqueryui → speedo/jqueryui}/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  100. /data/vendor/assets/stylesheets/{jqueryui → speedo/jqueryui}/ui-bg_glass_75_ffffff_1x400.png +0 -0
  101. /data/vendor/assets/stylesheets/{jqueryui → speedo/jqueryui}/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  102. /data/vendor/assets/stylesheets/{jqueryui → speedo/jqueryui}/ui-bg_inset-soft_95_fef1ec_1x100.png +0 -0
  103. /data/vendor/assets/stylesheets/{jqueryui → speedo/jqueryui}/ui-icons_222222_256x240.png +0 -0
  104. /data/vendor/assets/stylesheets/{jqueryui → speedo/jqueryui}/ui-icons_2e83ff_256x240.png +0 -0
  105. /data/vendor/assets/stylesheets/{jqueryui → speedo/jqueryui}/ui-icons_454545_256x240.png +0 -0
  106. /data/vendor/assets/stylesheets/{jqueryui → speedo/jqueryui}/ui-icons_888888_256x240.png +0 -0
  107. /data/vendor/assets/stylesheets/{jqueryui → speedo/jqueryui}/ui-icons_cd0a0a_256x240.png +0 -0
  108. /data/vendor/assets/stylesheets/{normalize.css → speedo/normalize.css} +0 -0
  109. /data/vendor/assets/stylesheets/{uniform → speedo/uniform}/bg-input-focus.png +0 -0
  110. /data/vendor/assets/stylesheets/{uniform → speedo/uniform}/bg-input.png +0 -0
  111. /data/vendor/assets/stylesheets/{uniform → speedo/uniform}/sprite-aristo.png +0 -0
  112. /data/vendor/assets/stylesheets/{uniform → speedo/uniform}/sprite.png +0 -0
  113. /data/vendor/assets/stylesheets/{uniform.default.css → speedo/uniform.default.css} +0 -0
@@ -0,0 +1,374 @@
1
+ o: ActiveSupport::Cache::Entry :@compressedF:@expires_in0:@created_atf1339771359.977772: @value{ I" length:EFi4I" digest;
2
+ F"%9f1f94f656e768387a73125c58a9650bI" source;
3
+ FI"4 /*
4
+ * AutoSuggest
5
+ * Copyright 2009-2010 Drew Wilson
6
+ * www.drewwilson.com
7
+ * code.drewwilson.com/entry/autosuggest-jquery-plugin
8
+ *
9
+ * Version 1.4 - Updated: Mar. 23, 2010
10
+ *
11
+ * This Plug-In will auto-complete or auto-suggest completed search queries
12
+ * for you as you type. You can add multiple selections and remove them on
13
+ * the fly. It supports keybord navigation (UP + DOWN + RETURN), as well
14
+ * as multiple AutoSuggest fields on the same page.
15
+ *
16
+ * Inspied by the Autocomplete plugin by: J�rn Zaefferer
17
+ * and the Facelist plugin by: Ian Tearle (iantearle.com)
18
+ *
19
+ * This AutoSuggest jQuery plug-in is dual licensed under the MIT and GPL licenses:
20
+ * http://www.opensource.org/licenses/mit-license.php
21
+ * http://www.gnu.org/licenses/gpl.html
22
+ */
23
+
24
+
25
+ (function($){
26
+ $.fn.autoSuggest = function(data, options) {
27
+ var defaults = {
28
+ asHtmlID: false,
29
+ startText: "Enter Name Here",
30
+ emptyText: "No Results Found",
31
+ preFill: {},
32
+ limitText: "No More Selections Are Allowed",
33
+ selectedItemProp: "value", //name of object property
34
+ selectedValuesProp: "value", //name of object property
35
+ searchObjProps: "value", //comma separated list of object property names
36
+ queryParam: "q",
37
+ retrieveLimit: false, //number for 'limit' param on ajax request
38
+ extraParams: "",
39
+ matchCase: false,
40
+ minChars: 1,
41
+ keyDelay: 400,
42
+ resultsHighlight: true,
43
+ neverSubmit: false,
44
+ selectionLimit: false,
45
+ showResultList: true,
46
+ start: function(){},
47
+ selectionClick: function(elem){},
48
+ selectionAdded: function(elem){},
49
+ selectionRemoved: function(elem){ elem.remove(); },
50
+ formatList: false, //callback function
51
+ beforeRetrieve: function(string){ return string; },
52
+ retrieveComplete: function(data){ return data; },
53
+ resultClick: function(data){},
54
+ resultsComplete: function(){}
55
+ };
56
+ var opts = $.extend(defaults, options);
57
+
58
+ var d_type = "object";
59
+ var d_count = 0;
60
+ if(typeof data == "string") {
61
+ d_type = "string";
62
+ var req_string = data;
63
+ } else {
64
+ var org_data = data;
65
+ for (k in data) if (data.hasOwnProperty(k)) d_count++;
66
+ }
67
+ if((d_type == "object" && d_count > 0) || d_type == "string"){
68
+ return this.each(function(x){
69
+ if(!opts.asHtmlID){
70
+ x = x+""+Math.floor(Math.random()*100); //this ensures there will be unique IDs on the page if autoSuggest() is called multiple times
71
+ var x_id = "as-input-"+x;
72
+ } else {
73
+ x = opts.asHtmlID;
74
+ var x_id = x;
75
+ }
76
+ opts.start.call(this);
77
+ var input = $(this);
78
+ input.attr("autocomplete","off").addClass("as-input").attr("id",x_id).val(opts.startText);
79
+ var input_focus = false;
80
+
81
+ // Setup basic elements and render them to the DOM
82
+ input.wrap('<ul class="as-selections" id="as-selections-'+x+'"></ul>').wrap('<li class="as-original" id="as-original-'+x+'"></li>');
83
+ var selections_holder = $("#as-selections-"+x);
84
+ var org_li = $("#as-original-"+x);
85
+ var results_holder = $('<div class="as-results" id="as-results-'+x+'"></div>').hide();
86
+ var results_ul = $('<ul class="as-list"></ul>');
87
+ var values_input = $('<input type="hidden" class="as-values" name="as_values_'+x+'" id="as-values-'+x+'" />');
88
+ var prefill_value = "";
89
+ if(typeof opts.preFill == "string"){
90
+ var vals = opts.preFill.split(",");
91
+ for(var i=0; i < vals.length; i++){
92
+ var v_data = {};
93
+ v_data[opts.selectedValuesProp] = vals[i];
94
+ if(vals[i] != ""){
95
+ add_selected_item(v_data, "000"+i);
96
+ }
97
+ }
98
+ prefill_value = opts.preFill;
99
+ } else {
100
+ prefill_value = "";
101
+ var prefill_count = 0;
102
+ for (k in opts.preFill) if (opts.preFill.hasOwnProperty(k)) prefill_count++;
103
+ if(prefill_count > 0){
104
+ for(var i=0; i < prefill_count; i++){
105
+ var new_v = opts.preFill[i][opts.selectedValuesProp];
106
+ if(new_v == undefined){ new_v = ""; }
107
+ prefill_value = prefill_value+new_v+",";
108
+ if(new_v != ""){
109
+ add_selected_item(opts.preFill[i], "000"+i);
110
+ }
111
+ }
112
+ }
113
+ }
114
+ if(prefill_value != ""){
115
+ input.val("");
116
+ var lastChar = prefill_value.substring(prefill_value.length-1);
117
+ if(lastChar != ","){ prefill_value = prefill_value+","; }
118
+ values_input.val(","+prefill_value);
119
+ $("li.as-selection-item", selections_holder).addClass("blur").removeClass("selected");
120
+ }
121
+ input.after(values_input);
122
+ selections_holder.click(function(){
123
+ input_focus = true;
124
+ input.focus();
125
+ }).mousedown(function(){ input_focus = false; }).after(results_holder);
126
+
127
+ var timeout = null;
128
+ var prev = "";
129
+ var totalSelections = 0;
130
+ var tab_press = false;
131
+
132
+ // Handle input field events
133
+ input.focus(function(){
134
+ if($(this).val() == opts.startText && values_input.val() == ""){
135
+ $(this).val("");
136
+ } else if(input_focus){
137
+ $("li.as-selection-item", selections_holder).removeClass("blur");
138
+ if($(this).val() != ""){
139
+ results_ul.css("width",selections_holder.outerWidth());
140
+ results_holder.show();
141
+ }
142
+ }
143
+ input_focus = true;
144
+ return true;
145
+ }).blur(function(){
146
+ if($(this).val() == "" && values_input.val() == "" && prefill_value == ""){
147
+ $(this).val(opts.startText);
148
+ } else if(input_focus){
149
+ $("li.as-selection-item", selections_holder).addClass("blur").removeClass("selected");
150
+ results_holder.hide();
151
+ }
152
+ }).keydown(function(e) {
153
+ // track last key pressed
154
+ lastKeyPressCode = e.keyCode;
155
+ first_focus = false;
156
+ switch(e.keyCode) {
157
+ case 38: // up
158
+ e.preventDefault();
159
+ moveSelection("up");
160
+ break;
161
+ case 40: // down
162
+ e.preventDefault();
163
+ moveSelection("down");
164
+ break;
165
+ case 8: // delete
166
+ if(input.val() == ""){
167
+ var last = values_input.val().split(",");
168
+ last = last[last.length - 2];
169
+ selections_holder.children().not(org_li.prev()).removeClass("selected");
170
+ if(org_li.prev().hasClass("selected")){
171
+ values_input.val(values_input.val().replace(","+last+",",","));
172
+ opts.selectionRemoved.call(this, org_li.prev());
173
+ } else {
174
+ opts.selectionClick.call(this, org_li.prev());
175
+ org_li.prev().addClass("selected");
176
+ }
177
+ }
178
+ if(input.val().length == 1){
179
+ results_holder.hide();
180
+ prev = "";
181
+ }
182
+ if($(":visible",results_holder).length > 0){
183
+ if (timeout){ clearTimeout(timeout); }
184
+ timeout = setTimeout(function(){ keyChange(); }, opts.keyDelay);
185
+ }
186
+ break;
187
+ case 9: case 188: // tab or comma
188
+ tab_press = true;
189
+ var i_input = input.val().replace(/(,)/g, "");
190
+ if(i_input != "" && values_input.val().search(","+i_input+",") < 0 && i_input.length >= opts.minChars){
191
+ e.preventDefault();
192
+ var n_data = {};
193
+ n_data[opts.selectedItemProp] = i_input;
194
+ n_data[opts.selectedValuesProp] = i_input;
195
+ var lis = $("li", selections_holder).length;
196
+ add_selected_item(n_data, "00"+(lis+1));
197
+ input.val("");
198
+ }
199
+ case 13: // return
200
+ tab_press = false;
201
+ var active = $("li.active:first", results_holder);
202
+ if(active.length > 0){
203
+ active.click();
204
+ results_holder.hide();
205
+ }
206
+ if(opts.neverSubmit || active.length > 0){
207
+ e.preventDefault();
208
+ }
209
+ break;
210
+ default:
211
+ if(opts.showResultList){
212
+ if(opts.selectionLimit && $("li.as-selection-item", selections_holder).length >= opts.selectionLimit){
213
+ results_ul.html('<li class="as-message">'+opts.limitText+'</li>');
214
+ results_holder.show();
215
+ } else {
216
+ if (timeout){ clearTimeout(timeout); }
217
+ timeout = setTimeout(function(){ keyChange(); }, opts.keyDelay);
218
+ }
219
+ }
220
+ break;
221
+ }
222
+ });
223
+
224
+ function keyChange() {
225
+ // ignore if the following keys are pressed: [del] [shift] [capslock]
226
+ if( lastKeyPressCode == 46 || (lastKeyPressCode > 8 && lastKeyPressCode < 32) ){ return results_holder.hide(); }
227
+ var string = input.val().replace(/[\\]+|[\/]+/g,"");
228
+ if (string == prev) return;
229
+ prev = string;
230
+ if (string.length >= opts.minChars) {
231
+ selections_holder.addClass("loading");
232
+ if(d_type == "string"){
233
+ var limit = "";
234
+ if(opts.retrieveLimit){
235
+ limit = "&limit="+encodeURIComponent(opts.retrieveLimit);
236
+ }
237
+ if(opts.beforeRetrieve){
238
+ string = opts.beforeRetrieve.call(this, string);
239
+ }
240
+ $.getJSON(req_string+"?"+opts.queryParam+"="+encodeURIComponent(string)+limit+opts.extraParams, function(data){
241
+ d_count = 0;
242
+ var new_data = opts.retrieveComplete.call(this, data);
243
+ for (k in new_data) if (new_data.hasOwnProperty(k)) d_count++;
244
+ processData(new_data, string);
245
+ });
246
+ } else {
247
+ if(opts.beforeRetrieve){
248
+ string = opts.beforeRetrieve.call(this, string);
249
+ }
250
+ processData(org_data, string);
251
+ }
252
+ } else {
253
+ selections_holder.removeClass("loading");
254
+ results_holder.hide();
255
+ }
256
+ }
257
+ var num_count = 0;
258
+ function processData(data, query){
259
+ if (!opts.matchCase){ query = query.toLowerCase(); }
260
+ var matchCount = 0;
261
+ results_holder.html(results_ul.html("")).hide();
262
+ for(var i=0;i<d_count;i++){
263
+ var num = i;
264
+ num_count++;
265
+ var forward = false;
266
+ if(opts.searchObjProps == "value") {
267
+ var str = data[num].value;
268
+ } else {
269
+ var str = "";
270
+ var names = opts.searchObjProps.split(",");
271
+ for(var y=0;y<names.length;y++){
272
+ var name = $.trim(names[y]);
273
+ str = str+data[num][name]+" ";
274
+ }
275
+ }
276
+ if(str){
277
+ if (!opts.matchCase){ str = str.toLowerCase(); }
278
+ if(str.search(query) != -1 && values_input.val().search(","+data[num][opts.selectedValuesProp]+",") == -1){
279
+ forward = true;
280
+ }
281
+ }
282
+ if(forward){
283
+ var formatted = $('<li class="as-result-item" id="as-result-item-'+num+'"></li>').click(function(){
284
+ var raw_data = $(this).data("data");
285
+ var number = raw_data.num;
286
+ if($("#as-selection-"+number, selections_holder).length <= 0 && !tab_press){
287
+ var data = raw_data.attributes;
288
+ input.val("").focus();
289
+ prev = "";
290
+ add_selected_item(data, number);
291
+ opts.resultClick.call(this, raw_data);
292
+ results_holder.hide();
293
+ }
294
+ tab_press = false;
295
+ }).mousedown(function(){ input_focus = false; }).mouseover(function(){
296
+ $("li", results_ul).removeClass("active");
297
+ $(this).addClass("active");
298
+ }).data("data",{attributes: data[num], num: num_count});
299
+ var this_data = $.extend({},data[num]);
300
+ if (!opts.matchCase){
301
+ var regx = new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + query + ")(?![^<>]*>)(?![^&;]+;)", "gi");
302
+ } else {
303
+ var regx = new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + query + ")(?![^<>]*>)(?![^&;]+;)", "g");
304
+ }
305
+
306
+ if(opts.resultsHighlight){
307
+ this_data[opts.selectedItemProp] = this_data[opts.selectedItemProp].replace(regx,"<em>$1</em>");
308
+ }
309
+ if(!opts.formatList){
310
+ formatted = formatted.html(this_data[opts.selectedItemProp]);
311
+ } else {
312
+ formatted = opts.formatList.call(this, this_data, formatted);
313
+ }
314
+ results_ul.append(formatted);
315
+ delete this_data;
316
+ matchCount++;
317
+ if(opts.retrieveLimit && opts.retrieveLimit == matchCount ){ break; }
318
+ }
319
+ }
320
+ selections_holder.removeClass("loading");
321
+ if(matchCount <= 0){
322
+ results_ul.html('<li class="as-message">'+opts.emptyText+'</li>');
323
+ }
324
+ results_ul.css("width", selections_holder.outerWidth());
325
+ results_holder.show();
326
+ opts.resultsComplete.call(this);
327
+ }
328
+
329
+ function add_selected_item(data, num){
330
+ values_input.val(values_input.val()+data[opts.selectedValuesProp]+",");
331
+ var item = $('<li class="as-selection-item" id="as-selection-'+num+'"></li>').click(function(){
332
+ opts.selectionClick.call(this, $(this));
333
+ selections_holder.children().removeClass("selected");
334
+ $(this).addClass("selected");
335
+ }).mousedown(function(){ input_focus = false; });
336
+ var close = $('<a class="as-close">&times;</a>').click(function(){
337
+ values_input.val(values_input.val().replace(","+data[opts.selectedValuesProp]+",",","));
338
+ opts.selectionRemoved.call(this, item);
339
+ input_focus = true;
340
+ input.focus();
341
+ return false;
342
+ });
343
+ org_li.before(item.html(data[opts.selectedItemProp]).prepend(close));
344
+ opts.selectionAdded.call(this, org_li.prev());
345
+ }
346
+
347
+ function moveSelection(direction){
348
+ if($(":visible",results_holder).length > 0){
349
+ var lis = $("li", results_holder);
350
+ if(direction == "down"){
351
+ var start = lis.eq(0);
352
+ } else {
353
+ var start = lis.filter(":last");
354
+ }
355
+ var active = $("li.active:first", results_holder);
356
+ if(active.length > 0){
357
+ if(direction == "down"){
358
+ start = active.next();
359
+ } else {
360
+ start = active.prev();
361
+ }
362
+ }
363
+ lis.removeClass("active");
364
+ start.addClass("active");
365
+ }
366
+ }
367
+
368
+ });
369
+ }
370
+ }
371
+ })(jQuery);
372
+ ;
373
+ TI"
374
+ F"%faa95be6238110330358518613f6cadf