/*! ========= INFORMATION ============================ - author: Wow-Company - url: https://wow-estore.com/item/float-menu-pro/ ==================================================== */ 'use strict'; (function($) { var defaults = { // Main position: ['left', 'center'], offset: [0, 0], buttonShape: 'round', buttonColor: 'custom', buttonOverColor: 'custom', iconColor: 'white', iconOverColor: 'white', labelColor: 'match', labelTextColor: 'match', labelEffect: 'slide-out-fade', labelAnimate: 'default', labelConnected: false, labelsOn: true, sideSpace: false, buttonSpace: false, labelSpace: false, mobileEnable: false, mobileScreen: 768, // Subbar subPosition: ['circular', 100, -90, 90], subEffect: ['slide', 30], subAnimate: [400, 'easeOutQuad'], subSpace: false, subOpen: 'mouseover', // Window windowPosition: ['center', 'center'], windowOffset: [0, 0], windowCorners: 'match', windowColor: 'match', windowShadow: true, // Other showAfterPosition: false, hideAfterPosition: false, barAnimate: [250, 'easeOutQuad'], hideUnderWidth: false, shareTarget: 'default', }; var labelAnimateDefaults = { 'default': [400, 'easeOutQuad'], 'fade': [200, 'easeOutQuad'], 'slide-in-in': { show: [400, 'easeOutQuad'], hide: [400, 'swing'], }, }; var methods = { 'build': build, 'destroy': destroy, }; $.fn.floatingMenu = function(arg) { if (typeof arg === 'object' || !arg) { build.apply(this, arguments); } else if (methods[arg]) { methods[arg].apply(this, Array.prototype.slice.call(arguments, 1)); } else { $.error('The method ' + arg + ' does not exist in Float Menu.'); } }; function build(options) { var settings = createSettings(options); return this.each(function() { var sidebar = $(this); if (sidebar.data('fm-built')) destroy.apply(this); sidebar.data('fm-built', true); // VARS var bar = sidebar.children('.fm-bar'); var barList = bar.children(); var sbwindow = sidebar.children('.fm-window'); var $window = $(window); var $document = $(document); var barVisible = true; var right = false; var csub = null; var cwindow = null; var nextMargins = []; // INIT if (settings.position[0] === 'right') { right = true; bar.addClass('fm-right'); } if (settings.buttonShape !== 'square') bar.addClass('fm-' + settings.buttonShape); if (settings.labelConnected) bar.addClass('fm-connected'); if (settings.buttonColor !== 'custom') bar.addClass('fm-' + settings.buttonColor + '-button'); if (settings.buttonOverColor !== 'custom') bar.addClass('fm-' + settings.buttonOverColor + '-button-over'); if (settings.iconColor !== 'custom') bar.addClass('fm-' + settings.iconColor + '-icon'); if (settings.iconOverColor !== 'custom') bar.addClass('fm-' + settings.iconOverColor + '-icon-over'); if (settings.labelColor !== 'custom') bar.addClass('fm-' + settings.labelColor + '-label'); if (settings.labelTextColor !== 'custom') bar.addClass('fm-' + settings.labelTextColor + '-label-text'); if (settings.sideSpace) bar.addClass('fm-side-space'); if (settings.buttonSpace) bar.addClass('fm-button-space'); if (settings.labelSpace) bar.addClass('fm-label-space'); if (settings.windowCorners === 'round') sbwindow.addClass('fm-round'); if (settings.windowColor !== 'custom') sbwindow.addClass('fm-' + settings.windowColor); if (settings.windowShadow) sbwindow.addClass('fm-winshadow'); buildList(bar); // Subbar animate fix. barList.each(function(ind) { nextMargins[ind] = getInt(barList.eq(ind).css('margin-top')); }); sbwindow.children('.fm-shadow').on('click', closeWindow); sbwindow.children('.fm-panel').each(buildPanel); resize(); $window.on('resize.superSidebar', resize); if (settings.showAfterPosition) { if ($window.scrollTop() < settings.showAfterPosition) { bar.css('opacity', 0).addClass('fm-hide'); barVisible = false; } $window.on('scroll.superSidebar', function() { if ($window.scrollTop() < settings.showAfterPosition) { if (barVisible) hideBar(); } else { if (!barVisible) showBar(); } }); } if (settings.hideAfterPosition) { if ($window.scrollTop() > settings.hideAfterPosition) { bar.css('opacity', 0).addClass('fm-hide'); barVisible = false; } $window.on('scroll.superSidebar', function() { if ($window.scrollTop() > settings.hideAfterPosition) { if (barVisible) hideBar(); } else { if (!barVisible) showBar(); } }); } bar.addClass('fm-css-anim'); sidebar.addClass('fm-ready'); // FUNCTIONS function buildList(list) { list.children().each(function(i) { if ($(this).hasClass('fm-sub')) buildSub(this, i); else buildButton(this); }); } function buildButton(btn) { var button = $(btn); var link = button.children('a'); var icon = link.children('.fm-icon'); var label = link.children('.fm-label'); var mask, hit = null; var linkClick = 0; var screen = $(window).width(); var maskHtml = '
'; var hitHtml = '
'; var iw, lw; var side = right ? 'right' : 'left'; var dist = 40; var maskOff = false; var start = {}, show = {}, end = {}; var showLabel, hideLabel; var showTime = settings.labelAnimate.show[0]; var showEase = settings.labelAnimate.show[1]; var hideTime = settings.labelAnimate.hide[0]; var hideEase = settings.labelAnimate.hide[1]; if (settings.labelsOn && label.length) { iw = getInt(icon.css('width')); lw = label.outerWidth(true); if (settings.buttonShape === 'round' || settings.buttonShape === 'rounded') maskOff = true; if (!settings.labelConnected && (settings.labelSpace || settings.buttonShape === 'round' || settings.buttonShape === 'rounded' || settings.buttonShape === 'rounded-out')) hit = $(hitHtml).appendTo(link); switch (settings.labelEffect) { case 'fade': start = {'opacity': 0}; show = {'opacity': 1}; label.css(start); showLabel = function() { if (hit) hit.addClass('fm-show'); label.velocity('stop').addClass('fm-show').velocity(show, showTime, showEase); }; hideLabel = function() { label.velocity('stop').velocity(start, hideTime, hideEase, function() { label.removeClass('fm-show'); if (hit) hit.removeClass('fm-show'); }); }; break; case 'slide-out': case 'slide-out-fade': mask = link.wrap(maskHtml).parent(); mask.css('width', iw); if (maskOff) mask.addClass('fm-off'); start[side] = -lw + iw; if (settings.labelConnected) show[side] = 0; else show[side] = iw; if (settings.labelEffect === 'slide-out-fade') { start['opacity'] = 0; show['opacity'] = 1; } label.css(start); showLabel = function() { mask.css('width', iw + lw); if (maskOff) mask.removeClass('fm-off'); if (hit) hit.addClass('fm-show'); label.velocity('stop').addClass('fm-show').velocity(show, showTime, showEase); }; hideLabel = function() { label.velocity('stop').velocity(start, hideTime, hideEase, function() { label.removeClass('fm-show'); mask.css('width', iw); if (maskOff) mask.addClass('fm-off'); if (hit) hit.removeClass('fm-show'); }); }; break; case 'slide-in': start = {'opacity': 0}; start[side] = iw + dist; show = {'opacity': 1}; show[side] = iw; label.css(start); showLabel = function() { if (hit) hit.addClass('fm-show'); label.velocity('stop').addClass('fm-show').velocity(show, showTime, showEase); }; hideLabel = function() { label.velocity('stop').velocity(start, hideTime, hideEase, function() { label.removeClass('fm-show'); if (hit) hit.removeClass('fm-show'); }); }; break; case 'slide-out-out': case 'slide-in-in': mask = link.wrap(maskHtml).parent(); mask.css('width', iw); if (maskOff) mask.addClass('fm-off'); if (settings.labelEffect === 'slide-out-out') { start[side] = -lw + iw; show[side] = iw; end[side] = iw + dist; } else { start[side] = iw + dist; show[side] = iw; end[side] = -lw + iw; } start['opacity'] = 0; show['opacity'] = 1; end['opacity'] = 0; showLabel = function() { mask.css('width', iw + lw + dist); if (maskOff) mask.removeClass('fm-off'); if (hit) hit.addClass('fm-show'); label.velocity('stop').css(start).addClass('fm-show').velocity(show, showTime, showEase, function() { mask.css('width', iw + lw); }); }; hideLabel = function() { mask.css('width', iw + lw + dist); label.velocity('stop').velocity(end, hideTime, hideEase, function() { label.removeClass('fm-show'); mask.css('width', iw); if (maskOff) mask.addClass('fm-off'); if (hit) hit.removeClass('fm-show'); }); }; break; default: showLabel = function() { if (hit) hit.addClass('fm-show'); label.addClass('fm-show'); }; hideLabel = function() { label.removeClass('fm-show'); if (hit) hit.removeClass('fm-show'); }; break; } if (settings.mobileEnable == true && settings.mobileScreen >= screen) { link.on('touchend', function(e) { if (linkClick == 0) { e.preventDefault(); showLabel(); linkClick = 1; setTimeout(function() { hideLabel(); linkClick = 0; }, 3000); return; } else if (linkClick == 1) { hideLabel(); linkClick = 0; } }); } else { link.on('mouseenter', showLabel); link.on('mouseleave', hideLabel); } } var shareVal = link.data('share'); var shareData; var shareUrl; var shareTarget; var href; var labelShow; if (shareVal) { if (shareVal === 'pinterest') { link.on('click', pinterestShare); } else { shareData = settings.shareServices[shareVal]; if (shareData) { shareUrl = shareData.url.replace('{URL}', PAGE_URL).replace('{TITLE}', PAGE_TITLE); link.attr('href', shareUrl); if (shareData.target === 'app') { link.attr('target', '_self'); } else { if (settings.shareTarget === 'default') shareTarget = shareData.target; else shareTarget = settings.shareTarget; if (shareTarget === 'popup') { link.on('click', {'url': shareUrl, 'params': shareData.popup}, sharePopup); } else { link.attr('target', '_blank'); } } } else { warn('There is no share data for "' + shareVal + '".'); } } } else { href = link.attr('href'); if (href && href.indexOf('fm-popup') > -1 && href !== '#') { link.on('click', function() { openWindow(href); return false; }); } } labelShow = link.attr('data-label'); if (labelShow === 'show') { showLabel(); } } function buildSub(sub, ind) { var sub = $(sub); var icon = sub.children('.fm-icon'); var list = sub.children('ul'); var buttonList = list.children(); var hit = null; var nextButton = null; var hitHtml = '
'; var position = settings.subPosition[0]; var effect = settings.subEffect[0]; var side = right ? 'right' : 'left'; var total = buttonList.length; var iw = getInt(icon.css('width')); var ih = getInt(icon.css('height')); var positions = []; var status = null; var start = {}, show = {}; var interval; var showList, hideList; var i; var nextOffset = 0; var prevOffset = 0; var nextMargin; var buttonMargin; var barMargin; var subOpen = false; var showTime = settings.subAnimate.show[0]; var showEase = settings.subAnimate.show[1]; var hideTime = settings.subAnimate.hide[0]; var hideEase = settings.subAnimate.hide[1]; buildList(list); if (position === 'side') sub.addClass('fm-side'); if (settings.subSpace) sub.addClass('fm-sub-space'); if (effect === 'linear-slide' || position === 'circular') sub.addClass('fm-posabs'); if ((position === 'under' && effect === 'linear-slide') || (position === 'circular' && effect === 'slide') || (position === 'circular' && effect === 'linear-slide')) { buttonList.each(function(i) { $(this).css('z-index', 100 - i); }); } if (barList[ind + 1]) { nextButton = barList.eq(ind + 1); //nextMargin = getInt(nextButton.css("margin-top")); } if (position === 'circular') { sub.addClass('fm-circular'); var r = settings.subPosition[1]; var sa = settings.subPosition[2]; var ea = settings.subPosition[3]; var startRad = sa * Math.PI / 180; var endRad = ea * Math.PI / 180; var stepRad = (endRad - startRad) / (total - 1); var a, s, t, p; buttonList.each(function(i) { a = i * stepRad + startRad; s = Math.round(r * Math.cos(a)); t = Math.round(r * Math.sin(a)); p = {'top': t}; p[side] = s; $(this).css(p); positions[i] = [s, t]; }); hit = $(hitHtml).appendTo(sub); hit.css({ 'width': r + iw, 'height': 2 * r + iw, 'border-radius': right ? r + 'px 0 0 ' + r + 'px' : '0 ' + r + 'px ' + r + 'px 0', 'top': -r, }); buttonMargin = getInt(barList.eq(0).css('margin-bottom')); if (ind !== 0) { prevOffset = r + buttonMargin; barMargin = getInt(bar.css('margin-top')); sub.css('margin-top', buttonMargin); } if (nextButton) { nextOffset = r + buttonMargin; } } else { if (effect === 'linear-slide') { var c = 0; buttonList.each(function(i) { var btn = $(this); btn.css('top', c); positions[i] = c; c += getInt(btn.css('height')) + getInt(btn.css('margin-bottom')); }); list.css({'width': iw, 'height': c}); } hit = $(hitHtml).appendTo(sub); if (position === 'side') hit.css({'width': iw + getInt(list.css('margin-' + side)), 'height': ih}); else hit.css({'width': iw, 'height': ih + getInt(list.css('margin-top'))}); if (position === 'under' && nextButton) { nextOffset = list.outerHeight(true) + getInt(nextButton.css('margin-top')) + getInt(list.css('margin-top')); } } list.addClass('fm-hide'); switch (effect) { case 'fade': start = {'opacity': 0}; show = {'opacity': 1}; list.css(start); showList = function() { list.velocity('stop').removeClass('fm-hide').velocity(show, showTime, showEase); }; hideList = function() { list.velocity('stop').velocity(start, hideTime, hideEase, function() { list.addClass('fm-hide'); }); }; break; case 'slide': if (position === 'circular') { start = {'top': 0, 'opacity': 0}; start[side] = 0; buttonList.css(start); showList = function() { list.removeClass('fm-hide'); buttonList.each(function(i) { show = {'top': positions[i][1], 'opacity': 1}; show[side] = positions[i][0]; $(this).velocity('stop').velocity(show, showTime, showEase); }); }; hideList = function() { buttonList.each(function(i) { $(this).velocity('stop').velocity(start, hideTime, hideEase, function() { if (i === total - 1) list.addClass('fm-hide'); }); }); }; } else { if (position === 'side') { start[side] = 0; show[side] = iw; } else { start = {'top': 0}; show = {'top': 42}; } start['opacity'] = 0; show['opacity'] = 1; list.css(start); showList = function() { list.velocity('stop').removeClass('fm-hide').velocity(show, showTime, showEase); }; hideList = function() { list.velocity('stop').velocity(start, hideTime, hideEase, function() { list.addClass('fm-hide'); }); }; } break; case 'linear-fade': start = {'opacity': 0}; show = {'opacity': 1}; buttonList.css(start); showList = function() { status = 'show'; list.removeClass('fm-hide'); stopInterval(); i = 0; interval = setInterval(function() { buttonList.eq(i).velocity('stop').velocity(show, showTime, showEase); if (i === total - 1) stopInterval(); else i++; }, settings.subEffect[1]); }; hideList = function() { status = 'hide'; stopInterval(); i = total - 1; interval = setInterval(function() { var bi = i; buttonList.eq(i).velocity('stop').velocity(start, showTime, showEase, function() { if (status === 'hide' && bi === 0) list.addClass('fm-hide'); }); if (i === 0) stopInterval(); else i--; }, settings.subEffect[1]); }; break; case 'linear-slide': var first, last, step; if (position === 'side') start[side] = -iw; else if (position === 'circular') { start = {'top': 0}; start[side] = 0; } else start = {'top': -ih}; start['opacity'] = 0; buttonList.css(start); showList = function() { status = 'show'; list.removeClass('fm-hide'); stopInterval(); i = 0; interval = setInterval(function() { if (position === 'side') show[side] = 0; else if (position === 'circular') { show = {'top': positions[i][1]}; show[side] = positions[i][0]; } else show = {'top': positions[i]}; show['opacity'] = 1; buttonList.eq(i).velocity('stop').velocity(show, showTime, showEase); if (i === total - 1) stopInterval(); else i++; }, settings.subEffect[1]); }; hideList = function() { status = 'hide'; if (position === 'side' || position === 'circular') { first = 0; last = total - 1; step = 1; } else { first = total - 1; last = 0; step = -1; } stopInterval(); i = first; interval = setInterval(function() { var bi = i; buttonList.eq(i).velocity('stop').velocity(start, showTime, showEase, function() { if (status === 'hide' && bi === last) list.addClass('fm-hide'); }); if (i === last) stopInterval(); else i += step; }, settings.subEffect[1]); }; break; default: showList = function() { list.removeClass('fm-hide'); }; hideList = function() { list.addClass('fm-hide'); }; break; } function stopInterval() { clearInterval(interval); } function showSub() { showList(); if (hit) hit.addClass('fm-show'); if (prevOffset) { bar.velocity('stop').velocity({'margin-top': barMargin - prevOffset + buttonMargin}, showTime, showEase); sub.velocity('stop').velocity({'margin-top': prevOffset}, showTime, showEase); } if (nextOffset) { nextButton.velocity('stop').velocity({'margin-top': nextOffset}, showTime, showEase); } subOpen = true; csub = sub; } function hideSub() { hideList(); if (hit) hit.removeClass('fm-show'); if (prevOffset) { bar.velocity('stop').velocity({'margin-top': barMargin}, showTime, showEase); sub.velocity('stop').velocity({'margin-top': buttonMargin}, showTime, showEase); } if (nextOffset) { nextButton.velocity('stop').velocity({'margin-top': nextMargins[ind + 1]}, showTime, showEase); } subOpen = false; csub = null; } sub.show = showSub; sub.hide = hideSub; if (settings.subOpen === 'click') { icon.on('click', function(event) { if (subOpen) { hideSub(); } else { if (csub) { csub.hide(); } showSub(); } event.stopPropagation(); }); $document.on('click', function(event) { if (subOpen && !cwindow && !$(event.target).closest(sub).length) { hideSub(); } }); } else { sub.on('mouseenter', showSub); sub.on('mouseleave', hideSub); } } function buildPanel() { var panel = $(this); panel.find('.fm-close').on('click', function(event) { closeWindow(); event.stopPropagation(); }); } function openWindow(name) { sbwindow.addClass('fm-show'); cwindow = $(name).addClass('fm-show'); posWindow(cwindow); } function closeWindow() { sbwindow.removeClass('fm-show'); cwindow.removeClass('fm-show'); cwindow = null; } function position() { posBar(); if (cwindow) posWindow(cwindow); } function resize() { position(); if (settings.hideUnderWidth) { if ($window.width() < settings.hideUnderWidth) { sidebar.addClass('fm-vhide'); } else { sidebar.removeClass('fm-vhide'); } } } function posBar() { posObject(bar, settings.position, settings.offset); } function posWindow(win) { var pos, off; if (win.data('position')) { pos = win.data('position').split('-'); if (!pos[1]) pos[1] = defaults.windowPosition[1]; } else { pos = settings.windowPosition; } if (win.data('offset')) { off = splitOffset(win.data('offset')); } else { off = settings.windowOffset; } posObject(win, pos, off); } function posObject(tar, pos, off) { if (pos) { var ww = $window.width(); var wh = $window.height(); var tw = tar.outerWidth(true); var th = tar.outerHeight(true); var x, y; var p; if (typeof pos[0] === 'number') x = {'left': pos[0] + off[0]}; else if (typeof pos[0] === 'string') { if (pos[0].indexOf('%') !== -1) { p = getInt(pos[0].split('%')[0]); x = {'left': p / 100 * ww + off[0]}; } else { if (pos[0] === 'left') x = {'left': 0 + off[0]}; else if (pos[0] === 'center') x = {'left': (ww - tw) / 2 + off[0]}; else if (pos[0] === 'right') x = {'right': 0 + off[0]}; else x = {'left': getInt(pos[0]) + off[0]}; } } if (typeof pos[1] === 'number') y = {'top': pos[1] + off[1]}; else if (typeof pos[1] === 'string') { if (pos[1].indexOf('%') !== -1) { p = getInt(pos[1].split('%')[0]); y = {'top': p / 100 * wh + off[1]}; } else { if (pos[1] === 'top') y = {'top': 0 + off[1]}; else if (pos[1] === 'center') y = {'top': (wh - th) / 2 + off[1]}; else if (pos[1] === 'bottom') y = {'bottom': 0 + off[1]}; else y = {'top': getInt(pos[1]) + off[1]}; } } if (x.left) x.left = Math.round(x.left); if (x.right) x.right = Math.round(x.right); if (y.top) y.top = Math.round(y.top); if (y.bottom) y.bottom = Math.round(y.bottom); tar.css($.extend({}, x, y)); } } function pinterestShare(event) { $('body'). append(''); event.preventDefault(); } function sharePopup(event) { var url = event.data.url; var params = event.data.params; var winLeft; var winParams; if (params.left === 'center') { winLeft = ($window.width() - params.width) / 2; } else { winLeft = params.left; } winParams = 'menubar=no,toolbar=no,location=no,scrollbars=no,status=no,resizable=yes,width=' + params.width + ',height=' + params.height + ',top=' + params.top + ',left=' + winLeft; window.open(url, 'sbShareWindow', winParams); event.preventDefault(); } function showBar() { bar.removeClass('fm-hide'); bar.velocity('stop').velocity({'opacity': 1}, settings.barAnimate.show[0], settings.barAnimate.show[1]); barVisible = true; } function hideBar() { bar.velocity('stop'). velocity({'opacity': 0}, settings.barAnimate.show[0], settings.barAnimate.show[1], function() { bar.addClass('fm-hide'); }); barVisible = false; } }); } function destroy() { return this.each(function() { var sidebar = $(this); var bar, sbwindow; if (sidebar.data('fm-built')) { sidebar.data('fm-built', false); bar = sidebar.children('.fm-bar'); sbwindow = sidebar.children('.fm-window'); bar.attr('class', 'fm-bar').removeAttr('style'); sbwindow.attr('class', 'fm-window'); destroyList(bar); sbwindow.removeClass('fm-show'); sbwindow.children('.fm-shadow').off('click'); sbwindow.children('.fm-panel').removeClass('fm-show').removeAttr('style').each(destroyPanel); $(window).off('resize.superSidebar scroll.superSidebar'); sidebar.removeClass('fm-ready'); } function destroyList(list) { list.children().each(function() { if ($(this).hasClass('fm-sub')) destroySub(this); else destroyButton(this); }); } function destroyButton(btn) { var button = $(btn); var link = button.find('a'); var label = link.children('.fm-label'); if (link.data('share')) link.removeAttr('href target'); link.children('.fm-hit').remove(); if (button.children('.fm-mask').length) link.unwrap(); label.removeAttr('style'); link.off('mouseenter mouseleave click'); } function destroySub(sub) { var sub = $(sub); var list = sub.children('ul'); sub.removeClass('fm-side fm-circular fm-sub-space fm-posabs'); list.removeClass('fm-hide'); list.removeAttr('style'); list.children().removeAttr('style'); sub.children('.fm-subhit').remove(); sub.off('mouseenter mouseleave'); } function destroyPanel() { var panel = $(this); panel.find('.fm-close').off('click'); var form = panel.find('form'); if (form.length) destroyForm(form); } function destroyForm(form) { var fieldList = form.find('input, textarea'); form.find('.fm-submit').off('click'); form.off('submit'); fieldList.removeClass('fm-formerror').off('focus'); fieldList.each(function() { $(this).val(''); }); form.find('.fm-status').attr('class', 'fm-status'); } }); } function createSettings(options) { var settings = $.extend({}, defaults, options); if (typeof settings.position === 'string') { settings.position = settings.position.split('-'); } if (settings.position[0] === 'center') { settings.position[0] = defaults.position[0]; warn('Bar horizontal position cannot be "center". Horizontal position reset to "left".'); } if (!settings.position[1]) { settings.position[1] = defaults.position[1]; } if (settings.offset === 0 || settings.offset === false) { settings.offset = [0, 0]; } else if (typeof settings.offset === 'string') { settings.offset = splitOffset(settings.offset); } if (!options.buttonShape && options.shape) { settings.buttonShape = settings.shape; } if (settings.buttonShape !== 'square') { if (settings.buttonShape !== 'round' && settings.buttonShape !== 'rounded' && settings.buttonShape !== 'rounded-out') { settings.buttonShape = 'square'; } } if (!options.buttonColor && options.color) { settings.buttonColor = settings.color; } if (settings.buttonColor === 'default') { settings.buttonColor = 'custom'; } if (!options.buttonOverColor && options.overColor) { settings.buttonOverColor = settings.overColor; } if (settings.buttonOverColor === 'default') { settings.buttonOverColor = 'custom'; } if (settings.labelColor === 'match') { settings.labelColor = settings.buttonOverColor; } if (settings.labelTextColor === 'match') { settings.labelTextColor = settings.iconOverColor; } if (settings.labelEffect === 'slide') settings.labelEffect = 'slide-out'; if (settings.labelEffect === 'slide-in-fade') settings.labelEffect = 'slide-in'; if (!options.labelAnimate && options.labelAnim) { settings.labelAnimate = settings.labelAnim; } if (settings.labelAnimate === 'default') { if (labelAnimateDefaults[settings.labelEffect]) { settings.labelAnimate = labelAnimateDefaults[settings.labelEffect]; } else { settings.labelAnimate = labelAnimateDefaults[0]; } } settings.labelAnimate = extendAnimateSetting(settings.labelAnimate); if (settings.labelConnected) { if (settings.labelEffect === 'slide-in' || settings.labelEffect === 'slide-out-out' || settings.labelEffect === 'slide-in-in') { settings.labelConnected = false; warn('"labelConnected: true" incompatible with "labelEffect: ' + settings.labelEffect + '". "labelConnected" reset to false.'); } else if (settings.labelSpace) { settings.labelSpace = false; warn('"labelSpace: true" incompatible with "labelConnected: true". "labelSpace" reset to false.'); } } if (typeof settings.subPosition === 'string') { settings.subPosition = [settings.subPosition]; } if (settings.subPosition[0] === 'circular') { if (!settings.subPosition[1]) settings.subPosition[1] = defaults.subPosition[1]; if (typeof settings.subPosition[2] === 'undefined') settings.subPosition[2] = defaults.subPosition[2]; if (typeof settings.subPosition[3] === 'undefined') settings.subPosition[3] = defaults.subPosition[3]; if (settings.subSpace) settings.subSpace = false; } if (!options.subAnimate && options.subAnim) { settings.subAnimate = settings.subAnim; } if (settings.subAnimate === 'default') settings.subAnimate = defaults.subAnimate; if (typeof settings.subEffect === 'string') { settings.subEffect = [settings.subEffect]; } if ((settings.subEffect[0] === 'linear-fade' || settings.subEffect[0] === 'linear-slide') && !settings.subEffect[1]) { settings.subEffect[1] = defaults.subEffect[1]; } settings.subAnimate = extendAnimateSetting(settings.subAnimate); if (typeof settings.windowPosition === 'string') { settings.windowPosition = settings.windowPosition.split('-'); } if (!settings.windowPosition[1]) { settings.windowPosition[1] = defaults.windowPosition[1]; } if (settings.windowOffset === 0 || settings.windowOffset === false) { settings.windowOffset = [0, 0]; } else if (typeof settings.windowOffset === 'string') { settings.windowOffset = splitOffset(settings.windowOffset); } if (settings.windowCorners === 'match') { if (settings.buttonShape === 'round' || settings.buttonShape === 'rounded' || settings.buttonShape === 'rounded-out') { settings.windowCorners = 'round'; } } if (settings.windowColor === 'match') { settings.windowColor = settings.buttonColor; } else if (settings.windowColor === 'default') { settings.windowColor = 'custom'; } if (settings.barAnimate === 'default') { settings.barAnimate = defaults.barAnimate; } settings.barAnimate = extendAnimateSetting(settings.barAnimate); if (settings.hideUnder) { settings.hideUnderWidth = settings.hideUnder; } return settings; } function splitOffset(off) { off = off.split('-'); off[0] = getInt(off[0]); if (off[1]) off[1] = getInt(off[1]); return off; } function extendAnimateSetting(animate) { if (Object.prototype.toString.call(animate) === '[object Array]') { return { show: animate, hide: animate, }; } else { return animate; } } function warn(msg) { if (window.console) { console.log('(!) Float Menu: ' + msg); } } function getInt(val) { return parseInt(val, 10); } }(jQuery)); function scrollToTop() { jQuery('body,html').animate({ scrollTop: 0, }, 777); } function scrollToBottom() { jQuery('html, body').animate({scrollTop: jQuery(document).height()}, 777); } function pageprint() { window.print(); } function smoothscroll(section) { jQuery('html, body').animate({ scrollTop: jQuery(section).offset().top, }, 777); } function goBack() { window.history.back(); } function goForward() { window.history.forward(); } function fmpGetAway(link) { // window.open( link, "_newtab" ); window.location.replace( link ); } const flTranslate = document.querySelectorAll('[data-google-lang]'); const flDefaultLang = document.documentElement.lang.substr(0, 2); function flTranslateInit() { let code = flTranslateGetCode(); if (code == flDefaultLang) { flTranslateClearCookie(); } new google.translate.TranslateElement({ pageLanguage: flDefaultLang, }); flTranslate.forEach((el) => { el.addEventListener('click', (e) => { e.preventDefault(); let lang = el.getAttribute('data-google-lang'); flTranslateSetCookie(lang); window.location.reload(); }); }); } function flTranslateGetCode() { let keyValue = document['cookie'].match('(^|;) ?googtrans=([^;]*)(;|$)'); let cookieLang = keyValue ? keyValue[2].split('/')[2] : null; let lang = (cookieLang != undefined && cookieLang != 'null') ? cookieLang : flDefaultLang; return lang; } function flTranslateClearCookie() { document.cookie = 'googtrans=null'; document.cookie = 'googtrans=null; domain=' + document.domain; } function flTranslateSetCookie(code) { document.cookie = 'googtrans=/auto/' + code; document.cookie = 'googtrans=/auto/' + code + '; domain=' + document.domain; }