PageSourceSearch

https://www.fs-ev.org/_assets/c548c2d27a863088234ed8a90cf56905/JavaScript/PollTabs-jQuery.js?1778670294

js fs-ev.org collected 2026-10-02 14:31:19 UTC 4,075 bytes, 105 lines download raw bytes

1var PollTabsJQuery = {
2
3    scrollOffset: 50,
4
5    initialize: function () {
6        jQuery.each(jQuery('div[data-poll-tabs]'), function () {
7            var wrapper = jQuery(this);
8            var poll = wrapper.attr('data-poll-tabs');
9            var pollTab = parseInt(wrapper.attr('data-poll-tab'), 10);
10            var navigation = jQuery('ul[data-poll-tab-navigation=\'' + poll + '\']');
11            jQuery.each(jQuery('a.btn', navigation), function () {
12                var button = jQuery(this);
13                if (button.attr('data-poll-tab') === 'previous') {
14                    button.on('click', function () {
15                        PollTabsJQuery.previous(poll);
16                        event.preventDefault();
17                        return false;
18                    });
19                } else if (button.attr('data-poll-tab') === 'next') {
20                    button.on('click', function () {
21                        PollTabsJQuery.next(poll);
22                        event.preventDefault();
23                        return false;
24                    });
25                } else {
26                    button.on('click', function () {
27                        PollTabsJQuery.page(poll, parseInt(button.attr('data-poll-tab'), 10));
28                        event.preventDefault();
29                        return false;
30                    });
31                }
32            });
33            PollTabsJQuery.page(poll, pollTab);
34        });
35    },
36
37    previous: function (poll) {
38        var pollTabNoActive = jQuery('div[data-poll-tabs=\'' + poll + '\']').attr('data-poll-tab');
39        pollTabNoActive = parseInt(pollTabNoActive, 10) - 1;
40        PollTabsJQuery.page(poll, pollTabNoActive);
41    },
42
43    next: function (poll) {
44        var pollTabNoActive = jQuery('div[data-poll-tabs=\'' + poll + '\']').attr('data-poll-tab');
45        pollTabNoActive = parseInt(pollTabNoActive, 10) + 1;
46        PollTabsJQuery.page(poll, pollTabNoActive);
47    },
48
49    page: function (poll, no) {
50        var navigation = jQuery('ul[data-poll-tab-navigation=\'' + poll + '\']');
51        if (navigation.length !== 1) {
52            console.error('invalid ul[data-poll-tab-navigation=\'' + poll + '\']')
53        }
54        var tabsWrapper = jQuery('div[data-poll-tabs=\'' + poll + '\']');
55        if (tabsWrapper.length !== 1) {
56            console.error('invalid div[data-poll-tabs=\'' + poll + '\']')
57        }
58        var tabs = jQuery('div[data-poll-tab]', tabsWrapper);
59        if (tabs.length === 0) {
60            console.error('invalid div[data-poll-tabs=\'' + poll + '\'] in div[data-poll-tab]')
61        }
62        //
63        // Validate tab number
64        if (no < 1) {
65            no = 1;
66        } else if (no > tabs.length) {
67            no = tabs.length;
68        }
69        //
70        // Tabs
71        jQuery('div[data-poll-tab]', tabsWrapper).hide();
72        jQuery('div[data-poll-tab=\'' + no + '\']', tabsWrapper).show();
73        //
74        // Navigation
75        jQuery('a.btn', navigation).removeClass('active');
76        jQuery('a.btn[data-poll-tab=\'' + no + '\']', navigation).addClass('active');
77        if (no > 1) {
78            jQuery('a.btn[data-poll-tab=\'previous\']', navigation).removeClass('disabled');
79        } else {
80            jQuery('a.btn[data-poll-tab=\'previous\']', navigation).addClass('disabled');
81        }
82        if (no < tabs.length) {
83            jQuery('a.btn[data-poll-tab=\'next\']', navigation).removeClass('disabled');
84        } else {
85            jQuery('a.btn[data-poll-tab=\'next\']', navigation).addClass('disabled');
86        }
87        //
88        // Set current tab number
89        tabsWrapper.attr('data-poll-tab', no);
90        //
91        // Scroll to tab start
92        PollTabsJQuery.scrollTo('div[data-poll-tabs=\'' + poll + '\']');
93    },
94
95    scrollTo: function (selector) {
96        let element = jQuery(selector);
97        jQuery('html, body').animate({
98            scrollTop: element.offset().top - PollTabsJQuery.scrollOffset
99        }, 500);
100    }
101
102};
103jQuery(document).ready(function () {
104    PollTabsJQuery.initialize();
105});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.