1/*! 2 * jQuery narrowing plugin 3 * Version 0.0.2 4 * @requires jQuery v1.7.0 or later 5 * 6 * Copyright 2013 Simon Yamada å±±ç°å²é 7 * Dual licensed under the MIT and GPL licenses: 8 * http://www.opensource.org/licenses/mit-license.php 9 * http://www.gnu.org/licenses/gpl.html 10 * 11 * Date: 2013-09-11 12 */ 13!function(a){var b={__relations:{},__options:{},__ukeys:{},__ukey_name:"jquery-narrows-unique-key",__default_params:{disable_if_parent_is_null:!0,null_value:"",allow_multiple_parent_values:!1,multiple_parent_values_separator:" *, *"},init:function(c,d){var e=this,f=a(c);b.validate_selects(e,f);var g={};for(var h in b.__default_params)g[h]=d&&void 0!==d[h]?d[h]:b.__default_params[h];g.allow_multiple_parent_values&&(g.regexp_separator=new RegExp(g.multiple_parent_values_separator)),d=g,b.register_new_relations(e,f,d),d.disable_if_parent_is_null&&f.attr("disabled","disabled"),e.on("change",b.onchange_handler);for(var i=b.get_relations_of(e),j=0,k=i.length;k>j;j++){var l=i[j];l.initialized||(l.initialized=!0,b.manage_this_relation(l))}return e},validate_selects:function(b,c){for(var d=[b,c],e=0,f=d.length;f>e;e++){var g=d[e];0===g.length&&a.error("selector "+g.selector+": element not found"),g.each(function(){"SELECT"!=a(this).prop("tagName")&&a.error("selector "+g.selector+": includes non-select element(s)"),a(this).attr("id")||a.error("id is required for all select elements")})}var h=b.map(function(){return a(this).attr("id")});c.each(function(){for(var b=0,c=h.length;c>b;b++){var d="data-"+h[b],e=a(this);e.find("option").each(function(){var b=a(this);if(b.val()&&!b.attr(d)){var c=e.attr("id");a.error('options of select "#'+c+'" require "'+d+'" attribute')}})}})},register_new_relations:function(c,d,e){var f=[];c.each(function(){var c=b.unique_key(a(this));f.push(c)});var g=[];d.each(function(){var c=b.unique_key(a(this));g.push(c),b.__options[c]=a(this).find("option").get()});for(var h=0,i=f.length;i>h;h++){var j=f[h];b.__relations[j]||(b.__relations[j]=[]),b.__relations[j].push({$parents:c,$children:d,params:e,initialized:!1})}},unique_key:function(a){var c=a.data(b.__ukey_name);if(c)return c;do c=(1e7*Math.random()|0).toString(16);while(void 0!==b.__ukeys[c]);return a.data(b.__ukey_name,c),b.__ukeys[c]=1,c},onchange_handler:function(c){for(var d=b.get_relations_of(a(this)),e=0,f=d.length;f>e;e++){var g=d[e];b.manage_this_relation(g)}},manage_this_relation:function(c){var d={},e=!0;c.$parents.each(function(){var b=a(this).val();return b==c.params.null_value?(e=!1,!1):void(d[a(this).attr("id")]=b)}),e?c.$children.each(function(){b.enable_relevant_options(a(this),c,d)}):c.params.disable_if_parent_is_null?c.$children.each(function(){b.disable_all_options(a(this),c)}):c.$children.each(function(){b.enable_all_options(a(this),c)}),c.$children.trigger("change")},enable_relevant_options:function(c,d,e){var f=c.val();c.removeAttr("disabled").find('option[value!=""]').remove();for(var g=b.get_all_options_of(c),h=0,i=g.length;i>h;h++){var j=a(g[h]);if(j.val()){var k=!0;for(var l in e){var m=e[l],n=j.data(l);if(d.params.allow_multiple_parent_values){for(var o=n.toString().split(d.params.regexp_separator),p=!1,q=0,r=o.length;r>q;q++)if(o[q]==m){p=!0;break}if(!p){k=!1;break}}else if(n!=m){k=!1;break}}k&&(j.val()==f&&j.prop("selected",!0),c.append(j))}}},enable_all_options:function(c,d){var e=c.val();c.removeAttr("disabled").find('option[value!=""]').remove();for(var f=b.get_all_options_of(c),g=0,h=f.length;h>g;g++){var i=a(f[g]);i.val()==e&&i.prop("selected",!0),c.append(i)}},disable_all_options:function(a,b){a.attr("disabled","disabled").val(b.params.null_value).find('option[value!=""]').remove()},get_relations_of:function(a){var c=a.data(b.__ukey_name);return b.__relations[c]},get_all_options_of:function(a){var c=a.data(b.__ukey_name);return b.__options[c]}};a.fn.narrows=function(c){return b[c]?b[c].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof c&&"string"!=typeof c&&c?void a.error("Method "+c+" does not exist on jQuery.narrows"):b.init.apply(this,arguments)}}(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.