(function(b){b.formalist=function(c,h){function l(d,k){var c=b(d).is("input")?b(d).prop("type"):b(d).prop("tagName").toLowerCase(),e=b(d).val(),f=b(d).prop("name"),g=b(d).prop("id");a.settings.hide(b(k).find(a.settings.box+'[data-hide~="*"],'+a.settings.box+'[data-hide="'+e+'"],'+a.settings.box+'[data-hide~="'+f+'"],'+a.settings.box+'[data-hide~="'+g+'"]'));a.settings.show(b(k).find(a.settings.box+'[data-show~="*"]'));b(k).find(a.settings.box+'[data-show="'+e+'"],'+a.settings.box+'[data-show~="'+f+'"],'+a.settings.box+'[data-show~="'+g+'"]').each(function(){a.settings.correlate(this,d,c,e,f,g)?a.settings.show(this):a.settings.hide(this);b(this).find(a.settings.cascade).each(function(){l(this,k)})})}function m(d){b(d).removeClass(a.settings.classwhenvisible).addClass(a.settings.classwhenhidden)}function n(d){b(d).removeClass(a.settings.classwhenhidden).addClass(a.settings.classwhenvisible)}function p(a,c,h,e,f,g){return"select"==h?b(c).has("option:selected"):b(c).is(":checked")}var a=this;a.settings=b.extend({},{selector:":radio,:checkbox,select",event:"change",box:"div.box",cascade:":radio:checked:visible,:checkbox:checked:visible,select:visible option:selected",classwhenhidden:"hidden",classwhenvisible:"visible",hide:function(a){m(a)},show:function(a){n(a)},correlate:function(a,b,c,e,f,g){return p(a,b,c,e,f,g)}},h);b.isFunction(a.settings.hide)||(a.settings.hide=m);b.isFunction(a.settings.show)||(a.settings.show=n);b.isFunction(a.settings.correlate)||(a.settings.correlate=p);(function(){a.settings.hide(b(c).find(a.settings.box+":not(:first),"+a.settings.box+'[data-hide~="*"]'));a.settings.show(b(c).find(a.settings.box+'[data-show~="*"]'));b(c).find(a.settings.cascade).each(function(){l(this,c)});b(c).find(a.settings.selector).bind(a.settings.event,function(){l(this,c)})})()};b.fn.formalist=function(c){return this.each(function(){if(void 0===b(this).data("formalist")){var h=new b.formalist(this,c);b(this).data("formalist",h)}})}})(jQuery);