Ситуация решилась добавлением в JCSmartFilter.prototype.hideFilterProps в else
$('div.active').removeClass('active');
.
Итог:
JCSmartFilter.prototype.hideFilterProps = function(element)
{
var easing;
var obj = element.parentNode;
var filterBlock = BX.findChild(obj, {className:"bx_filter_block"}, true, false);
if(BX.hasClass(obj, "active"))
{
easing = new BX.easing({
duration : 300,
start : { opacity: 1, height: filterBlock.offsetHeight },
finish : { opacity: 0, height:0 },
transition : BX.easing.transitions.quart,
step : function(state){
filterBlock.style.opacity = state.opacity;
filterBlock.style.height = state.height + "px";
},
complete : function() {
filterBlock.setAttribute("style", "");
BX.removeClass(obj, "active");
}
});
easing.animate();
}
else
{
filterBlock.style.display = "block";
filterBlock.style.opacity = 0;
filterBlock.style.height = "auto";
var obj_children_height = filterBlock.offsetHeight;
filterBlock.style.height = 0;
easing = new BX.easing({
duration : 300,
start : { opacity: 0, height: 0 },
finish : { opacity: 1, height: obj_children_height },
transition : BX.easing.transitions.quart,
step : function(state){
filterBlock.style.opacity = state.opacity;
filterBlock.style.height = state.height + "px";
},
complete : function() {
}
});
easing.animate();
[B]$('div.active').removeClass('active');[/B]
BX.addClass(obj, "active");
}
};
Не знаю, насколько данный вариант верный, но вроде работает как надо