var SearchBlock = new Class({

    Implements: Options,
    
    options: {
        observed_id:  'categoryList',
        output_id:    'subcategoryList',
				default_value: null,
        ajax_url:     null
    },

    initialize: function(options) {
        this.setOptions(options);
        this.cache = new Array();
    },
    
    onChange: function() {
        this.loadCategoryList();
    },
    
    loadCategoryList: function() {
        var request = new Request.JSON({
            url: this.options.ajax_url,
            async: true,
            secure: false,
            data: {
                action: 'loadSubcategoryList',
                category_id: $(this.options.observed_id).value
            },
            onSuccess: function(result, text) {
                this.categories = result;
                this.showList();                
            }.bind(this)
        }).send();
    },
    

    
    showList: function() {
        var container = $(this.options.output_id);
        container.empty();
        for(var i = 0; i < this.categories.length; i++) {
            var category = this.categories[i];
            var listItem = new Element('option');
						listItem.value = category.key;
						listItem.text = category.title;
						listItem.selected = this.options.default_value == category.key ? "selected" : "";
            listItem.inject(container);
        }
				this.options.default_value = null;
    } 
});
