var EXPO = EXPO || {}; //isolated namespace if (EXPO.about) { console.warn('WARNING: EXPO.about is already defined!'); } else { EXPO.about = (function () { /** * private (visible inside this module only) variables */ /** * @type {Object} - module API interafce realization */ var that = {}; /** * @type {Object} default setting */ that.opt = {}; /** * dependencies.Place where you can switch on dependencies for module * @type {EXPO.common|*} - mostly used in project functions and data (block.common.js) */ var com = EXPO.common; /** * tabs object constructor * @param options - options (id's and classes to specifie HTML elements) * @constructor */ var Tabs = function (options) { this.opt = options; var self = this, opt = this.opt, tabClass = opt.tabClass, activeClass = opt.activeClass; /** * tabs navigation menu * @type {*|jQuery|HTMLElement} * @public */ this.$tabsList = $('#'+opt.listId); /** * tabs body container * @type {*|jQuery|HTMLElement} * @public */ this.$tabs = $('#'+opt.tabsId); /** * short peview for content of each tabs * @type {*|jQuery|HTMLElement} * @public */ this.$tabsOpenings = $('#'+opt.tabsOpeningId); $('a',this.$tabsList).on('click', function () { $(this).parent('li').addClass(activeClass).siblings().removeClass(activeClass); var tabId = $(this).attr('href'); tabId = tabId.replace('#',''); self.setActive(tabId); return false; }); }; Tabs.prototype = { /** * make specified tab visible * @param tabId - tab DOM id pararmeter * @public */ setActive: function (tabId) { var activeClass = this.opt.activeClass, tabClass = this.opt.tabClass, postfix = this.opt.postfix; this.$tabs.children('.'+tabClass).hide().removeClass(activeClass); this.$tabs.children('#'+tabId).fadeIn(function () { $(this).addClass(activeClass) }); this.$tabsOpenings.children('.'+tabClass).removeClass(activeClass); this.$tabsOpenings.children('#'+tabId+postfix).addClass(activeClass); } }; /** * current module general initialization * @param {Object} options - options recieved from web page view */ that.init = function (options) { // settings extending $.extend(this.opt, options); // begin of initialization var self = this; this.tabs = new Tabs(this.opt.tabs); }; return that; }()); }