1/*! 2* jQuery meanMenu v2.0.7 3* @Copyright (C) 2012-2014 Chris Wharton @ MeanThemes (https://github.com/meanthemes/meanMenu) 4* 5*/ 6/* 7* This program is free software: you can redistribute it and/or modify 8* it under the terms of the GNU General Public License as published by 9* the Free Software Foundation, either version 3 of the License, or 10* (at your option) any later version. 11* 12* THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT 13* HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, 14* INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR 15* FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE 16* OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, 17* COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.COPYRIGHT HOLDERS WILL NOT 18* BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL 19* DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION. 20* 21* You should have received a copy of the GNU General Public License 22* along with this program. If not, see <http://gnu.org/licenses/>. 23* 24* Find more information at http://www.meanthemes.com/plugins/meanmenu/ 25* 26*/ 27(function ($) { 28"use strict"; 29 30$.fn.meanmenu = function (options) { 31var defaults = { 32meanMenuTarget: jQuery(this), // Target the current HTML markup you wish to replace 33meanMenuContainer: 'body', // Choose where meanmenu will be placed within the HTML 34meanMenuClose: "X", // single character you want to represent the close menu button 35meanMenuCloseSize: "18px", // set font size of close button 36meanMenuOpen: "<span /><span /><span />", // text/markup you want when menu is closed 37meanRevealPosition: "right", // left right or center positions 38meanRevealPositionDistance: "0", // Tweak the position of the menu 39meanRevealColour: "", // override CSS colours for the reveal background 40meanScreenWidth: "480", // set the screen width you want meanmenu to kick in at 41meanNavPush: "", // set a height here in px, em or % if you want to budge your layout now the navigation is missing. 42meanShowChildren: true, // true to show children in the menu, false to hide them 43meanExpandableChildren: true, // true to allow expand/collapse children 44meanExpand: "+", // single character you want to represent the expand for ULs 45meanContract: "-", // single character you want to represent the contract for ULs 46meanRemoveAttrs: false, // true to remove classes and IDs, false to keep them 47onePage: false, // set to true for one page sites 48removeElements: "" // set to hide page elements 49}; 50options = $.extend(defaults, options); 51// get browser width 52var currentWidth = window.innerWidth || document.documentElement.clientWidth; 53return this.each(function () { 54var meanMenu = options.meanMenuTarget; 55var meanContainer = options.meanMenuContainer; 56var meanMenuClose = options.meanMenuClose; 57var meanMenuCloseSize = options.meanMenuCloseSize; 58var meanMenuOpen = options.meanMenuOpen; 59var meanRevealPosition = options.meanRevealPosition; 60var meanRevealPositionDistance = options.meanRevealPositionDistance; 61var meanRevealColour = options.meanRevealColour; 62var meanScreenWidth = options.meanScreenWidth; 63var meanNavPush = options.meanNavPush; 64var meanRevealClass = ".meanmenu-reveal"; 65var meanShowChildren = options.meanShowChildren; 66var meanExpandableChildren = options.meanExpandableChildren; 67var meanExpand = options.meanExpand; 68var meanContract = options.meanContract; 69var meanRemoveAttrs = options.meanRemoveAttrs; 70var onePage = options.onePage; 71var removeElements = options.removeElements; 72//detect known mobile/tablet usage 73var isMobile = false; 74if ( (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)) ) { 75isMobile = true; 76} 77if ( (navigator.userAgent.match(/MSIE 8/i)) || (navigator.userAgent.match(/MSIE 7/i)) ) { 78// add scrollbar for IE7 & 8 to stop breaking resize function on small content sites 79jQuery('html').css("overflow-y" , "scroll"); 80} 81var meanRevealPos = ""; 82var meanCentered = function() { 83if (meanRevealPosition === "center") { 84var newWidth = window.innerWidth || document.documentElement.clientWidth; 85var meanCenter = ( (newWidth/2)-22 )+"px"; 86meanRevealPos = "left:" + meanCenter + ";right:auto;"; 87 88if (!$isMobile) { 89jQuery('.meanmenu-reveal').css("left",meanCenter); 90} else { 91jQuery('.meanmenu-reveal').animate({ 92left: meanCenter 93}); 94} 95} 96}; 97var menuOn = false;
98var meanMenuExist = false; 99if (meanRevealPosition === "right") { 100meanRevealPos = "right:" + meanRevealPositionDistance + ";left:auto;"; 101} 102if (meanRevealPosition === "left") { 103meanRevealPos = "left:" + meanRevealPositionDistance + ";right:auto;"; 104} 105// run center function 106meanCentered(); 107// set all styles for mean-reveal 108var $navreveal = ""; 109var meanInner = function() { 110// get last class name 111if (jQuery($navreveal).is(".meanmenu-reveal.meanclose")) { 112$navreveal.html(meanMenuClose); 113} else { 114$navreveal.html(meanMenuOpen); 115} 116}; 117// re-instate original nav (and call this on window.width functions) 118var meanOriginal = function() { 119jQuery('.mean-bar,.mean-push').remove(); 120jQuery(meanContainer).removeClass("mean-container"); 121jQuery(meanMenu).show(); 122menuOn = false; 123meanMenuExist = false; 124jQuery(removeElements).removeClass('mean-remove'); 125}; 126// navigation reveal 127var showMeanMenu = function() { 128var meanStyles = "background:"+meanRevealColour+";color:"+meanRevealColour+";"+meanRevealPos; 129if (currentWidth <= meanScreenWidth) { 130jQuery(removeElements).addClass('mean-remove'); 131meanMenuExist = true; 132// add class to body so we don't need to worry about media queries here, all CSS is wrapped in '.mean-container' 133jQuery(meanContainer).addClass("mean-container"); 134 135//adding language menu to mean-container MK added code 136var house = $(".show-house").clone(); 137house.addClass("house-mobile"); 138jQuery('.mean-container').prepend('<div class="mean-bar"><a href="#nav" class="meanmenu-reveal" style="'+meanStyles+'">Show Navigation</a><nav class="mean-nav"></nav></div>'); 139jQuery(".mean-bar").prepend(house); 140 141 142//push meanMenu navigation into .mean-nav 143var meanMenuContents = jQuery(meanMenu).html(); 144jQuery('.mean-nav').html(meanMenuContents); 145// remove all classes from EVERYTHING inside meanmenu nav 146if(meanRemoveAttrs) { 147jQuery('nav.mean-nav ul, nav.mean-nav ul *').each(function() { 148jQuery(this).removeAttr("class"); 149jQuery(this).removeAttr("id"); 150}); 151} 152// push in a holder div (this can be used if removal of nav is causing layout issues) 153jQuery(meanMenu).before('<div class="mean-push" />'); 154jQuery('.mean-push').css("margin-top",meanNavPush); 155// hide current navigation and reveal mean nav link 156jQuery(meanMenu).hide(); 157jQuery(".meanmenu-reveal").show(); 158// turn 'X' on or off 159jQuery(meanRevealClass).html(meanMenuOpen); 160$navreveal = jQuery(meanRevealClass); 161//hide mean-nav ul 162jQuery('.mean-nav ul').hide(); 163// hide sub nav 164if(meanShowChildren) { 165// allow expandable sub nav(s) 166if(meanExpandableChildren){ 167jQuery('.mean-nav ul ul').each(function() { 168if(jQuery(this).children().length){ 169jQuery(this,'li:first').parent().append('<a class="mean-expand" href="#" style="font-size: '+ meanMenuCloseSize +'">'+ meanExpand +'</a>'); 170} 171}); 172jQuery('.mean-expand').on("click",function(e){ 173e.preventDefault(); 174if (jQuery(this).hasClass("mean-clicked")) { 175jQuery(this).text(meanExpand); 176jQuery(this).prev('ul').slideUp(300, function(){}); 177} else { 178jQuery(this).text(meanContract); 179jQuery(this).prev('ul').slideDown(300, function(){}); 180} 181jQuery(this).toggleClass("mean-clicked"); 182}); 183} else { 184jQuery('.mean-nav ul ul').show(); 185} 186} else { 187jQuery('.mean-nav ul ul').hide(); 188} 189// add last class to tidy up borders 190jQuery('.mean-nav ul li').last().addClass('mean-last'); 191$navreveal.removeClass("meanclose"); 192jQuery($navreveal).click(function(e){ 193e.preventDefault(); 194if( menuOn === false ) { 195$navreveal.css("text-align", "center"); 196$navreveal.css("text-indent", "0"); 197$navreveal.css("font-size", meanMenuCloseSize); 198jQuery('.mean-nav ul:first').slideDown(); 199menuOn = true; 200} else { 201jQuery('.mean-nav ul:first').slideUp(); 202menuOn = false; 203} 204$navreveal.toggleClass("meanclose"); 205meanInner(); 206jQuery(removeElements).addClass('mean-remove'); 207}); 208// for one page websites, reset all variables... 209if ( onePage ) { 210jQuery('.mean-nav ul > li > a:first-child').on( "click" , function () { 211jQuery('.mean-nav ul:first').slideUp(); 212menuOn = false; 213jQuery($navreveal).toggleClass("meanclose").html(meanMenuOpen); 214}); 215} 216} else { 217meanOriginal(); 218} 219}; 220if (!isMobile) { 221// reset menu on resize above meanScreenWidth 222jQuery(window).resize(function () { 223currentWidth = window.innerWidth || document.documentElement.clientWidth; 224if (currentWidth > meanScreenWidth) { 225meanOriginal(); 226} else { 227meanOriginal(); 228} 229if (currentWidth <= meanScreenWidth) { 230showMeanMenu(); 231meanCentered(); 232} else { 233meanOriginal(); 234} 235}); 236} 237jQuery(window).resize(function () { 238// get browser width 239currentWidth = window.innerWidth || document.documentElement.clientWidth; 240if (!isMobile) { 241meanOriginal(); 242if (currentWidth <= meanScreenWidth) { 243showMeanMenu(); 244meanCentered(); 245} 246} else { 247meanCentered(); 248if (currentWidth <= meanScreenWidth) { 249if (meanMenuExist === false) { 250showMeanMenu(); 251} 252} else { 253meanOriginal(); 254} 255} 256});
257// run main menuMenu function on load 258showMeanMenu(); 259}); 260}; 261})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.