function filteredSearch(index,abs_url,reset,kw_key) {
    var url = abs_url+':getDistinctIndexJson?'+kw_key+'=0&dindex=';
    var dindex = new Array();
    var params = new Array();
    var childreset = false;
    
    // Loop over index arrays
    for(i=0;i<index.length;i++) {
        
        dindex[i] = index[i][1]; // Add token to dindex array
        var optionval = $('#menu-'+index[i][1]+' option:selected').val();
        // Set the param value
        // Note: If a menu is reset, all childmenus will reset accordingly
        if(reset == true || childreset == true || optionval == '' || optionval == 'reset') {
            params[index[i][1]] = 'reset';
            childreset = true;
        } else {
            params[index[i][1]] = optionval;
        }
        
        // If menu already exists, delete options and set to "Updating"
        $('#menu-'+index[i][1]).html('<option value="">Updating...</option>');
        
    }
    
    // Build URL
    var paramstr = "";
    for(var i in params) {
        if(paramstr != "") { paramstr += "&"; }
        paramstr = paramstr + i + "=" + params[i];
    }
    url = url+dindex.join(',')+'&'+paramstr+'&refresh='+Math.random();
    
    // Get returned JSON object and update menus
    $.getJSON(url,function(data) {
        // Clear existing menus
        $('#options').html('');
        
        // Display message on error
        if(data.error) {
            $('#options').html(data.error);
            return false;
        } else {
            // Create menus
            for(i=0;i<index.length;i++) {//'keyword[ilk:'+item[1]+':yes:false:'+ prt+']'
                // Create select item
                $('#options').append('<li><label for="menu-'+index[i][1]+'" class="inline left small">'+index[i][0]+'</label><select name="keyword[ilk:'+index[i][1]+':yes:false]" id="menu-'+index[i][1]+'"></select></li>');
                
                // Assign action to menu
                $('#menu-'+index[i][1]).change(function(e) { filteredSearch(index,abs_url,false); });
                
                // Create "All" option
                $('#menu-'+index[i][1]).html('<option value="">All</option>');
                
                // Create options
                if(data[index[i][1]]) {
                    var options = data[index[i][1]]
                    for(o=0;o<options.length;o++) {
                        
                        // Strip off instance_id first
                        var parts = options[o].toString().split(':');
                        var val_no_id = parts[parts.length-1];
                        
                        $('#menu-'+index[i][1]).append('<option value="'+options[o]+'">'+val_no_id+'</option>');
                    }
                    $('#menu-'+index[i][1]).val(params[index[i][1]]);
                }
                                
            }
        }
    });
}
