﻿/**************************************
* jQuery Autofill
***************************************/
(function($) {
    $.fn.autofill = function(options) {
        options = $.extend({
            handler: '/Path/To/Handler',
            dataType: 'json',
            minChars: 3,
            parseValue: function (item) { return item.Name; },
            parseResult: function(item) { return item.Name; },
            formatItem: function(item, i, n) { return item.Name; },
            parse: function(data) { //data is what the handler returns
                var rows = new Array();
                if (data.length == 0) {
                    if (options.onNoMatch && typeof (options.onNoMatch) == 'function')
                        options.onNoMatch();
                } else {
                    for (var i = 0; i < data.length; i++) {
                        rows[i] = { data: data[i], value: options.parseValue(data[i]), result: options.parseResult(data[i]) }
                    }
                }
                return rows;
            },
            onSelect: function(e, item, formatted) { },
            onNoMatch: null,
            width: 129,
            mustMatch: true,
            extraParams: {}
        }, options);

        return this.each(function() {
            var target = this;
            var $target = $(target);
            $target.autocomplete(options.handler, {
                dataType: options.dataType,
                cacheLength: 30,
                delay: 400,
                minChars: options.minChars,
                parse: options.parse,
                formatItem: options.formatItem,
                width: options.width,
                mustMatch: options.mustMatch,
                extraParams: options.extraParams
            });

            //handle autocomplete selection
            $target.result(options.onSelect);

        });
    }
})(jQuery);


