﻿/// <reference path="../../lib/jquery/jQuery.intellisense.js" />
/// <reference path="../ss.js"/>
/// <reference path="../../sl/g.js" />
/// <reference path="../../sl/list.js" />

var category = {
    title: function title(s, df) {
        if (s != 'all') return s
        else return df
    },
    init: function() {
        ss.lang.syst();
        ideaBoard.init();
        category.first = true;

        var args = category.args();
        if (args.length == 5) {
            category.name = args[3];
            category.parentName = args[3];
        } else if (args.length == 6) {
            category.parentName = args[3];
            category.name = args[4];
        } else {
            category.name = '';
        }

        if (category.state.exists()) {
            category.name = g.cookie.get('categoryName');
        } else {
            category.state.del();
        }

        if (category.name != category.parentName) {
            document.title = 'Starline - ' + category.parentName + ' - ' + category.name;
            //if (pageTracker) pageTracker._trackPageview();
            if (_gaq) _gaq.push(['_trackPageview']);
        } else {
            if (category.parentName != 'all') document.title = 'Starline - ' + category.parentName;
            else document.title = 'Starline - ' + category.catalog();
            //if (pageTracker) pageTracker._trackPageview();
            if (_gaq) _gaq.push(['_trackPageview']);
        }

        category.pg.num = args[args.length - 1].replace('pg', '');

        /*
        if (!category.state.exists()) { category.pg.num = args[args.length - 1].replace('pg', ''); }
        else { category.pg.num = g.cookie.get('pgnum'); }
        */

        if (category.name == 'all') {
            $('#catBanner').attr('src', '/Content/image/' + ss.lang.get.current() + '/banner/' + args[2] + '.gif');
        } else {
            $('#catBanner').attr('src', '/Content/image/' + ss.lang.get.current() + '/banner/' + category.title(category.parentName, args[2]) + '.gif');
        }
        ss.data.category(category.catalog(), category.parentName, category.refresh);
        $('#perPage').change(function() {
            category.perPage(this);
            ss.data.category(category.catalog(), category.parentName, category.refresh);
        });
        $('#sort').change(function() {
            category.sort.by = [];
            switch ($(this).val()) {
                case 'lth': category.sort.by = 'price'; category.sort.reverse = false; break;
                case 'htl': category.sort.by = 'price'; category.sort.reverse = true; break;
                case 'name': category.sort.by = 'name'; category.sort.reverse = false; break;
                case 'code': category.sort.by = 'code'; category.sort.reverse = false; break;
                case 'itemNo': category.sort.by = 'itemNo'; category.sort.reverse = false; break;
                default: '';
            }
            g.cookie.set('cboSort', $(this).val(), 1);
            g.cookie.set('sort', category.sort.by, 1);
            g.cookie.set('reverse', category.sort.reverse, 1);
            //if (pageTracker) pageTracker._trackEvent('Catalog-Page', 'SortBy', category.sort.by);
            if (_gaq) _gaq.push(['_trackEvent', 'Catalog-Page', 'SortBy', 'category.sort.by']);
            category.state.save();
            category.sort.exec();
            category.pg.fill(category.grid, category.data.filteredItems);
        });
    },
    track: function(pg) {
        var args = category.args()
        var pg = 'pg' + (pg || category.pg.num);
        if ($('#perPage').val() == 'all') pg = 'showall';
        if (category.filter.type == '' && category.filter.color == '' && category.filter.fromPrice == 0 && category.filter.toPrice == 9999) {
            if (category.name == category.parentName) document.title = 'Starline - ' + category.title(category.parentName, args[2]);
            else document.title = 'Starline - ' + category.title(category.parentName, args[2]) + ' - ' + category.name;
            //if (pageTracker) pageTracker._trackPageview(cx.url.path.toLowerCase().replace(cx.url.path.split('/').pop(), pg));
            if (_gaq) _gaq.push(['_trackPageview', cx.url.path.toLowerCase().replace(cx.url.path.split('/').pop(), pg)]);
        } else {
            if (category.name == category.parentName) {
                document.title = 'Starline - ' + category.title(category.parentName, args[2]);
                //if (pageTracker) pageTracker._trackPageview('/catalog/view/' + category.catalog() + '/' + category.title(category.parentName, args[2]) + '/' + pg + '/' + (category.filter.type || 'alltypes') + '/' + (category.filter.color || 'allcolors') + '/' + category.filter.fromPrice + 'to' + category.filter.toPrice);
                if (_gaq) _gaq.push(['_trackPageview', '/catalog/view/' + category.catalog() + '/' + category.title(category.parentName, args[2]) + '/' + pg + '/' + (category.filter.type || 'alltypes') + '/' + (category.filter.color || 'allcolors') + '/' + category.filter.fromPrice + 'to' + category.filter.toPrice]);
            } else {
                document.title = 'Starline - ' + category.title(category.parentName, args[2]) + ' - ' + category.name;
                //if (pageTracker) pageTracker._trackPageview('/catalog/view/' + category.catalog() + '/' + category.title(category.parentName, args[2]) + '/' + category.name + '/' + pg + '/' + (category.filter.type || 'alltypes') + '/' + (category.filter.color || 'allcolors') + '/' + category.filter.fromPrice + 'to' + category.filter.toPrice);
                if (_gaq) _gaq.push(['_trackPageview', '/catalog/view/' + category.catalog() + '/' + category.title(category.parentName, args[2]) + '/' + category.name + '/' + pg + '/' + (category.filter.type || 'alltypes') + '/' + (category.filter.color || 'allcolors') + '/' + category.filter.fromPrice + 'to' + category.filter.toPrice]);

            }
        }
    },
    first: false,
    perPage: function(cbo) {
        if ($(cbo).val() != 'all') {
            if(category.data.filteredItems.length < 18) category.pg.num = 1;
            category.pg.size = $(cbo).val();
            category.state.save();
            $('#overlay').show();
            //ss.data.category(category.catalog(), category.parentName, category.refresh);
        } else {
            category.pg.num = 1;
            category.pg.size = category.pg.total;
            $('#overlay').show();
            category.state.save();
            category.track();
            //ss.data.category(category.catalog(), category.parentName, category.refresh);
        }
    },
    sort: {
        by: '',
        reverse: false,
        exec: function() {
            category.data.filteredItems.sort(function(a, b) {
                if (a[category.sort.by] < b[category.sort.by]) {
                    return -1;
                } else if (a[category.sort.by] == b[category.sort.by]) {
                    return 0;
                } else {
                    return 1;
                }
            });
            if (category.sort.reverse == true) {
                category.data.filteredItems.reverse();
            }
        }
    },
    grid: {},
    refresh: function(data) {
        

        if (data.id == 46) {
            $('#byColor').hide();
            $('#filterColors').hide();
            $('#byPrice').hide();
            $('#filterPrices').hide();
        }

        if (data.name == category.parentName) {
            category.data.categoryItems = data;
        } else {
            category.data.subCategoryItems = data;
        }
        category.data.filteredItems = data.products;

        if (category.filter.getSubCategories().length < 1) {
            //category.ui.filter.mk();
        }

        if (category.first == true) {
            category.ui.filter.mk();
        }


        category.data.filteredItems = category.filter.exec();
        category.data.removeDupes();
        category.pg.total = category.data.filteredItems.length;

        category.perPage($('#perPage'));

        function setPage(x) {
            if (x > 1) category.track(x);
            var r = category.pg.size / 3;
            category.grid = new ss.ui.productGrid('#grdCategory', Math.ceil(r), 3);
            category.pg.num = x;
            if (category.first == false) {
                category.state.save();
            }
            category.sort.exec();
            category.pg.fill(category.grid, category.data.filteredItems);
        }

        ss.ui.pager(category.pg.num, 9, Math.ceil(category.pg.total / category.pg.size), setPage);
        $('#category ul.pager').attr('total', Math.ceil(category.pg.total / category.pg.size));
        setPage(category.pg.num);
        category.filter.setItemCounts();

        $('#overlay').hide();

        if (category.first == false) {
            category.state.save();
        }

        if (cx.arg.jaxer) {
            var pagerDiv = $('div#topPager');
            var pageCount = $('#category ul.pager').attr('total');
            var hrefbase = document.location.pathname;
            hrefbase = hrefbase.substring(0, hrefbase.length - 1)
            var pager = pagerDiv.find('ul.pager')
            for (var k = 2; k <= pageCount; k++) {
                var li = pager.find('li.pg:contains(' + k + ')');
                if (li.length == 0) li = pagerDiv;
                else li.text('');
                li.a().text(' ' + k + ' ').href(hrefbase + k);
            }
        }
        ss.on.progress.content();
    },
    state: {
        exists: function() {
            g.log('url=' + g.cookie.get('url'));
            g.log('first=' + category.first);
            g.log('pp=' + g.cookie.get('pp'));
            if ((cx.url.path == g.cookie.get('url')) && category.first == true && g.cookie.get('pp') == 'true') {
                g.log('state exists');
                return true;
            } else {
                g.log('delete state');
                category.state.del();
                return false;
            }
        },
        save: function() {
            if (g.cookie.get('pp') != 'true') {
                g.cookie.setg('url', cx.url.path, 1);
                g.cookie.setg('categoryName', category.name, 1);
                g.cookie.setg('fromPrice', category.filter.fromPrice, 1);
                g.cookie.setg('toPrice', category.filter.toPrice, 1);
                g.cookie.setg('color', category.filter.color, 1);
                g.cookie.setg('colorCode', category.filter.colorCode, 1);
                g.cookie.setg('type', category.filter.type, 1);
                g.cookie.setg('cboPerPage', $('#perPage').val(), 1);
                g.cookie.setg('pagesize', category.pg.size, 1);
                g.cookie.setg('pgnum', category.pg.num, 1);
            }
        },
        del: function() {
            g.cookie.setg('url', '', 1);
            g.cookie.setg('categoryName', '', 1);
            g.cookie.setg('fromPrice', '', 1);
            g.cookie.setg('toPrice', '', 1);
            g.cookie.setg('color', '', 1);
            g.cookie.setg('colorCode', '', 1);
            g.cookie.setg('type', '', 1);
            g.cookie.setg('cboPerPage', '', 1);
            g.cookie.setg('pagesize', '', 1);
            g.cookie.setg('pgnum', '', 1);
            g.cookie.setg('cboSort', $(this).val(), 1);
            g.cookie.setg('sort', category.sort.by, 1);
            g.cookie.setg('reverse', category.sort.reverse, 1);
        }
    },
    data: {
        categoryItems: null,
        subCategoryItems: null,
        filteredItems: null,
        removeDupes: function() {
            /*
            var prods = new Array();
            var dupes = {};
            for (var i = 0; i < category.data.filteredItems.length; i++) {
            if (!dupes[category.data.filteredItems[i].itemNo]) {
            dupes[category.data.filteredItems[i].itemNo] = {};
            prods.push(category.data.filteredItems[i]);
            }
            }
            category.data.filteredItems = prods;
            */
        }
    },
    catalog: function() {
        var args = category.args();
        return args[2];
    },
    name: '',
    parentName: '',
    pg: {
        num: 1,
        size: 9,
        total: 0,
        fill: function(grd, prod) {

            var pgr = new g.pager(category.pg.size, category.pg.total);
            var n = 0
            grd.clear();

            for (var i = pgr.range(category.pg.num).beg; i <= pgr.range(category.pg.num).end; i++) {

                if (prod[i] != null) {
                    var logos = '';

                    if (prod[i].logos != null) {
                        for (var j = 0; j < prod[i].logos.length; j++) {
                            if (j == 0) {
                                logos += '<img src="http://us.' + sl.biz.domain + '/Content/image/' + ss.lang.get.current() + '/logo/' + prod[i].logos[j].name + prod[i].logos[j].ext + '" />';
                            } else {
                                logos += '<br><img src="http://us.' + sl.biz.domain + '/Content/image/' + ss.lang.get.current() + '/logo/' + prod[i].logos[j].name + prod[i].logos[j].ext + '" />';
                            }
                        }
                    }

                    var color = '';
                    var closeout = false;
                    if (prod[i].closeoutColor != -1) {
                        color = '_' + prod[i].closeoutColor;
                        closeout = true;
                    }
                    if (category.filter.colorCode != '') {
                        color = '_' + category.filter.colorCode;
                    }

                    grd.fillCell(n, ss.ui.productCell(prod[i].itemNo, prod[i].code, prod[i].name, prod[i].price, prod[i].priceCode, logos, color, closeout));
                    n += 1;
                }
            }

            ideaBoard.bind();
        }
    },
    args: function() {
        var path = cx.url.path;
        if (path.substring(path.length - 1, 1) == "/") {
            path = path.substring(1, path.length - 1);
        } else {
            path = path.substring(1, path.length);
        }
        return path.split('/');
    },
    ui: {
        filter: {
            mk: function() {
                var html = '';

                function categories(data) {

                    function refresh() {
                        category.track();

                        if ($.browser.msie) {
                            if ($.browser.version == '6.0' || $.browser.version == '7.0')
                                $('#overlay').show();
                        }

                        if (category.first == false) {
                            ss.data.category(category.catalog(), category.parentName, category.refresh);
                        }
                    }

                    /////by subcategory///////
                    var clg = $.grep(data.catalogs, function(e) { return e.name.toLowerCase().replace(' & ', ' ').replace(/\s|\//g, '-') == category.catalog().toLowerCase(); });
                    var c = [];
                    if (clg[0] != null)
                        c = $.grep(clg[0].cats, function(e) { return e.name.toLowerCase().replace(' & ', ' ').replace(/\s|\//g, '-') == category.parentName.toLowerCase(); });

                    if (c[0] == null) {
                        c = new Array();
                        c.push({ subCats: new Array() });
                        for (var i = 0; i < data.catalogs[0].cats.length; i++) {
                            c[0].subCats.push({ name: data.catalogs[0].cats[i].name });
                        }
                    }


                    for (var i = 0; i < c[0].subCats.length; i++) {
                        html += '<div><img src="/content/image/arrowright.jpg" /> <font class="filter ';
                        if (c[0].subCats[i].name.toLowerCase().replace(' & ', ' ').replace(/\s|\//g, '-') == category.name.toLowerCase()) {
                            html += 'unselcat initcat';
                        } else {
                            html += 'unselcat';
                        }
                        html += '">' + c[0].subCats[i].name + '</font> <font class="filterCount">(0)</font></div>';
                    }

                    $('#allSubCat').prev().before(html);
                    if (category.parentName == category.name) {
                        $('#allSubCat').hide();
                        $('#allSubCat').prev().hide();
                    } else {
                        $('.unselcat:not(.initcat)').hide();
                        $('.unselcat:not(.initcat)').prev().hide();
                        $('.unselcat:not(.initcat)').next().hide();
                        $('#allSubCat').show();
                        $('#allSubCat').prev().show();
                    }

                    $('.filter.unselcat').click(function() {
                        if ($(this).hasClass('selcat') == false) {
                            $('#allSubCat').show();
                            $('#allSubCat').prev().show();
                            $(this).removeClass('unselcat').addClass('selcat');
                            $('.unselcat').hide();
                            $('.unselcat').prev().hide();
                            $('.unselcat').next().hide();
                            category.name = $(this).text().replace(' & ', ' ').replace(/\s|\//g, '-');
                            //category.name = $(this).text();
                            category.pg.num = 1;
                            refresh();
                            //if(pageTracker)pageTracker._trackPageview('/catalog/view/' + category.catalog() + '/' + category.parentName + '/' + category.name + '/pg1');
                        }
                    });
                    $('#allSubCat').click(function() {
                        $('#allSubCat').hide();
                        $('#allSubCat').prev().hide();
                        $('.selcat').addClass('unselcat').removeClass('selcat').removeClass('initcat');
                        $('.unselcat').show();
                        $('.unselcat').prev().show();
                        $('.unselcat').next().show();
                        category.name = category.parentName;
                        category.pg.num = 1;
                        refresh();
                        //if(pageTracker)pageTracker._trackPageview('/catalog/view/' + category.catalog() + '/' + category.parentName + '/pg1');
                    });

                    /////by price///////
                    $('#allPrices').hide();
                    $('#allPrices').prev().hide();

                    $('.filter.unselpr').click(function() {
                        if ($(this).hasClass('selpr') == false) {
                            $('#allPrices').show();
                            $('#allPrices').prev().show();
                            $(this).removeClass('unselpr').addClass('selpr');
                            $('.unselpr').hide();
                            $('.unselpr').prev().hide();
                            $('.unselpr').next().hide();
                            g.cookie.set('priceRangeID', this.id, 1);
                            category.filter.priceRange(this.id);
                            category.pg.num = 1;
                            refresh();
                        }
                    });
                    $('#allPrices').click(function() {
                        $('#allPrices').hide();
                        $('#allPrices').prev().hide();
                        $('.selpr').addClass('unselpr').removeClass('selpr');
                        $('.unselpr').show();
                        $('.unselpr').prev().show();
                        $('.unselpr').next().show();
                        g.cookie.set('priceRangeID', '', 1);
                        category.filter.fromPrice = 0;
                        category.filter.toPrice = 9999;
                        category.pg.num = 1;
                        refresh();
                    });

                    /////////by type///////////
                    $('#allTypes').hide();
                    $('#allTypes').prev().hide();
                    var types = new Array()
                    $.each(category.data.filteredItems, function() {
                        if (this.types != null) {
                            $.each(this.types, function() {
                                if (this.name != category.catalog().replace('-', ' '))
                                    types.push(this.name);
                            });
                        }
                    });

                    var type = types.unique();

                    html = '';
                    $.each(type, function() {
                        html += '<div><img src="/content/image/arrowright.jpg" /> <font class="filter unseltype">';
                        html += this
                        html += '</font> <font class="filterCount">(0)</font></div>';
                    });


                    $('#allTypes').prev().before(html);

                    $('.filter.unseltype').click(function() {
                        if ($(this).hasClass('seltype') == false) {
                            $('#allTypes').show();
                            $('#allTypes').prev().show();
                            $(this).removeClass('unseltype').addClass('seltype');
                            $('.unseltype').hide();
                            $('.unseltype').prev().hide();
                            $('.unseltype').next().hide();
                            category.filter.type = $(this).text();
                            category.pg.num = 1;
                            refresh();
                        }
                    });

                    $('#allTypes').click(function() {
                        $('#allTypes').hide();
                        $('#allTypes').prev().hide();
                        $('.seltype').addClass('unseltype').removeClass('seltype').removeClass('inittype');
                        $('.unseltype').show();
                        $('.unseltype').prev().show();
                        $('.unseltype').next().show();
                        category.filter.type = '';
                        category.pg.num = 1;
                        refresh();
                    });


                    /////////by color///////////
                    $('#allColors').hide();
                    $('#allColors').prev().hide();
                    var colors = new Array();
                    var colorCodes = new Array();
                    $.each(category.data.filteredItems, function() {
                        $.each(this.colors, function() {
                            colors.push(this.name);
                            var colorCode = { code: this.code, name: this.name };
                            colorCodes.push(colorCode);
                        });
                    });

                    color = colors.unique(); ;

                    function getColorCode(color) {
                        for (var i = 0; i < colorCodes.length; i++)
                            if (colorCodes[i].name == color)
                            return colorCodes[i].code;
                    }

                    html = '';
                    $.each(color, function(i) {
                        var code = getColorCode(this);
                        html += '<div><img src="/content/image/arrowright.jpg" /> <font code="' + code + '" class="filter unselcolor">';
                        html += this
                        html += '</font> <font class="filterCount">(0)</font></div>';
                    });

                    $('#allColors').prev().before(html);

                    $('.filter.unselcolor').click(function() {
                        if ($(this).hasClass('selcolor') == false) {
                            $('#allColors').show();
                            $('#allColors').prev().show();
                            $(this).removeClass('unselcolor').addClass('selcolor');
                            $('font.unselcolor').hide();
                            $('font.unselcolor').prev().hide();
                            $('font.unselcolor').next().hide();
                            category.filter.color = $(this).text();
                            category.filter.colorCode = $(this).attr('code');
                            category.pg.num = 1;
                            //ss.data.category(category.catalog(), category.name, category.refresh);
                            refresh();
                        }
                    });

                    $('#allColors').click(function() {
                        $('#allColors').hide();
                        $('#allColors').prev().hide();
                        $('.selcolor').addClass('unselcolor').removeClass('selcolor').removeClass('initcolor');
                        $('.unselcolor').show();
                        $('.unselcolor').prev().show();
                        $('.unselcolor').next().show();
                        category.filter.color = '';
                        category.filter.colorCode = '';
                        category.pg.num = 1;
                        //ss.data.category(category.catalog(), category.name, category.refresh);
                        refresh();
                    });

                    category.filter.setItemCounts();

                    if (category.state.exists()) {
                        g.log('color=' + g.cookie.get('color'));
                        //load state
                        category.name = g.cookie.get('categoryName');
                        category.filter.fromPrice = g.cookie.get('fromPrice');
                        category.filter.toPrice = g.cookie.get('toPrice');
                        category.filter.color = g.cookie.get('color');
                        category.filter.colorCode = g.cookie.get('colorCode');
                        category.filter.type = g.cookie.get('type');
                        category.sort.by = g.cookie.get('sort');
                        category.sort.reverse = g.cookie.get('reverse');
                        category.pg.size = g.cookie.get('pagesize');



                        $('#perPage').val(g.cookie.get('cboPerPage'));
                        if (g.cookie.get('cboSort') != '') $('#sort').val(g.cookie.get('cboSort'));
                        if (g.cookie.get('type') != '') $("#filterTypes .filter:contains('" + g.cookie.get('type') + "')").click();
                        if (g.cookie.get('colorCode') != '') $("#filterColors [code='" + g.cookie.get('colorCode') + "']").click();
                        if (category.parentName == category.name) { $('#allSubCat').click(); }
                        else {
                            $('#allSubCat').show();
                            $('#allSubCat').prev().show();
                        }
                        if (g.cookie.get('priceRangeID') != '') $('#' + g.cookie.get('priceRangeID')).click();

                        category.pg.num = g.cookie.get('pgnum');

                        category.first = false;
                        g.cookie.setg('pp', false);
                        refresh();

                    }
                    g.cookie.setg('pp', false);
                    category.first = false;



                }
                ss.data.catalog(categories);
            }
        }
    },
    filter: {
        fromPrice: 0,
        toPrice: 9999,
        color: '',
        colorCode: '',
        type: '',
        exec: function() {
            var data = $.grep(category.data.filteredItems, function(e) { return e.price >= category.filter.fromPrice && e.price <= category.filter.toPrice; });

            //console.log(category.name + '==' + category.parentName);
            //console.log(data);


            if (category.name != category.parentName) {
                data = $.grep(data, function(e) {
                    ///console.log(e.subCategory.name.toLowerCase().replace(/\s|\//g, '-')+'='+category.name.toLowerCase());
                    return e.subCategory.name.toLowerCase().replace(' & ', ' ').replace(/\s|\//g, '-') == category.name.toLowerCase();
                });
            }


            //console.log(data);

            if (category.filter.type != '') {
                function hasType(type, array) {
                    var ret = false
                    if (array != null) {
                        $.each(array, function() {
                            if (this.name == type) { ret = true; }
                        });
                    }
                    return ret;
                }
                data = $.grep(data, function(e) { return hasType(category.filter.type, e.types); });
            }

            if (category.filter.color != '') {
                function hasColor(color, array) {
                    var ret = false
                    $.each(array, function() {
                        if (this.name == color) { ret = true; }
                    });
                    return ret;
                }

                data = $.grep(data, function(e) { return hasColor(category.filter.color, e.colors); });
            }

            return data;
        },
        setItemCounts: function() {
            //return false;
            var prev_data = category.data.filteredItems;
            var prev_category = category.name
            var prev_fromPrice = category.filter.fromPrice;
            var prev_toPrice = category.filter.toPrice;
            var prev_color = category.filter.color;
            var prev_type = category.filter.type;

            function reset() {
                category.data.filteredItems = prev_data;
                category.name = prev_category;
                category.filter.fromPrice = prev_fromPrice;
                category.filter.toPrice = prev_toPrice;
                category.filter.color = prev_color;
                category.filter.type = prev_type;
            }

            $(category.filter.getPriceRanges()).each(function(e) {
                category.filter.priceRange(this.id);
                var x = category.filter.exec();
                $(this).next().text('(' + x.length + ')');
                if (x.length < 1) {
                    $(this).parent().children().hide();
                } else {
                    if ($('#allPrices:hidden').length > 0)
                        $(this).parent().children().show();
                }
                reset();
            });

            $(category.filter.getTypes()).each(function(e) {
                category.filter.type = $(this).text();
                var x = category.filter.exec();
                $(this).next().text('(' + x.length + ')');
                if (x.length < 1) {
                    $(this).parent().children().hide();
                } else {
                    if ($('#allTypes:hidden').length > 0)
                        $(this).parent().children().show();
                }
                reset();
            });

            $(category.filter.getColors()).each(function(e) {
                category.filter.color = $(this).text();
                var x = category.filter.exec();
                $(this).next().text('(' + x.length + ')');
                if (x.length < 1) {
                    $(this).parent().children().hide();
                } else {
                    if ($('#allColors:hidden').length > 0)
                        $(this).parent().children().show();
                }
                reset();
            });


            $(category.filter.getSubCategories()).each(function(e) {
                category.name = $(this).text().replace(' & ', ' ').replace(/\s|\//g, '-');
                var x = category.filter.exec();
                x = $.grep(x, function(e) { return e.subCategory.name.toLowerCase().replace(' & ', ' ').replace(/\s|\//g, '-') == category.name.toLowerCase(); });
                $(this).next().text('(' + x.length + ')');
                if (x.length < 1) {
                    $(this).parent().children().hide();
                } else {
                    if ($('#allSubCat:hidden').length > 0)
                        $(this).parent().children().show();
                }
                reset();
            });

            //hide types if there are no type for current filter
            if ($('#filterTypes .unseltype:visible').length < 1 && $('#filterTypes .seltype:visible').length < 1) {
                $('#byType').hide();
                $('#byType').next().hide();
            } else {
                $('#byType').show();
                $('#byType').next().show();
            }

        },
        getSubCategories: function() {
            return $('#filterCats font.unselcat, #filterCats font.selcat');
        },
        getColors: function() {
            return $('#filterColors font.unselcolor, #filterColors font.selcolor');
        },
        getTypes: function() {
            return $('#filterTypes font.unseltype, #filterTypes font.seltype');
        },
        getPriceRanges: function() {
            return $('#filterPrices font.unselpr, #filterPrices font.selpr');
        },
        priceRange: function(id) {
            switch (id) {
                case 'lt5':
                    category.filter.fromPrice = 0;
                    category.filter.toPrice = 5;
                    break;
                case '5to10':
                    category.filter.fromPrice = 5;
                    category.filter.toPrice = 10;
                    break;
                case '10to20':
                    category.filter.fromPrice = 10;
                    category.filter.toPrice = 20;
                    break;
                case '20to30':
                    category.filter.fromPrice = 20;
                    category.filter.toPrice = 30;
                    break;
                case '30to50':
                    category.filter.fromPrice = 30;
                    category.filter.toPrice = 50;
                    break;
                case 'gt50':
                    category.filter.fromPrice = 50;
                    category.filter.toPrice = 9999;
                    break;
                default:
            }
        }
    }
}

g.init('app', function() {
    category.init();
    ss.on.progress.content = function() {
        if (++ss.done.content == 1) ss.on.progress();  
    }
});
