String.prototype.format = function () { var args = arguments; return this.replace(/{(\d+)}/g, function (match, number) { return typeof args[number] != 'undefined' ? args[number] : match ; }); }; var AccordionCategoryModule = function ($) { var data = { widgetMainContainers: [], parentItems: [], lists: [], controls: [], parentToggleIcons: [], maxNestingLevel: 0, generatedStyle: null }; var config = { CSS: { classes: { widgetMain: 'accordion-menu-widget', accordionList: 'accordion-list', accordionItem: 'accordion-list-item', accordionItemControls: 'accordion-list-item__controls', accordionItemLink: 'accordion-list-item__link', accordionItemPostCount: 'accordion-list-item__post-count', accordionItemIcon: 'accordion-list-item__icon', accordionItemToggleIcon: 'accordion-list-item__toggle-icon', isActive: 'is-active', isOpened: 'is-opened', isRoot: 'is-root', hasChildren: 'has-children' }, dynamicClasses: { listLevel: '.accordion-list--level-{0}', paddingRightOverflow: 'padding-right : {0}px', }, IDs: { catId: 'category-id-%d' }, indentPropertyPattern: 'text-indent : {0}px;', paddingLeftPropertyPattern: 'padding-left : {0}px;' }, regexPatterns: { listLevel: new RegExp('accordion-list--level-(\\d+)', 'i') }, settings: { animationTime: 1500, animationType: 'easeOutSine', defaultPadding: 12, overflowCoefficient : 2.4, nestingTypeTextIndent: 'text-indent', nestingTypePadding: 'padding', paddingDelta: 2, skin: 'default' }, params: accordionMenuParams }; function initDefaults() { // Initalization default stuff collectWidgetElements(); setToggleIconClickListener(_handleToggleIconClick); switch (config.params.nesting_type) { case config.settings.nestingTypePadding: if (config.params.auto_generate_css) { _generatePaddingStylesheet(); _setPaddingWindowResizeHandler(); } else { _generateDefaultPaddingStylesheet(); } break; case config.settings.nestingTypeTextIndent: if (config.params.auto_generate_css) { _generateTextIndentStylesheet(); _setTextIndentWindowResizeHandler(); } break; default : break; } } // Private var _setTextIndentWindowResizeHandler = function () { $(window).resize(function () { _removeAllGeneratedRules(); _generateTextIndentStylesheet(); }); }; var _setPaddingWindowResizeHandler = function () { $(window).resize(function () { _removeAllGeneratedRules(); _generatePaddingStylesheet(); }); }; var _addCSSRule = function addCSSRule(sheet, selector, rules, index) { index = index || 0; if ("insertRule" in sheet) { sheet.insertRule(selector + "{" + rules + "}", index); } else if ("addRule" in sheet) { sheet.addRule(selector, rules, index); } }; var _deleteCSSRule = function deleteCSSRule(sheet, index) { if (sheet.cssRules) { // all browsers, except IE before version 9 sheet.deleteRule(index); } else { sheet.removeRule(index); } }; var _generateStyleElement = function () { // Create the