function Category(id, name, product_count, is_leaf) {
    this.id = id;
    this.name = name;
    this.product_count = product_count;
    this.is_leaf = is_leaf;
}

function loadCategorySelector(level, data) {
    var categorySelectorElement = document.getElementById('category_selector_' + level);
    cleanCategorySelector(level);
	for (i = 0; i < data.length; i++) {
		if (!data[i]) continue;
        var category_id = data[i];
        var category = ci[category_id];
        categorySelectorElement.options[i] = new Option(category.name + ' (' + category.product_count + ')', category_id, false, false);
	}
}

function cleanCategorySelector(level) {
    var categorySelectorElement = document.getElementById('category_selector_' + level);
	for (i = categorySelectorElement.length - 1; i > -1; i--) {
		categorySelectorElement.options[i] = null;
	}
}

function categorySelectorOnChange(level, value) {
    var category_id = value;
    var category = ci[category_id];
    
    if (category.is_leaf) {
        redirectToCategoryView(category_id);
    } else {
        loadCategorySelector(level + 1, cr[level + 1][value]);
        for (var i = level + 2; i < 4; i++) {
            cleanCategorySelector(i);
        }
    }
}

function categorySelectorOnDblClick(level, value) {
    redirectToCategoryView(value);
}
