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