diff --git a/jquery.flexdatalist.css b/jquery.flexdatalist.css index 221220a..e4eb68e 100644 --- a/jquery.flexdatalist.css +++ b/jquery.flexdatalist.css @@ -63,7 +63,7 @@ .flexdatalist-multiple { width: 100%; margin: 0; - padding: 0 0 0 10px; + padding: 0; list-style: none; text-align: left; cursor: text; @@ -80,7 +80,7 @@ .flexdatalist-multiple li { display: inline-block; position: relative; - margin: 5px 5px 5px 0; + margin: 5px; float: left; } .flexdatalist-multiple li.input-container, @@ -88,14 +88,16 @@ border: none; width: 280px; height: auto; - padding: 0; - line-height: 25px; + padding: 0 0 0 4px; + line-height: 24px; } .flexdatalist-multiple li.value { display: inline-block; - padding: 2px 25px 2px 5px; - background: #efefef; + padding: 2px 25px 2px 7px; + background: #eee; border-radius: 3px; + color: #777; + line-height: 20px; } .flexdatalist-multiple li.toggle { cursor: pointer; @@ -108,9 +110,9 @@ .flexdatalist-multiple li.value span.fdl-remove { font-weight: 700; - padding: 0 5px; + padding: 2px 5px; font-size: 20px; - line-height: 25px; + line-height: 20px; cursor: pointer; position: absolute; top: 0; diff --git a/jquery.flexdatalist.js b/jquery.flexdatalist.js index 998dece..5e068fd 100644 --- a/jquery.flexdatalist.js +++ b/jquery.flexdatalist.js @@ -62,7 +62,7 @@ jQuery.fn.flexdatalist = function (options, value) { searchIn: ['label'], searchContain: false, searchEqual: false, - searchByWord: true, + searchByWord: false, searchDisabled: false, normalizeString: null, multiple: $this.attr('multiple'), @@ -70,7 +70,7 @@ jQuery.fn.flexdatalist = function (options, value) { noResultsText: 'No results found for "{keyword}"', toggleSelected: false, allowDuplicateValues: false, - requestType: 'post', + requestType: 'get', limitOfValues: 0, _values: [] }, @@ -108,7 +108,8 @@ jQuery.fn.flexdatalist = function (options, value) { 'border-color': $this.css('border-left-color'), 'border-width': $this.css('border-left-width'), 'border-style': $this.css('border-left-style'), - 'border-radius': $this.css('border-top-left-radius') + 'border-radius': $this.css('border-top-left-radius'), + 'background-color': $this.css('background-color') }) .insertAfter($this).click(function () { $(this).find('input').focus(); @@ -127,11 +128,15 @@ jQuery.fn.flexdatalist = function (options, value) { } // Listen to parent input key presses and state events. - $_this.on('input keydown', function (event) { + $_this + // Keydown + .on('input keydown', function (event) { var val = $this._keyword(); // Comma separated values if ((_this._keyNum(event) === 188 || _this._keyNum(event) === 13) - && !_options.selectionRequired && _options.multiple) { + && !_options.selectionRequired + && _options.multiple + && !$this._resultSelected()) { event.preventDefault(); $this._value(val); $this._removeResults(); @@ -142,23 +147,26 @@ jQuery.fn.flexdatalist = function (options, value) { } else if (val.length === 0 && _options.multiple && _this._keyNum(event) === 8) { $_this.data('_remove', $_this.parents('li:eq(0)').prev()); } + + // Keyup }).on('input keyup', function (event) { if ($this._changed() && _this._keyNum(event) !== 13) { var keyword = $this._keyword(); - if (keyword.length >= _options.minLength) { - $this._search(function (matches) { - $this._showResults(matches); - }); - } else { - $this._removeResults(); - } if (!_options.multiple) { + _options._values = []; if (!_options.selectionRequired) { $this._value(keyword); } else { $this._value(''); } } + if (keyword.length >= _options.minLength) { + $this._search(function (matches) { + $this._showResults(matches); + }); + } else { + $this._removeResults(); + } } // Remove previous value on backspace key var $remove = $_this.data('_remove'); @@ -167,6 +175,8 @@ jQuery.fn.flexdatalist = function (options, value) { $_this.data('_remove', null); } _previousText = $this._keyword(); + + // Focus }).on('focus', function () { var val = $this._keyword(); if (_options.minLength === 0) { @@ -181,9 +191,11 @@ jQuery.fn.flexdatalist = function (options, value) { $this._showResults(matches); }); } + + // Blur }).on('blur', function () { // Set value user leaves string in field onblur - if (_options.multiple && !_options.selectionRequired) { + if (!$this._resultSelected() && _options.multiple && !_options.selectionRequired) { $this._value($this._keyword()); } }) @@ -195,6 +207,13 @@ jQuery.fn.flexdatalist = function (options, value) { $this.addClass('flexdatalist flexdatalist-set').attr('type', 'hidden'); } + /** + * Check search result is selected. + */ + $this._resultSelected = function () { + return $('ul.flexdatalist-results').find('li.item.active').length > 0; + } + /** * Check if field's text has changed. */ @@ -498,21 +517,10 @@ jQuery.fn.flexdatalist = function (options, value) { if (!_this._isDefined(keywords)) { keywords = $this._keyword(); } - if (typeof keywords === 'string') { - keywords = [keywords]; - } - - if (_options.searchByWord) { - for (var index = 0; index < keywords.length; index++) { - var keyword = keywords[index]; - if (keyword.indexOf(' ') > 0) { - var words = keyword.split(' '); - $.merge(keywords, words); - } - } - } $this.trigger('before:flexdatalist.search', [keywords, data]); + //console.log(keywords); + keywords = $this._split(keywords); for (var index = 0; index < data.length; index++) { var item = $this._matches(data[index], keywords); if (item) { @@ -531,27 +539,34 @@ jQuery.fn.flexdatalist = function (options, value) { var hasMatches = false, _item = $.extend({}, item), _options = $this._options(), + found = [], searchIn = _options.searchIn; - for (var index = 0; index < searchIn.length; index++) { - var searchProperty = searchIn[index]; - if (!_this._isDefined(item, searchProperty) || !item[searchProperty]) { - continue; - } - var text = item[searchProperty].toString(); - var highlight = text; - for (var kwindex = 0; kwindex < keywords.length; kwindex++) { - var keyword = keywords[kwindex]; - if ($this._find(keyword, text)) { - highlight = $this._highlight(keyword, highlight); - hasMatches = true; + if (keywords.length > 0) { + for (var index = 0; index < searchIn.length; index++) { + var searchProperty = searchIn[index]; + if (!_this._isDefined(item, searchProperty) || !item[searchProperty]) { + continue; + } + var text = item[searchProperty].toString(), + highlight = text, + strings = $this._split(text); + for (var kwindex = 0; kwindex < keywords.length; kwindex++) { + var keyword = keywords[kwindex]; + if ($this._find(keyword, strings)) { + found.push(keyword); + highlight = $this._highlight(keyword, highlight); + } + } + if (highlight !== text) { + _item[searchProperty + '_highlight'] = highlight; } } - if (highlight !== text) { - _item[searchProperty + '_highlight'] = highlight; - } + } + if (found.length == 0 || (_options.searchByWord && found.length < (keywords.length - 1))) { + return false; } - return hasMatches ? _item : null; + return _item; } /** @@ -565,16 +580,42 @@ jQuery.fn.flexdatalist = function (options, value) { } /** - * Search for keyword in string. + * Search for keyword(s) in string. + */ + $this._find = function (keyword, strings) { + var _options = $this._options(); + for (var index = 0; index < strings.length; index++) { + var text = strings[index]; + text = $this._normalizeString(text), + keyword = $this._normalizeString(keyword); + if (_options.searchEqual && text == keyword) { + return true; + } + if ((_options.searchContain ? (text.indexOf(keyword) >= 0) : (text.indexOf(keyword) === 0))) { + return true; + } + } + return false; + } + + /** + * Split string by words if needed. */ - $this._find = function (keyword, text) { + $this._split = function (keywords) { + if (typeof keywords === 'string') { + keywords = [keywords]; + } var _options = $this._options(); - text = $this._normalizeString(text), - keyword = $this._normalizeString(keyword); - if (_options.searchEqual) { - return text == keyword; + if (_options.searchByWord) { + for (var index = 0; index < keywords.length; index++) { + var keyword = $.trim(keywords[index]); + if (keyword.indexOf(' ') > 0) { + var words = keyword.split(' '); + $.merge(keywords, words); + } + } } - return (_options.searchContain ? (text.indexOf(keyword) >= 0) : (text.indexOf(keyword) === 0)); + return keywords; } /** @@ -1051,8 +1092,7 @@ jQuery.fn.flexdatalist = function (options, value) { $('ul.flexdatalist-results').css({ 'width': $target.outerWidth() + 'px', 'top': (($target.offset().top + $target.outerHeight())) + 'px', - 'left': $target.offset().left + 'px', - 'z-index': ($target.css('z-index') + 1) + 'left': $target.offset().left + 'px' }); } // Initialize diff --git a/jquery.flexdatalist.min.css b/jquery.flexdatalist.min.css index ed63cac..4f23d2b 100644 --- a/jquery.flexdatalist.min.css +++ b/jquery.flexdatalist.min.css @@ -1 +1 @@ -.flexdatalist-results{position:absolute;top:0;left:0;border:1px solid #444;border-top:none;background:#fff;z-index:100000;max-height:300px;overflow-y:auto;box-shadow:0 4px 5px rgba(0,0,0,.15);color:#333;list-style:none;margin:0;padding:0}.flexdatalist-results li{border-bottom:1px solid #ccc;padding:0 15px;font-size:14px;line-height:35px}.flexdatalist-results li span.highlight{font-weight:700;text-decoration:underline}.flexdatalist-results li.active{background:#2B82C9;color:#fff;cursor:pointer}.flexdatalist-results li.no-results{font-style:italic;color:#888}.flexdatalist-results li.group{background:#F3F3F4;color:#666;padding:0 8px}.flexdatalist-results li .group-name{font-weight:700}.flexdatalist-results li .group-item-count{font-size:85%;color:#777;display:inline-block;padding-left:10px}.flexdatalist-multiple:after,.flexdatalist-multiple:before{content:'';display:block;clear:both}.flexdatalist-multiple{width:100%;margin:0;padding:0 0 0 10px;list-style:none;text-align:left;cursor:text}.flexdatalist-multiple.disabled{background-color:#eee;cursor:default}.flexdatalist-multiple li{display:inline-block;position:relative;margin:5px 5px 5px 0;float:left}.flexdatalist-multiple li.input-container,.flexdatalist-multiple li.input-container input{border:none;width:280px;height:auto;padding:0;line-height:25px}.flexdatalist-multiple li.value{display:inline-block;padding:2px 25px 2px 5px;background:#efefef;border-radius:3px}.flexdatalist-multiple li.toggle{cursor:pointer;transition:opacity ease-in-out .3s}.flexdatalist-multiple li.toggle.disabled{text-decoration:line-through;opacity:.8}.flexdatalist-multiple li.value span.fdl-remove{font-weight:700;padding:0 5px;font-size:20px;line-height:25px;cursor:pointer;position:absolute;top:0;right:0;opacity:.7}.flexdatalist-multiple li.value span.fdl-remove:hover{opacity:1} \ No newline at end of file +.flexdatalist-results{position:absolute;top:0;left:0;border:1px solid #444;border-top:none;background:#fff;z-index:100000;max-height:300px;overflow-y:auto;box-shadow:0 4px 5px rgba(0,0,0,.15);color:#333;list-style:none;margin:0;padding:0}.flexdatalist-results li{border-bottom:1px solid #ccc;padding:0 15px;font-size:14px;line-height:35px}.flexdatalist-results li span.highlight{font-weight:700;text-decoration:underline}.flexdatalist-results li.active{background:#2B82C9;color:#fff;cursor:pointer}.flexdatalist-results li.no-results{font-style:italic;color:#888}.flexdatalist-results li.group{background:#F3F3F4;color:#666;padding:0 8px}.flexdatalist-results li .group-name{font-weight:700}.flexdatalist-results li .group-item-count{font-size:85%;color:#777;display:inline-block;padding-left:10px}.flexdatalist-multiple:after,.flexdatalist-multiple:before{content:'';display:block;clear:both}.flexdatalist-multiple{width:100%;margin:0;padding:0;list-style:none;text-align:left;cursor:text}.flexdatalist-multiple.disabled{background-color:#eee;cursor:default}.flexdatalist-multiple li{display:inline-block;position:relative;margin:5px;float:left}.flexdatalist-multiple li.input-container,.flexdatalist-multiple li.input-container input{border:none;width:280px;height:auto;padding:0 0 0 4px;line-height:24px}.flexdatalist-multiple li.value{display:inline-block;padding:2px 25px 2px 5px;background:#eee;border-radius:3px;color:#777;line-height:20px}.flexdatalist-multiple li.toggle{cursor:pointer;transition:opacity ease-in-out .3s}.flexdatalist-multiple li.toggle.disabled{text-decoration:line-through;opacity:.8}.flexdatalist-multiple li.value span.fdl-remove{font-weight:700;padding:2px 5px;font-size:20px;line-height:20px;cursor:pointer;position:absolute;top:0;right:0;opacity:.7}.flexdatalist-multiple li.value span.fdl-remove:hover{opacity:1} \ No newline at end of file diff --git a/jquery.flexdatalist.min.js b/jquery.flexdatalist.min.js index 34a2042..bf4d891 100644 --- a/jquery.flexdatalist.min.js +++ b/jquery.flexdatalist.min.js @@ -1 +1 @@ -jQuery.fn.flexdatalist=function(e,t){"use strict";var i,a=$(document),s=$(this),l=this;if(i=function(){var t,i,a=$(this),s={},n="",r=null;a.attr("name");a.hasClass("flexdatalist-set")&&l._destroy(a),l._options(a,$.extend({url:null,data:[],params:{},relatives:null,chainedRelatives:!1,cache:!0,minLength:2,groupBy:!1,selectionRequired:!1,focusFirstResult:!1,textProperty:null,valueProperty:null,visibleProperties:[],searchIn:["label"],searchContain:!1,searchEqual:!1,searchDisabled:!1,normalizeString:null,multiple:a.attr("multiple"),maxShownResults:100,noResultsText:'No results found for "{keyword}"',toggleSelected:!1,allowDuplicateValues:!1,requestType:"post",limitOfValues:0,_values:[]},a.data(),"object"==typeof e?e:{})),a._options=function(e,t){return l._options(a,e,t)},a._init=function(){var e=a._options();t=a.clone(!1).attr({list:null,name:null,id:a.attr("id")?a.attr("id")+"-flexdatalist":null}).addClass("flexdatalist-alias").removeClass("flexdatalist"),a._options("multiple")?(i=$("<ul>").addClass("flexdatalist-multiple").css({"border-color":a.css("border-left-color"),"border-width":a.css("border-left-width"),"border-style":a.css("border-left-style"),"border-radius":a.css("border-top-left-radius")}).insertAfter(a).click(function(){$(this).find("input").focus()}),$('<li class="input-container">').addClass("flexdatalist-multiple-value").append(t).appendTo(i)):t.insertAfter(a),t.attr("autofocus")&&t.focus(),t.on("input keydown",function(i){var s=a._keyword();188!==l._keyNum(i)&&13!==l._keyNum(i)||e.selectionRequired||!e.multiple?9===l._keyNum(i)?a._removeResults():0===s.length&&e.multiple&&8===l._keyNum(i)&&t.data("_remove",t.parents("li:eq(0)").prev()):(i.preventDefault(),a._value(s),a._removeResults())}).on("input keyup",function(i){if(a._changed()&&13!==l._keyNum(i)){var s=a._keyword();s.length>=e.minLength?a._search(function(e){a._showResults(e)}):a._removeResults(),e.multiple||(e.selectionRequired?a._value(""):a._value(s))}var r=t.data("_remove");r&&(r.find(".fdl-remove").click(),t.data("_remove",null)),n=a._keyword()}).focus(function(){var t=a._keyword();0===e.minLength?""===t&&a._tdata(function(e){a._showResults(e)}):t.length>=e.minLength&&!a._selected()&&a._search(function(e){a._showResults(e)})}).attr("autocomplete","off"),window.onresize=function(){a._position()},a.addClass("flexdatalist flexdatalist-set").attr("type","hidden")},a._changed=function(){return n!==a._keyword()},a._chained=function(){var e=a._options();if(e.relatives&&e.chainedRelatives){var n=function(s){e.relatives.each(function(){var n=l._isEmpty($(this).val()),r=l._isEmpty(a.val());t.prop("disabled",n),s||!n&&r||(a._value(""),t.val(""),e.multiple&&i.find("li .fdl-remove").click()),i&&(n&&i?i.addClass("disabled"):i.removeClass("disabled"))})};e.relatives.on("change",function(){n(),s={}}),n(!0)}},a._initValue=function(){var e=a.attr("value");l._isEmpty(e)||(a._options("originalValue",a.val()),a._parseValue(e,function(e){a.val("",!0),t.val(""),l._isEmpty(e)||a._values(e),n=a._keyword()}))},a._parseValue=function(e,t){var i=a._options();if(a._toJSON())try{t(JSON.parse(e))}catch(s){}else if(a._toCSV()||"string"==typeof i.valueProperty){var l=e.split(",");if("string"==typeof i.valueProperty){var n=i.searchIn;i.searchIn=i.valueProperty.split(","),i.searchEqual=!0,a._search(function(e){e.length>0&&t(e),i.searchIn=n,i.searchEqual=!1},l)}else t(l)}else t(e)},a._tdata=function(e){a.trigger("before:flexdatalist.data"),a._url(function(t){a._data(function(i){i=i.concat(t);for(var s=a._options("_values"),l=0;l<i.length;l++){var n=i[l];s&&s.indexOf(a._getText(n))>-1&&delete i[l]}a.trigger("after:flexdatalist.data",[i]),e(i)})})},a._data=function(e){var t=a._options();"string"==typeof t.data?a._remote({url:t.data,success:function(i){var s=a._getRemoteData(i);t.data=s,e(s)}}):e(t.data)},a._url=function(e){var t=a._options(),i=a._keyword(),s=a.val(),n=i;return l._isEmpty(t.url)?e([]):(clearTimeout(r),void(r=setTimeout(function(){t.cache&&2!==t.cache&&(n=i.substring(0,t.minLength>0?t.minLength:1));var l=a._cache(n);if(l)return void e(l);var r={};$.each(t,function(e,t){0!=e.indexOf("_")&&(r[e]=t)}),delete r.relatives,a._remote({url:t.url,data:$.extend(a._relativesData(),t.params,{keyword:i,contain:t.searchContain,selected:s,options:r}),success:function(t){var s=a._getRemoteData(t),l=a._keyword();l.length>i.length?a._search(function(e){a._showResults(e)}):e(s),a._cache(n,s)}})},200)))},a._remote=function(e){a.hasClass("flexdatalist-loading")||(a.addClass("flexdatalist-loading"),e=$.extend({type:a._options("requestType"),dataType:"json",complete:function(){a.removeClass("flexdatalist-loading")}},e),$.ajax(e))},a._getRemoteData=function(e){var t=e.results?e.results:e;return"string"==typeof t&&0===t.indexOf("[{")&&(t=JSON.parse(t)),t.options&&l._options(a,t.options),l._isObject(t)?t:[]},a._relativesData=function(){var e=a._options("relatives"),t={};return e&&(t.relatives={},e.each(function(){var e=$(this),i=e.attr("name").split("][").join("-").split("]").join("-").split("[").join("-").replace(/^\|+|\-+$/g,"");t.relatives[i]=e.val()})),t},a._datalist=function(){var e=a._options(),t=a.attr("list");return l._isEmpty(t)||(e.data=[],$("#"+t).find("option").each(function(){var t=$(this),i=t.val(),a=t.text();e.data.push({label:a.length>0?a:i,value:i})})),a},a._cache=function(e,t){if(a._options("cache")){if(e=a._normalizeString(e),!l._isDefined(t))return l._isDefined(s,e)&&(t=s[e]),t;s[e]=t}return null},a._search=function(e,t){a._tdata(function(i){var s=[],n=a._options();if(n.searchDisabled)return e(i);l._isDefined(t)||(t=a._keyword()),"string"==typeof t&&(t=[t]),a.trigger("before:flexdatalist.search",[t,i]);for(var r=0;r<t.length;r++)for(var o=t[r],u=0;u<i.length;u++){var d=a._matches(i[u],o,n.values);d&&s.push(d)}a.trigger("after:flexdatalist.search",[t,i,s]),e(s)})},a._matches=function(e,t){for(var i=!1,s=$.extend({},e),n=a._options(),r=n.searchIn,o=0;o<r.length;o++){var u=r[o];if(l._isDefined(e,u)&&e[u]){var d=e[u].toString();a._find(t,d)&&(s[u+"_highlight"]=a._highlight(t,d),i=!0)}}return i?s:null},a._highlight=function(e,t){return t.replace(new RegExp(e,a._options("searchContain")?"ig":"i"),'<span class="highlight">$&</span>')},a._find=function(e,t){var i=a._options();return t=a._normalizeString(t),e=a._normalizeString(e),i.searchEqual?t==e:i.searchContain?t.indexOf(e)>=0:0===t.indexOf(e)},a._showResults=function(e){a._removeResults(!0);var t=a._options();if(0===e.length)return void a._noResults(t.noResultsText);var i=a._getResultsContainer();t.groupBy?(e=a._groupData(e),Object.keys(e).forEach(function(s){var l=e[s],n=t.groupBy,r=a._getHighlight(l[0],n,s);$("<li>").addClass("group").append($("<span>").addClass("group-name").html(r)).append($("<span>").addClass("group-item-count").text(" "+l.length)).appendTo(i);a._items(l,i)})):a._items(e,i);var s=i.find("li:not(.group)");s.on("click",function(){var e=$(this).data("item");e&&(a._selected(!0)._removeResults()._value(e),a.trigger("select:flexdatalist",[e,t]))}).hover(function(){s.removeClass("active"),$(this).addClass("active")},function(){$(this).removeClass("active")}),t.focusFirstResult&&s.filter(":first").addClass("active")},a._noResults=function(e){if(!l._isEmpty(e)){var t=a._getResultsContainer(),i=a._keyword();e=e.split("{keyword}").join(i),$("<li>").addClass("item no-results").append(e).appendTo(t)}},a._groupData=function(e){for(var t=[],i=a._options("groupBy"),s=0;s<e.length;s++){var n=e[s];if(l._isDefined(n,i)){var r=n[i];l._isDefined(t,r)||(t[r]=[]),t[r].push(n)}}return t},a._items=function(e,t){var i=a._options("maxShownResults");a.trigger("show:flexdatalist.results",[e]);for(var s=0;s<e.length&&!(i>0&&i===s);s++)a._item(e[s]).appendTo(t);a.trigger("shown:flexdatalist.results",[e])},a._item=function(e){for(var t=$("<li>").data("item",e).addClass("item"),i=a._options(),s=i.visibleProperties,n=0;n<s.length;n++){var r=s[n];if((!i.groupBy||i.groupBy!==r)&&l._isDefined(e,r)){var o={};if("thumb"===r)o=$("<img>").addClass("item item-"+r).attr("src",e[r]);else{var u=a._getHighlight(e,r);o=$("<span>").addClass("item item-"+r).html(u+" ")}o.appendTo(t)}}return t},a._getHighlight=function(e,t,i){return l._isDefined(e,t+"_highlight")?e[t+"_highlight"]:l._isDefined(e,t)?e[t]:i},a._getResultsContainer=function(){var e=a;a._options("multiple")&&(e=i);var s=$("ul.flexdatalist-results");return 0===s.length&&(s=$("<ul>").addClass("flexdatalist-results").appendTo("body").css({"border-color":e.css("border-left-color"),"border-width":"1px","border-bottom-left-radius":e.css("border-bottom-left-radius"),"border-bottom-right-radius":e.css("border-bottom-right-radius")}).data("target",t),a._position()),s},a._removeResults=function(e){var t="ul.flexdatalist-results";return e&&(t="ul.flexdatalist-results li"),$(t).remove(),a},a._selected=function(e){var t="flexdatalist-selected";return l._isDefined(e)?(e?a.addClass(t):a.removeClass(t),a):a.hasClass(t)},a._values=function(e){return $.isArray(e)&&!l._isEmpty(e)?void $.each(e,function(e,t){a._value(t)}):void a._value(e)},a._value=function(e){var s=a._options(),l=a._getText(e),r=a._getValue(e);if(l.length>0&&!s.allowDuplicateValues&&s._values.push(l),s.multiple){if(""===e)return a;t.val("");var o=$("<li>").addClass("value"+(s.toggleSelected?" toggle":"")).append('<span class="text">'+l+"</span>").append('<span class="fdl-remove">×</span>').insertBefore(i.find("li.input-container"));o.find("span.fdl-remove").click(function(){var e=$(this).parent(),t=e.index();if(!e.hasClass("disabled")&&(a._toJSON()||a._toCSV())){var i=a._inputValue();i.splice(t,1),s._values.splice(t,1),a._inputValue(i),a._allowValues()}e.remove()}),s.toggleSelected&&o.click(function(){var e=$(this),t=a._inputValue(),i=e.index();if(e.hasClass("disabled")){var n=e.data("_value");t.splice(i,0,n),s._values.splice(i,0,a._getText(n)),e.removeClass("disabled")}else{var n=t.splice(i,1);e.data("_value",n[0]),s._values.splice(i,1),e.addClass("disabled")}a._inputValue(t,l)})}else l&&l!==t.val()&&t.val(l);return a._inputValue(r,l),n=a._keyword(),a},a._inputValue=function(e,t){var i=a._toJSON(),s=a._toCSV();return l._isDefined(e)?(a._allowValues(),l._isObject(e)&&(i&&!l._isEmpty(e)?e=JSON.stringify(e):s&&(e=e.join(","))),""===e&&a._options("_values",[]),a.val(e,!0),a.trigger("change:flexdatalist",[e,t,a._options()]).trigger("change"),e):(e=a.val(),e?i?e=JSON.parse(e):s&&(e=e.split(",")):(i||s)&&(e=[]),e)},a._getText=function(e){var t=e,i=a._options();return l._isObject(e)&&(t=e[i.searchIn[0]],t=l._isDefined(e,i.textProperty)?e[i.textProperty]:a._replacePlaceholders(e,i.textProperty,t)),$("<div>").html(t).text()},a._getValue=function(e){var t=e,i=a._options();if(l._isObject(e))if(t=e[i.searchIn[0]],"*"===i.valueProperty)t=e;else if(l._isDefined(e,i.valueProperty))t=e[i.valueProperty];else if(a._toJSON()){var t={},s=i.valueProperty,n=i.textProperty;if(n){var r=n;"string"==typeof n&&(r=a._parsePlaceholders(n)),l._isObject(r)&&$.each(r,function(e,t){s.push(t)})}else l._isDefined(e,n)&&s.push(n);$.each(s,function(i,a){l._isDefined(e,a)&&(t[a]=e[a])})}if(i.multiple&&(a._toJSON()||a._toCSV())){var o=a._inputValue();!l._isEmpty(t)&&l._isObject(o)&&(o.push(t),t=o)}return t},a._replacePlaceholders=function(e,t,i){if(l._isObject(e)&&"string"==typeof t){var s=a._parsePlaceholders(t);if(!l._isEmpty(e)&&s)return $.each(s,function(i,a){l._isDefined(e,a)&&(t=t.replace(i,e[a]))}),t}return i},a._parsePlaceholders=function(e){var t=e.match(/\{.+?\}/g);if(t){var i={};return t.map(function(e){i[e]=e.slice(1,-1)}),i}return!1},a._allowValues=function(){var e=a._options();if(e.limitOfValues>0&&e.multiple){var t=i.find(".flexdatalist-multiple-value");e._values.length>=e.limitOfValues?t.hide():t.show()}},a._normalizeString=function(e){if("string"==typeof e){var t=a._options("normalizeString");return"function"==typeof t&&(e=t(e)),e.toUpperCase()}return e},a._keyword=function(){return t.val().replace(/^\s+/,"")},a._toJSON=function(){var e=a._options("valueProperty");return l._isObject(e)||"*"===e},a._toCSV=function(){return!a._toJSON()&&a._options("multiple")},a._position=function(){var e=t;a._options("multiple")&&(e=i),$("ul.flexdatalist-results").css({width:e.outerWidth()+"px",top:e.offset().top+e.outerHeight()+"px",left:e.offset().left+"px","z-index":e.css("z-index")+1})},a._init(),a._datalist(),a._initValue(),a._chained()},this._destroy=function(e){e||(e=s),e.each(function(){var e=$(this).data("flexdatalist");$(this).removeClass("flexdatalist-set").attr("type","text").val(e&&e.originalValue?e.originalValue:"").removeData("flexdatalist").next(".flexdatalist-alias, ul.flexdatalist-multiple").remove()})},this._reset=function(){this._destroy()},this._setValue=function(e){s.each(function(){var t=$(this),i=t.data("flexdatalist");if(l._isDefined(i)){if(i.originalValue=e,""==e)return t.val(e,!0).trigger("change:flexdatalist",[e,e,i]).trigger("change"),void(i.multiple&&t.next("ul.flexdatalist-multiple").find("li.value").remove());l._destroy()}})},this._keyNum=function(e){return e.which||e.keyCode},a.data("flexdatalist")||$(document).mouseup(function(e){var t=$(".flexdatalist-results"),i=t.data("target");i&&i.is(":focus")||t.is(e.target)||0!==t.has(e.target).length||t.remove()}).keydown(function(e){var t=$(".flexdatalist-results"),i=t.find("li"),a=i.filter(".active"),s=a.index(),n=i.length,r=l._keyNum(e);if(0!==n)if(13===r)e.preventDefault(),a.click();else if(40===r||38===r){e.preventDefault(),40===r?a=n>s&&a.nextAll(".item").first().length>0?a.removeClass("active").nextAll(".item").first().addClass("active"):i.removeClass("active").filter(".item:first").addClass("active"):38===r&&(a=s>0&&a.prevAll(".item").first().length>0?a.removeClass("active").prevAll(".item").first().addClass("active"):i.removeClass("active").filter(".item:last").addClass("active"));var o=(0===a.prev().length?a:a.prev()).position().top;t.animate({scrollTop:o+t.scrollTop()},100)}}).data("flexdatalist",!0),this._isEmpty=function(e){return l._isDefined(e)?null===e?!0:e===!0?!1:0===this._length(e)?!0:""===$.trim(e):!0},this._isObject=function(e){return e&&"object"==typeof e},this._csvToArray=function(e,t){return 0===e.length?t:"string"==typeof e?e.split(","):e},this._length=function(e){return this._isObject(e)?Object.keys(e).length:"number"==typeof e.length?e.length:0},this._isDefined=function(e,t){var i="undefined"!=typeof e;return i&&"undefined"!=typeof t?"undefined"!=typeof e[t]:i},this._options=function(e,t,i){var a=e.data("flexdatalist");if(l._isDefined(t)){if(l._isDefined(i))a[t]=i;else{if(!l._isObject(t))return l._isDefined(a,t)?a[t]:null;a=t}a.searchIn=l._csvToArray(a.searchIn),a.relatives=a.relatives&&$(a.relatives).length>0?$(a.relatives):null,a.textProperty=null===a.textProperty?a.searchIn[0]:a.textProperty,a.visibleProperties=l._csvToArray(a.visibleProperties,a.searchIn),e.data("flexdatalist",a)}return a},"string"==typeof e)if("function"==typeof this["_"+e]){if(!this["_"+e]())return this}else{if("value"!==e)return t?(l._options(s,e,t),this):l._options(s.data("flexdatalist"),e);this._setValue(t)}return this.each(i)};var _defaultValFunc=jQuery.fn.val;jQuery.fn.val=function(e,t){return!t&&$(this).hasClass("flexdatalist-set")&&"undefined"!=typeof e&&$(this).flexdatalist("value",e),_defaultValFunc.apply(this,arguments)},$(function(){$("input.flexdatalist:not(.flexdatalist-set)").flexdatalist()}); \ No newline at end of file +jQuery.fn.flexdatalist=function(e,t){"use strict";var i,a=$(document),s=$(this),l=this;if(i=function(){var t,i,a=$(this),s={},n="",r=null;a.attr("name");a.hasClass("flexdatalist-set")&&l._destroy(a),l._options(a,$.extend({url:null,data:[],params:{},relatives:null,chainedRelatives:!1,cache:!0,minLength:2,groupBy:!1,selectionRequired:!1,focusFirstResult:!1,textProperty:null,valueProperty:null,visibleProperties:[],searchIn:["label"],searchContain:!1,searchEqual:!1,searchByWord:!1,searchDisabled:!1,normalizeString:null,multiple:a.attr("multiple"),maxShownResults:100,noResultsText:'No results found for "{keyword}"',toggleSelected:!1,allowDuplicateValues:!1,requestType:"get",limitOfValues:0,_values:[]},a.data(),"object"==typeof e?e:{})),a._options=function(e,t){return l._options(a,e,t)},a._init=function(){var e=a._options();t=a.clone(!1).attr({list:null,name:null,id:a.attr("id")?a.attr("id")+"-flexdatalist":null}).addClass("flexdatalist-alias").removeClass("flexdatalist"),a._options("multiple")?(i=$("<ul>").addClass("flexdatalist-multiple").css({"border-color":a.css("border-left-color"),"border-width":a.css("border-left-width"),"border-style":a.css("border-left-style"),"border-radius":a.css("border-top-left-radius"),"background-color":a.css("background-color")}).insertAfter(a).click(function(){$(this).find("input").focus()}),$('<li class="input-container">').addClass("flexdatalist-multiple-value").append(t).appendTo(i)):t.insertAfter(a),t.attr("autofocus")&&t.focus(),t.on("input keydown",function(i){var s=a._keyword();188!==l._keyNum(i)&&13!==l._keyNum(i)||e.selectionRequired||!e.multiple||a._resultSelected()?9===l._keyNum(i)?a._removeResults():0===s.length&&e.multiple&&8===l._keyNum(i)&&t.data("_remove",t.parents("li:eq(0)").prev()):(i.preventDefault(),a._value(s),a._removeResults())}).on("input keyup",function(i){if(a._changed()&&13!==l._keyNum(i)){var s=a._keyword();e.multiple||(e._values=[],e.selectionRequired?a._value(""):a._value(s)),s.length>=e.minLength?a._search(function(e){a._showResults(e)}):a._removeResults()}var r=t.data("_remove");r&&(r.find(".fdl-remove").click(),t.data("_remove",null)),n=a._keyword()}).on("focus",function(){var t=a._keyword();0===e.minLength?""===t&&a._tdata(function(e){a._showResults(e)}):t.length>=e.minLength&&!a._selected()&&a._search(function(e){a._showResults(e)})}).on("blur",function(){a._resultSelected()||!e.multiple||e.selectionRequired||a._value(a._keyword())}).attr("autocomplete","off"),window.onresize=function(){a._position()},a.addClass("flexdatalist flexdatalist-set").attr("type","hidden")},a._resultSelected=function(){return $("ul.flexdatalist-results").find("li.item.active").length>0},a._changed=function(){return n!==a._keyword()},a._chained=function(){var e=a._options();if(e.relatives&&e.chainedRelatives){var n=function(s){e.relatives.each(function(){var n=l._isEmpty($(this).val()),r=l._isEmpty(a.val());t.prop("disabled",n),s||!n&&r||(a._value(""),t.val(""),e.multiple&&i.find("li .fdl-remove").click()),i&&(n&&i?i.addClass("disabled"):i.removeClass("disabled"))})};e.relatives.on("change",function(){n(),s={}}),n(!0)}},a._initValue=function(){var e=a.attr("value");l._isEmpty(e)||(a._options("originalValue",a.val()),a._parseValue(e,function(e){a.val("",!0),t.val(""),l._isEmpty(e)||a._values(e),n=a._keyword()}))},a._parseValue=function(e,t){var i=a._options();if(a._toJSON())try{t(JSON.parse(e))}catch(s){}else if(a._toCSV()||"string"==typeof i.valueProperty){var l=e.split(",");if("string"==typeof i.valueProperty){var n=i.searchIn;i.searchIn=i.valueProperty.split(","),i.searchEqual=!0,a._search(function(e){e.length>0&&t(e),i.searchIn=n,i.searchEqual=!1},l)}else t(l)}else t(e)},a._tdata=function(e){a.trigger("before:flexdatalist.data"),a._url(function(t){a._data(function(i){i=i.concat(t);for(var s=a._options("_values"),l=0;l<i.length;l++){var n=i[l];s&&s.indexOf(a._getText(n))>-1&&delete i[l]}a.trigger("after:flexdatalist.data",[i]),e(i)})})},a._data=function(e){var t=a._options();"string"==typeof t.data?a._remote({url:t.data,success:function(i){var s=a._getRemoteData(i);t.data=s,e(s)}}):e(t.data)},a._url=function(e){var t=a._options(),i=a._keyword(),s=a.val(),n=i;return l._isEmpty(t.url)?e([]):(clearTimeout(r),void(r=setTimeout(function(){t.cache&&2!==t.cache&&(n=i.substring(0,t.minLength>0?t.minLength:1));var l={};$.each(t,function(e,t){0!=e.indexOf("_")&&(l[e]=t)}),delete l.relatives,a._remote({url:t.url,data:$.extend(a._relativesData(),t.params,{keyword:i,contain:t.searchContain,selected:s,options:l}),success:function(t){var s=a._getRemoteData(t),l=a._keyword();l.length>i.length?a._search(function(e){a._showResults(e)}):e(s),a._cache(n,s)}})},200)))},a._remote=function(e){a.hasClass("flexdatalist-loading")||(a.addClass("flexdatalist-loading"),e=$.extend({type:a._options("requestType"),dataType:"json",complete:function(){a.removeClass("flexdatalist-loading")}},e),$.ajax(e))},a._getRemoteData=function(e){var t=e.results?e.results:e;return"string"==typeof t&&0===t.indexOf("[{")&&(t=JSON.parse(t)),t.options&&l._options(a,t.options),l._isObject(t)?t:[]},a._relativesData=function(){var e=a._options("relatives"),t={};return e&&(t.relatives={},e.each(function(){var e=$(this),i=e.attr("name").split("][").join("-").split("]").join("-").split("[").join("-").replace(/^\|+|\-+$/g,"");t.relatives[i]=e.val()})),t},a._datalist=function(){var e=a._options(),t=a.attr("list");return l._isEmpty(t)||(e.data=[],$("#"+t).find("option").each(function(){var t=$(this),i=t.val(),a=t.text();e.data.push({label:a.length>0?a:i,value:i})})),a},a._cache=function(e,t){if(a._options("cache")){if(e=a._normalizeString(e),!l._isDefined(t))return l._isDefined(s,e)&&(t=s[e]),t;s[e]=t}return null},a._search=function(e,t){a._tdata(function(i){var s=[],n=a._options();if(n.searchDisabled)return e(i);l._isDefined(t)||(t=a._keyword()),a.trigger("before:flexdatalist.search",[t,i]),t=a._split(t);for(var r=0;r<i.length;r++){var o=a._matches(i[r],t);o&&s.push(o)}a.trigger("after:flexdatalist.search",[t,i,s]),e(s)})},a._matches=function(e,t){var i=$.extend({},e),s=a._options(),n=[],r=s.searchIn;if(t.length>0)for(var o=0;o<r.length;o++){var u=r[o];if(l._isDefined(e,u)&&e[u]){for(var f=e[u].toString(),d=f,c=a._split(f),_=0;_<t.length;_++){var p=t[_];a._find(p,c)&&(n.push(p),d=a._highlight(p,d))}d!==f&&(i[u+"_highlight"]=d)}}return 0==n.length||s.searchByWord&&n.length<t.length-1?!1:i},a._highlight=function(e,t){return t.replace(new RegExp(e,a._options("searchContain")?"ig":"i"),'<span class="highlight">$&</span>')},a._find=function(e,t){for(var i=a._options(),s=0;s<t.length;s++){var l=t[s];if(l=a._normalizeString(l),e=a._normalizeString(e),i.searchEqual&&l==e)return!0;if(i.searchContain?l.indexOf(e)>=0:0===l.indexOf(e))return!0}return!1},a._split=function(e){"string"==typeof e&&(e=[e]);var t=a._options();if(t.searchByWord)for(var i=0;i<e.length;i++){var s=$.trim(e[i]);if(s.indexOf(" ")>0){var l=s.split(" ");$.merge(e,l)}}return e},a._showResults=function(e){a._removeResults(!0);var t=a._options();if(0===e.length)return void a._noResults(t.noResultsText);var i=a._getResultsContainer();t.groupBy?(e=a._groupData(e),Object.keys(e).forEach(function(s){var l=e[s],n=t.groupBy,r=a._getHighlight(l[0],n,s);$("<li>").addClass("group").append($("<span>").addClass("group-name").html(r)).append($("<span>").addClass("group-item-count").text(" "+l.length)).appendTo(i);a._items(l,i)})):a._items(e,i);var s=i.find("li:not(.group)");s.on("click",function(){var e=$(this).data("item");e&&(a._selected(!0)._removeResults()._value(e),a.trigger("select:flexdatalist",[e,t]))}).hover(function(){s.removeClass("active"),$(this).addClass("active")},function(){$(this).removeClass("active")}),t.focusFirstResult&&s.filter(":first").addClass("active")},a._noResults=function(e){if(!l._isEmpty(e)){var t=a._getResultsContainer(),i=a._keyword();e=e.split("{keyword}").join(i),$("<li>").addClass("item no-results").append(e).appendTo(t)}},a._groupData=function(e){for(var t=[],i=a._options("groupBy"),s=0;s<e.length;s++){var n=e[s];if(l._isDefined(n,i)){var r=n[i];l._isDefined(t,r)||(t[r]=[]),t[r].push(n)}}return t},a._items=function(e,t){var i=a._options("maxShownResults");a.trigger("show:flexdatalist.results",[e]);for(var s=0;s<e.length&&!(i>0&&i===s);s++)a._item(e[s]).appendTo(t);a.trigger("shown:flexdatalist.results",[e])},a._item=function(e){for(var t=$("<li>").data("item",e).addClass("item"),i=a._options(),s=i.visibleProperties,n=0;n<s.length;n++){var r=s[n];if((!i.groupBy||i.groupBy!==r)&&l._isDefined(e,r)){var o={};if("thumb"===r)o=$("<img>").addClass("item item-"+r).attr("src",e[r]);else{var u=a._getHighlight(e,r);o=$("<span>").addClass("item item-"+r).html(u+" ")}o.appendTo(t)}}return t},a._getHighlight=function(e,t,i){return l._isDefined(e,t+"_highlight")?e[t+"_highlight"]:l._isDefined(e,t)?e[t]:i},a._getResultsContainer=function(){var e=a;a._options("multiple")&&(e=i);var s=$("ul.flexdatalist-results");return 0===s.length&&(s=$("<ul>").addClass("flexdatalist-results").appendTo("body").css({"border-color":e.css("border-left-color"),"border-width":"1px","border-bottom-left-radius":e.css("border-bottom-left-radius"),"border-bottom-right-radius":e.css("border-bottom-right-radius")}).data("target",t),a._position()),s},a._removeResults=function(e){var t="ul.flexdatalist-results";return e&&(t="ul.flexdatalist-results li"),$(t).remove(),a},a._selected=function(e){var t="flexdatalist-selected";return l._isDefined(e)?(e?a.addClass(t):a.removeClass(t),a):a.hasClass(t)},a._values=function(e){return $.isArray(e)&&!l._isEmpty(e)?void $.each(e,function(e,t){a._value(t)}):void a._value(e)},a._value=function(e){var s=a._options(),l=a._getText(e),r=a._getValue(e);if(l.length>0&&!s.allowDuplicateValues&&s._values.push(l),s.multiple){if(""===e)return a;t.val("");var o=$("<li>").addClass("value"+(s.toggleSelected?" toggle":"")).append('<span class="text">'+l+"</span>").append('<span class="fdl-remove">×</span>').insertBefore(i.find("li.input-container"));o.find("span.fdl-remove").click(function(){var e=$(this).parent(),t=e.index();if(!e.hasClass("disabled")&&(a._toJSON()||a._toCSV())){var i=a._inputValue();i.splice(t,1),s._values.splice(t,1),a._inputValue(i),a._allowValues()}e.remove()}),s.toggleSelected&&o.click(function(){var e=$(this),t=a._inputValue(),i=e.index();if(e.hasClass("disabled")){var n=e.data("_value");t.splice(i,0,n),s._values.splice(i,0,a._getText(n)),e.removeClass("disabled")}else{var n=t.splice(i,1);e.data("_value",n[0]),s._values.splice(i,1),e.addClass("disabled")}a._inputValue(t,l)})}else l&&l!==t.val()&&t.val(l);return a._inputValue(r,l),n=a._keyword(),a},a._inputValue=function(e,t){var i=a._toJSON(),s=a._toCSV();return l._isDefined(e)?(a._allowValues(),l._isObject(e)&&(i&&!l._isEmpty(e)?e=JSON.stringify(e):s&&(e=e.join(","))),""===e&&a._options("_values",[]),a.val(e,!0),a.trigger("change:flexdatalist",[e,t,a._options()]).trigger("change"),e):(e=a.val(),e?i?e=JSON.parse(e):s&&(e=e.split(",")):(i||s)&&(e=[]),e)},a._getText=function(e){var t=e,i=a._options();return l._isObject(e)&&(t=e[i.searchIn[0]],t=l._isDefined(e,i.textProperty)?e[i.textProperty]:a._replacePlaceholders(e,i.textProperty,t)),$("<div>").html(t).text()},a._getValue=function(e){var t=e,i=a._options();if(l._isObject(e))if(t=e[i.searchIn[0]],"*"===i.valueProperty)t=e;else if(l._isDefined(e,i.valueProperty))t=e[i.valueProperty];else if(a._toJSON()){var t={},s=i.valueProperty,n=i.textProperty;if(n){var r=n;"string"==typeof n&&(r=a._parsePlaceholders(n)),l._isObject(r)&&$.each(r,function(e,t){s.push(t)})}else l._isDefined(e,n)&&s.push(n);$.each(s,function(i,a){l._isDefined(e,a)&&(t[a]=e[a])})}if(i.multiple&&(a._toJSON()||a._toCSV())){var o=a._inputValue();!l._isEmpty(t)&&l._isObject(o)&&(o.push(t),t=o)}return t},a._replacePlaceholders=function(e,t,i){if(l._isObject(e)&&"string"==typeof t){var s=a._parsePlaceholders(t);if(!l._isEmpty(e)&&s)return $.each(s,function(i,a){l._isDefined(e,a)&&(t=t.replace(i,e[a]))}),t}return i},a._parsePlaceholders=function(e){var t=e.match(/\{.+?\}/g);if(t){var i={};return t.map(function(e){i[e]=e.slice(1,-1)}),i}return!1},a._allowValues=function(){var e=a._options();if(e.limitOfValues>0&&e.multiple){var t=i.find(".flexdatalist-multiple-value");e._values.length>=e.limitOfValues?t.hide():t.show()}},a._normalizeString=function(e){if("string"==typeof e){var t=a._options("normalizeString");return"function"==typeof t&&(e=t(e)),e.toUpperCase()}return e},a._keyword=function(){return t.val().replace(/^\s+/,"")},a._toJSON=function(){var e=a._options("valueProperty");return l._isObject(e)||"*"===e},a._toCSV=function(){return!a._toJSON()&&a._options("multiple")},a._position=function(){var e=t;a._options("multiple")&&(e=i),$("ul.flexdatalist-results").css({width:e.outerWidth()+"px",top:e.offset().top+e.outerHeight()+"px",left:e.offset().left+"px"})},a._init(),a._datalist(),a._initValue(),a._chained()},this._destroy=function(e){e||(e=s),e.each(function(){var e=$(this).data("flexdatalist");$(this).removeClass("flexdatalist-set").attr("type","text").val(e&&e.originalValue?e.originalValue:"").removeData("flexdatalist").next(".flexdatalist-alias, ul.flexdatalist-multiple").remove()})},this._reset=function(){this._destroy()},this._setValue=function(e){s.each(function(){var t=$(this),i=t.data("flexdatalist");if(l._isDefined(i)){if(i.originalValue=e,""==e)return t.val(e,!0).trigger("change:flexdatalist",[e,e,i]).trigger("change"),void(i.multiple&&t.next("ul.flexdatalist-multiple").find("li.value").remove());l._destroy()}})},this._keyNum=function(e){return e.which||e.keyCode},a.data("flexdatalist")||$(document).mouseup(function(e){var t=$(".flexdatalist-results"),i=t.data("target");i&&i.is(":focus")||t.is(e.target)||0!==t.has(e.target).length||t.remove()}).keydown(function(e){var t=$(".flexdatalist-results"),i=t.find("li"),a=i.filter(".active"),s=a.index(),n=i.length,r=l._keyNum(e);if(0!==n){if(27===l._keyNum(e))return t.remove();if(13===r)e.preventDefault(),a.click();else if(40===r||38===r){e.preventDefault(),40===r?a=n>s&&a.nextAll(".item").first().length>0?a.removeClass("active").nextAll(".item").first().addClass("active"):i.removeClass("active").filter(".item:first").addClass("active"):38===r&&(a=s>0&&a.prevAll(".item").first().length>0?a.removeClass("active").prevAll(".item").first().addClass("active"):i.removeClass("active").filter(".item:last").addClass("active"));var o=(0===a.prev().length?a:a.prev()).position().top;t.animate({scrollTop:o+t.scrollTop()},100)}}}).data("flexdatalist",!0),this._isEmpty=function(e){return l._isDefined(e)?null===e?!0:e===!0?!1:0===this._length(e)?!0:""===$.trim(e):!0},this._isObject=function(e){return e&&"object"==typeof e},this._csvToArray=function(e,t){return 0===e.length?t:"string"==typeof e?e.split(","):e},this._length=function(e){return this._isObject(e)?Object.keys(e).length:"number"==typeof e.length?e.length:0},this._isDefined=function(e,t){var i="undefined"!=typeof e;return i&&"undefined"!=typeof t?"undefined"!=typeof e[t]:i},this._options=function(e,t,i){var a=e.data("flexdatalist");if(l._isDefined(t)){if(l._isDefined(i))a[t]=i;else{if(!l._isObject(t))return l._isDefined(a,t)?a[t]:null;a=t}a.searchIn=l._csvToArray(a.searchIn),a.relatives=a.relatives&&$(a.relatives).length>0?$(a.relatives):null,a.textProperty=null===a.textProperty?a.searchIn[0]:a.textProperty,a.visibleProperties=l._csvToArray(a.visibleProperties,a.searchIn),e.data("flexdatalist",a)}return a},"string"==typeof e)if("function"==typeof this["_"+e]){if(!this["_"+e]())return this}else{if("value"!==e)return t?(l._options(s,e,t),this):l._options(s.data("flexdatalist"),e);this._setValue(t)}return this.each(i)};var _defaultValFunc=jQuery.fn.val;jQuery.fn.val=function(e,t){return!t&&$(this).hasClass("flexdatalist-set")&&"undefined"!=typeof e&&$(this).flexdatalist("value",e),_defaultValFunc.apply(this,arguments)},$(function(){$("input.flexdatalist:not(.flexdatalist-set)").flexdatalist()}); \ No newline at end of file