/** * @constructor */ hui.ui.Tabs = function(o) { o = o || {}; this.name = o.name; this.element = hui.get(o.element); this.activeTab = -1; var x = hui.get.firstByClass(this.element,'hui_tabs_bar'); this.bar = hui.find('.hui_tabs_bar', this.element); this.tabs = hui.findAll('.hui_tabs_tab', this.element); this.contents = hui.findAll('.hui_tabs_body', this.element); this._attach(); hui.ui.extend(this); }; hui.ui.Tabs.create = function(options) { options = options || {}; var e = options.element = hui.build('div',{'class':'hui_tabs'}); if (options.small) { hui.cls.add(e, 'hui_tabs-small'); } var bar = hui.build('div',{'class' : 'hui_tabs_bar', parent : e}); if (options.centered) { hui.cls.add(bar, 'hui_tabs_bar-centered'); } return new hui.ui.Tabs(options); }; hui.ui.Tabs.prototype = { _attach : function() { for (var i=0; i < this.tabs.length; i++) { this._attachTab(this.tabs[i],i); } }, _attachTab : function(tab, index) { hui.listen(tab,'click',function() { this._clickTab(index); }.bind(this)); }, _clickTab : function(index) { this.activeTab = index; this._update(); hui.ui.callVisible(this); }, _update : function() { for (var i=0; i < this.tabs.length; i++) { hui.cls.set(this.tabs[i], 'hui-is-selected', i == this.activeTab); hui.cls.set(this.contents[i], 'hui-is-selected', i == this.activeTab); } }, createTab : function(options) { options = options || {}; var tab = hui.build('a.hui_tabs_tab',{text: options.title,parent: this.bar}); this._attachTab(tab, this.tabs.length); this.tabs.push(tab); var e = options.element = hui.build('div',{'class':'hui_tabs_body'}); if (options.padding>0) { e.style.padding = options.padding+'px'; } this.contents.push(e); this.element.appendChild(e); if (this.activeTab==-1) { this.activeTab=0; hui.cls.add(tab,'hui-is-selected'); hui.cls.add(e,'hui-is-selected'); } return new hui.ui.Tab(options); } }; /** * @constructor */ hui.ui.Tab = function(o) { this.name = o.name; this.element = hui.get(o.element); }; hui.ui.Tab.prototype = { add : function(widgetOrNode) { if (widgetOrNode.getElement) { this.element.appendChild(widgetOrNode.getElement()); } else { this.element.appendChild(widgetOrNode); } } };