godo.filters = {
    nodes: {},
    state: {
        selected: null
    },
    
    init: function() {
    
        var self = this;

        $("#godoFilters").delegate("ul a", "click", function(event) {
            event.preventDefault();
            var filter = $(this).attr("filter");
            var filterType = $(this).attr("filterType");
            var displayName = $(this).attr("displayName");
            var filterCount = $(this).attr("filterCount");
            
            /*self.apply(filter, filterType, displayName, filterCount);
            if (filterType != 'price') {
                if (self.state.selected) {
                    self.state.selected.removeClass("selected");
                }
                self.state.selected = $(this).parent();
                self.state.selected.addClass("selected");
            }*/

            // Select list item with filter of
            //$("#godoFilters")
            //$('#godoFilters a[filter=filter]').
            applyFilter(filter, filterType); //, displayName
        });

        $("#godoFilters").delegate("h3 a", "click", function(event) {
            event.preventDefault();


            var filterType = $(this).attr("filterType");

            clearFilter(filterType);

            /*self.clear(filterType);
            if (self.state.selected) {
                self.state.selected.removeClass("selected");
                self.state.selected = null;
            }*/

        });      
        
        $("#resultsHeader").delegate(".filter-choice", "click", function(event){
            event.preventDefault();
            var filterType = $(this).attr("filterType");
            self.clear(filterType);
        });
        
    },
    
    
    clear: function(filterType) {
        var self = this;

        //console.log(filterType);
    	resetPaging();
        if (filterType == 'price') {
    	    currentPriceTo = 0;
        } else {
            currentFilter = '';
            currentFilterType = '';
            currentFilterTitle = '';
        }

        // Get Results Page and Description
    	getProductPage(0);
        setSearchDescription();
    	
        if (self.state.selected) {
            self.state.selected.removeClass("selected");
            self.state.selected = null;
        }
    },
    
    apply: function(filter, filterType, displayName, filterCount) {
    	resetPaging();

        if (filterType == 'price') {
            currentPriceTo = filter;
            //setCookie("currentPriceTo", currentPriceTo);
        } else {
            currentFilter = filter;
            currentFilterType = filterType;
            currentFilterTitle = displayName;
            //setCookie("currentFilter", currentFilter);
            //setCookie("currentFilterType", currentFilterType);
            //setCookie("currentFilterTitle", currentFilterTitle);
        }

        // Get Results Page and Description
        getProductPage(0);
    	setSearchDescription();
    }
}


/* New Filters functions */

function applyMultiFilters(filters,resetpage) {

    if (resetpage == true) {
        resetPaging();
    }

    $.each(filters, function(i,f){

        $filterAnchor = $('#godoFilters a[filter=' + f.filter+ ']')

        if (f.filterType == 'price') {
            currentPriceTo = f.filter;

        } else
        if (f.filterType == 'page') {
            params.page  = parseInt(f.filter)
        } else
        if (f.filterType == 'sort') {
            currentSort  = f.filter

        }  else
        if (f.filterType == 'display') {
            currentDisplayOption  = f.filter

        } else {

            $oldfilterListItem = $('#godoFilters li.selected')
            $oldfilterListItem.removeClass("selected")



            currentFilter = f.filter;
            currentFilterType = f.filterType;
            currentFilterTitle = $filterAnchor.attr('displayName');

            $filterListItem =  $filterAnchor.parent()
            $filterListItem.addClass("selected")
        }
        //setFilterHistory(friendlyUrlConstructElement(f.filter,f.filterType));
    });

    // Get Page will set the product count
    sortProducts(currentSort,params.page)

    //getProductPage(0);
    applyDisplayOption(currentDisplayOption)

    setSearchDescription(); //filteredCount

    return true
}


function applyFilter(filter, filterType) {


   applyMultiFilters([{filter:filter,filterType:filterType}],true)
   /* resetPaging();

    $filterAnchor = $('#godoFilters a[filter=' + filter+ ']')

    if (filterType == 'price') {
        currentPriceTo = filter;

    } else
    if (filterType == 'page') {
        params.page  = filter
    }
    else {

        $oldfilterListItem = $('#godoFilters li.selected')
        $oldfilterListItem.removeClass("selected")



        currentFilter = filter;
        currentFilterType = filterType;
        currentFilterTitle = $filterAnchor.attr('displayName');

        $filterListItem =  $filterAnchor.parent()
        $filterListItem.addClass("selected")
    }

    // Get Page will set the product count
    getProductPage(0);

    setSearchDescription(); //filteredCount*/

}

function clearFilter(filterType) {

    resetPaging();

    if (filterType == 'price') {
        currentPriceTo = '';
    } else {

        $oldfilterListItem = $('#godoFilters a[filtertype=' + filterType+ ']').parent()
        $oldfilterListItem.removeClass("selected")

        currentFilter = '';
        currentFilterType = '';
        currentFilterTitle = '';
    }
    // Get Page will set the product count
    getProductPage(0);

    setSearchDescription(); //filteredCount

}
