﻿(function($) {
$.fn.filterable = function(options) {
var o = $.extend({}, $.fn.filterable.defaults, options);
return this.each(function() {
var target = $(this);
var div = $('<div class="' + o.queryCss + '">');
switch (o.queryPosition) {
    case 'before': div.insertBefore(target);
        break;
    case 'after': div.insertAfter(target);
        break;
}
var txt = $('<input type="text" />').appendTo(div);
if (o.queryLabel) div.prepend('<label>' + o.queryLabel + '</label>'); 
    var fn = function() { var query = txt.val().toLowerCase(); target.find(o.affects).each(function() { var item = $(this); if (item.text().toLowerCase().indexOf(query) >= 0) item.show(); else item.hide(); }); }; if (o.queryButton) $('<input type="button" value="' + o.queryButton + '" />').appendTo(div).click(fn); else txt.keyup(fn); }); }; $.fn.filterable.defaults = { affects: '> *', queryLabel: '', queryButton: '', queryPosition: 'before', queryCss: 'ui-filterable-query' }; })(jQuery);
