var Search = {
    containerId:    null,

    init: function(containerId)
    {
        this.containerId    = containerId;
    },

    getFilters: function(containerId)
    {
        if (!(container = $(this.containerId))) {
            return;
        }

        var selector    = new Selector('select');
        var filters     = selector.findElements(container);

        return filters;
    },

    reset: function()
    {
	
        filters = this.getFilters();
        filters.each(function(element) {
            element.selectedIndex = 0;
        });
        return false;
    },

    getHiddenRanges: function()
    {
        if (!(container = $(this.containerId))) {
            return;
        }

        var selects     = this.getFilters();
        ranges          = $A();
        selects.each(function (element) {
            lowValueField   = this.getRangeLowValueField(element);
            highValueField  = this.getRangeHighValueField(element);
            if (!lowValueField || !highValueField) {
                // low and high value fields do not exist, not a range
                return;
            }
            if ('hidden' != lowValueField.type || 'hidden' != highValueField.type) {
                // from and to fields do not exist, not a range
                return;
            }
            ranges.push(element);
        }, this);
	 
        return ranges;
    },

    getRangeLowValueField: function(element)
    {
        return $(element.id + '_from');
    },

    getRangeHighValueField: function(element)
    {
        return $(element.id + '_to');
    },

    fillRangeHiddenField: function(element)
    {
        if ('' == $F(element)) {
            this.getRangeLowValueField(element).value  = '';
            this.getRangeHighValueField(element).value = '';
            return;
        }
        values = $F(element).split('-');

        this.getRangeLowValueField(element).value  = values[0].strip();
        this.getRangeHighValueField(element).value = values[1].strip();
    },

    doSearch: function()
    {
        ranges = this.getHiddenRanges();
        ranges.each(this.fillRangeHiddenField, this);
        return true;
    }
};

