diff --git a/README.md b/README.md index 98f2b7c..250f522 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,5 @@ -MeanMenu v2.0.8 +MeanMenu v2.0.11 =========== - Looking for a WordPress version? --- Our friends over at PluginHero have just released the WordPress version of MeanMenu. @@ -40,6 +39,10 @@ Then in your usual document.ready, this is working under the assumption your nav There are the following options (Options are shown with their defaults)... +meanAria: true + +- Adds `aria-expanded`, `aria-label` and `role` attributes for better accessibility and WCAG compliance + meanMenuContainer: 'body' - Choose where meanmenu will be placed within the HTML @@ -74,7 +77,7 @@ meanScreenWidth: "480" meanNavPush: "" -- Set a height here in px, em or % if you want to budge your layout now the navigation is missing. +- Set a height here in px, em or % if you want to budge your layout now the navigation is missing meanShowChildren: true @@ -88,6 +91,14 @@ meanExpand: "+" - single character you want to represent the expand for ULs +meanExpandPostion: "after" + +- Set to either before or after to change where the expand/contract icon is inserted in the list markup. Useful for accessibility tweaks + +meanSpeed: 300 + +- an integer that sets the speed of all animations in milliseconds. 1000 = 1 second + meanContract: "-" - single character you want to represent the contract for ULs diff --git a/demo.html b/demo.html index 369ddd0..91161c5 100644 --- a/demo.html +++ b/demo.html @@ -124,7 +124,11 @@

Check out our WordPress & diff --git a/jquery.meanmenu.js b/jquery.meanmenu.js index 70a49f1..04dc17a 100644 --- a/jquery.meanmenu.js +++ b/jquery.meanmenu.js @@ -1,285 +1,319 @@ /*! -* jQuery meanMenu v2.0.8 -* @Copyright (C) 2012-2014 Chris Wharton @ MeanThemes (https://github.com/meanthemes/meanMenu) -* -*/ + * jQuery meanMenu v2.0.11 - Forked version (https://github.com/T-Fletcher/meanMenu) + * + * Originally produced by: + * @Copyright (C) 2012-2014 Chris Wharton @ MeanThemes (https://github.com/meanthemes/meanMenu) + * + */ /* -* This program is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT -* HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, -* INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR -* FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE -* OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, -* COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.COPYRIGHT HOLDERS WILL NOT -* BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL -* DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION. -* -* You should have received a copy of the GNU General Public License -* along with this program. If not, see . -* -* Find more information at http://www.meanthemes.com/plugins/meanmenu/ -* -*/ -(function ($) { - "use strict"; - $.fn.meanmenu = function (options) { - var defaults = { - meanMenuTarget: jQuery(this), // Target the current HTML markup you wish to replace - meanMenuContainer: 'body', // Choose where meanmenu will be placed within the HTML - meanMenuClose: "X", // single character you want to represent the close menu button - meanMenuCloseSize: "18px", // set font size of close button - meanMenuOpen: "", // text/markup you want when menu is closed - meanRevealPosition: "right", // left right or center positions - meanRevealPositionDistance: "0", // Tweak the position of the menu - meanRevealColour: "", // override CSS colours for the reveal background - meanScreenWidth: "480", // set the screen width you want meanmenu to kick in at - meanNavPush: "", // set a height here in px, em or % if you want to budge your layout now the navigation is missing. - meanShowChildren: true, // true to show children in the menu, false to hide them - meanExpandableChildren: true, // true to allow expand/collapse children - meanExpand: "+", // single character you want to represent the expand for ULs - meanContract: "-", // single character you want to represent the contract for ULs - meanRemoveAttrs: false, // true to remove classes and IDs, false to keep them - onePage: false, // set to true for one page sites - meanDisplay: "block", // override display method for table cell based layouts e.g. table-cell - removeElements: "" // set to hide page elements - }; - options = $.extend(defaults, options); + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT + * HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR + * FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE + * OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, + * COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.COPYRIGHT HOLDERS WILL NOT + * BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL + * DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * Find more information at http://www.meanthemes.com/plugins/meanmenu/ + * + */ +(function($) { + "use strict"; + $.fn.meanmenu = function(options) { + var defaults = { + meanMenuTarget: jQuery(this), // Target the current HTML list wrapper you wish to replace + meanMenuContainer: 'body', // Choose where meanmenu will be placed within the HTML + meanMenuClose: "X", // single character you want to represent the close menu button + meanMenuCloseSize: "18px", // set font size of close button + meanMenuOpen: "", // text/markup you want when menu is closed + meanRevealPosition: "right", // left right or center positions + meanRevealPositionDistance: "0", // Tweak the position of the menu + meanRevealColour: "", // override CSS colours for the reveal background + meanScreenWidth: "480", // set the screen width you want meanmenu to kick in at + meanNavPush: "", // set a height here in px, em or % if you want to budge your layout now the navigation is missing. + meanShowChildren: true, // true to show children in the menu, false to hide them + meanExpandableChildren: true, // true to allow expand/collapse children + meanExpandPosition: "after", // after to insert the expand/collapse link after the child menu + meanExpand: "+", // single character you want to represent the expand for ULs + meanContract: "-", // single character you want to represent the contract for ULs + meanSpeed: 300, // an integer for the speed in milliseconds of the expand/collapse animations + meanAria: true, // true to enable 'aria-expanded', 'aria-label' and 'role' attributes on expand links, false to leave them out + meanRemoveAttrs: false, // true to remove classes and IDs, false to keep them + onePage: false, // set to true for one page sites + meanDisplay: "block", // override display method for table cell based layouts e.g. table-cell + removeElements: "" // set to hide page elements + }; + options = $.extend(defaults, options); - // get browser width - var currentWidth = window.innerWidth || document.documentElement.clientWidth; + // get browser width + var currentWidth = window.innerWidth || document.documentElement.clientWidth; - return this.each(function () { - var meanMenu = options.meanMenuTarget; - var meanContainer = options.meanMenuContainer; - var meanMenuClose = options.meanMenuClose; - var meanMenuCloseSize = options.meanMenuCloseSize; - var meanMenuOpen = options.meanMenuOpen; - var meanRevealPosition = options.meanRevealPosition; - var meanRevealPositionDistance = options.meanRevealPositionDistance; - var meanRevealColour = options.meanRevealColour; - var meanScreenWidth = options.meanScreenWidth; - var meanNavPush = options.meanNavPush; - var meanRevealClass = ".meanmenu-reveal"; - var meanShowChildren = options.meanShowChildren; - var meanExpandableChildren = options.meanExpandableChildren; - var meanExpand = options.meanExpand; - var meanContract = options.meanContract; - var meanRemoveAttrs = options.meanRemoveAttrs; - var onePage = options.onePage; - var meanDisplay = options.meanDisplay; - var removeElements = options.removeElements; + return this.each(function() { + var meanMenu = options.meanMenuTarget; + var meanContainer = options.meanMenuContainer; + var meanMenuClose = options.meanMenuClose; + var meanMenuCloseSize = options.meanMenuCloseSize; + var meanMenuOpen = options.meanMenuOpen; + var meanRevealPosition = options.meanRevealPosition; + var meanRevealPositionDistance = options.meanRevealPositionDistance; + var meanRevealColour = options.meanRevealColour; + var meanScreenWidth = options.meanScreenWidth; + var meanNavPush = options.meanNavPush; + var meanRevealClass = ".meanmenu-reveal"; + var meanShowChildren = options.meanShowChildren; + var meanExpandableChildren = options.meanExpandableChildren; + var meanExpandPosition = options.meanExpandPosition; + var meanExpand = options.meanExpand; + var meanContract = options.meanContract; + var meanSpeed = options.meanSpeed; + var meanAria = options.meanAria; + var meanRemoveAttrs = options.meanRemoveAttrs; + var onePage = options.onePage; + var meanDisplay = options.meanDisplay; + var removeElements = options.removeElements; - //detect known mobile/tablet usage - var isMobile = false; - if ( (navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i)) || (navigator.userAgent.match(/Android/i)) || (navigator.userAgent.match(/Blackberry/i)) || (navigator.userAgent.match(/Windows Phone/i)) ) { - isMobile = true; - } + //detect known mobile/tablet usage + var isMobile = false; + if ((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i)) || (navigator.userAgent.match(/Android/i)) || (navigator.userAgent.match(/Blackberry/i)) || (navigator.userAgent.match(/Windows Phone/i))) { + isMobile = true; + } - if ( (navigator.userAgent.match(/MSIE 8/i)) || (navigator.userAgent.match(/MSIE 7/i)) ) { - // add scrollbar for IE7 & 8 to stop breaking resize function on small content sites - jQuery('html').css("overflow-y" , "scroll"); - } + if ((navigator.userAgent.match(/MSIE 8/i)) || (navigator.userAgent.match(/MSIE 7/i))) { + // add scrollbar for IE7 & 8 to stop breaking resize function on small content sites + jQuery('html').css("overflow-y", "scroll"); + } - var meanRevealPos = ""; - var meanCentered = function() { - if (meanRevealPosition === "center") { - var newWidth = window.innerWidth || document.documentElement.clientWidth; - var meanCenter = ( (newWidth/2)-22 )+"px"; - meanRevealPos = "left:" + meanCenter + ";right:auto;"; + var meanRevealPos = ""; + var meanCentered = function() { + if (meanRevealPosition === "center") { + var newWidth = window.innerWidth || document.documentElement.clientWidth; + var meanCenter = ((newWidth / 2) - 22) + "px"; + meanRevealPos = "left:" + meanCenter + ";right:auto;"; - if (!isMobile) { - jQuery('.meanmenu-reveal').css("left",meanCenter); - } else { - jQuery('.meanmenu-reveal').animate({ - left: meanCenter - }); - } - } - }; + if (!isMobile) { + jQuery('.meanmenu-reveal').css("left", meanCenter); + } else { + jQuery('.meanmenu-reveal').animate({ + left: meanCenter + }); + } + } + }; - var menuOn = false; - var meanMenuExist = false; + var menuOn = false; + var meanMenuExist = false; - if (meanRevealPosition === "right") { - meanRevealPos = "right:" + meanRevealPositionDistance + ";left:auto;"; - } - if (meanRevealPosition === "left") { - meanRevealPos = "left:" + meanRevealPositionDistance + ";right:auto;"; - } - // run center function - meanCentered(); + if (meanRevealPosition === "right") { + meanRevealPos = "right:" + meanRevealPositionDistance + ";left:auto;"; + } + if (meanRevealPosition === "left") { + meanRevealPos = "left:" + meanRevealPositionDistance + ";right:auto;"; + } + // run center function + meanCentered(); - // set all styles for mean-reveal - var $navreveal = ""; + // set all styles for mean-reveal + var $navreveal = ""; - var meanInner = function() { - // get last class name - if (jQuery($navreveal).is(".meanmenu-reveal.meanclose")) { - $navreveal.html(meanMenuClose); - } else { - $navreveal.html(meanMenuOpen); - } - }; + var meanInner = function() { + // get last class name + if (jQuery($navreveal).is(".meanmenu-reveal.meanclose")) { + $navreveal.html(meanMenuClose); + } else { + $navreveal.html(meanMenuOpen); + } + }; - // re-instate original nav (and call this on window.width functions) - var meanOriginal = function() { - jQuery('.mean-bar,.mean-push').remove(); - jQuery(meanContainer).removeClass("mean-container"); - jQuery(meanMenu).css('display', meanDisplay); - menuOn = false; - meanMenuExist = false; - jQuery(removeElements).removeClass('mean-remove'); - }; + // re-instate original nav (and call this on window.width functions) + var meanOriginal = function() { + jQuery('.mean-bar,.mean-push').remove(); + jQuery(meanContainer).removeClass("mean-container"); + jQuery(meanMenu).css('display', meanDisplay); + menuOn = false; + meanMenuExist = false; + jQuery(removeElements).removeClass('mean-remove'); + }; - // navigation reveal - var showMeanMenu = function() { - var meanStyles = "background:"+meanRevealColour+";color:"+meanRevealColour+";"+meanRevealPos; - if (currentWidth <= meanScreenWidth) { - jQuery(removeElements).addClass('mean-remove'); - meanMenuExist = true; - // add class to body so we don't need to worry about media queries here, all CSS is wrapped in '.mean-container' - jQuery(meanContainer).addClass("mean-container"); - jQuery('.mean-container').prepend('
Show Navigation
'); + // navigation reveal + var showMeanMenu = function() { + var meanStyles = "background:" + meanRevealColour + ";color:" + meanRevealColour + ";" + meanRevealPos; + if (currentWidth <= meanScreenWidth) { + jQuery(removeElements).addClass('mean-remove'); + meanMenuExist = true; + // add class to body so we don't need to worry about media queries here, all CSS is wrapped in '.mean-container' + jQuery(meanContainer).addClass("mean-container"); + jQuery('.mean-container').prepend('
Show Navigation
'); - //push meanMenu navigation into .mean-nav - var meanMenuContents = jQuery(meanMenu).html(); - jQuery('.mean-nav').html(meanMenuContents); + //push meanMenu navigation into .mean-nav + var meanMenuContents = jQuery(meanMenu).html(); + jQuery('.mean-nav').html(meanMenuContents); - // remove all classes from EVERYTHING inside meanmenu nav - if(meanRemoveAttrs) { - jQuery('nav.mean-nav ul, nav.mean-nav ul *').each(function() { - // First check if this has mean-remove class - if (jQuery(this).is('.mean-remove')) { - jQuery(this).attr('class', 'mean-remove'); - } else { - jQuery(this).removeAttr("class"); - } - jQuery(this).removeAttr("id"); - }); - } + // remove all classes from EVERYTHING inside meanmenu nav + if (meanRemoveAttrs) { + jQuery('nav.mean-nav ul, nav.mean-nav ul *').each(function() { + // First check if this has mean-remove class + if (jQuery(this).is('.mean-remove')) { + jQuery(this).attr('class', 'mean-remove'); + } else { + jQuery(this).removeAttr("class"); + } + jQuery(this).removeAttr("id"); + }); + } - // push in a holder div (this can be used if removal of nav is causing layout issues) - jQuery(meanMenu).before('
'); - jQuery('.mean-push').css("margin-top",meanNavPush); + // push in a holder div (this can be used if removal of nav is causing layout issues) + jQuery(meanMenu).before('
'); + jQuery('.mean-push').css("margin-top", meanNavPush); - // hide current navigation and reveal mean nav link - jQuery(meanMenu).hide(); - jQuery(".meanmenu-reveal").show(); + // hide current navigation and reveal mean nav link + jQuery(meanMenu).hide(); + jQuery(".meanmenu-reveal").show(); - // turn 'X' on or off - jQuery(meanRevealClass).html(meanMenuOpen); - $navreveal = jQuery(meanRevealClass); + // turn 'X' on or off + jQuery(meanRevealClass).html(meanMenuOpen); + $navreveal = jQuery(meanRevealClass); - //hide mean-nav ul - jQuery('.mean-nav ul').hide(); + //hide mean-nav ul + jQuery('.mean-nav ul').hide(); - // hide sub nav - if(meanShowChildren) { - // allow expandable sub nav(s) - if(meanExpandableChildren){ - jQuery('.mean-nav ul ul').each(function() { - if(jQuery(this).children().length){ - jQuery(this,'li:first').parent().append(''+ meanExpand +''); - } - }); - jQuery('.mean-expand').on("click",function(e){ - e.preventDefault(); - if (jQuery(this).hasClass("mean-clicked")) { - jQuery(this).text(meanExpand); - jQuery(this).prev('ul').slideUp(300, function(){}); - } else { - jQuery(this).text(meanContract); - jQuery(this).prev('ul').slideDown(300, function(){}); - } - jQuery(this).toggleClass("mean-clicked"); - }); - } else { - jQuery('.mean-nav ul ul').show(); - } - } else { - jQuery('.mean-nav ul ul').hide(); - } + // hide sub nav + if (meanShowChildren) { + // allow expandable sub nav(s) + if (meanExpandableChildren) { + jQuery('.mean-nav ul ul').each(function() { + if (jQuery(this).children().length) { - // add last class to tidy up borders - jQuery('.mean-nav ul li').last().addClass('mean-last'); - $navreveal.removeClass("meanclose"); - jQuery($navreveal).click(function(e){ - e.preventDefault(); - if( menuOn === false ) { - $navreveal.css("text-align", "center"); - $navreveal.css("text-indent", "0"); - $navreveal.css("font-size", meanMenuCloseSize); - jQuery('.mean-nav ul:first').slideDown(); - menuOn = true; - } else { - jQuery('.mean-nav ul:first').slideUp(); - menuOn = false; - } - $navreveal.toggleClass("meanclose"); - meanInner(); - jQuery(removeElements).addClass('mean-remove'); - }); + if (meanAria == true) { + var expandLinkLabel = jQuery(this, 'li:first > ul').prev('a').text(), + expandLink = ''; + } else { + var expandLink = '' + meanExpand + ''; + } - // for one page websites, reset all variables... - if ( onePage ) { - jQuery('.mean-nav ul > li > a:first-child').on( "click" , function () { - jQuery('.mean-nav ul:first').slideUp(); - menuOn = false; - jQuery($navreveal).toggleClass("meanclose").html(meanMenuOpen); - }); - } - } else { - meanOriginal(); - } - }; + if (meanExpandPosition == "before") { + jQuery(this, 'li:first > ul').before(expandLink); + } else { + jQuery(this, 'li:first > ul').after(expandLink); + } + } + }); + jQuery('.mean-expand').on("click", function(e) { + e.preventDefault(); + if (jQuery(this).hasClass("mean-clicked")) { + jQuery(this).text(meanExpand); + if (meanAria == true) { + jQuery(this).attr('aria-expanded', 'false'); + } + if (meanExpandPosition == "before") { + jQuery(this).next('ul').slideUp(meanSpeed, function() {}); + } else { + jQuery(this).prev('ul').slideUp(meanSpeed, function() {}); + } + } else { + jQuery(this).text(meanContract); + if (meanAria == true) { + jQuery(this).attr('aria-expanded', 'true') + } + if (meanExpandPosition == "before") { + jQuery(this).next('ul').slideDown(meanSpeed, function() {}); + } else { + jQuery(this).prev('ul').slideDown(meanSpeed, function() {}); + } + } + jQuery(this).toggleClass("mean-clicked"); + }); + } else { + jQuery('.mean-nav ul ul').show(); + } + } else { + jQuery('.mean-nav ul ul').hide(); + } - if (!isMobile) { - // reset menu on resize above meanScreenWidth - jQuery(window).resize(function () { - currentWidth = window.innerWidth || document.documentElement.clientWidth; - if (currentWidth > meanScreenWidth) { - meanOriginal(); - } else { - meanOriginal(); - } - if (currentWidth <= meanScreenWidth) { - showMeanMenu(); - meanCentered(); - } else { - meanOriginal(); - } - }); - } + // add last class to tidy up borders + jQuery('.mean-nav ul li').last().addClass('mean-last'); + $navreveal.removeClass("meanclose"); + jQuery($navreveal).click(function(e) { + e.preventDefault(); + if (menuOn === false) { + $navreveal.css("text-align", "center"); + $navreveal.css("text-indent", "0"); + $navreveal.css("font-size", meanMenuCloseSize); + jQuery('.mean-nav ul:first').slideDown(meanSpeed); + menuOn = true; + } else { + jQuery('.mean-nav ul:first').slideUp(meanSpeed); + menuOn = false; + } + $navreveal.toggleClass("meanclose"); + meanInner(); + jQuery(removeElements).addClass('mean-remove'); + }); - jQuery(window).resize(function () { - // get browser width - currentWidth = window.innerWidth || document.documentElement.clientWidth; + // for one page websites, reset all variables... + if (onePage) { + jQuery('.mean-nav ul > li > a:first-child').on("click", function() { + jQuery('.mean-nav ul:first').slideUp(); + menuOn = false; + jQuery($navreveal).toggleClass("meanclose").html(meanMenuOpen); + }); + } + } else { + meanOriginal(); + } + }; - if (!isMobile) { - meanOriginal(); - if (currentWidth <= meanScreenWidth) { - showMeanMenu(); - meanCentered(); - } - } else { - meanCentered(); - if (currentWidth <= meanScreenWidth) { - if (meanMenuExist === false) { - showMeanMenu(); - } - } else { - meanOriginal(); - } - } - }); + if (!isMobile) { + // reset menu on resize above meanScreenWidth + jQuery(window).resize(function() { + currentWidth = window.innerWidth || document.documentElement.clientWidth; + if (currentWidth > meanScreenWidth) { + meanOriginal(); + } else { + meanOriginal(); + } + if (currentWidth <= meanScreenWidth) { + showMeanMenu(); + meanCentered(); + } else { + meanOriginal(); + } + }); + } - // run main menuMenu function on load - showMeanMenu(); - }); - }; + jQuery(window).resize(function() { + // get browser width + currentWidth = window.innerWidth || document.documentElement.clientWidth; + + if (!isMobile) { + meanOriginal(); + if (currentWidth <= meanScreenWidth) { + showMeanMenu(); + meanCentered(); + } + } else { + meanCentered(); + if (currentWidth <= meanScreenWidth) { + if (meanMenuExist === false) { + showMeanMenu(); + } + } else { + meanOriginal(); + } + } + }); + + // run main menuMenu function on load + showMeanMenu(); + }); + }; })(jQuery); diff --git a/jquery.meanmenu.min.js b/jquery.meanmenu.min.js index f684a5c..b1b1acd 100644 --- a/jquery.meanmenu.min.js +++ b/jquery.meanmenu.min.js @@ -1 +1 @@ -!function($){"use strict";$.fn.meanmenu=function(e){var n={meanMenuTarget:jQuery(this),meanMenuContainer:"body",meanMenuClose:"X",meanMenuCloseSize:"18px",meanMenuOpen:"",meanRevealPosition:"right",meanRevealPositionDistance:"0",meanRevealColour:"",meanScreenWidth:"480",meanNavPush:"",meanShowChildren:!0,meanExpandableChildren:!0,meanExpand:"+",meanContract:"-",meanRemoveAttrs:!1,onePage:!1,meanDisplay:"block",removeElements:""};e=$.extend(n,e);var a=window.innerWidth||document.documentElement.clientWidth;return this.each(function(){var n=e.meanMenuTarget,t=e.meanMenuContainer,r=e.meanMenuClose,i=e.meanMenuCloseSize,s=e.meanMenuOpen,u=e.meanRevealPosition,m=e.meanRevealPositionDistance,l=e.meanRevealColour,o=e.meanScreenWidth,c=e.meanNavPush,v=".meanmenu-reveal",h=e.meanShowChildren,d=e.meanExpandableChildren,y=e.meanExpand,j=e.meanContract,Q=e.meanRemoveAttrs,f=e.onePage,g=e.meanDisplay,p=e.removeElements,C=!1;(navigator.userAgent.match(/iPhone/i)||navigator.userAgent.match(/iPod/i)||navigator.userAgent.match(/iPad/i)||navigator.userAgent.match(/Android/i)||navigator.userAgent.match(/Blackberry/i)||navigator.userAgent.match(/Windows Phone/i))&&(C=!0),(navigator.userAgent.match(/MSIE 8/i)||navigator.userAgent.match(/MSIE 7/i))&&jQuery("html").css("overflow-y","scroll");var w="",x=function(){if("center"===u){var e=window.innerWidth||document.documentElement.clientWidth,n=e/2-22+"px";w="left:"+n+";right:auto;",C?jQuery(".meanmenu-reveal").animate({left:n}):jQuery(".meanmenu-reveal").css("left",n)}},A=!1,E=!1;"right"===u&&(w="right:"+m+";left:auto;"),"left"===u&&(w="left:"+m+";right:auto;"),x();var M="",P=function(){M.html(jQuery(M).is(".meanmenu-reveal.meanclose")?r:s)},W=function(){jQuery(".mean-bar,.mean-push").remove(),jQuery(t).removeClass("mean-container"),jQuery(n).css("display",g),A=!1,E=!1,jQuery(p).removeClass("mean-remove")},b=function(){var e="background:"+l+";color:"+l+";"+w;if(o>=a){jQuery(p).addClass("mean-remove"),E=!0,jQuery(t).addClass("mean-container"),jQuery(".mean-container").prepend('');var r=jQuery(n).html();jQuery(".mean-nav").html(r),Q&&jQuery("nav.mean-nav ul, nav.mean-nav ul *").each(function(){jQuery(this).is(".mean-remove")?jQuery(this).attr("class","mean-remove"):jQuery(this).removeAttr("class"),jQuery(this).removeAttr("id")}),jQuery(n).before('
'),jQuery(".mean-push").css("margin-top",c),jQuery(n).hide(),jQuery(".meanmenu-reveal").show(),jQuery(v).html(s),M=jQuery(v),jQuery(".mean-nav ul").hide(),h?d?(jQuery(".mean-nav ul ul").each(function(){jQuery(this).children().length&&jQuery(this,"li:first").parent().append(''+y+"")}),jQuery(".mean-expand").on("click",function(e){e.preventDefault(),jQuery(this).hasClass("mean-clicked")?(jQuery(this).text(y),jQuery(this).prev("ul").slideUp(300,function(){})):(jQuery(this).text(j),jQuery(this).prev("ul").slideDown(300,function(){})),jQuery(this).toggleClass("mean-clicked")})):jQuery(".mean-nav ul ul").show():jQuery(".mean-nav ul ul").hide(),jQuery(".mean-nav ul li").last().addClass("mean-last"),M.removeClass("meanclose"),jQuery(M).click(function(e){e.preventDefault(),A===!1?(M.css("text-align","center"),M.css("text-indent","0"),M.css("font-size",i),jQuery(".mean-nav ul:first").slideDown(),A=!0):(jQuery(".mean-nav ul:first").slideUp(),A=!1),M.toggleClass("meanclose"),P(),jQuery(p).addClass("mean-remove")}),f&&jQuery(".mean-nav ul > li > a:first-child").on("click",function(){jQuery(".mean-nav ul:first").slideUp(),A=!1,jQuery(M).toggleClass("meanclose").html(s)})}else W()};C||jQuery(window).resize(function(){a=window.innerWidth||document.documentElement.clientWidth,a>o,W(),o>=a?(b(),x()):W()}),jQuery(window).resize(function(){a=window.innerWidth||document.documentElement.clientWidth,C?(x(),o>=a?E===!1&&b():W()):(W(),o>=a&&(b(),x()))}),b()})}}(jQuery); \ No newline at end of file +!function(n){"use strict";n.fn.meanmenu=function(W){var e={meanMenuTarget:jQuery(this),meanMenuContainer:"body",meanMenuClose:"X",meanMenuCloseSize:"18px",meanMenuOpen:"",meanRevealPosition:"right",meanRevealPositionDistance:"0",meanRevealColour:"",meanScreenWidth:"480",meanNavPush:"",meanShowChildren:!0,meanExpandableChildren:!0,meanExpandPosition:"after",meanExpand:"+",meanContract:"-",meanSpeed:300,meanAria:!0,meanRemoveAttrs:!1,onePage:!1,meanDisplay:"block",removeElements:""};W=n.extend(e,W);var D=window.innerWidth||document.documentElement.clientWidth;return this.each(function(){var a=W.meanMenuTarget,t=W.meanMenuContainer,r=W.meanMenuClose,i=W.meanMenuCloseSize,s=W.meanMenuOpen,n=W.meanRevealPosition,e=W.meanRevealPositionDistance,u=W.meanRevealColour,l=W.meanScreenWidth,m=W.meanNavPush,o=".meanmenu-reveal",c=W.meanShowChildren,d=W.meanExpandableChildren,h=W.meanExpandPosition,v=W.meanExpand,y=W.meanContract,j=W.meanSpeed,Q=W.meanAria,f=W.meanRemoveAttrs,p=W.onePage,g=W.meanDisplay,C=W.removeElements,w=!1;(navigator.userAgent.match(/iPhone/i)||navigator.userAgent.match(/iPod/i)||navigator.userAgent.match(/iPad/i)||navigator.userAgent.match(/Android/i)||navigator.userAgent.match(/Blackberry/i)||navigator.userAgent.match(/Windows Phone/i))&&(w=!0),(navigator.userAgent.match(/MSIE 8/i)||navigator.userAgent.match(/MSIE 7/i))&&jQuery("html").css("overflow-y","scroll");var x="",b=function(){if("center"===n){var e=(window.innerWidth||document.documentElement.clientWidth)/2-22+"px";x="left:"+e+";right:auto;",w?jQuery(".meanmenu-reveal").animate({left:e}):jQuery(".meanmenu-reveal").css("left",e)}},A=!1,E=!1;"right"===n&&(x="right:"+e+";left:auto;"),"left"===n&&(x="left:"+e+";right:auto;"),b();var P="",M=function(){jQuery(".mean-bar,.mean-push").remove(),jQuery(t).removeClass("mean-container"),jQuery(a).css("display",g),E=A=!1,jQuery(C).removeClass("mean-remove")},S=function(){var e="background:"+u+";color:"+u+";"+x;if(D<=l){jQuery(C).addClass("mean-remove"),E=!0,jQuery(t).addClass("mean-container"),jQuery(".mean-container").prepend('');var n=jQuery(a).html();jQuery(".mean-nav").html(n),f&&jQuery("nav.mean-nav ul, nav.mean-nav ul *").each(function(){jQuery(this).is(".mean-remove")?jQuery(this).attr("class","mean-remove"):jQuery(this).removeAttr("class"),jQuery(this).removeAttr("id")}),jQuery(a).before('
'),jQuery(".mean-push").css("margin-top",m),jQuery(a).hide(),jQuery(".meanmenu-reveal").show(),jQuery(o).html(s),P=jQuery(o),jQuery(".mean-nav ul").hide(),c?d?(jQuery(".mean-nav ul ul").each(function(){if(jQuery(this).children().length){if(1==Q)var e='";else e=''+v+"";"before"==h?jQuery(this,"li:first > ul").before(e):jQuery(this,"li:first > ul").after(e)}}),jQuery(".mean-expand").on("click",function(e){e.preventDefault(),jQuery(this).hasClass("mean-clicked")?(jQuery(this).text(v),1==Q&&jQuery(this).attr("aria-expanded","false"),"before"==h?jQuery(this).next("ul").slideUp(j,function(){}):jQuery(this).prev("ul").slideUp(j,function(){})):(jQuery(this).text(y),1==Q&&jQuery(this).attr("aria-expanded","true"),"before"==h?jQuery(this).next("ul").slideDown(j,function(){}):jQuery(this).prev("ul").slideDown(j,function(){})),jQuery(this).toggleClass("mean-clicked")})):jQuery(".mean-nav ul ul").show():jQuery(".mean-nav ul ul").hide(),jQuery(".mean-nav ul li").last().addClass("mean-last"),P.removeClass("meanclose"),jQuery(P).click(function(e){e.preventDefault(),!1===A?(P.css("text-align","center"),P.css("text-indent","0"),P.css("font-size",i),jQuery(".mean-nav ul:first").slideDown(j),A=!0):(jQuery(".mean-nav ul:first").slideUp(j),A=!1),P.toggleClass("meanclose"),jQuery(P).is(".meanmenu-reveal.meanclose")?P.html(r):P.html(s),jQuery(C).addClass("mean-remove")}),p&&jQuery(".mean-nav ul > li > a:first-child").on("click",function(){jQuery(".mean-nav ul:first").slideUp(),A=!1,jQuery(P).toggleClass("meanclose").html(s)})}else M()};w||jQuery(window).resize(function(){D=window.innerWidth||document.documentElement.clientWidth,M(),D<=l?(S(),b()):M()}),jQuery(window).resize(function(){D=window.innerWidth||document.documentElement.clientWidth,w?(b(),D<=l?!1===E&&S():M()):(M(),D<=l&&(S(),b()))}),S()})}}(jQuery);