(function(a){a.ui=a.ui||{};a.ui.cascade=a.ui.cascade||{};a.fn.cascade=function(d,b){if(b.event)b.event=b.event.replace(".cascade","")+".cascade";b=a.extend({},{list:[],timeout:10,getList:function(){a(this).trigger("updateList",[b.list])},template:function(a){return"<option value='"+a+"'>"+a+"</option>"},match:function(){return true},event:"change.cascade",getParentValue:function(b){return a(b).val()},changed:function(){return}},b);if(a.ui.cascade.ext)for(var c in a.ui.cascade.ext)if(b[c]){b=a.extend(b,a.ui.cascade.ext[c](b));delete b[c]}return this.each(function(){var e=a(d),c=a(this);if(a.ui.cascade.event)for(var f in a.ui.cascade.event)c.bind(f+".cascade",[e],a.ui.cascade.event[f]);a(e).bind(b.event,function(){c.trigger("loading.cascade",[e[0]]);var d=a.data(c,"selectTimeout");d&&window.clearInterval(d);a.data(c,"selectTimeout",window.setTimeout(function(){c.trigger("cascade")},b.timeout))});c.bind("cascade",function(){c.one("updateList",function(g,f){f=a(f).filter(function(){return b.match.call(this,b.getParentValue(d))}).map(function(){return a(b.template(this))[0]});c.empty();f.length&&c.html(f);c.trigger("loaded.cascade",[e[0]]);c.is(":input")&&c.trigger("change.cascade");b.changed()});b.getList.call(c[0],e)})})}})(jQuery);