/*jquery.cascade.js */
/*
 * jQuery UI cascade
 * version: 1.1.1 (6/16/2008)
 * @requires: jQuery v1.2 or later
 * adapted from Yehuda Katz, Rein Henrichs autocomplete plugin
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 *
 * Copyright 2008 Mike Nichols
   	
 */
;(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);return this.each(function(){var source=$(parent);var self=$(this);$(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);