1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <title>News-and-notices | City of Wautoma</title> 5 <meta name="description" content=""> 6 <meta name="keywords" content=""> 7 <meta name="author" content="Town Web | SK"> 8 <meta charset="UTF-8"> 9 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 10 <link rel="icon" type="image/x-icon" href="https://storage.googleapis.com/juniper-media-library/521/2026/04/Wautoma.png"> 11 <meta property="og:title" content="News-and-notices | City of Wautoma"> 12 <meta property="og:description" content=""> 13 <meta property="og:site_name" content="City of Wautoma"> 14 <meta property="og:type" content="website"> 15 <link rel="canonical" href="https://cityofwautoma.com/news-and-notices/"> 16 <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous" /> 17 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.1/css/all.min.css" integrity="sha512-MV7K8+y+gLIBoVD59lQIYicR65iaqukzvf/nwasF0nqhPay5w/9lJmVM2hMDcnK1OnMGCdVK+iQrJ7lzPJQd1w==" crossorigin="anonymous" referrerpolicy="no-referrer" /> 18 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.carousel.min.css" integrity="sha512-tS3S5qG0BlhnQROyJXvNjeEM4UpMXHrQfTGmbQ1gKmelCxlSEBUaxhRBj/EFTzpbP4RVSrpEikbmdJobCvhE3g==" crossorigin="anonymous" referrerpolicy="no-referrer" /> 19 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.11.4/css/lightbox.css" integrity="sha512-Woz+DqWYJ51bpVk5Fv0yES/edIMXjj3Ynda+KWTIkGoynAMHrqTcDUQltbipuiaD5ymEo9520lyoVOo9jCQOCA==" crossorigin="anonymous" referrerpolicy="no-referrer" /> 20
20<script src="https://code.jquery.com/jquery-3.6.3.min.js" integrity="sha256-pvPw+upLPUjgMXY0G+8O0xUf+/Im1MZjXxxgOcBQBXU=" crossorigin="anonymous"></script>
20 21
21<script src="https://darkskyapp.github.io/skycons/skycons.js"></script>
21 22
22<script src="/settings.js?v=b535076d"></script>
22 23 <link rel="stylesheet" href="/setting.css" /> 24 <style> 25@import url('https://fonts.googleapis.com/css?family=Nunito+Sans:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap'); 26@import url('https://fonts.googleapis.com/css?family=Nunito+Sans:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap'); 27:root{--favicon-image:url("https://storage.googleapis.com/juniper-media-library/521/2026/04/Wautoma.png");--default-featured-image:url("https://storage.googleapis.com/juniper-media-library/521/2026/04/wautoma-news-notices.jpg");--primary-color:#7d9373;--secondary-color:#cd5538;--tertiary-color:#ecf1f5;--primary-font:"Nunito Sans";--hedings-font:"Nunito Sans";--default-size:16px;--h1-size:36px;--h2-size:30px;--h3-size:24px;--h4-size:20px;--h5-size:16px;--h6-size:12px;--a-size:16px;--a-color:;}body .sk-page-content{font-family:var(--primary-font);font-size:var(--default-size);}body .sk-page-content h1,body .sk-page-content h2,body .sk-page-content h3,body .sk-page-content h4,body .sk-page-content h5,body .sk-page-content h6{font-family:var(--hedings-font);}body .sk-page-content h1{font-size:var(--h1-size);}body .sk-page-content h2{font-size:var(--h2-size);}body .sk-page-content h3{font-size:var(--h3-size);}body .sk-page-content h4{font-size:var(--h4-size);}body .sk-page-content h5{font-size:var(--h5-size);}body .sk-page-content h6{font-size:var(--h6-size);}body .sk-page-content a{font-size:var(--a-size);}body .sk-page-content a{color:var(--a-color);} 28</style> 29<link rel="stylesheet" href="/theme.css?v=32a16000" /> 30 <link rel="stylesheet" href="/style.css" /> 31
31<script>window.HeyGovApi = "https:\/\/api.heygov.com"</script>
31<script src="https://edge.heygov.com/heygov.js" data-heygov-jurisdiction="cityofwautoma.com" data-heygov-features="issues" data-heygov-button-text="Report an issue" data-heygov-button-show="false" data-heygov-button-style="bottom-left" ></script>
31<style>.heygov-widget-button{left:15px;right:auto;top:auto;bottom:15px}</style><style>.userway_p3{left:auto!important;right:15px!important;top:auto!important;bottom:15px!important}</style><style>.userway_p3 .userway_buttons_wrapper{left:auto!important;right:15px!important;top:auto!important;bottom:15px!important;transform: none!important;}</style> 32 <!-- Google tag (gtag.js) -->
vendor: 96 bytes, lines 32-33
32 33 <script async src='https://www.googletagmanager.com/gtag/js?id=
33G-NKRXLLVX7R
vendor: 44 bytes, lines 33-34
33'></script> 34
34<script> 35
vendor: 235 bytes, lines 35-38
35window.dataLayer = window.dataLayer || []; 36 function gtag(){dataLayer.push(arguments);} 37 gtag('js', new Date()); 38 gtag('config', '
38G-NKRXLLVX7R
vendor: 36 bytes, lines 38-39
38'); 39
39</script>
39 40 41
41<script> 42 (function(d) { 43 var s = d.createElement("script"); 44 /* uncomment the following line to override default position*/ 45 s.setAttribute("data-position", 3); 46 /* uncomment the following line to override default size (values: small, large)*/ 47 /* s.setAttribute("data-size", "large");*/ 48 /* uncomment the following line to override default language (e.g., fr, de, es, he, nl, etc.)*/ 49 /* s.setAttribute("data-language", "null");*/ 50 /* uncomment the following line to override color set via widget (e.g., #053f67)*/ 51 /*s.setAttribute("data-color", "#ccc");*/ 52 /* uncomment the following line to override type set via widget (1=person, 2=chair, 3=eye, 4=text)*/ 53 /* s.setAttribute("data-type", "1");*/ 54 /* s.setAttribute("data-statement_text:", "Our Accessibility Statement");*/ 55 /* s.setAttribute("data-statement_url", "http://www.example.com/accessibility";*/ 56 /* uncomment the following line to override support on mobile devices*/ 57 /* s.setAttribute("data-mobile", true);*/ 58 /* uncomment the following line to set custom trigger action for accessibility menu*/ 59 /* s.setAttribute("data-trigger", "triggerId")*/ 60 s.setAttribute("data-account", "UILnNGMstU"); 61 s.setAttribute("src", "https://cdn.userway.org/widget.js"); 62 (d.body || d.head).appendChild(s); 63 })(document) 64 </script>
64 65
65<script> 66 /* Third-party accessibility/gallery widget a11y patches. These run only when 67 the widget is present and only ADD attributes (labels / aria-hidden on 68 decorative icons / landmark wrappers) -- we never hide or remove a working 69 widget, so sites that use UserWay/accessiBe/Lightbox are unaffected. */ 70 (function () { 71 var UW_SELECTOR = '[class*="userway"],[class*="uwaw"],[id*="userway"]'; 72 function accessibleName(el) { 73 return el.getAttribute('aria-label') || 74 el.getAttribute('aria-labelledby') || 75 el.getAttribute('title') || 76 (el.textContent && el.textContent.trim()); 77 } 78 function labelUserwayTriggers() { 79 var buttons = document.querySelectorAll('[role="button"]'); 80 for (var i = 0; i < buttons.length; i++) { 81 var el = buttons[i]; 82 if (!el.closest(UW_SELECTOR)) continue; 83 if (!accessibleName(el)) el.setAttribute('aria-label', 'Accessibility menu'); 84 } 85 /* The launcher's inner SVG icons are decorative once the button is 86 named; hide them so they don't trip svg-has-no-accessible-name. */ 87 var svgs = document.querySelectorAll(UW_SELECTOR + ' svg'); 88 for (var j = 0; j < svgs.length; j++) { 89 var svg = svgs[j]; 90 if (accessibleName(svg) || svg.querySelector('title')) continue; 91 svg.setAttribute('aria-hidden', 'true'); 92 svg.setAttribute('focusable', 'false'); 93 } 94 /* UserWay marks its launcher wrapper aria-hidden="true" yet leaves the 95 launcher button tabbable (aria_hidden_nontabbable). The button is a 96 real control, so un-hide the wrapper rather than remove keyboard 97 access. Only touch wrappers that actually hold a focusable element. */ 98 var hiddenWraps = document.querySelectorAll(UW_SELECTOR + '[aria-hidden="true"]'); 99 for (var w = 0; w < hiddenWraps.length; w++) { 100 if (hiddenWraps[w].querySelector('a[href],button,input,select,textarea,[tabindex],[role="button"]')) { 101 hiddenWraps[w].removeAttribute('aria-hidden'); 102 } 103 } 104 } 105 /* accessiBe (paid ADA add-on some clients load) renders its launcher inside 106 open shadow roots on <access-widget-ui> hosts, with icon SVGs that have no 107 accessible name and occasionally an unnamed button. We keep the widget 108 working and just name/hide those so they stop failing the scanner. */ 109 function patchAccessibe() { 110 /* accessiBe also drops a light-DOM trigger <div role="button"> with no 111 text/label ("button role has no associated label"); name it. */ 112 var triggers = document.querySelectorAll('.acsb-trigger,[class*="acsb"][role="button"]'); 113 for (var t = 0; t < triggers.length; t++) { 114 if (!accessibleName(triggers[t])) triggers[t].setAttribute('aria-label', 'Accessibility options'); 115 } 116 var hosts = document.querySelectorAll('access-widget-ui'); 117 for (var i = 0; i < hosts.length; i++) { 118 var root = hosts[i].shadowRoot; 119 if (!root) continue; 120 var svgs = root.querySelectorAll('svg'); 121 for (var s = 0; s < svgs.length; s++) { 122 if (accessibleName(svgs[s]) || svgs[s].querySelector('title')) continue; 123 svgs[s].setAttribute('aria-hidden', 'true'); 124 svgs[s].setAttribute('focusable', 'false'); 125 } 126 var btns = root.querySelectorAll('button,[role="button"]'); 127 for (var b = 0; b < btns.length; b++) { 128 if (!accessibleName(btns[b])) btns[b].setAttribute('aria-label', 'Accessibility options'); 129 } 130 /* The host sits directly under <body>, so its content is "not within 131 a landmark". Make each visible, non-empty host a regi
131on landmark, 132 labelled from its button when present else an index (kept unique 133 to avoid the duplicate-landmark-label rule). */ 134 var host = hosts[i]; 135 if (!host.getAttribute('role') && root.childElementCount > 0 && getComputedStyle(host).display !== 'none') { 136 var namer = root.querySelector('button,[role="button"]'); 137 host.setAttribute('role', 'region'); 138 host.setAttribute('aria-label', ((namer && accessibleName(namer)) || ('Accessibility widget ' + (i + 1))).slice(0, 60)); 139 } 140 } 141 /* accessiBe's screen-reader-only <a>/<span> helpers are also loose under 142 <body>; gather them under one region landmark. */ 143 var loose = document.querySelectorAll('body > a.acsb-sr-only, body > span.acsb-sr-alert, body > .acsb-sr-only'); 144 if (loose.length) { 145 var region = document.getElementById('acsb-sr-landmark'); 146 if (!region) { 147 region = document.createElement('div'); 148 region.id = 'acsb-sr-landmark'; 149 region.setAttribute('role', 'region'); 150 region.setAttribute('aria-label', 'Accessibility screen reader helpers'); 151 loose[0].parentNode.insertBefore(region, loose[0]); 152 } 153 for (var l = 0; l < loose.length; l++) { 154 if (loose[l].parentNode !== region) region.appendChild(loose[l]); 155 } 156 } 157 } 158 /* Lightbox2 (image gallery lib) injects close/cancel controls as 159 <a role="button"> with no text -> "button role has no associated label". */ 160 function patchLightbox() { 161 var map = [ 162 ['.lb-close', 'Close image'], 163 ['.lb-cancel', 'Close image'], 164 ['.lb-prev', 'Previous image'], 165 ['.lb-next', 'Next image'] 166 ]; 167 for (var i = 0; i < map.length; i++) { 168 var els = document.querySelectorAll(map[i][0]); 169 for (var j = 0; j < els.length; j++) { 170 if (!accessibleName(els[j])) els[j].setAttribute('aria-label', map[i][1]); 171 } 172 } 173 } 174 function processOverlays() { 175 labelUserwayTriggers(); 176 patchAccessibe(); 177 patchLightbox(); 178 } 179 function init() { 180 processOverlays(); 181 var obs = new MutationObserver(processOverlays); 182 obs.observe(document.body, { childList: true, subtree: true }); 183 /* Overlays load async and accessiBe fills an encapsulated shadow root 184 the observer can't see, so poll for ~30s as well. */ 185 var ticks = 0; 186 var poll = setInterval(function () { 187 processOverlays(); 188 if (++ticks >= 15) { clearInterval(poll); obs.disconnect(); } 189 }, 2000); 190 } 191 if (document.readyState === 'loading') { 192 document.addEventListener('DOMContentLoaded', init); 193 } else { 194 init(); 195 } 196 })(); 197 </script>
197 198 <noscript> 199 Please ensure Javascript is enabled for purposes of 200 <a href="https://userway.org">website accessibility</a> 201 </noscript> 202</head> 203 204<body id="juniper"> 205 <style> 206 #subs_button { 207 width: 100%; 208 border-radius: 4px; 209} 210 211section#tw-faq h2#faq-section-title { 212 font-size: 1.75rem!important; 213} 214 215section#tw-events > div::after { 216 opacity: 0.5; 217} 218 219 220.heygov-widget-button { 221 color: #000; 222} 223/* bolder menu */ 224#menuPrimaryContent > ul { 225 font-weight: 700; 226} 227 228/* spacing news menu, social and events */ 229#menuNewsDefault { 230 margin-bottom: unset!important; 231} 232/* end of spacing news menu, and events */ 233 234#menuNewsDefault .nav-item .nav-link { 235 border-radius: 0.25rem; 236} 237 238/* ââ Wrapper ââââââââââââââââââââââââââââââââââââââââââââââââââââââ */ 239.gtranslate_wrapper { 240 position: relative !important; 241 display: inline-flex !important; 242 align-items: center; 243} 244 245/* ââ Switcher button âââââââââââââââââââââââââââââââââââââââââââââââ */ 246.gtranslate_wrapper .gt_switcher { 247 border-radius: 30px !important; 248 background: #ffffff !important; 249 border: 1px solid #cccccc !important; 250 box-shadow: 0 2px 4px rgba(0,0,0,0.1) !important; 251 cursor: pointer; 252 transition: box-shadow 0.2s ease; 253 white-space: nowrap; 254} 255 256.gtranslate_wrapper .gt_switcher:hover { 257 background: #f8f8f8 !important; 258 box-shadow: 0 4px 8px rgba(0,0,0,0.15) !important; 259} 260 261/* ââ Selected language label âââââââââââââââââââââââââââââââââââââââ */ 262.gtranslate_wrapper .gt_switcher .gt_selected a { 263 display: flex !important; 264 align-items: center !important; 265 gap: 8px !important; 266 padding: 6px 12px !important; 267 font-family: "Open Sans", sans-serif !important; 268 font-size: 14px !important; 269 color: #333333 !important; 270 text-decoration: none !important; 271 white-space: nowrap; 272} 273 274/* ââ Flags in button âââââââââââââââââââââââââââââââââââââââââââââââ */ 275.gtranslate_wrapper .gt_switcher a img { 276 visibility: visible !important; 277 display: inline-block !important; 278 width: 24px !important; 279 height: auto !important; 280 flex-shrink: 0; 281} 282 283/* ââ Dropdown: floats BELOW the button, aligned to right edge âââââ */ 284.gtranslate_wrapper .gt_option { 285 position: absolute !important; 286 top: 100% !important; /* â opens downward */ 287 bottom: auto !important; /* â not upward */ 288 right: 0 !important; /* â right-aligned to button */ 289 left: auto !important; 290 margin-top: 6px !important; /* â small gap below button */ 291 margin-bottom: 0 !important; 292 min-width: 160px !important; 293 width: auto !important; 294 padding: 6px 0 !important; 295 border-radius: 10px !important; 296 background: #ffffff !important; 297 border: 1px solid #cccccc !important; 298 box-shadow: 0 6px 16px rgba(0,0,0,0.12) !important; 299 z-index: 99999 !important; 300} 301 302/* ââ Language rows âââââââââââââââââââââââââââââââââââââââââââââââââ */ 303.gtranslate_wrapper .gt_option a { 304 display: flex !important; 305 align-items: center !important; 306 gap: 10px !important; 307 padding: 7px 14px !important; 308 font-family: "Open Sans", sans-serif !important; 309 font-size: 14px !important; 310 color: #333333 !important; 311 text-decoration: none !important; 312 text-indent: 0 !important; 313 white-space: nowrap; 314 line-height: 1.4 !important; 315} 316 317.gtranslate_wrapper .gt_option a:hover { 318 background: #f0f0f0 !important; 319 color: #000000 !important; 320} 321 322/* ââ Flags in dropdown rows ââââââââââââââââââââââââââââââââââââââââ */ 323.gtranslate_wrapper .gt_option a img { 324 visibility: visible !important; 325 display: inline-block !important; 326 width: 24px !important; 327 height: auto !important; 328 flex-shrink: 0; 329} 330 331/* ââ Prevent Bootstrap grid from clipping the dropdown ââââââââââââ */ 332#defaultHeader .col-md-9, 333#topHeader .row, 334#topHeader .container, 335.top-header, 336#defaultHeader { 337 overflow: visible !important; 338} 339 340 @media (max-width: 767.99px) { 341 /* make menu font smaller */ 342div#menuNewsDefault ul li a, div#menuHeroMobile ul li a { 343 font-size: 20px; 344 border-radius: 4px; 345} 346 347/* hide icons in Hero menu */ 348div#menuHeroMobile ul li i {
349 display: none; 350} 351 352/* remove extra spacing between Hero menu and News */ 353div#menuHeroMobile { 354 margin-bottom: -5rem!important; 355} 356 357/* welcome text */ 358#heroSlider > div.carousel-inner > div > div.container > div > div > h1 > span, section#sectionHero #heroSlider h1 { 359font-size: 3rem!important; 360} 361/* end of welcome text */ 362 363 364 /* Allow the header's right column to wrap onto multiple rows */ 365 #topHeader .col-md-9 { 366 flex-wrap: wrap !important; 367 align-items: center; 368 padding-bottom: 8px; 369 } 370 371 /* Weather and search stay on the first row together */ 372 #topHeader .weather-widget, 373 #topHeader .search-container { 374 flex-shrink: 0; 375 } 376 377 /* Translate wrapper: own row, centered */ 378 .gtranslate_wrapper { 379 flex-basis: 100% !important; /* forces new row below weather+search */ 380 display: flex !important; /* flex (not inline-flex) so justify-content works */ 381 justify-content: center !important; 382 width: 100% !important; 383 margin-top: 8px !important; 384 margin-bottom: 4px !important; 385 } 386 387 /* Switcher: cap width, keep desktop pill shape */ 388 .gtranslate_wrapper .gt_switcher { 389 width: auto !important; 390 max-width: 200px !important; 391 border-radius: 30px !important; 392 } 393 394 /* Dropdown: center under the button */ 395 .gtranslate_wrapper .gt_option { 396 right: auto !important; 397 left: 50% !important; 398 transform: translateX(-50%) !important; 399 min-width: 160px !important; 400 width: auto !important; 401 } 402} 403 } 404</style>
405<script> 406window.gtranslateSettings = { 407 "default_language": "en", 408 "languages": ["ar","nl","en","fr","de","it","pt","ru","es", "tr"], 409 "url_structure": "none", 410 "flag_style": "3d", 411 "flag_size": 24, 412 "wrapper_selector": ".gtranslate_wrapper", 413 "alt_flags": {"en":"usa"}, 414 "switcher_open_direction": "top", 415 "switcher_horizontal_position": "inline", 416 "switcher_text_color": "#333333", 417 "switcher_arrow_color": "#666666", 418 "switcher_border_color": "#cccccc", 419 "switcher_background_color": "#ffffff", 420 "switcher_background_shadow_color":"#f0f0f0", 421 "switcher_background_hover_color": "#f8f8f8", 422 "dropdown_text_color": "#333333", 423 "dropdown_hover_color": "#f0f0f0", 424 "dropdown_background_color": "#ffffff" 425}; 426</script>
vendor: 1 bytes, line 426
426
427<script src="https://cdn.gtranslate.net/widgets/latest/dwf.js" defer></script>
427 428<header id="defaultHeader" class="default-header" role="banner"> 429 <a href="#main-content" class="skip-to-main">Skip to main content</a> 430 <div id="topHeader" class="top-header"> 431 <div class="container"> 432 <div class="row mx-0"> 433 <div class="col-md-3 d-flex align-items-center justify-content-center justify-content-md-start"> 434 <a href="/" class="navbar-brand custom-logo-link" rel="home" aria-current="page" aria-label="Home"> 435 <img src="https://storage.googleapis.com/juniper-media-library/521/2026/04/Wautoma.png" width="80px" height="" class="img-responsive" alt="Site Logo" decoding="async"> 436 </a> 437 </div> 438 <div class="col-md-9 justify-content-end d-flex align-items-center"> 439 <!-- Weather Widget --> 440 <div class="weather-widget d-flex me-2" role="region" aria-label="Current weather information"> 441 <canvas class="icon-weather" data-icon="" role="img" aria-label="Weather icon"></canvas> 442 <span class="weather-temperature" aria-live="polite">NO DATA</span> 443 </div> 444 <!-- Social Icons --> 445 <div id="headerSocialMenuWrapper"> 446 <ul id="headerSocialMenu" class="nav flex-nowrap"> 447 448 </ul> 449</div> 450 <!-- Search and Translate --> 451 <div class="search-container "> 452 <form action="/search" method="get" role="search" aria-label="Site search" id="header-search-form"> 453 <input class="search expandright" id="searchright" type="search" name="q" placeholder="Search" aria-label="Search the website" title="Search the website"> 454 <button type="button" class="search-button searchbutton" aria-label="Toggle search" aria-expanded="false"> 455 <i class="fa-solid fa-magnifying-glass" aria-hidden="true"></i> 456 </button> 457 </form> 458 </div> 459 <div class="gtranslate_wrapper" role="region" aria-label="Language translator"></div> 460 </div> 461 </div> 462 </div> 463 </div> 464 <div id="bottomHeader" class="bottom-header w-100"> 465 <div id="fixed-header-logo" class="d-none d-sm-none d-md-flex d-lg-flex d-xl-flex position-absolute align-items-center pb-4"> 466 <a class="navbar-brand" rel="home" href="/" aria-label="Home"> 467 <img src="https://storage.googleapis.com/juniper-media-library/521/2026/04/Wautoma.png" class="" alt="Site Logo" decoding="async"> 468 </a> 469 </div> 470 <nav id="menuPrimary" class="navbar navbar-dark navbar-expand-lg"> 471 <div class="container"> 472 <button style="z-index: 9999;" class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#menuPrimaryContent" aria-controls="menuPrimaryContent" aria-expanded="false" aria-label="Toggle navigation"> 473 <div class="tw-hamburger-animated-icon"><span></span><span></span><span></span></div> 474 </button> 475 <div class="collapse navbar-collapse" id="menuPrimaryContent"> 476 <ul class="navbar-nav mb-2 mb-lg-0 menu-primary"> 477 <li class="nav-item menu-level-one dropdown dropdown-mega position-static" role="listitem"> <a class="nav-link first-level-link " aria-current="page" rel="none" href="https://cityofwautoma.com"><span> <span class="visually-hidden">Navigate to </span>Home</span></a></li><li class="nav-item menu-level-one dropdown dropdown-mega position-static" role="listitem"> <a class="nav-link first-level-link dropdown-toggle " data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-current="page" rel="none" href="#"><span> <span class="visually-hidden">Navigate to </span>Government</span></a><div class="dropdown-menu dropdown-mega-menu"> 478 <div class="mega-content"> 479 <div class="container mega-menu-columns"> 480 <div class="row"> <div class="col-12 col-sm-6 col-md-4 py-4 mega-menu-column"><div class="mb-2"> <a rel="none" href="/agendas-minutes" class="sk-megamenu-column-item-link" >Agendas & Minutes</a></div><div class="mb-2"> <a rel="none" href="/forms-permits" class="sk-megamenu-column-item-link" >
480Forms, Permits & Licenses</a></div> </div> <div class="col-12 col-sm-6 col-md-4 py-4 mega-menu-column"><div class="mb-2"> <a rel="none" href="/ordinance-zoning-info" class="sk-megamenu-column-item-link" >Ordinance / Zoning Info</a></div><div class="mb-2"> <a rel="none" href="/news-and-notices" class="sk-megamenu-column-item-link" >News & Notices</a></div> </div> <div class="col-12 col-sm-6 col-md-4 py-4 mega-menu-column"><div class="mb-2"> <a rel="none" href="/calendar-of-events" class="sk-megamenu-column-item-link" >Calendar of Events</a></div> </div> </div> 481 </div> 482 </div> 483 </div></li><li class="nav-item menu-level-one dropdown dropdown-mega position-static" role="listitem"> <a class="nav-link first-level-link dropdown-toggle " data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-current="page" rel="none" href="#"><span> <span class="visually-hidden">Navigate to </span>Departments</span></a><div class="dropdown-menu dropdown-mega-menu"> 484 <div class="mega-content"> 485 <div class="container mega-menu-columns"> 486 <div class="row"> <div class="col-12 col-sm-6 col-md-4 py-4 mega-menu-column"><div class="mb-2"> <a rel="none" href="/city-directory" class="sk-megamenu-column-item-link" >City Directory</a></div><div class="mb-2"> <a rel="none" href="/common-council" class="sk-megamenu-column-item-link" >Common Council</a></div> </div> <div class="col-12 col-sm-6 col-md-4 py-4 mega-menu-column"><div class="mb-2"> <a rel="none" href="/municipal-court" class="sk-megamenu-column-item-link" >Municipal Court</a></div><div class="mb-2"> <a rel="none" href="/police-department" class="sk-megamenu-column-item-link" >Police Department</a></div> </div> <div class="col-12 col-sm-6 col-md-4 py-4 mega-menu-column"><div class="mb-2"> <a rel="none" href="/water-sewer" class="sk-megamenu-column-item-link" >Water & Sewer</a></div> </div> </div> 487 </div> 488 </div> 489 </div></li><li class="nav-item menu-level-one dropdown dropdown-mega position-static" role="listitem"> <a class="nav-link first-level-link dropdown-toggle " data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-current="page" rel="none" href="#"><span> <span class="visually-hidden">Navigate to </span>Community</span></a><div class="dropdown-menu dropdown-mega-menu"> 490 <div class="mega-content"> 491 <div class="container mega-menu-columns"> 492 <div class="row"> <div class="col-12 col-sm-6 col-md-4 py-4 mega-menu-column"><div class="mb-2"> <a rel="none" href="/general-info" class="sk-megamenu-column-item-link" >General Info</a></div><div class="mb-2"> <a rel="none" href="/important-numbers" class="sk-megamenu-column-item-link" >Important Numbers</a></div><div class="mb-2"> <a rel="none" href="/brush-leaf-pickup" class="sk-megamenu-column-item-link" >Brush/Leaf Pickup</a></div><div class="mb-2"> <a rel="none" href="/garbage-recycling-pickup" class="sk-megamenu-column-item-link" >Garbage/Recycling Pickup</a></div><div class="mb-2"> <a rel="none" href="/open-air-market" class="sk-megamenu-column-item-link" >Open Air Market</a></div><div class="mb-2"> <a rel="none" href="/real-estate-taxes" class="sk-megamenu-column-item-link" >Real Estate Taxes</a></div> </div> <div class="col-12 col-sm-6 col-md-4 py-4 mega-menu-column"><div class="mb-2"> <a rel="none" href="/library" class="sk-megamenu-column-item-link" >Library</a></div><div class="mb-2"> <a rel="none" href="/links" class="sk-megamenu-column-item-link" >Links</a></div><div class="mb-2"> <a rel="none" href="/home-repair-program" class="sk-megamenu-column-item-link" >Home Repair Program</a></div><div class="mb-2"> <a rel="none" href="/join-our-team" class="sk-megamenu-column-item-link" >Employment Opportunities</a></div><div class="mb-2"> <a rel="none" href="/elections" class="sk-megamenu-column-item-link" >Elections</a></div><div class="mb-2"> <a rel="none" href="/faqs" class="sk-megamenu-column-item-link" >Frequently Asked Questions</a></div> </div> <div class="col-12 col-sm-6 col-md-4 py-4 mega-menu-column"><div class="mb-2"> <a rel="none" href="/subscribe-to-updates" class="sk-megamenu-column-item-link" >Subscribe to Updates</a></div><div class="mb-2"> <a rel="none" href="/wautoma-union-cemetery" class="sk-megamenu-column-item-link" >Wautoma Union Cemetery</a></div><div class="mb-2"> <a rel="none" href="/wwii-memorial" class="sk-megamenu-column-item-link" >WWII Memorial</a></div><div class="mb-2"> <a rel="none" href="/dog-park" class="sk-megamenu-column-item-link" >Dog Park</a></div><div class="mb-2"> <a rel="none" href="/bird-creek-park" class="sk-megamenu-column-item-link" >Bird Creek Park</a></div> </div> </div> 493 </div> 494 </div> 495 </div></li><li class="nav-item menu-level-one dropdown dropdown-mega position-static" role="listitem"> <a class="nav-link first-level-link " aria-current="page" rel="none" href="/online-pay"><span> <span class="visually-hidden">Navigate to </span>Online Pay</span></a></li><li class="nav-item menu-level-one dropdown dropdown-mega position-static" role="listitem"> <a class="nav-link first-level-link " aria-current="page" rel="none" href="/contact-us"><span> <span class="visually-hidden">Navigate to </span>Contact Us</span></a></li> 496 </ul> 497 </div> 498 </div> 499</nav> 500 <div class="line"></div> 501 </div> 502</header> 503 504 505 506 <style> 507 /* Filters Section Styling */ 508 .filters-section { 509 display: flex; 510 align-items: flex-start; 511 justify-content: space-between; 512 flex-wrap: wrap; 513 gap: 20px; 514 margin-bottom: 15px; 515 align-items: end; 516 } 517 518 .category-filters-wrapper { 519 flex: 1; 520 min-width: 300px; 521 } 522 523 .category-filters-title { 524 font-weight: 600; 525 font-size: 1.1rem; 526 margin-bottom: 10px; 527 color: #495057; 528 } 529 530 .category-filter { 531 display: inline-block; 532 padding: 6px 16px; 533 margin: 4px 8px 4px 0; 534 background-color: #ffffff; 535 border: 2px solid #dee2e6; 536 border-radius: 10px; 537 text-decoration: none; 538 color: #495057; 539 font-size: 0.9rem; 540 transition: all 0.3s ease; 541 cursor: pointer; 542 } 543 544 .category-filter:hover { 545 background-color: #e9ecef; 546 border-color: #adb5bd; 547 text-decoration: none; 548 color: #495057; 549 } 550 551 .category-filter.active { 552 background-color: #0056b3; 553 border-color: #0056b3; 554 color: #ffffff; 555 } 556 557 .category-filters-wrapper-mobile { 558 margin-bottom: 20px; 559 } 560 561 .category-filters-wrapper-mobile label, 562 .archive-filters-wrapper label { 563 font-weight: 600; 564 margin-bottom: 8px; 565 margin-right: 10px; 566 color: #495057; 567 } 568 569 .categories-select-list, 570 .archive-filters-wrapper select, 571 .archive-filters-wrapper input[type="date"] { 572 margin-right: 15px; 573 margin-bottom: 10px; 574 padding: 8px 12px; 575 border: 1px solid #ced4da; 576 border-radius: 4px; 577 font-size: 0.9rem; 578 } 579 580 .archive-filters-wrapper { 581 display: flex; 582 align-items: center; 583 gap: 10px; 584 flex-shrink: 0; 585 } 586 587 .date-range-filters { 588 display: none; 589 } 590 591 /* Card Styling for Even Height */ 592 .archive-item { 593 height: 100%; 594 display: flex; 595 flex-direction: column; 596 border: 1px solid #dee2e6; 597 border-radius: 0px; 598 overflow: hidden; 599 } 600 601 602 .archive-item-image { 603 width: 100%; 604 height: 200px; 605 object-fit: cover; 606 border-bottom: 1px solid #dee2e6; 607 } 608 609 .archive-item-body { 610 flex: 1; 611 display: flex; 612 flex-direction: column; 613 padding: 20px; 614 } 615 616 .archive-item-title { 617 font-size: 1.1rem; 618 font-weight: 600; 619 margin-bottom: 10px; 620 line-height: 1.3; 621 } 622 623 .archive-item-title a, 624 a .archive-item-title { 625 text-decoration: none; 626 color: #212529; 627 } 628 629 .archive-item-title a:hover, 630 a:hover .archive-item-title { 631 color: #0056b3; 632 text-decoration: none; 633 } 634 635 .archive-item-snippet { 636 flex: 1; 637 font-size: 0.9rem; 638 color: #6c757d; 639 line-height: 1.5; 640 margin-bottom: 15px; 641 } 642 643 .archive-item-button { 644 margin-top: auto; 645 padding: 8px 0; 646 font-size: 0.9rem; 647 font-weight: 500; 648 color: #0056b3; 649 } 650 651 .archive-item-button:hover, 652 .archive-item-button:focus { 653 color: #004085; 654 } 655 656 /* No Image Placeholder */ 657 .no-image-placeholder { 658 width: 100%; 659 height: 200px; 660 background-color: #e9ecef; 661 display: flex; 662 align-items: center; 663 justify-content: center; 664 color: #495057; 665 font-size: 0.9rem; 666 font-weight: 500; 667 border-bottom: 1px solid #dee2e6; 668 border-radius: 10px; 669 } 670 671 /* Pagination Styling */ 672 .view-more-button { 673 background-color: #0056b3; 674 color: white; 675 border: none; 676 padding: 12px 24px; 677 border-radius: 6px; 678 font-size: 1rem; 679 font-weight: 500; 680 transition: background-color 0.3s ease; 681 } 682 683 .view-more-button:hover { 684 background-color: #004085; 685 } 686 687 .view-more-button i { 688 margin-right: 8px; 689 } 690
691 /* Responsive adjustments */ 692 @media (max-width: 768px) { 693 .filters-section { 694 flex-direction: column; 695 gap: 0px; 696 } 697 698 .category-filters-wrapper { 699 display: none; 700 min-width: auto; 701 } 702 703 .category-filters-wrapper-mobile { 704 width: 100%; 705 display: block; 706 margin-bottom: 0px; 707 } 708 709 .category-filters-wrapper-mobile select, 710 .archive-filters-wrapper select { 711 width: 100%; 712 margin-right: 0; 713 } 714 715 .archive-filters-wrapper { 716 align-self: flex-start; 717 width: 100%; 718 flex-direction: column; 719 align-items: flex-start; 720 } 721 722 .archive-filters-wrapper label { 723 margin-bottom: 0%; 724 margin-right: 0; 725 } 726 } 727 728 @media (min-width: 769px) { 729 .category-filters-wrapper-mobile { 730 display: none; 731 } 732 } 733</style> 734 735<main id="main-content" class="juniper-news-archive news-archive option-1 mb-5"> 736 <div class="container"> 737 <div class="row"> 738 <!-- Page heading --> 739 <div class="col-12"> 740 <h1 class="page-heading">News & Notices</h1> 741 </div> 742 <!-- Filters --> 743 <div class="col-12 filters-section"> 744 <div class="category-filters-wrapper"> 745 <div class="category-filters-title">Categories</div> 746 <a class="category-filter active" data-category="all">View All</a> 747 <!-- Dynamic News Categories --> 748 </div> 749 <div class="category-filters-wrapper-mobile"> 750 <label for="categoriesSelectList">Category</label> 751 <select id="categoriesSelectList" class="categories-select-list"> 752 <option value="all">View All</option> 753 </select> 754 </div> 755 <div class="archive-filters-wrapper"> 756 <div class="date-range-filters"> 757 <label for="dateFrom">Date Range</label> 758 <input type="date" id="dateFrom" name="date-start" aria-label="Input start date in format month-day-year"> 759 <input type="date" id="dateTo" name="date-end" aria-label="Input end date in format month-day-year"> 760 </div> 761 <label for="archiveYears">Archive</label> 762 <select id="archiveYears" name="archive_years"> 763 <option value="">All</option><option value="2026">2026</option> 764 </select> 765 </div> 766 </div> 767 <!-- Content --> 768 <div class="col-12 py-3 "> 769 <div id="news-container" class="row"> 770 771 </div> 772 <div id="loader" style="display:none; text-align:center; margin: 2rem 0;"> 773 <div class="spinner-border" role="status"></div> 774 </div> 775 </div> 776 <!-- Pagination --> 777 <div class="col-12 pagination"> 778 <button class="view-more-button"><i class="fa fa-refresh"></i><span class="button-text">View More</span></button> 779 </div> 780 <!-- JSON Pagination --> 781 <nav aria-label="Page navigation example"> 782 <ul id="pagination" class="pagination"></ul> 783 </nav> 784 <!-- Default Pagination --> 785 <div id="newsPerPagePagination" class="col-12 pagination"> 786 787 </div> 788 </div> 789</div> 790</main>
791<script> 792 let itemsPerPage = parseInt(jNewsPerPage); 793 let currentIndex = 0; 794 let newsData = []; 795 let filteredNews = []; 796 let selectedCategory = 'all'; 797 798 function getQueryParam(name) { 799 const urlParams = new URLSearchParams(window.location.search); 800 return urlParams.get(name); 801 } 802 803 function getQueryPage() { 804 const urlParams = new URLSearchParams(window.location.search); 805 const page = parseInt(urlParams.get('page')); 806 return isNaN(page) || page < 1 ? 1 : page; 807 } 808 809 function applyCategoryFilter(category, updateURL = true) { 810 selectedCategory = category; 811 currentIndex = 0; 812 $('#news-container').empty(); 813 814 // Sync desktop and mobile category selection 815 $('.category-filter').removeClass('active'); 816 $(`.category-filter[data-category="${category}"]`).addClass('active'); 817 $('.categories-select-list').val(category); 818 819 if (updateURL) { 820 const params = new URLSearchParams(window.location.search); 821 if (category === 'all') { 822 params.delete('cat'); 823 } else { 824 params.set('cat', category); 825 } 826 params.set('page', 1); 827 const newUrl = `${window.location.pathname}?${params.toString()}`; 828 history.pushState(null, '', newUrl); 829 } 830 831 filterAndRenderNews(); 832 } 833 834 function renderCategoryFilters(categories) { 835 const categoryFromUrl = getQueryParam('cat'); 836 837 const container = $('.category-filters-wrapper'); 838 container.find('.category-filter:not([data-category="all"])').remove(); 839 categories.forEach(category => { 840 const filter = $(`<a class="category-filter" data-category="${category}">${category}</a>`); 841 container.append(filter); 842 }); 843 container.find('.category-filter').removeClass('active'); 844 if (categoryFromUrl && categoryFromUrl !== '') { 845 container.find(`.category-filter[data-category="${categoryFromUrl}"]`).addClass('active'); 846 } else { 847 container.find('.category-filter[data-category="all"]').addClass('active'); 848 } 849 850 const selectListCategories = $('.categories-select-list'); 851 categories.forEach(category => { 852 const filter = $(`<option value="${category}">${category}</option>`); 853 selectListCategories.append(filter); 854 }); 855 selectListCategories.val(categoryFromUrl || 'all'); 856 } 857 858 function getUniqueCategories(data) { 859 const categorySet = new Set(); 860 data.forEach(item => { 861 let categories = []; 862 try { 863 categories = JSON.parse(item.categories); 864 } catch { 865 categories = ["News"]; 866 } 867 categories.forEach(cat => categorySet.add(cat)); 868 }); 869 return Array.from(categorySet); 870 } 871 872 function filterAndRenderNews(updateURL = false, customPage = null) { 873 let category = selectedCategory; 874 let fromDate = $('#dateFrom').val(); 875 let toDate = $('#dateTo').val(); 876 let archiveYear = $('#archiveYears').val(); 877 878 const params = new URLSearchParams(window.location.search); 879 880 if (updateURL) { 881 if (category !== 'all') params.set('cat', category); 882 else params.delete('cat'); 883 if (fromDate) params.set('from', fromDate); 884 else params.delete('from'); 885 if (toDate) params.set('to', toDate); 886 else params.delete('to'); 887 if (archiveYear) params.set('year', archiveYear); 888 else params.delete('year'); 889 if (customPage) params.set('page', customPage); 890 const newUrl = `${window.location.pathname}?${params.toString()}`; 891 history.pushState(null, '', newUrl); 892 } 893 894 const page = customPage || getQueryPage(); 895 currentIndex = (page - 1) * itemsPerPage; 896 897 filteredNews = newsData.filter(item => { 898 let categories = []; 899 try { 900 categories = JSON.parse(item.categories); 901 } catch { 902 categories = ["News"]; 903 } 904 const date = new Date(item.published_at); 905 const matchCategory = category === 'all' || categories.includes(category); 906 const matchFrom = !fromDate || new Date(fromDate) <= date; 907 const matchTo = !toDate || new Date(toDate) >= date; 908 const matchYear = !archiveYear || date.getFullYear().toString() === archiveYear; 909 return matchCategory && matchFrom && matchTo && matchYear; 910 }); 911 912 const append = false;
913 renderNewsItems(filteredNews, currentIndex, itemsPerPage, append); 914 915 if (jNewsPaginationType === 'pages') { 916 renderPagination(filteredNews.length, itemsPerPage, page); 917 } 918 } 919 920 function renderNewsItems(data, start, count, append = false) { 921 const container = $('#news-container'); 922 if (!append) container.empty(); 923 924 for (let i = start; i < start + count && i < data.length; i++) { 925 const item = data[i]; 926 let categories = []; 927 try { 928 categories = JSON.parse(item.categories); 929 } catch { 930 categories = ["News"]; 931 } 932 933 const categoryHtml = categories.map(cat => `<span class="category">${cat}</span>`).join(''); 934 const imageHtml = item.image && item.image.trim() !== '' ? 935 `<img alt="${item.title}" src="${item.image}" class="archive-item-image">` : 936 `<div class="no-image-placeholder">No Image</div>`; 937 938 const html = ` 939 <div class="col-md-4 mb-3"> 940 <div class="card archive-item"> 941 ${imageHtml} 942 <div class="card-body archive-item-body"> 943 <a href="${item.slug}" class=""> 944 <h3 class="card-title archive-item-title">${item.title}</h3> 945 </a> 946 <p class="archive-item-snippet">${item.snippet || ''}</p> 947 <a href="${item.slug}" class="btn btn-link mt-2 archive-item-button">Read more</a> 948 </div> 949 </div> 950 </div> 951 `; 952 container.append(html); 953 } 954 955 currentIndex += count; 956 957 if (jNewsPaginationType === 'infinite') { 958 $('.view-more-button').toggle(currentIndex < data.length); 959 } 960 } 961 962 function renderPagination(totalItems, perPage, currentPage) { 963 const totalPages = Math.ceil(totalItems / perPage); 964 const container = $('#pagination'); 965 container.empty(); 966 967 if (totalPages <= 1) { 968 container.hide(); 969 return; 970 } 971 972 container.show(); 973 974 const ul = $('<ul class="pagination"></ul>'); 975 976 // Previous button 977 const prevDisabled = currentPage === 1 ? 'disabled' : ''; 978 ul.append(` 979 <li class="page-item ${prevDisabled}"> 980 <a href="javascript:void(0)" class="page-link" data-page="${currentPage - 1}">«</a> 981 </li> 982 `); 983 984 // Calculate page range to show 985 const pageButtons = []; 986 if (totalPages <= 5) { 987 for (let i = 1; i <= totalPages; i++) { 988 pageButtons.push(i); 989 } 990 } else { 991 if (currentPage <= 3) { 992 pageButtons.push(1, 2, 3, 4, '...', totalPages); 993 } else if (currentPage >= totalPages - 2) { 994 pageButtons.push(1, '...', totalPages - 3, totalPages - 2, totalPages - 1, totalPages); 995 } else { 996 pageButtons.push(1, '...', currentPage - 1, currentPage, currentPage + 1, '...', totalPages); 997 } 998 } 999 1000 for (let btn of pageButtons) { 1001 if (btn === '...') { 1002 ul.append(`<li class="page-item disabled"><span class="page-link">...</span></li>`); 1003 } else { 1004 const activeClass = btn === currentPage ? 'active' : ''; 1005 ul.append(` 1006 <li class="page-item ${activeClass}"> 1007 <a href="javascript:void(0)" class="page-link" data-page="${btn}">${btn}</a> 1008 </li> 1009 `); 1010 } 1011 } 1012 1013 // Next button 1014 const nextDisabled = currentPage === totalPages ? 'disabled' : ''; 1015 ul.append(` 1016 <li class="page-item ${nextDisabled}"> 1017 <a href="javascript:void(0)" class="page-link" data-page="${currentPage + 1}">»</a> 1018 </li> 1019 `); 1020 1021 container.append(ul); 1022 } 1023 1024 1025 function fetchNewsItems() { 1026 $('#loader').show(); 1027 1028 fetch(jClientUrl + "/json/search/search.json") 1029 .then(response => response.json()) 1030 .then(data => { 1031 newsData = data 1032 .filter(item => item.type === "NewsNotice") 1033 .sort((a, b) => new Date(b.published_at) - new Date(a.published_at)); 1034 const uniqueCategories = getUniqueCategories(newsData); 1035 renderCategoryFilters(uniqueCategories); 1036 1037 selectedCategory = getQueryParam('cat') || 'all'; 1038 $('#dateFrom').val(getQueryParam('from') || ''); 1039 $('#dateTo').val(getQueryParam('to') || ''); 1040 $('#archiveYears').val(getQueryParam('year') || ''); 1041 1042 filterAndRenderNews(false); 1043 }) 1044 .catch(error => { 1045 console.error("Error fetching data:", error); 1046 }) 1047 .finally(() => { 1048 $('#loader').hide(); 1049 }); 1050 } 1051 1052 $(document).ready(function() { 1053 1054 // If JSON is enabled for News Archive Page 1055 if (jNewsJSON == '1') { 1056 if (jNewsPaginationType === "infinite") { 1057 $('#pagination').hide(); 1058 $('.view-more-button').show(); 1059 } else { 1060 $('#pagination').show(); 1061 $('.view-more-button').hide(); 1062 } 1063 1064 1065 1066 fetchNewsItems(); 1067 1068 // Handle view more button click 1069 $('.view-more-button').on('click', function() { 1070 const button = $(this); 1071 const icon = button.find('i'); 1072 const text = button.find('.button-text'); 1073 1074 icon.addClass('fa-spin-custom'); 1075 text.text('Loading...'); 1076 1077 setTimeout(() => { 1078 renderNewsItems(filteredNews, currentIndex, itemsPerPage, true); // APPEND 1079 icon.removeClass('fa-spin-custom'); 1080 text.text('View More'); 1081 }, 300); 1082 }); 1083 1084 // Handle category filter click 1085 $(document).on('click', '.category-filter', function() { 1086 const category = $(this).data('category'); 1087 applyCategoryFilter(category, true); 1088 filterAndRenderNews(false, 1); 1089 }); 1090 1091 // Handle category filter select list 1092 $(document).on('change', '.categories-select-list', function() { 1093 const category = $(this).val(); 1094 applyCategoryFilter(category, true); 1095 filterAndRenderNews(false, 1); 1096 }); 1097 1098 // Handle date range and archive year changes 1099 $('#dateFrom, #dateTo, #archiveYears').on('change', function() { 1100 filterAndRenderNews(true, 1); 1101 }); 1102 1103 // Handle pagination click 1104 $(document).on('click', '.page-link', function() { 1105 const page = $(this).data('page'); 1106 filterAndRenderNews(true, page); 1107 }); 1108 1109 } else { 1110 $('.view-more-button').hide(); 1111 $('.filters-section').hide(); 1112 } 1113 }); 1114</script>
1114 1115 1116 1117 <footer id="footerDefault" class="footer w-100" role="contentinfo"> 1118 <div class="footer-top-line"></div> 1119 <div class="container py-5"> 1120 <div class="row"> 1121 <div class="col-lg-3 col-md-3 col-sm-12 col-xs-12 p-3"> 1122 <img src="https://storage.googleapis.com/juniper-media-library/521/2026/04/Wautoma.png" width="70%" height="" alt="Site Logo" /> 1123 <div> 1124 1125 </div> 1126 </div> 1127 <div class="col-lg-3 col-md-3 col-sm-12 col-xs-12 p-3"> 1128 <h2 class="footer-default-heading">Contact Information</h2> 1129 <div> 1130 <p><strong>Mailing Address: <br /></strong>PO BOX 428<br />Wautoma, Wisconsin 54982</p> 1131<p><strong>Address:</strong><br />210 East Main Street<br />Wautoma, Wisconsin 54982</p> 1132<p><strong>Phone: </strong>(920) 787-4044</p> 1133<p><strong>Fax: </strong>(920) 787-4505</p> 1134<p><strong>Email: </strong><a href="mailto: [email protected]" target="_blank" rel="noopener">[email protected]</a></p> 1135 </div> 1136 </div> 1137 <div class="col-lg-3 col-md-3 col-sm-12 col-xs-12 p-3"> 1138 <h2 class="footer-default-heading">Police Department & Municipal Court</h2> 1139 <div> 1140 <p><strong>Mailing Address:</strong><br />PO Box 483<br />Wautoma, Wisconsin 54982</p> 1141<p><strong>Email: </strong><a href="mailto: [email protected]" target="_blank" rel="noopener">[email protected]</a></p> 1142<p><strong>Phone: </strong>787-4044 ext. 209<br />Dispatch/Non-Emergency<br />(920) 787-3321</p> 1143 </div> 1144 </div> 1145 <div class="col-lg-3 col-md-3 col-sm-12 col-xs-12 p-3"> 1146 <h2 class="footer-default-heading">Office Hours</h2> 1147 <div> 1148 <p>Monday - Friday<br />8:00 AM–4:30 PM</p> 1149<p><a href="https://www.facebook.com/wautoma" target="_blank" rel="noopener">City Facebook</a></p> 1150<p><a href="https://www.facebook.com/wautomapolice" target="_blank" rel="noopener">Wautoma Police Facebook</a></p> 1151 </div> 1152 </div> 1153 </div> 1154 <div class="d-flex justify-content-center mt-3 bottom-footer" role="contentinfo" aria-label="Copyright and legal information"> 1155 © 2026 Designed & Hosted by <a href="https://www.townweb.com/" class="mx-1" target="_blank" rel="noopener noreferrer" aria-label="Town Web (opens in new tab)">Town Web</a> | <a href="/accessibility" class="mx-1" aria-label="View accessibility statement">Accessibility</a> | <a href="/privacy-policy" class="ms-1" aria-label="View privacy policy">Privacy Policy</a> 1156 </div> 1157 </div> 1158</footer> 1159<style> 1160 1161 @media (max-width: 767.99px) { 1162 1163 } 1164</style> 1165 1166 1167
1167<script src="/theme.js?v=e811661f"></script>
1167<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
vendor: 1 bytes, line 1167
1167
1168<script src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/owl.carousel.min.js" integrity="sha512-bPs7Ae6pVvhOSiIcyUClR7/q2OAsRiovw4vAkX+zJbw3ShAeeqezq50RIIcIURq7Oa20rW2n2q+fyXBNcU9lrw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
vendor: 1 bytes, line 1168
1168
1169<script src="https://cdn.jsdelivr.net/npm/[email protected]/jquery.marquee.min.js" type="text/javascript"></script>
vendor: 1 bytes, line 1169
1169
1170<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/0.9.0/jquery.mask.min.js" integrity="sha512-oJCa6FS2+zO3EitUSj+xeiEN9UTr+AjqlBZO58OPadb2RfqwxHpjTU8ckIC8F4nKvom7iru2s8Jwdo+Z8zm0Vg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
vendor: 1 bytes, line 1170
1170
1171<script src="https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.11.4/js/lightbox.min.js" integrity="sha512-Ixzuzfxv1EqafeQlTCufWfaC6ful6WFqIz4G+dWvK0beHw0NVJwvCKSgafpy5gwNqKmgUfIBraVwkKI+Cz0SEQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
1171 1172</body> 1173 1174</html>
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.