///
var RegionFilter;
(function (RegionFilter_1) {
var RegionFilter = (function () {
function RegionFilter($selector, config) {
this.selected = {};
this.strings = ['район', 'района', 'районов'];
this.typeName = 'районы';
this.$selector = $selector;
var strings = $selector.data('strings');
var typeName = $selector.data('type-name');
if (strings !== undefined) {
this.strings = eval(strings);
}
if (typeName !== undefined) {
this.typeName = typeName;
}
this.config = config;
this.$selector.click(this.onSelectorClick.bind(this));
this.loadSelected();
}
RegionFilter.prototype.onSelectorClick = function (event) {
event.preventDefault();
var context = this;
var itemsContainer = this.$selector.parent().find('.' + this.config.itemsContainerClass);
if (itemsContainer.length) {
itemsContainer.fadeOut(200, function () {
$(this).remove();
});
}
else {
this.$selector.parent().append(this.createContainer());
}
};
RegionFilter.prototype.createContainer = function () {
var itemsContainer = $("
");
var context = this;
var field = $(this.$selector.data('field'));
field.find('option').each(function () {
var id = $(this).attr('value');
itemsContainer.append(
// create container
$("")
.append($("")
.attr('checked', $(this).prop('selected'))
.on('change', function () {
field.find("option[value=" + id + "]").prop('selected', $(this).prop('checked'));
context.setCount(field.find('option:selected').length);
}))
.append($("")));
});
return itemsContainer;
};
RegionFilter.prototype.loadSelected = function () {
};
RegionFilter.declOfNum = function (number, titles) {
var cases = [2, 0, 1, 1, 1, 2];
return titles[(number % 100 > 4 && number % 100 < 20) ? 2 : cases[(number % 10 < 5) ? number % 10 : 5]];
};
RegionFilter.prototype.checkChecked = function (id) {
return this.selected.hasOwnProperty(id);
};
RegionFilter.prototype.setCount = function (count) {
if (count === void 0) { count = 0; }
this.$selector.html('Все ' + this.typeName);
if (count > 0) {
this.$selector.html(count + ' ' + RegionFilter.declOfNum(count, this.strings));
}
};
return RegionFilter;
}());
RegionFilter_1.RegionFilter = RegionFilter;
})(RegionFilter || (RegionFilter = {}));