summaryrefslogtreecommitdiff
path: root/www/js/simpletabs-debug.js
diff options
context:
space:
mode:
authorsss <sss@dark-alexandr.net>2023-01-17 00:38:19 +0300
committersss <sss@dark-alexandr.net>2023-01-17 00:38:19 +0300
commitcc3f33db7a8d3c4ad373e646b199808e01bc5d9b (patch)
treeec09d690c7656ab5f2cc72607e05fb359c24d8b2 /www/js/simpletabs-debug.js
added webrdp public code
Diffstat (limited to 'www/js/simpletabs-debug.js')
-rw-r--r--www/js/simpletabs-debug.js120
1 files changed, 120 insertions, 0 deletions
diff --git a/www/js/simpletabs-debug.js b/www/js/simpletabs-debug.js
new file mode 100644
index 0000000..33a5e4a
--- /dev/null
+++ b/www/js/simpletabs-debug.js
@@ -0,0 +1,120 @@
+/**
+ * SimpleTabs - Unobtrusive Tabs with Ajax
+ *
+ * @example
+ *
+ * var tabs = new SimpleTabs($('tab-element'), {
+ * selector: 'h2.tab-tab'
+ * });
+ *
+ * @version 1.0
+ *
+ * @license MIT License
+ * @author Harald Kirschner <mail [at] digitarald.de>
+ * @copyright 2007 Author
+ */
+var SimpleTabs = new Class({
+
+ Implements: [Events, Options],
+
+ /**
+ * Options
+ */
+ options: {
+ show: 0,
+ selector: '.tab-tab',
+ classWrapper: 'tab-wrapper',
+ classMenu: 'tab-menu',
+ classContainer: 'tab-container',
+ onSelect: function(toggle, container, index) {
+ toggle.addClass('tab-selected');
+ container.setStyle('display', '');
+ },
+ onDeselect: function(toggle, container, index) {
+ toggle.removeClass('tab-selected');
+ container.setStyle('display', 'none');
+ },
+ onAdded: Class.empty,
+ getContent: null
+ },
+
+ /**
+ * Constructor
+ *
+ * @param {Element} The parent Element that holds the tab elements
+ * @param {Object} Options
+ */
+ initialize: function(element, options) {
+ this.element = $(element);
+ this.setOptions(options);
+ this.selected = null;
+ this.build();
+ },
+
+ build: function() {
+ this.tabs = [];
+ this.menu = new Element('ul', {'class': this.options.classMenu});
+ this.wrapper = new Element('div', {'class': this.options.classWrapper});
+
+ this.element.getElements(this.options.selector).each(function(el) {
+ var content = el.get('href') || (this.options.getContent ? this.options.getContent.call(this, el) : el.getNext());
+ this.addTab(el.innerHTML, el.title || el.innerHTML, content);
+ }, this);
+ this.element.empty().adopt(this.menu, this.wrapper);
+
+ if (this.tabs.length) this.select(this.options.show);
+ },
+
+ /**
+ * Add a new tab at the end of the tab menu
+ *
+ * @param {String} inner Text
+ * @param {String} Title
+ * @param {Element|String} Content Element or URL for Ajax
+ */
+ addTab: function(text, title, content) {
+ var grab = $(content);
+ var container = (grab || new Element('div'))
+ .setStyle('display', 'none')
+ .addClass(this.options.classContainer)
+ .inject(this.wrapper);
+ var pos = this.tabs.length;
+ var evt = (this.options.hover) ? 'mouseenter' : 'click';
+ var tab = {
+ container: container,
+ toggle: new Element('li').grab(new Element('a', {
+ href: '#',
+ title: title
+ }).grab(
+ new Element('span', {html: text})
+ )).addEvent(evt,function(e){this.onClick(e,pos);}.bind(this)).inject(this.menu)
+ };
+ this.tabs.push(tab);
+ return this.fireEvent('onAdded', [tab.toggle, tab.container, pos]);
+ },
+
+ onClick: function(evt, index) {
+ this.select(index);
+ return false;
+ },
+
+ /**
+ * Select the tab via tab-index
+ *
+ * @param {Number} Tab-index
+ */
+ select: function(index) {
+ if (this.selected === index || !this.tabs[index]) return this;
+ var tab = this.tabs[index];
+ var params = [tab.toggle, tab.container, index];
+ if (this.selected !== null) {
+ var current = this.tabs[this.selected];
+ params.append([current.toggle, current.container, this.selected]);
+ this.fireEvent('onDeselect', [current.toggle, current.container, this.selected]);
+ }
+ this.fireEvent('onSelect', params);
+ this.selected = index;
+ return this;
+ }
+
+});