/*
* jQuery.liveFilter
*
* Copyright (c) 2009 Mike Merritt
*
* Forked by Lim Chee Aun (cheeaun.com)
* 
*/

(function ($) {
    $.fn.liveFilter = function (inputEl, filterEl, options) {
        var defaults = {
            filterChildSelector: null,
            before: function () { },
            after: function () { }
        };
        var options = $.extend(defaults, options);

        var el = $(this).find(filterEl);
        if (options.filterChildSelector) el = el.find(options.filterChildSelector);

        $(inputEl).keyup(function () {
            var val = $(this).val();
            var contains = el.filter(':inContains("' + val + '")');
            var containsNot = el.filter(':not(:inContains("' + val + '"))');
            if (options.filterChildSelector) {
                contains = contains.parents(filterEl);
                containsNot = containsNot.parents(filterEl).slideUp();
            }

            options.before.call(this, contains, containsNot);

            contains.slideDown();
            containsNot.slideUp();

            //contains.show();
            //containsNot.hide();

            options.after.call(this, contains, containsNot);
        });

        $.extend($.expr[':'], {
            inContains: function (a, i, m) {
                return $(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0;
            }
        });
    }
})(jQuery);

