function filteredSearchOptions(index, abs_url) {
    window.addEvent('domready', function() {

        var firstload = true;
        
        $('btn_clear').addEvent('click', function(e) {
            runDistinctSearch(true);                                
            (function(){ $('frm_options').submit(); }).delay(2000);
        });
                    
        function runDistinctSearch(reset) {                
            var url    = abs_url + ':jsonFilter?dindex=';
            var params = '';
            var indexs = new Array();
            var values = new Array();
            
            for(i=0;i<index.length; i++) {
                var val = '';                

		        if(index[i][2] == true) {
                	indexs[indexs.length] = 'o.'+index[i][1];
		        } else {
                    indexs[indexs.length] = index[i][1];
		        }

                if($(index[i][1]) && reset == false) {
                    val = $(index[i][1]).options[$(index[i][1]).selectedIndex].value;
                    values[index[i][1]] = val;
                    if(val == 'reset') $(index[i][1]).options[$(index[i][1]).selectedIndex].value = ''; 
                } 
                if(val == '' && firstload == false) val = 'reset';            
                params = params + '&' + index[i][1] + '=' + escape(val);
		
            }   
                   
            url = url + indexs.join(',') + params + '&refresh=' + Math.random();  

            var jsonRequest = new Request.JSON({
                url: url,
                onComplete: function(jsonObj) {            
                    var options = $('options');                        
                    options.innerHTML = '';

                    if(jsonObj == null) {
                        options.innerHTML = 'Unable to load remote data';
                        return false;
                    }

                    if(jsonObj['error']) {  
				        options.innerHTML = jsonObj['error'];
			            $('btn_search').style.display = 'none';
			            $('btn_clear').style.display = 'none';
			            $('btn_back').style.display = 'none';
				        return false;
			        }
                    index.each(function(item) {                        
                        if(item[2] == true) { 
                            prt = 'yes'; 
                        } else { 
                            prt = 'no'; 
                        }

                        if(jsonObj[item[1]] && jsonObj[item[1]].length > 0) {
                            var el = new Element('select', {'id': item[1], 'class' : 'select', 'name' : 'keyword[ilk:'+item[1]+':yes:false:'+ prt+']'});
                            var rs = new Element('span', {'id': 'metacategory_reset', 'class' : 'reset'});		                    
                            el.addEvent('change', function(e) { runDistinctSearch(false); });		                    
				            el.inject(options);
                    		rs.inject(options);
                            el.options[0] = new Option('All ' + item[0] + 's', '');
                            if(jsonObj[item[1]]) {
                                for(i=0;i<jsonObj[item[1]].length; i++) {
                                    var value = jsonObj[item[1]][i];
                                    var cont  = value.replace(/(\d+:)/ig,'');
                                    el.options[i+1] = new Option(ucfirst(cont),value);
                                    if(value == values[item[1]]) {                                         
                                        el.options[i+1].selected = true; 
                                        el.options[0].value = 'reset';
                                    } else if(value.match(/(selected:)/ig)) {
                                        el.options[0].value = 'reset';
                                        el.options[i+1].value = value.replace(/(selected:)/ig,'');
                                        el.options[i+1].text = cont.replace(/(selected:)/ig,'');                                        
                                        el.options[i+1].selected = true;                                         
                                    }
                                }
                            }
                        }
                    });                       
                }
            }).get(); 
            
            firstload = false;        
        }
        
        function ucfirst(theWord){ return theWord.replace(/^(.)/,function (d){return d.toUpperCase()}) }
        
        runDistinctSearch(true);

    });
} 
