/* Copyright (C) 2017 Horea Radu Licensed under the terms of the GPL3 license. */ (function ($) { function bindEffect(name, params) { var menu = $("ul.fm2_" + name); var uls = menu.find("ul"); var timeout; function getBrowser() { // jquery code// var ua = navigator.userAgent.toLowerCase(); var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || /(webkit)[ \/]([\w.]+)/.exec(ua) || /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || /(msie) ([\w.]+)/.exec(ua) || (ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua)) || []; var ver = match[2] || "0"; var fi = ver.indexOf("."); var fi2 = ver.indexOf(".", fi); if (fi2 != -1) { ver = parseFloat(ver.substring(0, fi2)); } return { name: match[1] || "", version: ver, }; } function mouseLeft(el) { if (!window.PIE || !PIE.Element) return; var pie = PIE.Element.getInstance(el[0]); if (pie) { pie.mouseLeft(true); } } function mouseEntered(el) { if (!window.PIE || !PIE.Element) return; var pie = PIE.Element.getInstance(el[0]); if (pie) { pie.mouseEntered(true); } } function getEffectForLevel(level) { switch (level) { case 0: return params["effectSub"]; break; default: return params["effectRest"]; break; } } function showMenu(liItem, callback) { var self = liItem; if (!callback) callback = function () {}; if ($(self).find("ul").data("hideTimeout")) { clearTimeout($(self).find("ul").data("hideTimeout")); } var level = getButtonLevel(self); var effectObj = getEffectForLevel(level); if (!effectObj) { effectObj = { name: "none", }; } var effectOpts = { duration: effectObj.duration * 1, easing: effectObj.easing, direction: effectObj.direction, }; var checkIfVisible = true; var submenu = $(self).find(">ul"); if (submenu.length == 0) { if ($(self).children(".ui-effects-wrapper").length > 0) { checkIfVisible = false; submenu = $(self).find(".ui-effects-wrapper >ul"); } } if (checkIfVisible && submenu.is(":visible")) { return; } var browser = getBrowser(); var isIE7 = browser.name == "msie" && browser.version == 7; if (isIE7) { effectObj.name = "none"; submenu.children("li").css("float", "left"); if (params["menuType"] == "tabbed" && level == 0) { submenu.width(menu.outerWidth()); } } switch (effectObj.name) { case "none": submenu.show(); break; case "bounce": if ($(self).parent().is(":animated")) { return; } case "blind": case "explode": case "clip": case "drop": case "fold": case "slide": if ($(self).find("ul").is(":animated")) { $(self).find("ul").removeAttr("style"); } if (submenu.data("hideTimeout")) { clearTimeout(submenu.data("hideTimeout")); submenu.removeData("hideTimeout"); } $(self).siblings().find("ul").stop(false, true); window.setTimeout(function () { if (submenu.css("display") != "none" && !submenu.is(":animated")) { return; } submenu.stop(false, true); if (effectObj.useFade !== "false") { submenu .fadeIn({ duration: effectOpts.duration * 2, queue: false, }) .css("display", "none"); } if ( effectOpts.direction === "left" && submenu.closest("[data-direction=right]").length ) { effectOpts.direction = "right"; } submenu.show(effectObj.name, effectOpts, function () { if (effectObj.name == "fold") { $(this).css({ position: "", left: "", top: "", right: "", bottom: "", }); } }); }, 5); break; case "fade": uls.stop(true, true); submenu.show(effectObj.name, effectOpts); break; default: uls.stop(true, false); window.setTimeout(function () { submenu.show(effectObj.name, effectOpts); }, 5); } } function hideMenu(liItem, callback) { var self = liItem; if (!callback) callback = function () {}; var level = getButtonLevel(self); var effectObj = getEffectForLevel(level); if (!effectObj) { effectObj = { name: "none", }; } var effectOpts = { duration: effectObj.duration * 1, easing: effectObj.easing, direction: effectObj.direction, }; var browser = getBrowser(); var isIE7 = browser.name == "msie" && browser.version == 7; if (isIE7) { effectObj.name = "none"; } var submenu = $(self).find("ul"); if (submenu.length == 0) { if ($(self).children(".ui-effects-wrapper").length > 0) { submenu = $(self).find(".ui-effects-wrapper >ul"); } } switch (effectObj.name) { case "none": submenu.hide(); callback(); break; case "bounce": if ($(self).parent().is(":animated")) { return; } case "blind": case "explode": case "clip": case "drop": case "fold": case "slide": submenu.stop(false, true); if (submenu.data("hideTimeout")) { clearTimeout(submenu.data("hideTimeout")); } var timeout = window.setTimeout(function () { submenu.stop(false, true); submenu.find("ul").hide(); if (effectObj.useFade !== "false") { submenu.fadeOut({ duration: effectOpts.duration * 1.4, queue: false, }); } submenu.hide(effectObj.name, effectOpts, function () { $(this).removeAttr("style"); $(this).find("ul").removeAttr("style").hide(); callback(); }); }, 100); submenu.data("hideTimeout", timeout); break; case "fade": uls.stop(true, true); $(self) .find("ul") .hide(effectObj.name, effectOpts, function () { callback(); }); break; default: uls.stop(true, false); if (submenu.data("hideTimeout")) { clearTimeout($(self).find("ul").data("hideTimeout")); } var timeout = window.setTimeout(function () { submenu.hide(effectObj.name, effectOpts, function () { callback(); }); }, 100); submenu.data("hideTimeout", timeout); } } $(menu) .find("li") .mouseenter(function (ev) { ev.preventDefault(); ev.stopImmediatePropagation(); var self = this; clearTimeout(timeout); try { $(this) .siblings() .each(function () { hideMenu($(this)); }); } catch (e) {} showMenu($(self)); $(self) .find("li") .each(function () { $(this).removeClass("hover"); mouseLeft($(this).children("a")); }); $(self) .siblings("li") .each(function () { var liItem = $(this); mouseLeft($(this).children("a"), function () { liItem .parent() .find(".hover") .each(function () { $(this).removeClass("hover"); mouseLeft($(this).children("a")); }); }); $(this).removeClass("hover"); }); mouseEntered($(self).children("a")); $(self).addClass("hover"); $(self) .parents("li") .each(function () { mouseEntered($(this).children("a")); $(this).addClass("hover"); }); }) .mouseleave(function (ev) { var self = this; if ($(self).find("> ul").length) { clearTimeout(timeout); timeout = window.setTimeout(function () { hideMenu($(self), function () { $(self) .find("li") .addBack() .each(function () { $(this).removeClass("hover"); mouseLeft($(this).children("a")); }); }); }, 200); } else { clearTimeout(timeout); timeout = window.setTimeout(function () { $(self).removeClass("hover"); mouseLeft($(self).children("a")); }, 0); } }); } function unbindEffect(name) { var menu = $("ul.fm2_" + name); $(menu).find("li").unbind("mouseenter"); $(menu).find("li").unbind("mouseleave"); } function getButtonLevel(selectedNode) { try { var upULSNo = 0; while ( selectedNode && selectedNode[0].className != undefined && selectedNode[0].className.toLowerCase().indexOf("fm") < 0 ) { if ( selectedNode[0].tagName && selectedNode[0].tagName.toLowerCase() == "ul" ) { upULSNo++; } selectedNode = $(selectedNode).parent(); } } catch (e) {} return upULSNo; } function destroy() { window.flexiCssMenus = {}; } function addParentSelected(liElem) { var parentUl = liElem.parent(); if (parentUl[0].tagName && parentUl[0].tagName.toLowerCase() == "ul") { var parentLi = parentUl.parent(); if (parentLi[0].tagName && parentLi[0].tagName.toLowerCase() == "li") { parentLi.add(parentLi.children("a")).addClass("sel"); addParentSelected(parentLi); } } } function checkForButtonSelect(menu, location) { var selected = false; location = location.replace(window.location.search, ""); menu.find(".sel").removeClass("sel"); menu .find("a") .unbind("click.menuitem") .bind("click.menuitem", function (event) { setTimeout(function () { checkForButtonSelect(menu, window.location + ""); }, 100); }); if (window.location.hash) { var hash = window.location.hash; _hashItem = menu.find('a[href="' + hash + '"]'); if (_hashItem.length > 0) { _hashItem.eq(0).closest("li").addBack().addClass("sel"); return; } else { _fullHashItem = menu.find('a[href="' + location + '"]'); if (_fullHashItem.length > 0) { _fullHashItem.eq(0).closest("li").addBack().addClass("sel"); return; } } } // other type url = (window.location + "").split("#")[0].replace(/\/$/, ""); _url = location.split("#")[0].replace(/\/$/, ""); var item = menu.find( 'a[href="' + url + '"],a[href="' + url + '/"],a[href="' + _url + '"],a[href="' + _url + '/"]' ); if (item.length) { item.eq(0).closest("li").addBack().addClass("sel"); } } function addSelectedClass(name) { var currentPage = window.location.href; var menu = $("ul.fm2_" + name); checkForButtonSelect(menu, currentPage); } function alignMenu(name, options) { if (!options || !options["align"] || options["align"] == "left") { return; } var align = options["align"]; var menu = $("ul.fm2_" + name); var container = menu.parent(); switch (align) { case "center": var containerWidth = $(container).outerWidth(true, false); $(container).css({ float: "none", width: containerWidth + "px", "margin-left": "auto", "margin-right": "auto", }); break; case "right": if ($(container).css("float") == "left") { $(container).css({ float: "right", }); } } } if (!window.flexiCssMenus) window.flexiCssMenus = {}; window.flexiCssMenus.bindEffect = bindEffect; window.flexiCssMenus.addSelectedClass = addSelectedClass; window.flexiCssMenus.unbindEffect = unbindEffect; window.flexiCssMenus.alignMenu = alignMenu; })(jQuery); (function ($) { //css menus touch devices// var CSSMenus; if (!CSSMenus) { CSSMenus = new Object(); } // Set the user aggent into our own variable. CSSMenus.UserAgent = navigator.userAgent.toLowerCase(); /* * IsMobile() - Returns true if this is a mobile device. */ CSSMenus.IsMobile = function (viewportWidth, maxWidth) { if (window.navMenuForceDesktop) { return false; } var deviceMatch = /iphone|ipod|android|blackberry|mini|windows\sce|windows\sphone|iemobile|palm|webos|series60|symbianos|meego/i.test( CSSMenus.UserAgent ); var sizeMatch; var isLTIE9 = window.flexiCssMenus.browser.name == "msie" && window.flexiCssMenus.browser.version < 9; if (window.matchMedia && !isLTIE9) { sizeMatch = window.matchMedia("(max-width:" + maxWidth + "px)").matches; } else { sizeMatch = viewportWidth < maxWidth; } //console.log('mobile match ' + deviceMatch + " .. " + sizeMatch) return deviceMatch || sizeMatch; }; /* * IsTablet() - Return true if this is a tablet device. */ CSSMenus.IsTablet = function (viewportWidth, minWidth, maxWidth) { if (window.navMenuForceDesktop) { return false; } var UA = CSSMenus.UserAgent; var is_touch_device = "ontouchstart" in document.documentElement; /*if (UA.indexOf("android") != -1 && UA.indexOf("mobile") == -1) return true; */ var deviceMatch = /ipad|Win64|tablet/i.test(UA); var sizeMatch; var isLTIE9 = window.flexiCssMenus.browser.name == "msie" && window.flexiCssMenus.browser.version < 9; if (!isLTIE9 && window.matchMedia) { sizeMatch = window.matchMedia( "(max-width:" + maxWidth + "px) and (min-width:" + (minWidth + 1) + "px)" ).matches; //console.log('tablet match ' + sizeMatch + " -- " + "(max-width:" + (maxWidth-1) + "px) and (min-width:" + minWidth + "px)"); } else { sizeMatch = viewportWidth < maxWidth && viewportWidth >= minWidth; } //alert('device match ' + deviceMatch + ".. " + sizeMatch+ " .. touch device " + is_touch_device); return is_touch_device && (deviceMatch || sizeMatch); }; CSSMenus.IsAppleProduct = function () { return /iphone|ipod|ipad/i.test(CSSMenus.UserAgent); }; function xtdCSSMenuInit(Name, options) { // If this is a mobile device we want to show one of our menus // either the one for small devices or for devices with higher resolution. var viewportWidth = window.flexiCssMenus.correctedViewportW(); //console.log(viewportWidth + " .. " + options.mobileMaxWidth + " > " + CSSMenus.IsTablet(viewportWidth, options.mobileMaxWidth, options.tabletMaxWidth)); var mobileCheck = CSSMenus.IsMobile(viewportWidth, options.mobileMaxWidth); var isMobileDevice = options.enableMobile && mobileCheck; var tabletCheck = CSSMenus.IsTablet( viewportWidth, options.mobileMaxWidth, options.tabletMaxWidth ); var isTabletDevice = (options.enableTablet && tabletCheck) || (!options.enableMobile && mobileCheck); //alert('mobile device ' + isMobileDevice + " .. tablet device " + isTabletDevice); $("#" + Name + "_container > ul") .children("li") .each(function () { if (this.getBoundingClientRect().left + 400 > window.innerWidth) { $(this).attr("data-direction", "right"); } else { $(this).removeAttr("data-direction"); } }); if (isMobileDevice || isTabletDevice) { try { if (isTabletDevice) { $("#" + Name + "_container").show(); $("#fm2_" + Name + "_mobile_button").hide(); window.addEventListener( "touchstart", function setHasTouch() { xtdSetTabletBehavior("#" + Name + "_container", options); window.removeEventListener("touchstart", setHasTouch); }, false ); flexiCssMenus.alignMenu(Name, options); CSSMenus.flexiCSSMenus_currentLevel = -1; CSSMenus.flexiCSSMenus_currentButton = null; $("#" + Name + "_container") .find("li.hover") .removeClass("hover"); $("#" + Name + "_container") .find("ul.sub-menu") .hide(); return false; } else { var BtnParent = $("body"); var Menu = new XTDMobileMenu(Name); // Initialize the menu Menu.Init(options); Menu.Create(BtnParent); $("#" + Name + "_container").hide(); $("#fm2_" + Name + "_mobile_button").css("display", "block"); } } catch (e) { // Something went wrong. //console.error(e); return false; } // The banner was succesus fully been created. return true; } else { $("#" + Name + "_container").show(); $("#fm2_" + Name + "_mobile_button").hide(); } // Something wrong happened. return false; } /* * *** Tablet menu section. It binds the events for mouseenter and click for each button * *** which has a submenu. * * xtdSetTabletBehavior() - set tablet behaviour * * @param: elem - the jquery object representing the menu to modify. * @param: options - object with settings for the close button */ function xtdSetTabletBehavior(elem, options) { var children = $(elem).children(); for (var i = 0; i < children.length; i++) { if (children[i].tagName && children[i].tagName.toLowerCase() == "li") { if (children[i].className.toLowerCase().indexOf("fm_close") == -1) { children .eq(i) .bind("touchend", flexiCSSMenus_clickHandlerForTouchDevices); children.eq(i).bind("mouseover", function () { CSSMenus.flexiCSSMenus_currentButton = null; }); } else { children .eq(i) .bind("touchend", flexiCSSMenus_clickHandlerForCloseButton); } } if ( children[i].tagName && children[i].tagName.toLowerCase() == "ul" && flexiCSSMenus_getButtonLevel($(children[i])) > 0 && options.tabletCloseBtnEnable != false ) { var closeLabel; if (options.tabletCloseBtnLabel) { closeLabel = options.tabletCloseBtnLabel; } else { closeLabel = "Close"; } var liHtml = "" + closeLabel + ""; var closeLI = $("
  • ").addClass("FM_CLOSE").html(liHtml); if (children.eq(i).find('[data-name="close-button"]').length === 0) { children.eq(i).append(closeLI); } } xtdSetTabletBehavior(children.get(i), options); } } function xtdUnsetTabletBehavior(elem) { var children = $(elem).children(); for (var i = 0; i < children.length; i++) { children.eq(i).unbind("click"); xtdUnsetTabletBehavior(children.get(i)); } } CSSMenus.flexiCSSMenus_currentButton = undefined; CSSMenus.flexiCSSMenus_currentLevel = -1; /* * If it's ipad, remove the mouseover event. */ function flexiCSSMenus_mouseEnterHandlerForIpad(event) {} /* * Method which is called when somebody clicks on a option. */ function flexiCSSMenus_clickHandlerForTouchDevices(event) { var submenu = $(this).find("ul").eq(0); var hasSubmenu = submenu.length > 0; var isCurrentButton = CSSMenus.flexiCSSMenus_currentButton && jQuery(CSSMenus.flexiCSSMenus_currentButton).is(this); event.stopPropagation(); // is double tapped or has no submenu if (isCurrentButton || !hasSubmenu) { console.log("I am here"); var buttons = $(this).parentsUntil("ul.fm2_drop_mainmenu").filter("li"); buttons.each(function () { flexiCSSMenus_deselectButton($(this)); }); CSSMenus.flexiCSSMenus_currentButton = undefined; CSSMenus.flexiCSSMenus_currentLevel = 0; return; } // continue to submenus event.preventDefault(); var node, level; try { level = flexiCSSMenus_getButtonLevel($(this)); } catch (e) { alert("error 2"); } if (level > CSSMenus.flexiCSSMenus_currentLevel) { CSSMenus.flexiCSSMenus_currentButton = $(this); if (level > 0) { node = CSSMenus.flexiCSSMenus_currentButton.parent(); while ( level > CSSMenus.flexiCSSMenus_currentLevel && node.get(0).className.toLowerCase().indexOf("fm") < 0 ) { if ( node.get(0).tagName && node.get(0).tagName.toLowerCase() == "li" ) { flexiCSSMenus_selectButton($(node)); CSSMenus.flexiCSSMenus_currentLevel--; } node = node.parent(); } } flexiCSSMenus_selectButton($(CSSMenus.flexiCSSMenus_currentButton)); CSSMenus.flexiCSSMenus_currentLevel = level; return; } if (level == CSSMenus.flexiCSSMenus_currentLevel) { try { flexiCSSMenus_deselectButton(CSSMenus.flexiCSSMenus_currentButton); CSSMenus.flexiCSSMenus_currentButton = $(this); CSSMenus.flexiCSSMenus_currentLevel = level; flexiCSSMenus_selectButton($(CSSMenus.flexiCSSMenus_currentButton)); } catch (e) {} return; } if (level < CSSMenus.flexiCSSMenus_currentLevel) { //flexiCSSMenus_deselectButton(CSSMenus.flexiCSSMenus_currentButton); while (level < CSSMenus.flexiCSSMenus_currentLevel) { CSSMenus.flexiCSSMenus_currentButton = CSSMenus.flexiCSSMenus_currentButton.parent(); if ( CSSMenus.flexiCSSMenus_currentButton.get(0).tagName && CSSMenus.flexiCSSMenus_currentButton.get(0).tagName.toLowerCase() == "li" ) { flexiCSSMenus_deselectButton(CSSMenus.flexiCSSMenus_currentButton); CSSMenus.flexiCSSMenus_currentLevel--; } } CSSMenus.flexiCSSMenus_currentButton = $(this); CSSMenus.flexiCSSMenus_currentLevel = level; flexiCSSMenus_selectButton($(CSSMenus.flexiCSSMenus_currentButton)); return; } } /* * Set behaviour for close button */ function flexiCSSMenus_clickHandlerForCloseButton(event) { var parentNode = $(this).parent().parent(); if (event.stopPropagation) event.stopPropagation(); event.preventDefault(); flexiCSSMenus_deselectButton(parentNode); try { var level = flexiCSSMenus_getButtonLevel(parentNode); } catch (e) { //console.error(e); } if (level > 0) { CSSMenus.flexiCSSMenus_currentButton = parentNode.parent().parent(); } else { CSSMenus.flexiCSSMenus_currentButton = undefined; } CSSMenus.flexiCSSMenus_currentLevel = level - 1; } /* * Removes the "hovered" class and sets the "current level" and "current selected button" * to the correct values */ function flexiCSSMenus_deselectButton(button) { try { if (button && button.length) { button.removeClass(".hover"); button.find("a").removeAttr("class"); var submenu = button.find("ul").eq(0); if (submenu.length > 0) { button.removeAttr("class"); hideSubmenu(submenu); var hovered = submenu.find(".hover").eq(0); if (hovered.length > 0) { flexiCSSMenus_deselectButton(hovered); } submenu.find("li").css("position", "relative"); } } } catch (e) { // console.error(e); } } function flexiCSSMenus_selectButton(button) { try { var submenu = button.find("ul"); submenu.eq(0).css("z-index", "1"); if (submenu.length > 0) { button.addClass("hover"); showSubmenu(submenu.eq(0)); var lis = submenu.eq(0).find("li"); for (var i = 0; i < lis.length; i++) { lis.eq(i).css("position", "relative"); } } } catch (e) { alert("error 1##" + e); } } function flexiCSSMenus_getButtonLevel(selectedNode) { try { var upULSNo = 0; while ( selectedNode && selectedNode[0].className != undefined && selectedNode[0].className.toLowerCase().indexOf("fm") < 0 ) { if ( selectedNode[0].tagName && selectedNode[0].tagName.toLowerCase() == "ul" ) { upULSNo++; } selectedNode = $(selectedNode).parent(); } } catch (e) {} return upULSNo; } function flexiCSSMenus_getButtonMenu(selectedNode) { try { var upULSNo = 0; while ( selectedNode && (selectedNode[0].className.toLowerCase().indexOf("fm2_") == -1 || selectedNode[0].className.toLowerCase().indexOf("_container") == -1) ) { selectedNode = selectedNode.parent(); } } catch (e) {} return selectedNode; } function showSubmenu(el) { var uls = $("#" + CSSMenus.name + "_container").find("ul"); if (el.is(":animated") || el.get(0) == $("#" + CSSMenus.name).get(0)) { return; } if (flexiCssMenus.settings.effect == "none") { el.show(); } else { el.show( flexiCssMenus.settings.effect, flexiCssMenus.settings.options, 200 ); } } function hideSubmenu(el) { function hide() { if (el.is(":animated") || el.get(0) == $("#" + CSSMenus.name).get(0)) { return; } if ( flexiCssMenus.settings.effect && flexiCssMenus.settings.effect != "none" ) { el.hide( flexiCssMenus.settings.effect, flexiCssMenus.settings.options, 200 ); } else { el.hide(); } } // delay the hide functionality to allow events triggering on IPad setTimeout(hide, 500); } /** ** End of tablet menu operations **/ /* * Mobile menu generation * * XTDMobileMenu() - Class which creates and handles a javascript menu for small mobile devices. */ function XTDMobileMenu(MenuName) { /* Private variables */ var Self = this; var Parent = null; var MenuName = MenuName; var Options = null; var MenuButton = null; var MainContainer = null; var MainMenu = null; var mobileOverlay = null; var Container = null; var Header = null; var MainUL = null; var Visible = false; var mainMenuHeader = null; var presets = { fixed: { effect: "fade", overlay: true, }, relative: { effect: "slideUp", overlay: true, }, push: { effect: "slideLeft", overlay: false, }, }; window.flexiCssMenus.presetSettings = null; /* * Init() - Initialize menu data. */ this.Init = function (initObj) { Options = { FontColor: "#fff", FontShadowColor: "#000", NormalColor: "#ff0000", HoverColor: "#DADADA", }; if (initObj) { for (var i in initObj) { Options[i] = initObj[i]; } } window.flexiCssMenus.presetSettings = presets[Options.preset]; }; /* * Create() - Create the menu with the given settings. */ this.Create = function (ButtonParent, onResize) { if (document.readyState !== "complete") { $(document).ready(function () { CreateMainButton(ButtonParent); var overlayHeight = Math.max( $("body").outerHeight() + 13, $(window).height(), $(document).outerHeight() ); var overlayWidth = Math.max( $("body").outerWidth(), $(window).width(), $(document).width() ); createStructure(); $(mobileOverlay).height(overlayHeight); $(mobileOverlay).width(overlayWidth); }); } else { var overlayHeight = Math.max( $("body").outerHeight() + 13, $(window).height(), $(document).outerHeight() ); var overlayWidth = Math.max( $("body").outerWidth(), $(window).width(), $(document).width() ); CreateMainButton(ButtonParent); createStructure(); $(mobileOverlay).height(overlayHeight); $(mobileOverlay).width(overlayWidth); } }; function createStructure() { mobileOverlay = document.createElement("div"); $(mobileOverlay).addClass( "fm2_" + MenuName + "_mobile-overlay fm2_" + MenuName + "_mobile-overlay-hide mobile-overlay" ); $(mobileOverlay).css("padding-top", $("body").offset().top + "px"); $(mobileOverlay) .mousedown(function (ev) { ev.preventDefault(); }) .click(function () { if (Visible) { Self.Show((Visible = !Visible)); } }); MainContainer = document.createElement("div"); MainContainer.setAttribute("id", "fm2_" + MenuName + "_jq_menu_back"); MainContainer.setAttribute( "class", "fm2_mobile_jq_menu ui-main-container ui-corner-all ui-mobile-viewports" ); MainContainer.style.zIndex = "10005"; Container = document.createElement("div"); Container.setAttribute("class", "menu-container"); MainMenu = document.createElement("div"); MainMenu.className = "menu main-menu"; mainMenuHeader = createMainMenuHeader("Menu"); MainContainer.appendChild(mainMenuHeader); var ItemList = CreateItemList(); MainMenu.appendChild(ItemList); Container.appendChild(MainMenu); MainContainer.appendChild(Container); // Append the main container. Parent = document.getElementsByTagName("body")[0]; if (Options.preset == "fixed") { mobileOverlay.appendChild(MainContainer); Parent.appendChild(mobileOverlay); } else { $(MenuButton).after($(MainContainer)); } if (Options.preset != "relative") { if (Options.preset == "push") { MainMenu.style.marginTop = parseInt($(mainMenuHeader).outerHeight(true)) + "px"; } var calcHeight = parseInt($(Container).height()) + parseInt($(mainMenuHeader).outerHeight()); if (Options.preset == "push") { MainContainer.style.height = Math.max( $("body").outerWidth(), $(window).width(), $(document).width() ) + "px"; Container.style.height = calcHeight + "px"; } } $(MainContainer).hide(); // Set the links callback. UpdateLinks(); GetCurrentItem(); Self.Update(); } /* * Show() - Show the menu */ this.Show = function (Visible) { if (Visible) { $(mobileOverlay).removeClass( "fm2_" + MenuName + "_mobile-overlay-hide" ); var overlayWidth = Math.max( $("body").outerWidth(), $(window).width(), $(document).width() ); $(mobileOverlay).width(overlayWidth); $(MainContainer) .fadeIn("fast") .css({ top: $(window).scrollTop(), left: $("body").css("margin-left"), }); var overlayHeight = Math.max( $("body").outerHeight() + 13, $(window).height(), $(document).outerHeight() ); var containerHeight = $(Container).height() + $(window).scrollTop() + 300; $(mobileOverlay).height(Math.max(overlayHeight, containerHeight)); } else { $(mobileOverlay).addClass("fm2_" + MenuName + "_mobile-overlay-hide"); $(MainContainer).fadeOut("fast", function () { $(MainContainer).find(".submenu").remove(); $(MainContainer).find(".menu").css("width", "").show(); }); } }; /* * ShowHeader() - Show/Hide the header. * * PARAMETERS: * Visible - Specifies if this should be visible or not. */ this.ShowHeader = function (Visible) { if (Visible) $(Header).show(); else $(Header).hide(); }; /* * GoToSubmenu() - Go to the specified submenu. */ this.GoToSubmenu = function (ParentID, Current) { if ($(Current).parent().has("ul").length) { var Submenu = document.createElement("div"); Submenu.setAttribute("class", "menu submenu"); var UlElement = $(Current).parent().children("ul").clone(true, true); // Save these to know which submenu to set to header. UlElement.attr("elcaption", $(Current).text()); UlElement.attr("ellink", $(Current).attr("href")); UlElement.attr("eltarget", $(Current).attr("target")); UlElement.show(); var newHeader = CreateHeader( $(Current).text(), $(Current).attr("href") ); Submenu.appendChild(newHeader); UlElement.appendTo($(Submenu)); $(Submenu).appendTo(Container); var containerWidth = parseInt($(MainContainer).width()); Submenu.style.width = containerWidth + "px"; $(Container).children(".menu").eq(-1).css("width", containerWidth); $(Container).children(".menu").eq(-2).css("width", containerWidth); Container.style.width = 2 * containerWidth + 2 + "px"; switch (window.flexiCssMenus.presetSettings.effect) { case "fade": $(Container).animate( { display: "none", }, 1, "swing", function () { $(Container).children(".menu").eq(-2).hide(); $(Container).css({ width: "", left: "", }); $(Container).children(".menu").eq(-1).css("opacity", 0).animate( { opacity: 1, }, 150 ); } ); break; } } }; /* * GoBack() - Go back to the previous menu submenu. */ this.GoBack = function (Current) { if ($(Container).children(".menu").length > 1) { var containerWidth = parseInt($(MainContainer).width()); $(Container) .children(".menu") .eq(-1) .css("width", containerWidth + "px"); $(Container) .children(".menu") .eq(-2) .show() .css("width", containerWidth + "px"); $(Container).css({ width: 2 * containerWidth + "px", left: "-" + containerWidth + "px", }); switch (window.flexiCssMenus.presetSettings.effect) { case "fade": $(Container).animate( { opacity: 1, }, 1, "swing", function () { $(Container).children(".menu").last().remove(); $(Container).css({ width: "", left: "", }); $(Container).children(".menu").eq(-1).css("opacity", 0).animate( { opacity: 1, }, 150 ); } ); break; } } }; /* * SetOptions() - Set Menu options. */ this.SetOptions = function (Value) { Options = $.extend(true, Options, Value); // Update menu with the new options. Self.Update(); }; /* * Update() - Update the menu. */ this.Update = function () { if ($(Container).children("ul").length == 1) { $(Header).children("a.back-btn").css("display", "none"); } }; /* Private functions */ /* * CreateMainButton() - Create the Level 0 button. */ function CreateMainButton(Parent) { // search the page for already created button var btn = $("#fm2_" + MenuName + "_mobile_button"); if (btn.length > 0) { btn.attr("href", "#").removeAttr("style"); MenuButton = btn[0]; } else { // create a new button MenuButton = document.createElement("a"); MenuButton.innerHTML += "Menu"; MenuButton.setAttribute("href", "#"); MenuButton.setAttribute("id", "fm2_" + MenuName + "_mobile_button"); $(MenuButton).addClass("fm2_mobile_button").appendTo(Parent); } $(MenuButton) .unbind("click") .click(function (ev) { ev.preventDefault(); ev.stopPropagation(); // Toggle visible. Self.Show((Visible = !Visible)); var opeEvent = "ope-mobile-menu-" + (Visible ? "show" : "hide"); jQuery(document).trigger(opeEvent); }); } /* * CreateHeader() - Create the menu header. */ function CreateHeader(Caption, Link) { var Header = document.createElement("div"); var BackBtn = document.createElement("a"); var CloseBtn = document.createElement("a"); var Title = document.createElement("p"); Header.setAttribute("id", MenuName + "_jq_menu_header"); Header.setAttribute("class", "menu-header"); BackBtn.setAttribute("href", "javascript: void(0);"); BackBtn.setAttribute("class", "back-btn"); $(BackBtn).click(function (ev) { ev.stopPropagation(); // Go back. Self.GoBack(); }); Title.innerHTML = "" + Caption + ""; Header.appendChild(BackBtn); Header.appendChild(Title); return Header; } function createMainMenuHeader(caption) { var Header = document.createElement("div"); Header.setAttribute("class", "main-menu-header"); $(Header).click(function (ev) { ev.preventDefault(); ev.stopPropagation(); // Toggle visible. Self.Show((Visible = !Visible)); }); return Header; } /* * GetCurrentItem() - Get the current item from link. */ function GetCurrentItem() { var MenuItem = "Menu"; $(Container) .children("ul") .find("a") .each(function () { if ($(this).attr("href") == window.location) { MenuItem = $(this).children("p").html(); } }); $(MenuButton) .children("span.caption") .children("p.xtd_menu_ellipsis") .html(MenuItem); } /* * CreateItemList() - Create a list with all menu/submenu items. */ function CreateItemList(Structure) { var Structure = typeof Structure != "undefined" ? Structure : $("#" + MenuName + "_container > ul > li"); var ULElement = document.createElement("ul"); Structure.each(function (Index) { var LiElement = document.createElement("li"); var AElement = null; LiElement.className = "ellipsis"; // Clone the original a element AElement = $(this).children("a").clone().appendTo($(LiElement)); if ($(this).children("ul").length) { AElement.html('' + AElement.html() + ""); } else { AElement.html('' + AElement.html() + ""); } // Add a paragraph for ellipsis to work. AElement.html( '

    ' + AElement.html() + "

    " ); if ($(this).children("ul").length) { // Recursive call for the child elements. var NewUL = CreateItemList($(this).children("ul").children("li")); NewUL.style.display = "none"; LiElement.appendChild(NewUL); } ULElement.appendChild(LiElement); }); return ULElement; } /* * UpdateLinks() - Update the jquery click event. */ function UpdateLinks(Cont) { var ObjContainer = Cont != undefined ? Cont : MainMenu; // Do some init here. $(ObjContainer) .children("ul") .find("li") .click(function (event) { var elem = $(this).children("a"); if ($(MainContainer).find(".menu").filter(":visible").length > 1) { //console.log($(".menu").filter(":visible").length); return; } // Check if it has a child so we know if we execute the link or the child. event.preventDefault(); event.stopPropagation(); if (elem.data().smoothscroll) { if ( !elem.data("onepage-section") && window.smoothScrollGetAnchors ) { window.smoothScrollGetAnchors(); } Visible = false; Self.Show(Visible); elem.trigger("click.onepage"); return; } if (elem.parent().has("ul").length) { Self.GoToSubmenu("", elem); event.preventDefault(); event.stopPropagation(); } else { if (elem.length > 0 && elem.attr("href")) { window.location = elem.attr("href"); } $(MenuButton) .children("span.caption") .children("p.xtd_menu_ellipsis") .html(elem.children("p").html()); if (Visible) { Self.Show((Visible = !Visible)); } } }) .on("touchstart", function () { $(this).addClass("clicked"); }) .on("touchend", function () { $(this).removeClass("clicked"); }) .on("touchmove", function () { $(this).removeClass("clicked"); }); } /* * Destroy menu - destroy the mobile menu when required */ } function destroy() { $(".mobile_menu_button").remove(); $(".mobile-overlay").remove(); $(".fm2_mobile_jq_menu").remove(); $("body").unbind("touchmove"); if ( window.flexiCssMenus.presetSettings && window.flexiCssMenus.presetSettings.effect == "slideLeft" ) { $("body").stop(true, true).css({ "margin-left": "0", width: "auto", }); } } if (!window.flexiCssMenus) window.flexiCssMenus = {}; window.flexiCssMenus.xtdCSSMenuInit = xtdCSSMenuInit; window.flexiCssMenus.xtdUnsetTabletBehavior = xtdUnsetTabletBehavior; window.flexiCssMenus.destroy = destroy; })(jQuery); //ie css3 script// (function ($) { function getBrowser() { // jquery code// var ua = navigator.userAgent.toLowerCase(); var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || /(webkit)[ \/]([\w.]+)/.exec(ua) || /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || /(msie) ([\w.]+)/.exec(ua) || (ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua)) || []; var ver = match[2] || "0"; var fi = ver.indexOf("."); var fi2 = ver.indexOf(".", fi); if (fi2 != -1) { ver = parseFloat(ver.substring(0, fi2)); } return { name: match[1] || "", version: ver, }; } function getScriptFolder() { var scripts = document.getElementsByTagName("SCRIPT"); for (var i = 0; i < scripts.length; i++) { var src = scripts[i].getAttribute("src"); if (src && src.indexOf("drop_menu_selection.js") != -1) { if (src.lastIndexOf("/") != -1) { return src.substring(0, src.lastIndexOf("/") + 1); } else { return ""; } } } } var browser = getBrowser(); if (!window.flexiCssMenus) window.flexiCssMenus = {}; window.flexiCssMenus.browser = getBrowser(); var scriptFolder = getScriptFolder(); var ssFolder = scriptFolder; window.pie2path = ssFolder + "js/"; function addEventListener(element, type, listener) { if (element.addEventListener) { element.addEventListener(type, listener, false); } else if (element.attachEvent) { element.attachEvent("on" + type, listener); } } })(jQuery); function registerFlexiCSSMenu(name, settings) { flexiCssMenus.settings = settings; if (jQuery("#" + name + "_container").length == 0) { return; } jQuery("#" + name + "_container").after( '' ); if (!window.registeredFlexiMenus) { window.registeredFlexiMenus = []; } if ( window.flexiCssMenus.browser.name == "msie" && window.flexiCssMenus.browser.version < 9 ) { settings["effectRest"] = null; settings["effectSub"] = null; settings["effectSubTwo"] = null; } registeredFlexiMenus.push({ name: name, settings: settings, }); jQuery("#" + name + "_container").removeAttr("style"); //console.log(settings.options['enableMobile']); if (!settings.options["enableMobile"]) { jQuery(document).ready(function () { jQuery(".fm2_mobile_button").hide(); }); } if (!flexiCssMenus.xtdCSSMenuInit(name, settings.options)) { flexiCssMenus.bindEffect(name, settings); flexiCssMenus.addSelectedClass(name); flexiCssMenus.alignMenu(name, settings.options); } } (function ($) { var id; if (window.addEventListener) { window.addEventListener("orientationchange", function () { clearTimeout(id); id = setTimeout(doneResizing, 100); }); } jQuery(window) .unbind("resize.xtd") .bind("resize.xtd", function () { var is_touch_device = "ontouchstart" in document.documentElement; if (is_touch_device) { jQuery(window).unbind("resize"); return; } clearTimeout(id); id = setTimeout(doneResizing, 100); }); if (!window.registeredFlexiMenus) { window.registeredFlexiMenus = []; } function doneResizing() { for (var i = 0; i < registeredFlexiMenus.length; i++) { var menu = registeredFlexiMenus[i]; if (flexiCssMenus.destroy) { flexiCssMenus.destroy(menu.name); jQuery(".FM_CLOSE").remove(); flexiCssMenus.xtdUnsetTabletBehavior("#" + menu.name + "_container"); flexiCssMenus.unbindEffect(menu.name); } } for (var i = 0; i < registeredFlexiMenus.length; i++) { var menu = registeredFlexiMenus[i]; if (!flexiCssMenus.xtdCSSMenuInit(menu.name, menu.settings.options)) { flexiCssMenus.bindEffect(menu.name, menu.settings); flexiCssMenus.alignMenu(name, menu.settings.options); } } } var correctedViewportW = (function (win, docElem) { var mM = win["matchMedia"] || win["msMatchMedia"], client = docElem["clientWidth"], inner = win["innerWidth"]; return mM && client < inner && true === mM("(min-width:" + inner + "px)")["matches"] ? function () { return win["innerWidth"]; } : function () { return docElem["clientWidth"]; }; })(window, document.documentElement); if (!window.flexiCssMenus) window.flexiCssMenus = {}; window.flexiCssMenus.correctedViewportW = correctedViewportW; })(jQuery); (function (jQuery) { jQuery(document).ready(function () { var menuSettings = { drop_mainmenu: { effectSub: { name: "slide", direction: "up", duration: "250", easing: "swing", useFade: "false", }, effectRest: { name: "slide", direction: "left", duration: "250", easing: "swing", useFade: "false", }, effectSubTwo: { name: "none", direction: "left", duration: "250", easing: "swing", useFade: "false", }, options: { preset: "fixed", enableTablet: "true", enableMobile: "true", mobileMaxWidth: 767, tabletMaxWidth: 1024, tabletCloseBtnLabel: "Close", tabletCloseBtnEnable: "true", mobileLabel: "\u00a0", }, skin: "default", }, }; var instanceName; for (var key in menuSettings) { if (menuSettings.hasOwnProperty(key) && key != "xtd_drop_down_menu") { instanceSettings = menuSettings[key]; instanceName = key; registerFlexiCSSMenu(instanceName, instanceSettings); } } }); })(jQuery);