[ Index ] |
PHP Cross Reference of vtigercrm-6.1.0 |
[Summary view] [Print] [Text view]
1 // Chosen, a Select Box Enhancer for jQuery and Protoype 2 // by Patrick Filler for Harvest, http://getharvest.com 3 // 4 // Version 0.9.5 5 // Full source at https://github.com/harvesthq/chosen 6 // Copyright (c) 2011 Harvest http://getharvest.com 7 8 // MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md 9 // This file is generated by `cake build`, do not edit it by hand. 10 (function() { 11 var SelectParser; 12 SelectParser = (function() { 13 function SelectParser() { 14 this.options_index = 0; 15 this.parsed = []; 16 } 17 SelectParser.prototype.add_node = function(child) { 18 if (child.nodeName === "OPTGROUP") { 19 return this.add_group(child); 20 } else { 21 return this.add_option(child); 22 } 23 }; 24 SelectParser.prototype.add_group = function(group) { 25 var group_position, option, _i, _len, _ref, _results; 26 group_position = this.parsed.length; 27 this.parsed.push({ 28 array_index: group_position, 29 group: true, 30 label: group.label, 31 children: 0, 32 disabled: group.disabled 33 }); 34 _ref = group.childNodes; 35 _results = []; 36 for (_i = 0, _len = _ref.length; _i < _len; _i++) { 37 option = _ref[_i]; 38 _results.push(this.add_option(option, group_position, group.disabled)); 39 } 40 return _results; 41 }; 42 SelectParser.prototype.add_option = function(option, group_position, group_disabled) { 43 if (option.nodeName === "OPTION") { 44 if (option.text !== "") { 45 if (group_position != null) { 46 this.parsed[group_position].children += 1; 47 } 48 this.parsed.push({ 49 array_index: this.parsed.length, 50 options_index: this.options_index, 51 value: option.value, 52 text: option.text, 53 html: option.innerHTML, 54 selected: option.selected, 55 disabled: group_disabled === true ? group_disabled : option.disabled, 56 group_array_index: group_position, 57 classes: option.className, 58 style: option.style.cssText 59 }); 60 } else { 61 this.parsed.push({ 62 array_index: this.parsed.length, 63 options_index: this.options_index, 64 empty: true 65 }); 66 } 67 return this.options_index += 1; 68 } 69 }; 70 return SelectParser; 71 })(); 72 SelectParser.select_to_array = function(select) { 73 var child, parser, _i, _len, _ref; 74 parser = new SelectParser(); 75 _ref = select.childNodes; 76 for (_i = 0, _len = _ref.length; _i < _len; _i++) { 77 child = _ref[_i]; 78 parser.add_node(child); 79 } 80 return parser.parsed; 81 }; 82 this.SelectParser = SelectParser; 83 }).call(this); 84 (function() { 85 /* 86 Chosen source: generate output using 'cake build' 87 Copyright (c) 2011 by Harvest 88 */ 89 var AbstractChosen, root; 90 var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; 91 root = this; 92 AbstractChosen = (function() { 93 function AbstractChosen(form_field, options) { 94 this.form_field = form_field; 95 this.options = options != null ? options : {}; 96 this.set_default_values(); 97 this.is_multiple = this.form_field.multiple; 98 this.default_text_default = this.is_multiple ? "Select Some Options" : "Select an Option"; 99 this.setup(); 100 this.set_up_html(); 101 this.register_observers(); 102 this.finish_setup(); 103 } 104 AbstractChosen.prototype.set_default_values = function() { 105 this.click_test_action = __bind(function(evt) { 106 return this.test_active_click(evt); 107 }, this); 108 this.activate_action = __bind(function(evt) { 109 return this.activate_field(evt); 110 }, this); 111 this.active_field = false; 112 this.mouse_on_container = false; 113 this.results_showing = false; 114 this.result_highlighted = null; 115 this.result_single_selected = null; 116 this.allow_single_deselect = (this.options.allow_single_deselect != null) && (this.form_field.options[0] != null) && this.form_field.options[0].text === "" ? this.options.allow_single_deselect : false; 117 this.disable_search_threshold = this.options.disable_search_threshold || 0; 118 this.choices = 0; 119 return this.results_none_found = this.options.no_results_text || "No results match"; 120 }; 121 AbstractChosen.prototype.mouse_enter = function() { 122 return this.mouse_on_container = true; 123 }; 124 AbstractChosen.prototype.mouse_leave = function() { 125 return this.mouse_on_container = false; 126 }; 127 AbstractChosen.prototype.input_focus = function(evt) { 128 if (!this.active_field) { 129 return setTimeout((__bind(function() { 130 return this.container_mousedown(); 131 }, this)), 50); 132 } 133 }; 134 AbstractChosen.prototype.input_blur = function(evt) { 135 if (!this.mouse_on_container) { 136 this.active_field = false; 137 return setTimeout((__bind(function() { 138 return this.blur_test(); 139 }, this)), 100); 140 } 141 }; 142 AbstractChosen.prototype.result_add_option = function(option) { 143 var classes, style; 144 if (!option.disabled) { 145 option.dom_id = this.container_id + "_o_" + option.array_index; 146 classes = option.selected && this.is_multiple ? [] : ["active-result"]; 147 if (option.selected) { 148 classes.push("result-selected"); 149 } 150 if (option.group_array_index != null) { 151 classes.push("group-option"); 152 } 153 if (option.classes !== "") { 154 classes.push(option.classes); 155 } 156 style = option.style.cssText !== "" ? " style=\"" + option.style + "\"" : ""; 157 return '<li id="' + option.dom_id + '" class="' + classes.join(' ') + '"' + style + '>' + option.html + '</li>'; 158 } else { 159 return ""; 160 } 161 }; 162 AbstractChosen.prototype.results_update_field = function() { 163 this.result_clear_highlight(); 164 this.result_single_selected = null; 165 return this.results_build(); 166 }; 167 AbstractChosen.prototype.results_toggle = function() { 168 if (this.results_showing) { 169 return this.results_hide(); 170 } else { 171 return this.results_show(); 172 } 173 }; 174 AbstractChosen.prototype.results_search = function(evt) { 175 if (this.results_showing) { 176 return this.winnow_results(); 177 } else { 178 return this.results_show(); 179 } 180 }; 181 AbstractChosen.prototype.keyup_checker = function(evt) { 182 var stroke, _ref; 183 stroke = (_ref = evt.which) != null ? _ref : evt.keyCode; 184 this.search_field_scale(); 185 switch (stroke) { 186 case 8: 187 if (this.is_multiple && this.backstroke_length < 1 && this.choices > 0) { 188 return this.keydown_backstroke(); 189 } else if (!this.pending_backstroke) { 190 this.result_clear_highlight(); 191 return this.results_search(); 192 } 193 break; 194 case 13: 195 evt.preventDefault(); 196 if (this.results_showing) { 197 return this.result_select(evt); 198 } 199 break; 200 case 27: 201 if (this.results_showing) { 202 return this.results_hide(); 203 } 204 break; 205 case 9: 206 case 38: 207 case 40: 208 case 16: 209 case 91: 210 case 17: 211 break; 212 default: 213 return this.results_search(); 214 } 215 }; 216 AbstractChosen.prototype.generate_field_id = function() { 217 var new_id; 218 new_id = this.generate_random_id(); 219 this.form_field.id = new_id; 220 return new_id; 221 }; 222 AbstractChosen.prototype.generate_random_char = function() { 223 var chars, newchar, rand; 224 chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ"; 225 rand = Math.floor(Math.random() * chars.length); 226 return newchar = chars.substring(rand, rand + 1); 227 }; 228 return AbstractChosen; 229 })(); 230 root.AbstractChosen = AbstractChosen; 231 }).call(this); 232 (function() { 233 /* 234 Chosen source: generate output using 'cake build' 235 Copyright (c) 2011 by Harvest 236 */ 237 var $, Chosen, get_side_border_padding, root; 238 var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) { 239 for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } 240 function ctor() { this.constructor = child; } 241 ctor.prototype = parent.prototype; 242 child.prototype = new ctor; 243 child.__super__ = parent.prototype; 244 return child; 245 }, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; 246 root = this; 247 $ = jQuery; 248 $.fn.extend({ 249 chosen: function(options) { 250 if ($.browser.msie && $.browser.version === "6.0") { 251 return this; 252 } 253 return $(this).each(function(input_field) { 254 if (!($(this)).hasClass("chzn-done")) { 255 return new Chosen(this, options); 256 } 257 }); 258 } 259 }); 260 Chosen = (function() { 261 __extends(Chosen, AbstractChosen); 262 function Chosen() { 263 Chosen.__super__.constructor.apply(this, arguments); 264 } 265 Chosen.prototype.setup = function() { 266 this.form_field_jq = $(this.form_field); 267 return this.is_rtl = this.form_field_jq.hasClass("chzn-rtl"); 268 }; 269 Chosen.prototype.finish_setup = function() { 270 return this.form_field_jq.addClass("chzn-done"); 271 }; 272 Chosen.prototype.set_up_html = function() { 273 var container_div, dd_top, dd_width, sf_width; 274 this.container_id = this.form_field.id.length ? this.form_field.id.replace(/(:|\.)/g, '_') : this.generate_field_id(); 275 this.container_id += "_chzn"; 276 this.f_width = this.form_field_jq.outerWidth(); 277 this.default_text = this.form_field_jq.data('placeholder') ? this.form_field_jq.data('placeholder') : this.default_text_default; 278 container_div = $("<div />", { 279 id: this.container_id, 280 "class": "chzn-container" + (this.is_rtl ? ' chzn-rtl' : ''), 281 style: 'width: ' + this.f_width + 'px;' 282 }); 283 if (this.is_multiple) { 284 container_div.html('<ul class="chzn-choices"><li class="search-field"><input type="text" value="' + this.default_text + '" class="default" autocomplete="off" style="width:25px;" /></li></ul><div class="chzn-drop" style="left:-9000px;"><ul class="chzn-results"></ul></div>'); 285 } else { 286 container_div.html('<a href="javascript:void(0)" class="chzn-single"><span>' + this.default_text + '</span><div><b></b></div></a><div class="chzn-drop" style="left:-9000px;"><div class="chzn-search"><input type="text" autocomplete="off" /></div><ul class="chzn-results"></ul></div>'); 287 } 288 this.form_field_jq.hide().after(container_div); 289 this.container = $('#' + this.container_id); 290 this.container.addClass("chzn-container-" + (this.is_multiple ? "multi" : "single")); 291 this.dropdown = this.container.find('div.chzn-drop').first(); 292 dd_top = this.container.height(); 293 dd_width = this.f_width - get_side_border_padding(this.dropdown); 294 this.dropdown.css({ 295 "width": dd_width + "px", 296 "top": dd_top + "px" 297 }); 298 this.search_field = this.container.find('input').first(); 299 this.search_results = this.container.find('ul.chzn-results').first(); 300 this.search_field_scale(); 301 this.search_no_results = this.container.find('li.no-results').first(); 302 if (this.is_multiple) { 303 this.search_choices = this.container.find('ul.chzn-choices').first(); 304 this.search_container = this.container.find('li.search-field').first(); 305 } else { 306 this.search_container = this.container.find('div.chzn-search').first(); 307 this.selected_item = this.container.find('.chzn-single').first(); 308 sf_width = dd_width - get_side_border_padding(this.search_container) - get_side_border_padding(this.search_field); 309 this.search_field.css({ 310 "width": sf_width + "px" 311 }); 312 } 313 this.results_build(); 314 this.set_tab_index(); 315 return this.form_field_jq.trigger("liszt:ready", { 316 chosen: this 317 }); 318 }; 319 Chosen.prototype.register_observers = function() { 320 this.container.mousedown(__bind(function(evt) { 321 return this.container_mousedown(evt); 322 }, this)); 323 this.container.mouseup(__bind(function(evt) { 324 return this.container_mouseup(evt); 325 }, this)); 326 this.container.mouseenter(__bind(function(evt) { 327 return this.mouse_enter(evt); 328 }, this)); 329 this.container.mouseleave(__bind(function(evt) { 330 return this.mouse_leave(evt); 331 }, this)); 332 this.search_results.mouseup(__bind(function(evt) { 333 return this.search_results_mouseup(evt); 334 }, this)); 335 this.search_results.mouseover(__bind(function(evt) { 336 return this.search_results_mouseover(evt); 337 }, this)); 338 this.search_results.mouseout(__bind(function(evt) { 339 return this.search_results_mouseout(evt); 340 }, this)); 341 this.form_field_jq.bind("liszt:updated", __bind(function(evt) { 342 return this.results_update_field(evt); 343 }, this)); 344 this.search_field.blur(__bind(function(evt) { 345 return this.input_blur(evt); 346 }, this)); 347 this.search_field.keyup(__bind(function(evt) { 348 return this.keyup_checker(evt); 349 }, this)); 350 this.search_field.keydown(__bind(function(evt) { 351 return this.keydown_checker(evt); 352 }, this)); 353 if (this.is_multiple) { 354 this.search_choices.click(__bind(function(evt) { 355 return this.choices_click(evt); 356 }, this)); 357 return this.search_field.focus(__bind(function(evt) { 358 return this.input_focus(evt); 359 }, this)); 360 } 361 }; 362 Chosen.prototype.search_field_disabled = function() { 363 this.is_disabled = this.form_field_jq[0].disabled; 364 if (this.is_disabled) { 365 this.container.addClass('chzn-disabled'); 366 this.search_field[0].disabled = true; 367 if (!this.is_multiple) { 368 this.selected_item.unbind("focus", this.activate_action); 369 } 370 return this.close_field(); 371 } else { 372 this.container.removeClass('chzn-disabled'); 373 this.search_field[0].disabled = false; 374 if (!this.is_multiple) { 375 return this.selected_item.bind("focus", this.activate_action); 376 } 377 } 378 }; 379 Chosen.prototype.container_mousedown = function(evt) { 380 var target_closelink; 381 if (!this.is_disabled) { 382 target_closelink = evt != null ? ($(evt.target)).hasClass("search-choice-close") : false; 383 if (evt && evt.type === "mousedown") { 384 evt.stopPropagation(); 385 } 386 if (!this.pending_destroy_click && !target_closelink) { 387 if (!this.active_field) { 388 if (this.is_multiple) { 389 this.search_field.val(""); 390 } 391 $(document).click(this.click_test_action); 392 this.results_show(); 393 } else if (!this.is_multiple && evt && (($(evt.target)[0] === this.selected_item[0]) || $(evt.target).parents("a.chzn-single").length)) { 394 evt.preventDefault(); 395 this.results_toggle(); 396 } 397 return this.activate_field(); 398 } else { 399 return this.pending_destroy_click = false; 400 } 401 } 402 }; 403 Chosen.prototype.container_mouseup = function(evt) { 404 if (evt.target.nodeName === "ABBR") { 405 return this.results_reset(evt); 406 } 407 }; 408 Chosen.prototype.blur_test = function(evt) { 409 if (!this.active_field && this.container.hasClass("chzn-container-active")) { 410 return this.close_field(); 411 } 412 }; 413 Chosen.prototype.close_field = function() { 414 $(document).unbind("click", this.click_test_action); 415 if (!this.is_multiple) { 416 this.selected_item.attr("tabindex", this.search_field.attr("tabindex")); 417 this.search_field.attr("tabindex", -1); 418 } 419 this.active_field = false; 420 this.results_hide(); 421 this.container.removeClass("chzn-container-active"); 422 this.winnow_results_clear(); 423 this.clear_backstroke(); 424 this.show_search_field_default(); 425 return this.search_field_scale(); 426 }; 427 Chosen.prototype.activate_field = function() { 428 if (!this.is_multiple && !this.active_field) { 429 this.search_field.attr("tabindex", this.selected_item.attr("tabindex")); 430 this.selected_item.attr("tabindex", -1); 431 } 432 this.container.addClass("chzn-container-active"); 433 this.active_field = true; 434 this.search_field.val(this.search_field.val()); 435 return this.search_field.focus(); 436 }; 437 Chosen.prototype.test_active_click = function(evt) { 438 if ($(evt.target).parents('#' + this.container_id).length) { 439 return this.active_field = true; 440 } else { 441 return this.close_field(); 442 } 443 }; 444 Chosen.prototype.results_build = function() { 445 var content, data, _i, _len, _ref; 446 this.parsing = true; 447 this.results_data = root.SelectParser.select_to_array(this.form_field); 448 if (this.is_multiple && this.choices > 0) { 449 this.search_choices.find("li.search-choice").remove(); 450 this.choices = 0; 451 } else if (!this.is_multiple) { 452 this.selected_item.find("span").text(this.default_text); 453 if (this.form_field.options.length <= this.disable_search_threshold) { 454 this.container.addClass("chzn-container-single-nosearch"); 455 } else { 456 this.container.removeClass("chzn-container-single-nosearch"); 457 } 458 } 459 content = ''; 460 _ref = this.results_data; 461 for (_i = 0, _len = _ref.length; _i < _len; _i++) { 462 data = _ref[_i]; 463 if (data.group) { 464 content += this.result_add_group(data); 465 } else if (!data.empty) { 466 content += this.result_add_option(data); 467 if (data.selected && this.is_multiple) { 468 this.choice_build(data); 469 } else if (data.selected && !this.is_multiple) { 470 this.selected_item.find("span").text(data.text); 471 if (this.allow_single_deselect) { 472 this.single_deselect_control_build(); 473 } 474 } 475 } 476 } 477 this.search_field_disabled(); 478 this.show_search_field_default(); 479 this.search_field_scale(); 480 this.search_results.html(content); 481 return this.parsing = false; 482 }; 483 Chosen.prototype.result_add_group = function(group) { 484 if (!group.disabled) { 485 group.dom_id = this.container_id + "_g_" + group.array_index; 486 return '<li id="' + group.dom_id + '" class="group-result">' + $("<div />").text(group.label).html() + '</li>'; 487 } else { 488 return ""; 489 } 490 }; 491 Chosen.prototype.result_do_highlight = function(el) { 492 var high_bottom, high_top, maxHeight, visible_bottom, visible_top; 493 if (el.length) { 494 this.result_clear_highlight(); 495 this.result_highlight = el; 496 this.result_highlight.addClass("highlighted"); 497 maxHeight = parseInt(this.search_results.css("maxHeight"), 10); 498 visible_top = this.search_results.scrollTop(); 499 visible_bottom = maxHeight + visible_top; 500 high_top = this.result_highlight.position().top + this.search_results.scrollTop(); 501 high_bottom = high_top + this.result_highlight.outerHeight(); 502 if (high_bottom >= visible_bottom) { 503 return this.search_results.scrollTop((high_bottom - maxHeight) > 0 ? high_bottom - maxHeight : 0); 504 } else if (high_top < visible_top) { 505 return this.search_results.scrollTop(high_top); 506 } 507 } 508 }; 509 Chosen.prototype.result_clear_highlight = function() { 510 if (this.result_highlight) { 511 this.result_highlight.removeClass("highlighted"); 512 } 513 return this.result_highlight = null; 514 }; 515 Chosen.prototype.results_show = function() { 516 var dd_top; 517 if (!this.is_multiple) { 518 this.selected_item.addClass("chzn-single-with-drop"); 519 if (this.result_single_selected) { 520 this.result_do_highlight(this.result_single_selected); 521 } 522 } 523 dd_top = this.is_multiple ? this.container.height() : this.container.height() - 1; 524 this.dropdown.css({ 525 "top": dd_top + "px", 526 "left": 0 527 }); 528 this.results_showing = true; 529 this.search_field.focus(); 530 this.search_field.val(this.search_field.val()); 531 return this.winnow_results(); 532 }; 533 Chosen.prototype.results_hide = function() { 534 if (!this.is_multiple) { 535 this.selected_item.removeClass("chzn-single-with-drop"); 536 } 537 this.result_clear_highlight(); 538 this.dropdown.css({ 539 "left": "-9000px" 540 }); 541 return this.results_showing = false; 542 }; 543 Chosen.prototype.set_tab_index = function(el) { 544 var ti; 545 if (this.form_field_jq.attr("tabindex")) { 546 ti = this.form_field_jq.attr("tabindex"); 547 this.form_field_jq.attr("tabindex", -1); 548 if (this.is_multiple) { 549 return this.search_field.attr("tabindex", ti); 550 } else { 551 this.selected_item.attr("tabindex", ti); 552 return this.search_field.attr("tabindex", -1); 553 } 554 } 555 }; 556 Chosen.prototype.show_search_field_default = function() { 557 if (this.is_multiple && this.choices < 1 && !this.active_field) { 558 this.search_field.val(this.default_text); 559 return this.search_field.addClass("default"); 560 } else { 561 this.search_field.val(""); 562 return this.search_field.removeClass("default"); 563 } 564 }; 565 Chosen.prototype.search_results_mouseup = function(evt) { 566 var target; 567 target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first(); 568 if (target.length) { 569 this.result_highlight = target; 570 return this.result_select(evt); 571 } 572 }; 573 Chosen.prototype.search_results_mouseover = function(evt) { 574 var target; 575 target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first(); 576 if (target) { 577 return this.result_do_highlight(target); 578 } 579 }; 580 Chosen.prototype.search_results_mouseout = function(evt) { 581 if ($(evt.target).hasClass("active-result" || $(evt.target).parents('.active-result').first())) { 582 return this.result_clear_highlight(); 583 } 584 }; 585 Chosen.prototype.choices_click = function(evt) { 586 evt.preventDefault(); 587 if (this.active_field && !($(evt.target).hasClass("search-choice" || $(evt.target).parents('.search-choice').first)) && !this.results_showing) { 588 return this.results_show(); 589 } 590 }; 591 Chosen.prototype.choice_build = function(item) { 592 var choice_id, link; 593 choice_id = this.container_id + "_c_" + item.array_index; 594 this.choices += 1; 595 this.search_container.before('<li class="search-choice" id="' + choice_id + '"><span>' + item.html + '</span><a href="javascript:void(0)" class="search-choice-close" rel="' + item.array_index + '"></a></li>'); 596 link = $('#' + choice_id).find("a").first(); 597 return link.click(__bind(function(evt) { 598 return this.choice_destroy_link_click(evt); 599 }, this)); 600 }; 601 Chosen.prototype.choice_destroy_link_click = function(evt) { 602 evt.preventDefault(); 603 if (!this.is_disabled) { 604 this.pending_destroy_click = true; 605 return this.choice_destroy($(evt.target)); 606 } else { 607 return evt.stopPropagation; 608 } 609 }; 610 Chosen.prototype.choice_destroy = function(link) { 611 this.choices -= 1; 612 this.show_search_field_default(); 613 if (this.is_multiple && this.choices > 0 && this.search_field.val().length < 1) { 614 this.results_hide(); 615 } 616 this.result_deselect(link.attr("rel")); 617 return link.parents('li').first().remove(); 618 }; 619 Chosen.prototype.results_reset = function(evt) { 620 this.form_field.options[0].selected = true; 621 this.selected_item.find("span").text(this.default_text); 622 this.show_search_field_default(); 623 $(evt.target).remove(); 624 this.form_field_jq.trigger("change"); 625 if (this.active_field) { 626 return this.results_hide(); 627 } 628 }; 629 Chosen.prototype.result_select = function(evt) { 630 var high, high_id, item, position; 631 if (this.result_highlight) { 632 high = this.result_highlight; 633 high_id = high.attr("id"); 634 this.result_clear_highlight(); 635 if (this.is_multiple) { 636 this.result_deactivate(high); 637 } else { 638 this.search_results.find(".result-selected").removeClass("result-selected"); 639 this.result_single_selected = high; 640 } 641 high.addClass("result-selected"); 642 position = high_id.substr(high_id.lastIndexOf("_") + 1); 643 item = this.results_data[position]; 644 item.selected = true; 645 this.form_field.options[item.options_index].selected = true; 646 if (this.is_multiple) { 647 this.choice_build(item); 648 } else { 649 this.selected_item.find("span").first().text(item.text); 650 if (this.allow_single_deselect) { 651 this.single_deselect_control_build(); 652 } 653 } 654 if (!(evt.metaKey && this.is_multiple)) { 655 this.results_hide(); 656 } 657 this.search_field.val(""); 658 this.form_field_jq.trigger("change"); 659 return this.search_field_scale(); 660 } 661 }; 662 Chosen.prototype.result_activate = function(el) { 663 return el.addClass("active-result"); 664 }; 665 Chosen.prototype.result_deactivate = function(el) { 666 return el.removeClass("active-result"); 667 }; 668 Chosen.prototype.result_deselect = function(pos) { 669 var result, result_data; 670 result_data = this.results_data[pos]; 671 result_data.selected = false; 672 this.form_field.options[result_data.options_index].selected = false; 673 result = $("#" + this.container_id + "_o_" + pos); 674 result.removeClass("result-selected").addClass("active-result").show(); 675 this.result_clear_highlight(); 676 this.winnow_results(); 677 this.form_field_jq.trigger("change"); 678 return this.search_field_scale(); 679 }; 680 Chosen.prototype.single_deselect_control_build = function() { 681 if (this.allow_single_deselect && this.selected_item.find("abbr").length < 1) { 682 return this.selected_item.find("span").first().after("<abbr class=\"search-choice-close\"></abbr>"); 683 } 684 }; 685 Chosen.prototype.winnow_results = function() { 686 var found, option, part, parts, regex, result, result_id, results, searchText, startpos, text, zregex, _i, _j, _len, _len2, _ref; 687 this.no_results_clear(); 688 results = 0; 689 searchText = this.search_field.val() === this.default_text ? "" : $('<div/>').text($.trim(this.search_field.val())).html(); 690 regex = new RegExp('^' + searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i'); 691 zregex = new RegExp(searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"), 'i'); 692 _ref = this.results_data; 693 for (_i = 0, _len = _ref.length; _i < _len; _i++) { 694 option = _ref[_i]; 695 if (!option.disabled && !option.empty) { 696 if (option.group) { 697 $('#' + option.dom_id).css('display', 'none'); 698 } else if (!(this.is_multiple && option.selected)) { 699 found = false; 700 result_id = option.dom_id; 701 result = $("#" + result_id); 702 if (regex.test(option.html)) { 703 found = true; 704 results += 1; 705 } else if (option.html.indexOf(" ") >= 0 || option.html.indexOf("[") === 0) { 706 parts = option.html.replace(/\[|\]/g, "").split(" "); 707 if (parts.length) { 708 for (_j = 0, _len2 = parts.length; _j < _len2; _j++) { 709 part = parts[_j]; 710 if (regex.test(part)) { 711 found = true; 712 results += 1; 713 } 714 } 715 } 716 } 717 if (found) { 718 if (searchText.length) { 719 startpos = option.html.search(zregex); 720 text = option.html.substr(0, startpos + searchText.length) + '</em>' + option.html.substr(startpos + searchText.length); 721 text = text.substr(0, startpos) + '<em>' + text.substr(startpos); 722 } else { 723 text = option.html; 724 } 725 result.html(text); 726 this.result_activate(result); 727 if (option.group_array_index != null) { 728 $("#" + this.results_data[option.group_array_index].dom_id).css('display', 'list-item'); 729 } 730 } else { 731 if (this.result_highlight && result_id === this.result_highlight.attr('id')) { 732 this.result_clear_highlight(); 733 } 734 this.result_deactivate(result); 735 } 736 } 737 } 738 } 739 if (results < 1 && searchText.length) { 740 return this.no_results(searchText); 741 } else { 742 return this.winnow_results_set_highlight(); 743 } 744 }; 745 Chosen.prototype.winnow_results_clear = function() { 746 var li, lis, _i, _len, _results; 747 this.search_field.val(""); 748 lis = this.search_results.find("li"); 749 _results = []; 750 for (_i = 0, _len = lis.length; _i < _len; _i++) { 751 li = lis[_i]; 752 li = $(li); 753 _results.push(li.hasClass("group-result") ? li.css('display', 'auto') : !this.is_multiple || !li.hasClass("result-selected") ? this.result_activate(li) : void 0); 754 } 755 return _results; 756 }; 757 Chosen.prototype.winnow_results_set_highlight = function() { 758 var do_high, selected_results; 759 if (!this.result_highlight) { 760 selected_results = !this.is_multiple ? this.search_results.find(".result-selected.active-result") : []; 761 do_high = selected_results.length ? selected_results.first() : this.search_results.find(".active-result").first(); 762 if (do_high != null) { 763 return this.result_do_highlight(do_high); 764 } 765 } 766 }; 767 Chosen.prototype.no_results = function(terms) { 768 var no_results_html; 769 no_results_html = $('<li class="no-results">' + this.results_none_found + ' "<span></span>"</li>'); 770 no_results_html.find("span").first().html(terms); 771 return this.search_results.append(no_results_html); 772 }; 773 Chosen.prototype.no_results_clear = function() { 774 return this.search_results.find(".no-results").remove(); 775 }; 776 Chosen.prototype.keydown_arrow = function() { 777 var first_active, next_sib; 778 if (!this.result_highlight) { 779 first_active = this.search_results.find("li.active-result").first(); 780 if (first_active) { 781 this.result_do_highlight($(first_active)); 782 } 783 } else if (this.results_showing) { 784 next_sib = this.result_highlight.nextAll("li.active-result").first(); 785 if (next_sib) { 786 this.result_do_highlight(next_sib); 787 } 788 } 789 if (!this.results_showing) { 790 return this.results_show(); 791 } 792 }; 793 Chosen.prototype.keyup_arrow = function() { 794 var prev_sibs; 795 if (!this.results_showing && !this.is_multiple) { 796 return this.results_show(); 797 } else if (this.result_highlight) { 798 prev_sibs = this.result_highlight.prevAll("li.active-result"); 799 if (prev_sibs.length) { 800 return this.result_do_highlight(prev_sibs.first()); 801 } else { 802 if (this.choices > 0) { 803 this.results_hide(); 804 } 805 return this.result_clear_highlight(); 806 } 807 } 808 }; 809 Chosen.prototype.keydown_backstroke = function() { 810 if (this.pending_backstroke) { 811 this.choice_destroy(this.pending_backstroke.find("a").first()); 812 return this.clear_backstroke(); 813 } else { 814 this.pending_backstroke = this.search_container.siblings("li.search-choice").last(); 815 return this.pending_backstroke.addClass("search-choice-focus"); 816 } 817 }; 818 Chosen.prototype.clear_backstroke = function() { 819 if (this.pending_backstroke) { 820 this.pending_backstroke.removeClass("search-choice-focus"); 821 } 822 return this.pending_backstroke = null; 823 }; 824 Chosen.prototype.keydown_checker = function(evt) { 825 var stroke, _ref; 826 stroke = (_ref = evt.which) != null ? _ref : evt.keyCode; 827 this.search_field_scale(); 828 if (stroke !== 8 && this.pending_backstroke) { 829 this.clear_backstroke(); 830 } 831 switch (stroke) { 832 case 8: 833 this.backstroke_length = this.search_field.val().length; 834 break; 835 case 9: 836 if (this.results_showing && !this.is_multiple) { 837 this.result_select(evt); 838 } 839 this.mouse_on_container = false; 840 break; 841 case 13: 842 evt.preventDefault(); 843 break; 844 case 38: 845 evt.preventDefault(); 846 this.keyup_arrow(); 847 break; 848 case 40: 849 this.keydown_arrow(); 850 break; 851 } 852 }; 853 Chosen.prototype.search_field_scale = function() { 854 var dd_top, div, h, style, style_block, styles, w, _i, _len; 855 if (this.is_multiple) { 856 h = 0; 857 w = 0; 858 style_block = "position:absolute; left: -1000px; top: -1000px; display:none;"; 859 styles = ['font-size', 'font-style', 'font-weight', 'font-family', 'line-height', 'text-transform', 'letter-spacing']; 860 for (_i = 0, _len = styles.length; _i < _len; _i++) { 861 style = styles[_i]; 862 style_block += style + ":" + this.search_field.css(style) + ";"; 863 } 864 div = $('<div />', { 865 'style': style_block 866 }); 867 div.text(this.search_field.val()); 868 $('body').append(div); 869 w = div.width() + 25; 870 div.remove(); 871 if (w > this.f_width - 10) { 872 w = this.f_width - 10; 873 } 874 this.search_field.css({ 875 'width': w + 'px' 876 }); 877 dd_top = this.container.height(); 878 return this.dropdown.css({ 879 "top": dd_top + "px" 880 }); 881 } 882 }; 883 Chosen.prototype.generate_random_id = function() { 884 var string; 885 string = "sel" + this.generate_random_char() + this.generate_random_char() + this.generate_random_char(); 886 while ($("#" + string).length > 0) { 887 string += this.generate_random_char(); 888 } 889 return string; 890 }; 891 return Chosen; 892 })(); 893 get_side_border_padding = function(elmt) { 894 var side_border_padding; 895 return side_border_padding = elmt.outerWidth() - elmt.width(); 896 }; 897 root.get_side_border_padding = get_side_border_padding; 898 }).call(this);
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:08:37 2014 | Cross-referenced by PHPXref 0.7.1 |