function VsCombobox(options) { var skipEventOnCollapse = true; this.options = options; document.getElementById(options.id).component = this; var hideSuggestion = function() { if (skipEventOnCollapse) { skipEventOnCollapse = false; return true; } if(suggestion.el.hasClass('bad-text')){ suggestion.el.val(""); suggestion.valElement.val(""); suggestion.el.removeClass('bad-text'); } suggestion.hide(); } var suggestion = jQuery("#" + options.id + " input[id='" + options.inputId + "']").autocomplete({ container: document.getElementById(options.id), minChars: 1, zIndex: 9999, lookup: this.options.items, valElement: options.valElement, onSelect: function(value, data) { options.onselect(value); if (!options.manualInput) { jQuery("#" + options.id + " input[id='" + options.hiddenId + "']").val(jQuery("#" + options.id + " input[id='" + options.inputId + "']").val()); } if (options.ajax) { options.submitFunction(); } }, listClass: options.listClass }); this.setSuggestionsList = function(){ for(var i = 0; i < arguments[0].length; i++){ suggestion.options.lookup.suggestions = arguments[0][i]; } }; if(options.disabled){ component = document.getElementById(options.id); jQuery(component).find("input").attr("disabled", "disabled"); suggestion.disable(); } jQuery("#" + options.id + " img[id='" + options.imageId + "']").click(function(event) { if(!options.disabled){ if (suggestion.enabled) { skipEventOnCollapse = false; } else { skipEventOnCollapse = true; suggestion.disableKillerFn(); suggestion.showEntireList = true; suggestion.ignoreValueChange = false; suggestion.onValueChange(); suggestion.autoSubmitEnter = true; jQuery("#" + options.id + " input[id='" + options.inputId + "']").focus(); suggestion.showEntireList = false; suggestion.ignoreValueChange = true; Event.observe(window.document, "click", hideSuggestion); } } }); } VsCombobox.prototype = { selectValue: function(value) { jQuery("#" + this.options.id + " input[id='" + this.options.inputId + "']").val(value["name"]); jQuery("#" + this.options.id + " input[id='" + this.options.inputIdValue + "']").val(value["value"]); if(jQuery("#" + this.options.id + " input[id='" + this.options.hiddenId + "']").length > 0) jQuery("#" + this.options.id + " input[id='" + this.options.hiddenId + "']").val(value["name"]); }, setList: function(){ this.setSuggestionsList(arguments); }, getSelectedValue: function() { return jQuery("#" + this.options.id + " input[id='" + this.options.inputIdValue + "']").val(); } };