/*! * bootstrap-typeahead.js v0.0.5 (http://www.upbootstrap.com) * Copyright 2012-2015 Twitter Inc. * Licensed under MIT (https://github.com/biggora/bootstrap-ajax-typeahead/blob/master/LICENSE) * See Demo: http://plugins.upbootstrap.com/bootstrap-ajax-typeahead * Updated: 2015-04-05 11:43:56 * Modifications by Paul Warelis and Alexey Gordeyev */ var bid = ""; var groupid = ""; var clientcount = ""; var CrpType = ""; !function ($) { "use strict"; // jshint ;_; /* TYPEAHEAD PUBLIC CLASS DEFINITION * ================================= */ var Typeahead = function (element, options) { //deal with scrollBar var defaultOptions = $.fn.typeahead.defaults; if (options.scrollBar) { options.items = 100; options.menu = '
'; } var that = this; that.$element = $(element); that.options = $.extend({}, $.fn.typeahead.defaults, options); that.$menu = $(that.options.menu).insertAfter(that.$element); // Method overrides that.eventSupported = that.options.eventSupported || that.eventSupported; that.grepper = that.options.grepper || that.grepper; that.highlighter = that.options.highlighter || that.highlighter; that.lookup = that.options.lookup || that.lookup; that.matcher = that.options.matcher || that.matcher; that.render = that.options.render || that.render; that.onSelect = that.options.onSelect || null; that.sorter = that.options.sorter || that.sorter; that.source = that.options.source || that.source; that.displayField = that.options.displayField || that.displayField; that.valueField = that.options.valueField || that.valueField; if (that.options.ajax) { var ajax = that.options.ajax; if (typeof ajax === 'string') { that.ajax = $.extend({}, $.fn.typeahead.defaults.ajax, { url: ajax }); } else { if (typeof ajax.displayField === 'string') { that.displayField = that.options.displayField = ajax.displayField; } if (typeof ajax.valueField === 'string') { that.valueField = that.options.valueField = ajax.valueField; } that.ajax = $.extend({}, $.fn.typeahead.defaults.ajax, ajax); } if (!that.ajax.url) { that.ajax = null; } that.query = ""; } else { that.source = that.options.source; that.ajax = null; } that.shown = false; that.listen(); }; Typeahead.prototype = { constructor: Typeahead, //============================================================================================================= // Utils // Check if an event is supported by the browser eg. 'keypress' // * This was included to handle the "exhaustive deprecation" of jQuery.browser in jQuery 1.8 //============================================================================================================= eventSupported: function (eventName) { var isSupported = (eventName in this.$element); if (!isSupported) { this.$element.setAttribute(eventName, 'return;'); isSupported = typeof this.$element[eventName] === 'function'; } return isSupported; }, select: function () { var $selectedItem = this.$menu.find('.active'); var value = $selectedItem.attr('data-value'); var text = this.$menu.find('.active a').attr('title'); var bid_s = this.$menu.find('.active a')["0"].dataset.bid; var GROUPID_s = this.$menu.find('.active a')["0"].dataset.groupid; var clientcnt = this.$menu.find('.active a')["0"].dataset.cltcnt; var city_code = $selectedItem.attr('data-citycode'); var CRPTYPE = this.$menu.find('.active a')["0"].dataset.crptype; if (this.options.onSelect) { this.options.onSelect({ value: value || "", text: text || "", bid_s: bid_s || "", GROUPID_s: GROUPID_s, CLT_CNT: clientcnt, citycode: city_code || "", CRPTYPE: CRPTYPE || "" }); } var checkflage = false; if (Number(value.split('-')[1])) { checkflage = true; } else { checkflage = false; } if ((bid_s || "") != "" || text.indexOf("~") != -1) { this.$element .val(this.updater(checkflage == true ? value.split('-')[0] : text.split('~')[0])) .change(); return this.hide(); } else { this.$element .val(this.updater(checkflage == true ? value.split('-')[0] : value)) .change(); return this.hide(); } }, updater: function (item) { return item; }, show: function () { var pos = $.extend({}, this.$element.position(), { height: this.$element[0].offsetHeight }); this.$menu.css({ top: pos.top + pos.height, left: pos.left }); if (this.options.alignWidth) { var width = $(this.$element[0]).outerWidth(); this.$menu.css({ width: width }); } this.$menu.show(); this.shown = true; return this; }, hide: function () { this.$menu.hide(); this.shown = false; return this; }, ajaxLookup: function () { var query = $.trim(this.$element.val()); if (query === this.query) { return this; } // Query changed this.query = query; // Cancel last timer if set if (this.ajax.timerId) { clearTimeout(this.ajax.timerId); this.ajax.timerId = null; } if (!query || query.length < this.ajax.triggerLength) { // cancel the ajax callback if in progress if (this.ajax.xhr) { this.ajax.xhr.abort(); this.ajax.xhr = null; this.ajaxToggleLoadClass(false); } return this.shown ? this.hide() : this; } function execute() { this.ajaxToggleLoadClass(true); // Cancel last call if already in progress if (this.ajax.xhr) this.ajax.xhr.abort(); var params = this.ajax.preDispatch ? this.ajax.preDispatch(query) : query; var par_split = params.search.split("~"); var strID = this.ajax.source; this.ajax.xhr = $.ajax({ url: this.ajax.url, contentType: "application/json; charset=utf-8", data: "{'query':'" + par_split[0] + "','Compamyid':'" + par_split[1] + "'}", success: $.proxy(this.ajaxSource, this), error: function (e) { // // alert(e); }, type: this.ajax.method || 'post', dataType: 'json' }); this.ajax.timerId = null; } // Query is good to send, set a timer this.ajax.timerId = setTimeout($.proxy(execute, this), this.ajax.timeout); return this; }, ajaxSource: function (data) { this.ajaxToggleLoadClass(false); var that = this, items; if (!that.ajax.xhr) return; if (that.ajax.preProcess) { data = that.ajax.preProcess(data); } // Save for selection retreival that.ajax.data = data; // Manipulate objects items = that.grepper(that.ajax.data) || []; if (!items.length) { return that.shown ? that.hide() : that; } that.ajax.xhr = null; return that.render(items.slice(0, that.options.items)).show(); }, ajaxToggleLoadClass: function (enable) { if (!this.ajax.loadingClass) return; this.$element.toggleClass(this.ajax.loadingClass, enable); }, lookup: function (event) { var that = this, items; if (that.ajax) { that.ajaxer(); } else { that.query = that.$element.val(); //if (event == "Keypress") { // if (!that.query) { // return that.shown ? that.hide() : that; // } //} //else { // if ((that.query || "") != "") { // return that.shown ? that.hide() : that; // } //} items = that.grepper(that.source); if (!items) { return that.shown ? that.hide() : that; } //Bhanu added a custom message- Result not Found when no result is found if (items.length == 0) { items[0] = { 'id': -21, 'name': "Result not Found" } } return that.render(items.slice(0, that.options.items)).show(); } }, matcher: function (item) { return ~item.toLowerCase().indexOf(this.query.toLowerCase()); }, sorter: function (items) { if (!this.options.ajax) { var beginswith = [], caseSensitive = [], caseInsensitive = [], item; while (item = items.shift()) { if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item); else if (~item.indexOf(this.query)) caseSensitive.push(item); else caseInsensitive.push(item); } return beginswith.concat(caseSensitive, caseInsensitive); } else { return items; } }, highlighter: function (item) { if (item != null) { var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&'); if (query != "") { return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) { return '' + match + ''; }); } else { return item; } } else { return '' + "No Results Found.." + ''; } }, render: function (items) { var that = this, display, isString = typeof that.options.displayField === 'string'; bid = ""; items = $(items).map(function (i, item) { if (typeof item === 'object') { display = isString ? item[that.options.displayField] : that.options.displayField(item); i = $(that.options.item).attr('data-value', item[that.options.valueField]); } else { display = item; i = $(that.options.item).attr('data-value', item.split('~')[0]); //Updated by saranraj on 20170505 *** old: i = $(that.options.item).attr('data-value', item); } if (item.BID != null && item.BID != "") { bid = $(that.options.item).attr('data-BID', item.BID); groupid = $(that.options.item).attr('data-GROUPID', item.GROUPID); clientcount = $(that.options.item).attr('data-CLTCNT', item.CNT); CrpType = $(that.options.item).attr('data-CRPTYPE', item.CRPTYPE);; } //Added by saranraj on 20170505... var replacebold = that.highlighter(display); replacebold = replacebold.split('~'); var sb = ''; sb += '' + replacebold[0] + '
'; if (replacebold.length > 2) sb += '' + replacebold[2] + '
'; sb += '