Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // -------------------------------------------------------------------------------------------
- // Tab Shortcode
- // -------------------------------------------------------------------------------------------
- (function ($) {
- "use strict";
- $.fn.avia_sc_tabs = function (options) {
- var defaults =
- {
- heading: '.tab',
- content: '.tab_content',
- active: 'active_tab',
- sidebar: false
- };
- var win = $(window),
- options = $.extend(defaults, options);
- return this.each(function () {
- var container = $(this),
- tab_titles = $('<div class="tab_titles"></div>').prependTo(container),
- tabs = $(options.heading, container),
- content = $(options.content, container),
- newtabs = false,
- oldtabs = false;
- newtabs = tabs.clone();
- oldtabs = tabs.addClass('fullsize-tab').attr('aria-hidden', true);
- tabs = newtabs;
- tabs.prependTo(tab_titles).each(function (i) {
- var tab = $(this),
- the_oldtab = false;
- if (newtabs) {
- the_oldtab = oldtabs.eq(i);
- }
- tab.addClass('tab_counter_' + i).on('mouseover', function () {
- open_content(tab, i, the_oldtab);
- return false;
- });
- tab.on('keydown', function (objEvent) {
- if (objEvent.keyCode === 13) // if user presses 'enter'
- {
- tab.trigger('mouseover');
- }
- });
- if (newtabs) {
- the_oldtab.on('mouseover', function () {
- open_content(the_oldtab, i, tab);
- return false;
- });
- the_oldtab.on('keydown', function (objEvent) {
- if (objEvent.keyCode === 13) // if user presses 'enter'
- {
- the_oldtab.trigger('mouseover');
- }
- });
- }
- });
- set_size();
- trigger_default_open(false);
- win.on("debouncedresize", set_size);
- $('a').on('mouseover', function () {
- var hash = $(this).attr('href');
- if (typeof hash != "undefined" && hash) {
- hash = hash.replace(/^.*?#/, '');
- trigger_default_open('#' + hash);
- }
- });
- function set_size() {
- if (!options.sidebar) {
- return;
- }
- content.css({ 'min-height': tab_titles.outerHeight() + 1 });
- }
- function open_content(tab, i, alternate_tab) {
- if (!tab.is('.' + options.active)) {
- $('.' + options.active, container).removeClass(options.active);
- $('.' + options.active + '_content', container).attr('aria-hidden', true).removeClass(options.active + '_content');
- tab.addClass(options.active);
- var new_loc = tab.data('fake-id');
- if (typeof new_loc == 'string') {
- window.location.replace(new_loc);
- }
- if (alternate_tab) {
- alternate_tab.addClass(options.active);
- }
- var active_c = content.eq(i).addClass(options.active + '_content').attr('aria-hidden', false);
- if (typeof click_container != 'undefined' && click_container.length) {
- sidebar_shadow.height(active_c.outerHeight());
- }
- //check if tab title is in viewport. if not scroll up
- var el_offset = active_c.offset().top,
- scoll_target = el_offset - 50 - parseInt($('html').css('margin-top'), 10);
- if (win.scrollTop() > el_offset) {
- $('html:not(:animated),body:not(:animated)').scrollTop(scoll_target);
- }
- }
- win.trigger('av-content-el-height-changed', tab);
- }
- function trigger_default_open(hash) {
- if (!hash && window.location.hash) {
- hash = window.location.hash;
- }
- if (!hash) {
- return;
- }
- var open = tabs.filter('[data-fake-id="' + hash + '"]');
- if (open.length) {
- if (!open.is('.active_tab')) {
- open.trigger('mouseover');
- }
- window.scrollTo(0, container.offset().top - 70);
- }
- }
- });
- };
- }(jQuery));
Advertisement
Add Comment
Please, Sign In to add comment