(function ($) { $.nfinetab = { requestFullScreen: function () { var de = document.documentElement; if (de.requestFullscreen) { de.requestFullscreen(); } else if (de.mozRequestFullScreen) { de.mozRequestFullScreen(); } else if (de.webkitRequestFullScreen) { de.webkitRequestFullScreen(); } }, exitFullscreen: function () { var de = document; if (de.exitFullscreen) { de.exitFullscreen(); } else if (de.mozCancelFullScreen) { de.mozCancelFullScreen(); } else if (de.webkitCancelFullScreen) { de.webkitCancelFullScreen(); } }, refreshTab: function () { var currentId = $('.page-tabs-content').find('.active').attr('data-id'); var target = $('.NFine_iframe[data-id="' + currentId + '"]'); var url = target.attr('src'); $.loading(true); target.attr('src', url).load(function () { $.loading(false); }); }, activeTab: function () { var currentId = $(this).data('id'); if (!$(this).hasClass('active')) { $('.mainContent .NFine_iframe').each(function () { if ($(this).data('id') == currentId) { $(this).show().siblings('.NFine_iframe').hide(); return false; } }); $(this).addClass('active').siblings('.menuTab').removeClass('active'); $.nfinetab.scrollToTab(this); } }, closeOtherTabs: function () { $('.page-tabs-content').children("[data-id]").find('.fa-remove').parents('a').not(".active").each(function () { $('.NFine_iframe[data-id="' + $(this).data('id') + '"]').remove(); $(this).remove(); }); $('.page-tabs-content').css("margin-left", "0"); }, closeTab: function () { var closeTabId = $(this).parents('.menuTab').data('id'); var currentWidth = $(this).parents('.menuTab').width(); if ($(this).parents('.menuTab').hasClass('active')) { if ($(this).parents('.menuTab').next('.menuTab').size()) { var activeId = $(this).parents('.menuTab').next('.menuTab:eq(0)').data('id'); $(this).parents('.menuTab').next('.menuTab:eq(0)').addClass('active'); $('.mainContent .NFine_iframe').each(function () { if ($(this).data('id') == activeId) { $(this).show().siblings('.NFine_iframe').hide(); return false; } }); var marginLeftVal = parseInt($('.page-tabs-content').css('margin-left')); if (marginLeftVal < 0) { $('.page-tabs-content').animate({ marginLeft: (marginLeftVal + currentWidth) + 'px' }, "fast"); } $(this).parents('.menuTab').remove(); $('.mainContent .NFine_iframe').each(function () { if ($(this).data('id') == closeTabId) { $(this).remove(); return false; } }); } if ($(this).parents('.menuTab').prev('.menuTab').size()) { var activeId = $(this).parents('.menuTab').prev('.menuTab:last').data('id'); $(this).parents('.menuTab').prev('.menuTab:last').addClass('active'); $('.mainContent .NFine_iframe').each(function () { if ($(this).data('id') == activeId) { $(this).show().siblings('.NFine_iframe').hide(); return false; } }); $(this).parents('.menuTab').remove(); $('.mainContent .NFine_iframe').each(function () { if ($(this).data('id') == closeTabId) { $(this).remove(); return false; } }); } } else { $(this).parents('.menuTab').remove(); $('.mainContent .NFine_iframe').each(function () { if ($(this).data('id') == closeTabId) { $(this).remove(); return false; } }); $.nfinetab.scrollToTab($('.menuTab.active')); } return false; }, addTab: function () { $("#header-nav>ul>li.open").removeClass("open"); var dataId = $(this).attr('data-id'); if (dataId != "") { top.$.cookie('nfine_currentmoduleid', dataId, { path: "/" }); } var dataUrl = $(this).attr('href'); var menuName = $.trim($(this).text()); var flag = true; if (dataUrl == undefined || $.trim(dataUrl).length == 0) { return false; } $('.menuTab').each(function () { if ($(this).data('id') == dataUrl) { if (!$(this).hasClass('active')) { $(this).addClass('active').siblings('.menuTab').removeClass('active'); $.nfinetab.scrollToTab(this); $('.mainContent .NFine_iframe').each(function () { if ($(this).data('id') == dataUrl) { $(this).show().siblings('.NFine_iframe').hide(); return false; } }); } flag = false; return false; } }); if (flag) { var str = '' + menuName + ' '; $('.menuTab').removeClass('active'); var str1 = ''; $('.mainContent').find('iframe.NFine_iframe').hide(); $('.mainContent').append(str1); $.loading(true); $('.mainContent iframe:visible').load(function () { $.loading(false); }); $('.menuTabs .page-tabs-content').append(str); $.nfinetab.scrollToTab($('.menuTab.active')); } return false; }, scrollTabRight: function () { var marginLeftVal = Math.abs(parseInt($('.page-tabs-content').css('margin-left'))); var tabOuterWidth = $.nfinetab.calSumWidth($(".content-tabs").children().not(".menuTabs")); var visibleWidth = $(".content-tabs").outerWidth(true) - tabOuterWidth; var scrollVal = 0; if ($(".page-tabs-content").width() < visibleWidth) { return false; } else { var tabElement = $(".menuTab:first"); var offsetVal = 0; while ((offsetVal + $(tabElement).outerWidth(true)) <= marginLeftVal) { offsetVal += $(tabElement).outerWidth(true); tabElement = $(tabElement).next(); } offsetVal = 0; while ((offsetVal + $(tabElement).outerWidth(true)) < (visibleWidth) && tabElement.length > 0) { offsetVal += $(tabElement).outerWidth(true); tabElement = $(tabElement).next(); } scrollVal = $.nfinetab.calSumWidth($(tabElement).prevAll()); if (scrollVal > 0) { $('.page-tabs-content').animate({ marginLeft: 0 - scrollVal + 'px' }, "fast"); } } }, scrollTabLeft: function () { var marginLeftVal = Math.abs(parseInt($('.page-tabs-content').css('margin-left'))); var tabOuterWidth = $.nfinetab.calSumWidth($(".content-tabs").children().not(".menuTabs")); var visibleWidth = $(".content-tabs").outerWidth(true) - tabOuterWidth; var scrollVal = 0; if ($(".page-tabs-content").width() < visibleWidth) { return false; } else { var tabElement = $(".menuTab:first"); var offsetVal = 0; while ((offsetVal + $(tabElement).outerWidth(true)) <= marginLeftVal) { offsetVal += $(tabElement).outerWidth(true); tabElement = $(tabElement).next(); } offsetVal = 0; if ($.nfinetab.calSumWidth($(tabElement).prevAll()) > visibleWidth) { while ((offsetVal + $(tabElement).outerWidth(true)) < (visibleWidth) && tabElement.length > 0) { offsetVal += $(tabElement).outerWidth(true); tabElement = $(tabElement).prev(); } scrollVal = $.nfinetab.calSumWidth($(tabElement).prevAll()); } } $('.page-tabs-content').animate({ marginLeft: 0 - scrollVal + 'px' }, "fast"); }, scrollToTab: function (element) { var marginLeftVal = $.nfinetab.calSumWidth($(element).prevAll()), marginRightVal = $.nfinetab.calSumWidth($(element).nextAll()); var tabOuterWidth = $.nfinetab.calSumWidth($(".content-tabs").children().not(".menuTabs")); var visibleWidth = $(".content-tabs").outerWidth(true) - tabOuterWidth; var scrollVal = 0; if ($(".page-tabs-content").outerWidth() < visibleWidth) { scrollVal = 0; } else if (marginRightVal <= (visibleWidth - $(element).outerWidth(true) - $(element).next().outerWidth(true))) { if ((visibleWidth - $(element).next().outerWidth(true)) > marginRightVal) { scrollVal = marginLeftVal; var tabElement = element; while ((scrollVal - $(tabElement).outerWidth()) > ($(".page-tabs-content").outerWidth() - visibleWidth)) { scrollVal -= $(tabElement).prev().outerWidth(); tabElement = $(tabElement).prev(); } } } else if (marginLeftVal > (visibleWidth - $(element).outerWidth(true) - $(element).prev().outerWidth(true))) { scrollVal = marginLeftVal - $(element).prev().outerWidth(true); } $('.page-tabs-content').animate({ marginLeft: 0 - scrollVal + 'px' }, "fast"); }, calSumWidth: function (element) { var width = 0; $(element).each(function () { width += $(this).outerWidth(true); }); return width; }, init: function () { $('.menuItem').on('click', $.nfinetab.addTab); $('.menuTabs').on('click', '.menuTab i', $.nfinetab.closeTab); $('.menuTabs').on('click', '.menuTab', $.nfinetab.activeTab); $('.tabLeft').on('click', $.nfinetab.scrollTabLeft); $('.tabRight').on('click', $.nfinetab.scrollTabRight); $('.tabReload').on('click', $.nfinetab.refreshTab); $('.tabCloseCurrent').on('click', function () { $('.page-tabs-content').find('.active i').trigger("click"); }); $('.tabCloseAll').on('click', function () { $('.page-tabs-content').children("[data-id]").find('.fa-remove').each(function () { $('.NFine_iframe[data-id="' + $(this).data('id') + '"]').remove(); $(this).parents('a').remove(); }); $('.page-tabs-content').children("[data-id]:first").each(function () { $('.NFine_iframe[data-id="' + $(this).data('id') + '"]').show(); $(this).addClass("active"); }); $('.page-tabs-content').css("margin-left", "0"); }); $('.tabCloseOther').on('click', $.nfinetab.closeOtherTabs); $('.fullscreen').on('click', function () { if (!$(this).attr('fullscreen')) { $(this).attr('fullscreen', 'true'); requestFullScreen(); } else { $(this).removeAttr('fullscreen') exitFullscreen(); } }); } }; $(function () { $.nfinetab.init(); }); })(jQuery);