1$(document).ready(function() { 2 function responsiveMenu(defaultMenuSelector, aMenuItems) { 3 4 5 //transform the numeric menuitem array to an (assoc) array object 6 function menuArrayToObject(aMenuItems) { 7 var aMenu = []; 8 9 for(var item in aMenuItems) { 10 var props = []; 11 12 for(var property in aMenuItems[item]) { 13 props.push(aMenuItems[item][property]); 14 } 15 16 aMenu[item] = { 17 label: props[0], 18 url: props[1], 19 prop3: props[2], //??? 20 prop4: props[3], //??? 21 prop5: props[4], //??? 22 target: props[5], 23 level: props[6], 24 prop8: props[7] //??? 25 }; 26 } 27 28 return aMenu; 29 } 30 31 //generate menu html 32 function getResponsiveMenuHtml(aMenuItems) { 33 var oMenuItems = menuArrayToObject(aMenuItems), 34 html = 35 '<div id="menu_table_tablet">' + 36 '<div class="navbar">' + 37 '<div class="navbar-inner">' + 38 '<div class="container">' + 39 '<a data-target=".navbar-responsive-collapse" data-toggle="collapse" class="btn btn-navbar collapsed">' + 40 '<span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span>' + 41 '</a><a data-target=".navbar-responsive-collapse" data-toggle="collapse" href="#" class="brand">Menu</a>' + 42 '<div class="nav-collapse navbar-responsive-collapse collapse" style="height: 0px;"><ul class="nav">'; 43 44 for(var i=0; i <= oMenuItems.length-1; i++) { 45 var item = oMenuItems[i], 46 nextItem = (oMenuItems[i+1]) ? oMenuItems[i+1] : false; 47 48 item.label = item.label.substring(item.level); 49 50 // will have one submenu 51 if(item.level < nextItem.level) { 52 if(nextItem.level > '1'){ 53 html += '<li class="dropdown-submenu open">'; 54 }else { 55 html += '<li class="dropdown">'; 56 } 57 58 html += '<a href="'+item.url+'">'+item.label+'</a>'; 59 html += '<a href="#" data-toggle="dropdown" class="dropdown-toggle" style="float: right; position: absolute; top:2px; right:0;" ><b class="caret"></b></a>'; 60 html += '<ul class="dropdown-menu">'; 61 // in the last submenu item, must close the submenu(s) 62 } else if(item.level > nextItem.level) { 63 html += '<li><a href="'+item.url+'" target="'+item.target+'">'+item.label+'</a></li>'; 64 var diff = item.level - nextItem.level; 65 while (diff>0) { 66 html += '</ul></li>'; 67 diff--; 68 } 69 70 } else { 71 html += '<li><a href="'+item.url+'" target="'+item.target+'">'+item.label+'</a></li>'; 72 } 73 } 74 75 html += '</ul></div><!-- /.nav-collapse --></div></div><!-- /navbar-inner --></div>'; 76 return html; 77 } 78 79 //determine active menu element by comparing page url and menu item href attributes 80 function setActiveNavigationItem() { 81 var path = window.location.pathname; 82 path = path.replace(/\/$/, ""); 83 path = decodeURIComponent(path); 84 85 $(".nav a").each(function () { 86 var href = $(this).attr('href'); 87 if (path.substring(0, href.length) === href) { 88 $(this).closest('li').addClass('active'); 89 } 90 }); 91 } 92 93 //insert menu into DOM, after given default menu selector 94 var originalMenu = $(defaultMenuSelector); 95 if(originalMenu.length === 0) { 96 originalMenu = $('.topMenu').parents('div.block'); 97 } 98 99 originalMenu.after(getResponsiveMenuHtml(aMenuItems)); 100 101 //highlight current menu item / location 102 setActiveNavigationItem(); 103 104 //fix submenu dropdowns 105 $('body').on('click', function(e) { 106 $('.dropdown-submenu').removeClass('open').addClass('closed'); 107 }); 108 109 $('.dropdown-submenu').on('click', function(e) { 110 e.stopPropagation(); 111 112 var $this=$(this); 113 var parent=$this.parent().parent(); 114 115 if ( $(e.target).parent().hasClass('dropdown-submenu') ) { 116 e.preventDefault(); 117 } 118 119 if($this.hasClass('open')) { 120 $this.removeClass('open').addClass('closed'); 121 } else if(parent.hasClass('open')) { 122 if($this.hasClass('closed')) { 123 $this.removeClass('closed').addClass('open'); 124 } 125 } 126 }); 127 } 128 129 if (typeof menuResponsiveItems != "undefined" && menuResponsiveItems.length !== 0) { 130 responsiveMenu('#menu_table', menuResponsiveItems); 131 } else if(typeof menuItemsDropDownMenu !== "undefined" && menuItemsDropDownMenu.length !== 0) { 132 responsiveMenu('#menu_table', menuItemsDropDownMenu); 133 } else if(typeof menuItems !== "undefined") { 134 responsiveMenu('#menu_table', menuItems); 135 } else { 136 //nothing provided an menuItems array to build the response menu! 137 // 138 } 139});
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.