1// ******************* 2// SETTINGS 3// ******************* 4var nav_element_id = "nav"; 5var nav_ul_id = "menu-primary-nav"; // first <ul> of the nav 6var kid_class = "sub-menu"; 7 8 9window.onload = function() { 10 var winWidth = window.outerWidth ? window.outerWidth : document.body.clientWidth; 11 12 // setup smartphone menus 13 if( winWidth <= 720 ) { 14 // setup mobile menu 15 var navElem = document.getElementById(nav_element_id); 16 var navMenuBtn = document.getElementById("menu_btn"); 17 var navLinks = navElem.getElementsByTagName("a"); 18 var touchType = "click"; 19 20 navMenuBtn.addEventListener(touchType, function(e) { 21 e.preventDefault(); 22 e.stopPropagation(); 23 24 var navClass = navElem.className; 25 26 if( navClass == "slid" ) { 27 navElem.className = ""; 28 clearOvers(); 29 } else { 30 navElem.className = "slid"; 31 } 32 }, false); 33 navElem.addEventListener("click", function(e) { 34 e.preventDefault(); 35 e.stopPropagation(); 36 return false; 37 } ); 38 39 for( var i=0; i<navLinks.length; i++ ) { 40 var navLink = navLinks[i]; 41 var subNav = navLink.parentNode.getElementsByClassName(kid_class)[0]; 42 43 navLink.addEventListener("click", function(e) { 44 e.preventDefault(); 45 e.stopPropagation(); 46 return false; 47 }); 48 49 if( subNav && subNav.parentNode.parentNode.className != kid_class ) { 50 navLink.addEventListener(touchType, function(e) { 51 e.preventDefault(); 52 e.stopPropagation(); 53 54 clearOvers(); 55 this.parentNode.className += " over"; 56 57 return false; 58 }); 59 } else { 60 navLink.addEventListener(touchType, function() { 61 clearOvers(); 62 this.parentNode.className += " over"; 63 64 var link = this.href; 65 document.location.href = link; 66 }); 67 } 68 } 69 } 70 // END setup smartphone menus 71 72 // setup doc/pdf Google Analytics click tracking 73 if( window.ga || (window._gat && window._gat._getTracker) ) { 74 com.illuminage.doctrack.setupTracking(); 75 } 76 77 // check for font size/zoom cookie 78 if( illReadCookie("text_size") != null ) { 79 illDoTextSize( illReadCookie("text_size") ); 80 } else { 81 illDoTextSize( 0 ); 82 } 83 84 // set cookie to prevent caching 85 // if( illReadCookie( "ill_no_cache" ) == null ) { 86 // illCreateCookie( "ill_no_cache", "1", 365 ); 87 // } 88 89 // dropdown nav keyboard navigation helper 90 if( jQuery ) { 91 jQuery("." + kid_class + " a").on("focus", function() { 92 jQuery(this).closest("." + kid_class).closest("li").addClass("active"); 93 }); 94 jQuery("." + kid_class + " a").on("blur", function() { 95 jQuery(this).closest("." + kid_class).closest("li").removeClass("active"); 96 }); 97 98 // search hide/show 99 jQuery("#search input[type=submit]").on("hover", function() { 100 jQuery(this).prev().fadeIn(function() { 101 jQuery(this).focus(); 102 }); 103 }); 104 jQuery("#search input[type=text]").on("blur", function(e) { 105 if( !jQuery(e.relatedTarget).hasClass("search_submit_btn") ) { 106 jQuery(this).fadeOut(); 107 } 108 }); 109 jQuery("#search").on("submit", function(e) { 110 if( jQuery(this).find("input[type=text]").val() == "" ) { 111 e.preventDefault(); 112 return false; 113 } 114 115 jQuery(this).find("input[type=text]").focus(); 116 }); 117 118 // text size toggle 119 jQuery("#textsize").on("click", function() { 120 illIncrementTextSize(); 121 }); 122 123 // share hide/show 124 jQuery("#share div").on("click", function() { 125 jQuery(this).parent().toggleClass("active"); 126 }); 127 } 128}; 129 130 131if(!com) var com={}; 132if(!com.illuminage) com.illuminage={}; 133if(!com.illuminage.doctrack) com.illuminage.doctrack={}; 134(function(){ 135 136 var pub = com.illuminage.doctrack; 137 pub.extensions = "doc,pdf,docx"; 138 pub.extensionArr = pub.extensions.split(","); 139 140 pub.setupTracking = function() { 141 var links = document.getElementsByTagName("a"); 142 143 // loop through all links on page 144 for( var i=0; i<links.length; i++ ) { 145 var link = links[i]; 146 var href = link.getAttribute("href"); 147 if( href ) { 148 href = href.replace("http://", ""); 149 href = href.substr(href.indexOf("/")); 150 151 // loop through and check for extensions 152 for( var j=0; j<pub.extensionArr.length; j++ ) { 153 var ext = pub.extensionArr[j]; 154 if( href.endsWith(ext) ) { 155 link.setAttribute("onclick", "javascript: ga('send', 'pageview', '" + href + "');"); 156 } 157 } 158 } 159 } 160 } 161 162})(); 163 164 165function clearOvers() { 166 // clear all "over" classes 167 var topLIs = document.getElementById(nav_ul_id).children; 168 for( var k=0; k<topLIs.length; k++ ) { 169 topLIs[k].className = topLIs[k].className.replace(/\b over\b/,''); 170 } 171} 172 173String.prototype.endsWith = function(suffix) { 174 return this.indexOf(suffix, this.length - suffix.length) !== -1; 175}; 176 177 178function illDoTextSize( size_index ) { 179 var em_size = "1"; 180 181 switch( size_index ) { 182 case 0: 183 em_size = "1"; 184 break; 185 186 case 1: 187 em_size = "1.2"; 188 break; 189 190 case 2: 191 em_size = "1.5"; 192 break; 193 } 194 195 document.getElementsByTagName("body")[0].style.fontSize = em_size + "em"; 196} 197function illIncrementTextSize() { 198 var current_size = illReadCookie("text_size"); 199 200 if( current_size != null ) { 201 current_size++ 202 } else { 203 current_size = 1; 204 } 205 206 if( current_size > 2 ) { 207 current_size = 0; 208 } 209 210 illDoTextSize( current_size ); 211 illCreateCookie( "text_size", current_size, 30 ); 212 // console.log("text size", illReadCookie("text_size")); 213} 214 215 216// COOKIES 217function illCreateCookie( name, value, days ) { 218 if(days) { 219 var date = new Date(); 220 date.setTime(date.getTime()+(days*24*60*60*1000)); 221 var expires = "; expires="+date.toGMTString(); 222 } else { 223 var expires = ""; 224 } 225 226 document.cookie = name+"="+value+expires+"; path=/"; 227} 228 229function illReadCookie( name ) { 230 var nameEQ = name + "="; 231 var ca = document.cookie.split(';'); 232 233 for( var i=0; i < ca.length; i++ ) { 234 var c = ca[i]; 235 while (c.charAt(0)==' ') c = c.substring(1,c.length); 236 if( c.indexOf(nameEQ) == 0 ) return c.substring(nameEQ.length,c.length); 237 } 238 239 return null; 240}
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.