1 2 3 4<!DOCTYPE html> 5<html lang="en"> 6<head> 7 <base href="https://inrcog.org/" /> 8 <meta charset="utf-8"> 9 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 10 <meta name="viewport" content="width=device-width, initial-scale=1"> 11 12 13 14 15 16<!-- Metadata Area Starts --> <title>Iowa Northland Regional Council of Government</title> 17 <meta property="og:title" content="Iowa Northland Regional Council of Government" /> 18 <meta property="og:image" content="https://inrcog.org/website_assets/images/logo.png?t=202604071045470" /> 19 20 21<link href="/revize/plugins/setup/css/revize.css" rel="stylesheet" type="text/css" /> 22 23 24
25<script type="text/javascript"> 26 27 28 29</script>
29 30 31 32 33 34 35 36 37<!-- #jquery --> 38
38<script src="/revize/plugins/zbuilder/v1/website/_assets_/plugins/jquery/jquery.min.js"></script>
38 39 40<!-- #jquery lazy --> 41
41<script src="/revize/plugins/zbuilder/v1/website/_assets_/plugins/jquery.lazy-master/jquery.lazy.min.js"></script>
41 42 43<!-- #masonry scripts --> 44
44<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/masonry.pkgd.min.js" crossorigin="anonymous"></script>
44 45
45<script src="https://code.jquery.com/ui/1.14.0/jquery-ui.js"></script>
45 46 47<!-- #lightGallery scripts --> 48
48<script src="/revize/plugins/zbuilder/v1/website/_assets_/plugins/lightGallery-master/dist/lightgallery.min.js"></script>
48 49 50<!-- lightgallery plugins --> 51
51<script src="/revize/plugins/zbuilder/v1/website/_assets_/plugins/lightGallery-master/dist/plugins/thumbnail/lg-thumbnail.umd.js"></script>
51 52
52<script src="/revize/plugins/zbuilder/v1/website/_assets_/plugins/lightGallery-master/dist/plugins/zoom/lg-zoom.umd.js"></script>
52 53
53<script src="/revize/plugins/zbuilder/v1/website/_assets_/plugins/lightGallery-master/dist/plugins/video/lg-video.min.js"></script>
53 54 55<!-- #lightGallery css --> 56 <link href="/revize/plugins/zbuilder/v1/website/_assets_/plugins/lightGallery-master/dist/css/lightgallery-bundle.min.css" rel="stylesheet" /> 57 58<!-- #bootstrap js + popper js --> 59
59<script src="/revize/plugins/zbuilder/v1/website/_assets_/plugins/popperjs/popper.min.js"></script>
59 60
60<script src="/revize/plugins/zbuilder/v1/website/_assets_/plugins/bootstrap/js/bootstrap.min.js"></script>
60 61 62<!-- #bootstrap css and fonts --> 63 <link href="/revize/plugins/zbuilder/v1/website/_assets_/plugins/bootstrap/css/bootstrap.css" rel="stylesheet" /> 64 <link href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.min.css" rel="stylesheet" /> 65 66<!-- #dotjs --> 67
67<script src="/revize/plugins/revize_calendar/doT.min.js"></script>
67 68 69<!-- #tiny sider --> 70 <link href="/revize/plugins/zbuilder/v1/website/_assets_/plugins/tiny-slider/dist/tiny-slider.css" rel="stylesheet" /> 71
71<script src="/revize/plugins/zbuilder/v1/website/_assets_/plugins/tiny-slider/dist/min/tiny-slider.js"></script>
71 72 73<!-- #font awesome css --> 74 <link href="/revize/plugins/zbuilder/v1/website/_assets_/fonts/font-awesome/css/all.min.css" rel="stylesheet" > 75 76<!-- #font Google Material Icons --> 77 <link href="https://fonts.googleapis.com/css2?family=Material+Icons" rel="stylesheet" /> 78 <link href="https://fonts.googleapis.com/css2?family=Material+Icons+Outlined" rel="stylesheet" /> 79 80<!-- #aos css + js--> 81
81<script src="/revize/plugins/zbuilder/v1/website/_assets_/plugins/aos/src/js/aos.min.js"></script>
81 82 <link href="/revize/plugins/zbuilder/v1/website/_assets_/plugins/aos/src/css/aos.min.css" rel="stylesheet" > 83<!-- #aos --> 84 85<!-- #fitty --> 86
86<script src="/revize/plugins/zbuilder/v1/website/_assets_/plugins/fitty-gh-pages/dist/fitty.min.js"></script>
86 87
87<script src="/revize/plugins/zbuilder/v1/website/_assets_/plugins/revizeWeather/js/revizeWeather.min.js"></script>
87 88 89<!-- #layout css --> 90 <link href="/revize/plugins/zbuilder/v1/website/_assets_/css/layout.css?v=1" rel="stylesheet"> 91 <link href="_assets_/css/css_variables_T34_R3.css?t=1784922996000" rel="stylesheet"> 92 93<!-- #favicons --> 94 <link rel="shortcut icon" href="website_assets/images/favicon.png?t=202604071047550"> 95 <link rel="apple-touch-icon" href="website_assets/images/favicon.png?t=202604071047550"> 96 <meta name="theme-color" content="#1e2450" /> 97 98 99 100 101<style> 102@media (max-width: 767px) { 103 .rz-news-card-list.row-cols-xs > * {flex: 0 0 auto; width:100.0%} 104} 105@media (min-width: 768px) and (max-width: 991px) { 106 .rz-news-card-list.row-cols-md > * {flex: 0 0 auto; width:50.0%} 107} 108@media (min-width: 992px) { 109 .rz-news-card-list.row-cols-lg > * {flex: 0 0 auto; width:33.333332%} 110} 111</style> 112 113 114 115<link href="/revize/plugins/revize_calendar/core/main.css" rel="stylesheet" /> 116<link href="/revize/plugins/revize_calendar/daygrid/main.min.css" rel="stylesheet" /> 117<link href="/revize/plugins/revize_calendar/timegrid/main.min.css" rel="stylesheet" /> 118<link href="/revize/plugins/revize_calendar/list/main.min.css" rel="stylesheet" /> 119<link href="_assets_/plugins/revizeCalendar/css/mini.css" rel="stylesheet" /> 120<link href="/revize/plugins/revize_calendar/core/nav-panels.css" rel="stylesheet" />
120<script> 121 var defaultCalendarColor = "#3788d8"; 122 var ImportCals = []; 123 var calendarProps = {'2' : { 'color' : '#1e2450' , 'name' : 'Events' }, 124}; 125 var RZCalendarTimezone = ""; 126</script>
126 127 128</head> 129<body id="freeform" class="freeform-fullwidth rz-page-links-51" data-zipcode="50703" data-header-left="false"> 130 131 132 133
134<script type="text/javascript"> 135if (typeof(RZ) == 'undefined') RZ = {}; 136if (!RZ.link) RZ.link = new Object(); 137RZ.pagetype = 'template' 138RZ.baseurlprefix = '../' 139RZ.baseurlpath = 'news/' 140RZ.protocolRelativeRevizeBaseUrl='//builder1.revize.com' 141 142RZ.pagetemplatename = 'freeform' 143RZ.pagetemplateid = '1' 144RZ.pagemodule = 'links' 145RZ.pagemoduleid = '1' 146RZ.pagerecordid = '51'; 147 148RZ.pageid = 'links-51'; 149RZ.pageparentid = '0'; 150RZ.pagesectionid = '51'; 151RZ.pagesectionname = 'news'; 152RZ.pagesectionlevel = '1'; 153RZ.pagesectionfolder = 'news/'; 154RZ.pagesectionfilter = 'sectionid=51'; 155RZ.pagelinkfilter = 'linklevel=1 and linksectionid=51'; 156RZ.pagelinklevel = '1'; 157RZ.pagelinkid = '51'; 158RZ.pageidfield = ''; 159 160RZ.isnewrecord = false; 161RZ.editmodule = ''; 162RZ.editrecordid = '51'; 163RZ.editrecordversion = ''; 164RZ.editversion = ''; 165RZ.editaction = ''; 166 167RZ.page_roles = '' 168RZ.page_users = '4779ffcc0ef22cbc05648d2662162de37e98193568416f761242e0a6a5f1d43a' 169RZ.page_key = 'freeform[51]' 170RZ.parent_key = 'index[]' 171RZ.inherit_key = 'index[]' 172RZ.workflowname = '' 173RZ.permissions_options = 'warningsOFF' 174RZ.permissions_module = 'webspace_page_permissions' 175RZ.webspace = 'inrcog' 176RZ.webspacedesc = ""; 177 178RZ.featurespattern = '(EZ)'; 179null 180 181RZ.webspacelinksurl = '' 182RZ.webspacelinksurl = './webspace/links.html' 183RZ.workflowlist = '' 184RZ.revizeserverurl = 'https://builder1.revize.com/revize/inrcog'; 185 186if (!RZ.nextseq) RZ.nextseq = {linknames:{},modules:{}}; 187 188RZ.webspace_config = new Object(); 189RZ.webspace_config.admin_email = "[email protected]"; 190RZ.webspace_config.calendar_options = "max_events=6"; 191RZ.webspace_config.form_captcha = "yes"; 192RZ.webspace_config.form_server = "revizeserver"; 193RZ.webspace_config.form_technology = "jsp"; 194RZ.webspace_config.formwizard_ftp_password = ""; 195RZ.webspace_config.formwizard_ftp_port = ""; 196RZ.webspace_config.formwizard_ftp_server = ""; 197RZ.webspace_config.formwizard_ftp_user = ""; 198RZ.webspace_config.formwizard_setup = "yes"; 199RZ.webspace_config.formwizard_smtp_password = "xxx"; 200RZ.webspace_config.formwizard_smtp_server = "xxx"; 201RZ.webspace_config.formwizard_smtp_user = "xxx"; 202RZ.webspace_config.google_analytics = ""; 203RZ.webspace_config.home_pageid = "0"; 204RZ.webspace_config.home_sectionid = "0"; 205RZ.webspace_config.home_template = "home,index,sitemap"; 206RZ.webspace_config.icon_email = "<img src=\"/revize/images/email_icon_yellow.gif\" width=\"16\" border=\"0\" height=\"17\" title=\"Request email notification when page changes\" alt=\"Request email notification when page changes\" style=\"\" />"; 207RZ.webspace_config.image_maxheight = "3000"; 208RZ.webspace_config.image_maxwidth = "3000"; 209RZ.webspace_config.image_setup = "yes"; 210RZ.webspace_config.livesite_url = ""; 211RZ.webspace_config.menu_links_module = "links"; 212RZ.webspace_config.menu_newsection = ""; 213RZ.webspace_config.menu_nexturl = "webspace_menu-editform.jsp"; 214RZ.webspace_config.menu_sections_module = "sections"; 215RZ.webspace_config.menu_system = "custom"; 216RZ.webspace_config.menu_version = "1.00"; 217RZ.webspace_config.new_menu_manager_enabled = "yes"; 218RZ.webspace_config.notify_options = "hide_text=yes"; 219RZ.webspace_config.notify_return_url = "enotify/index.php"; 220RZ.webspace_config.rte_setup = "yes"; 221RZ.webspace_config.to_email = "[email protected]"; 222RZ.webspace_config.use_folders = "1"; 223 224RZ.isauthenticationactive = true 225RZ.warning = "" 226RZ.adminwinmsg = null 227 228RZ.channels = 'revize'; 229RZ.jsversion = 1.2</script>
vendor: 2 bytes, line 229
229
230<script type="text/javascript" src="/revize/util/snippet_helper.js"></script>
230 231 232
233<script> 234document.addEventListener('DOMContentLoaded', function() { 235 RZ.module = 'emailnotify_messages'; 236 RZ.nexturl = "/revize/plugins/zbuilder/v1/website/editforms/emailnotify.jsp"; 237 RZ.img = '<i class="bi bi-bell fs-4"></i>'; 238 RZ.caption = ''; 239 RZ.set = 'pageid=links-51'; 240 RZ.active = 'html'; 241 if (typeof RZaction != 'undefined') { 242 var tag = RZaction('editform'); 243 RZBarAddButton(null, {content: tag, tooltip: "Send ENotify", class: "rz-bar-btn-alert"}); 244 } 245}); 246 </script>
246 247<div class="skippy visually-hidden-focusable left-top mt-3 position-fixed align-items-center" style="z-index:1026"> 248 <div class="container-xl"> 249 <a class="d-inline-flex btn btn-light bg-white px-4 p-3 gap-4 align-items-center" 250 href="news/index.php#rz-content-wrap"> 251 <span class="d-inline-flex align-items-center gap-2"> 252 <i class="bi bi-window-sidebar fs-4" aria-hidden="true"></i> 253 <span>Skip to main content</span> 254 <span class="ms-5" aria-hidden="true"> 255 <svg width="26" height="27" viewBox="0 0 26 27" xmlns="http://www.w3.org/2000/svg" role="presentation" aria-hidden="true"> 256 <g fill="none" fill-rule="evenodd"> 257 <path d="M4.498 24.3v-.872H1.5v-1.37h2.716v-.872H1.5v-1.27h3v-.872H.542V24.3h3.955zm1.909 0v-3.695L9.183 24.3h.95v-5.256h-.95v3.695l-2.776-3.695H5.45V24.3h.957zm7.21 0v-4.383h1.682v-.873h-4.314v.873h1.683V24.3h.948zm6.421 0v-.872H17.04v-1.37h2.716v-.872H17.04v-1.27h3v-.872h-3.956V24.3h3.955zm1.84 0v-1.767h1.017l1.24 1.767h1.086l-1.316-1.867c.757-.237 1.27-.849 1.27-1.644 0-1.025-.842-1.745-1.966-1.745H20.92V24.3h.957zm1.224-2.647h-1.224v-1.729h1.224c.65 0 1.101.33 1.101.865 0 .535-.451.864-1.101.864z" 258 fill="currentColor" fill-rule="nonzero" /> 259 <path d="M18.9 1v6.3a2.7 2.7 0 0 1-2.7 2.7H5.4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" /> 260 <path d="M8.1 12.7L5.4 10l2.7-2.7" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" /> 261 </g> 262 </svg> 263 </span> 264 </span> 265 </a> 266 </div> 267</div>
268<script>function RZBarAddButton() { return false; }</script>
268 269 270 271 272<header class="site-header-wrap" data-menu-onhover="true" data-mega-at="4" data-nav-icons="false" data-logo="image" data-logo-tagline="false" data-logo-move="false" data-sticky="true" data-menu-buttons-left="false"> 273 <div class="site-header"> 274 275 276 277 278<div class="rz-section-block-wrap position-relative"> 279 280 281 282 <div class="rz-section-block container" style="max-width:100%;"> 283 284 285 286 287 288<div class="rz-row-block d-grid opt_row_columns_7 align-items-center" style="grid-template-columns:238px 2fr 210px;"> 289<div class="rz-column-block d-lg-flex flex-lg-wrap flex-lg-row justify-content-lg-between align-items-lg-center"> 290 <div class="rz-element-wrapper logo-section d-flex d-lg-block"> 291 292 <div class="responsive-menu align-items-center d-flex d-lg-none gap-1"> 293 <button class="offcanvasHeaderItems-toggler btn btn-link text-dark p-2 lh-1 text-dark" data-bs-toggle="offcanvas" data-bs-target="#offcanvasHeaderItems" aria-controls="offcanvasHeaderItems" aria-label="Toggle navigation"> 294 <i class="bi bi-three-dots" aria-hidden="True"></i> 295 </button> 296 <button id="mobile-share-btn" class="flex-shrink-0 btn btn-link text-dark p-2 lh-1 text-dark" data-bs-toggle="modal" data-bs-target="#shareModal" aria-label="Open share modal"> 297 <i class="bi bi-share-fill" aria-hidden="True"></i> 298 </button> 299 </div><!-- /.responsive-menu --> 300 301 302 <a href="./" class="flex-fill d-flex text-center flex-column text-decoration-none main-logo main-logo-text justify-content-center"> 303 <span class="lh-1">Iowa Northland Regional Council of Government</span> 304 <p class="logo-tagline lh-1 m-0">Live work play</p> 305 </a> 306 307 <a href="./" class="d-flex align-items-center text-decoration-none main-logo main-logo-image"> 308 <img loading="lazy" src="website_assets/images/logo.png?t=202604071045470" alt="Iowa Northland Regional Council of Government" class="header-logo-img"> 309 </a> 310 311 <div class="offcanvas-toggles align-items-center d-flex d-lg-none gap-1"> 312 <button class="search-toggle btn btn-link text-dark p-2 lh-1 text-dark" data-bs-toggle="modal" data-bs-target="#searchModal" aria-label="Toggle search"> 313 <i class="fa-solid fa-magnifying-glass" aria-hidden="True"></i> 314 </button> 315 <button class="navbar-toggler btn btn-link text-dark p-2 lh-1 text-dark" data-bs-toggle="offcanvas" data-bs-target="#offcanvasNav" aria-controls="offcanvasNav" aria-label="Toggle navigation"> 316 <i class="fa-solid fa-bars" aria-hidden="True"></i> 317 </button> 318 </div><!-- /.offcanvas-toggles --> 319 320 </div><!-- /.rz-element-wrapper --> 321</div><div class="rz-column-block d-lg-flex flex-lg-wrap justify-content-lg-center"> 322<div class="offcanvas-lg offcanvas-end" tabindex="-1" id="offcanvasNav" aria-labelledby="offcanvasNavLabel"> 323 <div class="offcanvas-header border-bottom"> 324 <h5 class="offcanvas-title" id="offcanvasNavLabel">Main Menu</h5> 325 <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close" data-bs-target="#offcanvasNav"></button> 326 </div> 327 328 <div class="offcanvas-body pt-0"> 329 330 <div class="rz-element-wrapper rz-topnav-block-wrapper has-edit-buttons"> 331 <div class="rz-element rz-topnav-wrap"> 332 <div class="rz-topnav-element"> 333 334 335 336 337 338<ul id="nav" class="v2_05-23-2012"> 339 <li class="menuLI level0 menuDisplay li-78"><a class="menuA level0 menuDisplay" href="index.php" target="_self">Home</a></li> 340 <li class="menuLI level0 menuDisplay li-134 children"><a class="menuA level0 menuDisplay" href="about_inrcog/index.php" target="_self">About INRCOG</a> 341 <ul class="menuUL level1 menuHidden ul-185"> 342 <li class="menuLI level1 menuHidden li-185"><a class="menuA level1 menuHidden" href="about_inrcog/member_communities.php" target="_self">
342Member Communities</a></li> 343 <li class="menuLI level1 menuHidden li-136"><a class="menuA level1 menuHidden" href="about_inrcog/staff.php" target="_self">Staff</a></li> 344 <li class="menuLI level1 menuHidden li-137"><a class="menuA level1 menuHidden" href="about_inrcog/boards_and_commissions.php" target="_self">Boards and Commissions</a></li> 345 <li class="menuLI level1 menuHidden li-138"><a class="menuA level1 menuHidden" href="about_inrcog/meetings.php" target="_self">Meetings</a></li> 346 <li class="menuLI level1 menuHidden li-139"><a class="menuA level1 menuHidden" href="about_inrcog/job_opportunities.php" target="_self">Job Opportunities</a></li> 347 <li class="menuLI level1 menuHidden li-140"><a class="menuA level1 menuHidden" href="about_inrcog/title_vi.php" target="_self">Title VI</a></li> 348 <li class="menuLI level1 menuHidden li-370"><a class="menuA level1 menuHidden" href="about_inrcog/monthly_newsletter.php" target="_self">Monthly Newsletter</a></li> 349 </ul> 350 </li> 351 <li class="menuLI level0 menuDisplay li-141 children"><a class="menuA level0 menuDisplay" href="services/index.php" target="_self">Services</a> 352 <ul class="menuUL level1 menuHidden ul-142"> 353 <li class="menuLI level1 menuHidden li-142 children"><a class="menuA level1 menuHidden" href="services/community_planning_development/index.php" target="_self">Community Planning & Development</a> 354 <ul class="menuUL level2 menuHidden ul-143"> 355 <li class="menuLI level2 menuHidden li-143"><a class="menuA level2 menuHidden" href="services/community_planning_development/housing/index.php" target="_self">Housing</a></li> 356 <li class="menuLI level2 menuHidden li-144"><a class="menuA level2 menuHidden" href="services/community_planning_development/environment/index.php" target="_self">Environment</a></li> 357 <li class="menuLI level2 menuHidden li-145"><a class="menuA level2 menuHidden" href="services/community_planning_development/emergency_preparedness.php" target="_self">Emergency Preparedness</a></li> 358 <li class="menuLI level2 menuHidden li-146"><a class="menuA level2 menuHidden" href="services/community_planning_development/recreation.php" target="_self">Recreation</a></li> 359 </ul> 360 </li> 361 <li class="menuLI level1 menuHidden li-147"><a class="menuA level1 menuHidden" href="services/data_services.php" target="_self">Data Services</a></li> 362 <li class="menuLI level1 menuHidden li-148 children"><a class="menuA level1 menuHidden" href="services/economic_development/index.php" target="_self">Economic Development</a> 363 <ul class="menuUL level2 menuHidden ul-230"> 364 <li class="menuLI level2 menuHidden li-230"><a class="menuA level2 menuHidden" href="services/economic_development/inredc_revolving_loan_fund.php" target="_self">INREDC Revolving Loan Fund</a></li> 365 </ul> 366 </li> 367 <li class="menuLI level1 menuHidden li-149"><a class="menuA level1 menuHidden" href="services/iowa_northland_city_clerks_county_auditors_assn.php" target="_self">Iowa Northland City Clerks/County Auditors Assn.</a></li> 368 <li class="menuLI level1 menuHidden li-150 children"><a class="menuA level1 menuHidden" href="services/transit/index.php" target="_self">Transit</a> 369 <ul class="menuUL level2 menuHidden ul-249"> 370 <li class="menuLI level2 menuHidden li-249"><a class="menuA level2 menuHidden" href="http://onboardpublictransit.com/" target="_new">OnBoard Public Transit</a></li> 371 </ul> 372 </li> 373 <li class="menuLI level1 menuHidden li-152 children"><a class="menuA level1 menuHidden" href="services/transportation_planning_/index.php" target="_self">Transportation Planning</a> 374 <ul class="menuUL level2 menuHidden ul-154"> 375 <li class="menuLI level2 menuHidden li-154"><a class="menuA level2 menuHidden" href="services/transportation_planning_/black_hawk_county_mpo.php" target="_self">Black Hawk County MPO</a></li> 376 <li class="menuLI level2 menuHidden li-155"><a class="menuA level2 menuHidden" href="services/transportation_planning_/inrta.php" target="_self">INRTA</a></li> 377 <li class="menuLI level2 menuHidden li-156"><a class="menuA level2 menuHidden" href="services/transportation_planning_/safe_routes_to_school.php" target="_self">Safe Routes to School</a></li> 378 </ul> 379 </li> 380 <li class="menuLI level1 menuHidden li-157"><a class="menuA level1 menuHidden" href="services/contractor_registration-black_hawk_county_iowa.php" target="_self">Contractor Registration-Black Hawk County, Iowa</a></li> 381 </ul> 382 </li> 383 <li class="menuLI level0 menuDisplay li-158"><a class="menuA level0 menuDisplay" href="document_library/index.php" target="_self">Document Library</a></li> 384 <li class="menuLI level0 menuDisplay li-159"><a class="menuA level0 menuDisplay" href="grant_opportunities/index.php" target="_self">Grant Opportunities</a></li> 385</ul> 386 387 388<!-- Google tag (gtag.js) -->
vendor: 64 bytes, lines 388-389
388 389<script async src="https://www.googletagmanager.com/gtag/js?id=
389G-JS1FEF695B
vendor: 12 bytes, line 389
389"></script>
390<script>
vendor: 127 bytes, lines 391-394
391window.dataLayer = window.dataLayer || []; 392function gtag(){dataLayer.push(arguments);} 393gtag('js', new Date()); 394gtag('config', '
394G-JS1FEF695B
vendor: 4 bytes, line 394
394');
395</script>
395 396 </div><!-- /.rz-topnav-element --> 397 </div><!-- /.rz-element --> 398 399 </div><!-- /.rz-element-wrapper --> 400 401 </div><!-- /.offcanvas-body --> 402</div><!-- /.offcanvas-lg --> 403</div><div class="rz-column-block d-lg-flex flex-lg-wrap justify-content-lg-end"> 404 <div class="header-element header-search-toggle d-none d-lg-flex align-items-stretch gap-0"> 405 <div class="vr vr-s"></div> 406 <button type="button" class="btn btn-link px-3 search-toggle d-flex align-items-center" data-bs-toggle="modal" data-bs-target="#searchModal"> 407 <i class="bi bi-search" for="site-search-input"></i><span class="sr-only">Search</span> 408 </button> 409 <div class="vr vr-e"></div> 410 </div><!--/#header-element--> 411 412 <div class="rz-element-wrapper header-translate-wrap relative d-none d-lg-flex align-items-stretch gap-0"> 413 <div class="vr vr-s"></div> 414 <button class="btn text-start translate-button btn btn-link relative px-3 d-flex align-items-center" type="button" aria-expanded="false" data-bs-toggle="modal" data-bs-target="#translateModal"> 415 <div class="fi fi-us selected-flag"></div> 416 <i class="bi bi-translate me-2"></i> 417 <span class="visually-hidden">Translate</span> 418 <span class="translate-text">Translate</span> 419 </button> 420 <button class="btn text-start translate-reset px-2" translate="no"> 421 <i class="fa-solid fa-power-off" aria-hidden="true"></i> 422 <span class="visually-hidden">Reset Translation</span> 423 </button> 424 <div class="vr vr-e"></div> 425 </div> 426</div> 427 428 429 430</div><!-- /.rz-row-block --> 431 432 433 434 435 </div><!-- /.rz-section-block --> 436</div><!-- /.rz-section-block-wrap --> 437 438 439 </div><!-- /.site-header --> 440</header><!-- /.site-header-wrap --> 441<div class="rz-site-wrap"> 442 <main id="rz-content-wrap"> 443 444 445 446 447<!-- --><div class="rz-element-wrapper rz-slider-wrapper has-edit-buttons position-relative overflow-hidden" style=" --rz-slider-bg:#000000; "> 448 449 <div class="center-center"> 450 <div class="rz-btns-container"> 451
451<script language="JavaScript" type="text/JavaScript"> 452 RZ.module = 'generic'; 453 RZ.nexturl = "/revize/plugins/zbuilder/v1/website/editforms/slider-editform.jsp"; 454 RZ.img = '<span class="rzBtn rzBtn-sm">Edit Slider</span>'; 455 RZ.caption = ''; 456 RZ.set = 'pageid=slider-51'; 457 RZ.options = ''; 458 if (typeof RZaction != 'undefined') RZaction('editform'); 459 </script>
459 460 </div> 461 </div> 462 463 464 <div 465 466 data-controls-position="bottom" 467 class="rz-freeform-slider rz-slider tiny-carousel-wrap" 468 469 style=" 470 471 472 473 474 475 476 477 478 479 " 480 > 481 482 483 <div class="rz-slider-bg-overlay" ></div> 484 485 486 487 <div class="tiny-slider" 488 style="height:100%;" 489 data-tiny-items="1" 490 data-tiny-mode="gallery" 491 data-tiny-items-md="1" 492 data-tiny-items-sm="1" 493 data-tiny-gap="0" 494 data-tiny-controls="true" 495 data-tiny-nav="true" 496 data-tiny-autoplay-buttons="true" 497 data-tiny-autoplay="true"> 498 499 <div class="tiny-item" style="height:100%;"> 500 <div class="tns-lazy-img tns-bg-slide" 501 data-style="background:url('website_assets/images/inslide1.jpg?t=202604090946240') center center / cover no-repeat;"></div> 502 </div> 503 504 </div><!--/.tiny-slider--> 505 506 </div><!-- /.slider --> 507 <div class="rz-slider-caption-wrap d-flex flex-column overflow-hidden justify-content-center align-items-start"> 508 <div class="rz-slider-caption container d-flex flex-column align-items-start"> 509 <div class="rz-slider-caption-title d-flex flex-column text-left justify-content-center align-items-start"> 510 511 <nav aria-label="breadcrumb" class="breadcrumb"> 512 <ul><li><a href="./">Home</a> </li><li>News</li></ul></nav> 513 514 <h1>News</h1> 515 516 517 </div> 518 </div><!-- /.rz-slider-caption --> 519 </div><!-- /.rz-slider-caption-wrap --> 520</div><!-- /.slider-wrap --> 521 522 523 <div id="freeform-content-wrapper" class="position-relative z-3"> 524 <div class="container-fluid px-0 d-flex flex-column flex-lg-row flex-lg-nowrap"> 525 <div class="col freeform-left-col-fill"></div> 526 527 <div class="col-post-wrap"> 528 <div class="col-post h-100"> 529 <div id="post" class="h-100"> 530 <div class="post-content h-100"> 531 <!-- main content --> 532 533 534 535 536 537<div class="rz-section-block-wrap position-relative"> 538 539 540 541 <div class="rz-section-block container"> 542 543 544 545 546 547<div class="rz-row-block d-grid"> 548<div class="rz-column-block"> 549 550 551 552<div class="rz-element-wrapper rz-news-card-wrapper has-edit-buttons" data-infinite="false" data-cards-per-page="9" data-rz-search-module="news"> 553 <div class="center-top"> 554 <div class="rz-btns-container"> 555
555<script> 556 RZ.module = 'news'; 557 RZ.nexturl = "/revize/plugins/zbuilder/v1/website/editforms/news-editlist.jsp?width=370&height=450&pageid=a07a4369-8ee3-4050-a79e-6faf22b336a1"; 558 RZ.img = '<span class="rzBtn rzBtn-sm">Edit Articles</span>'; 559 RZ.set = 'pageid=a07a4369-8ee3-4050-a79e-6faf22b336a1'; 560 if (typeof RZaction !== 'undefined') RZaction('editlist'); 561 </script>
561 562
562<script> 563 RZ.module = 'generic_lists'; 564 RZ.nexturl = "/revize/plugins/zbuilder/v1/website/editforms/categories-editlist.jsp?type=category-news_list"; 565 RZ.img = '<span class="rzBtn rzBtn-sm">Edit Categories</span>'; 566 RZ.set = ''; 567 if (typeof RZaction !== 'undefined') RZaction('editlist'); 568 </script>
568 569 </div> 570 </div> 571 572 573 574 <div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 rz-news-card-list mt-0" 575 style="--bs-gutter-y:15px;--bs-gutter-x:15px;"> 576<slot 577 data-type="dot-feed" 578 data-content-template="/revize/plugins/zbuilder/v1/website/_assets_/templates/news_list/base.html" 579 data-content-feed="_includes_/published/news_list.json" 580 data-content-options='{"opt_start_cutoff":"show_all","news_list_card_style":"stacked","category_filter":"77","sort_order":"date asc, seq_no asc","news_list_link_to":"modal","news_button_text":"Read More"}'> 581 </slot> 582 583 </div><!-- /.row --> 584 585</div><!-- /.rz-element-wrapper -->
586<script src="/revize/plugins/zbuilder/v1/website/builder/modules/assets/news_list.js"></script>
586 587 588 589 590</div> 591 592 593 594</div><!-- /.rz-row-block --> 595 596 597 598 599 </div><!-- /.rz-section-block --> 600</div><!-- /.rz-section-block-wrap --> 601 602 603 </div><!-- /.post-content --> 604 </div><!-- /#post --> 605 </div><!-- /.col-post --> 606 </div><!-- /.col-post-wrap --> 607 <div class="col freeform-right-col-fill"></div> 608 </div><!-- /.row --> 609 </div><!-- /.freeform-content-wrapper --> 610 </main><!-- /#rz-content-wrap --> 611 612 613 614 615<footer class="site-footer-wrap"> 616 <div class="site-footer"> 617 618 619 620 621<div class="rz-section-block-wrap position-relative" style="--rz-section-padding-sm:45px 0;--rz-section-padding-md:75px 0 65px;--rz-section-padding-lg:75px 0 65px;"> 622 623 624 625 <div class="rz-section-block container"> 626 627 628 629 630 631<div class="rz-row-block d-grid opt_row_columns_5" style="grid-template-columns:394px 1fr 1fr 1fr;"> 632<div class="rz-column-block"> 633 <div class="rz-element-wrapper rz-rte-block-wrapper footer-logo-section d-flex"> 634 635 <a href="./" class="d-flex align-items-center text-decoration-none footer-logo"> 636 <img loading="lazy" src="website_assets/images/footer_logo.png?t=202604071046140" alt="Iowa Northland Regional Council of Government" class="footer-logo"> 637 </a> 638 639 </div><!-- /.rz-element-wrapper --> 640 641 642 643 644 645 646 647<div class="rz-element-wrapper rz-button-wrapper has-edit-buttons move-to-offcanvas social_btn" 648 649 > 650 651 <div class="center-top"> 652 <div class="rz-btns-container"> 653
653<script> 654 RZ.module = 'generic'; 655 RZ.nexturl = "/revize/plugins/zbuilder/v1/website/editforms/buttons-editform.jsp"; 656 RZ.img = '<span class="rzBtn rzBtn-xs">Edit Buttons</span>'; 657 RZ.caption = ''; 658 RZ.set = 'pageid=433c3a66-82b3-426a-a326-4212ff219f0c'; 659 RZ.options = ''; 660 if (typeof RZaction != 'undefined') RZaction('editform'); 661 </script>
661 662 </div> 663 </div> 664 <div class="rz-element rz-button-wrap d-flex flex-wrap" 665 style="gap:30px;"> 666 667<div class="d-flex align-items-stretch" data-aos-duration="600"> 668 <a href="https://www.facebook.com/INRCOGIA/" target="_blank" 669 class="rz-btn-element d-flex align-items-center justify-content-center btn btn-primary no-rz-text-reveal-btn " 670 style=""> 671 672 673 674 675 <i class="fab fa-facebook-f rz-btn-icon flex-shrink-0" aria-hidden="true"></i> 676 677 678 679 680 681 682 683 684 685 </a> 686</div> 687 688<div class="d-flex align-items-stretch" data-aos-duration="600"> 689 <a href="https://www.linkedin.com/company/inrcog" target="_blank" 690 class="rz-btn-element d-flex align-items-center justify-content-center btn btn-primary no-rz-text-reveal-btn " 691 style=""> 692 693 694 695 696 <i class="bi bi-linkedin rz-btn-icon flex-shrink-0" aria-hidden="true"></i> 697 698 699 700 701 702 703 704 705 706 </a> 707</div> 708 709 </div> 710</div> 711 712 713 714</div><div class="rz-column-block"> 715 716 717 718<div class="rz-element-wrapper rz-section-header-wrapper has-edit-buttons"> 719 <div class="center-top"> 720 <div class="rz-btns-container"> 721
721<script language="JavaScript" type="text/JavaScript"> 722 RZ.module = 'generic'; 723 RZ.nexturl = "/revize/plugins/zbuilder/v1/website/editforms/section_header-editform.jsp"; 724 RZ.img = '<span class="rzBtn rzBtn-sm">Edit Section Header</span>'; 725 RZ.caption = ''; 726 RZ.set = 'pageid=a879f99c-867e-49ed-95b7-fac04fb263f7'; 727 RZ.options = ''; 728 if (typeof RZaction != 'undefined') RZaction('editform'); 729 </script>
729 730 </div> 731 </div> 732 <div class="rz-element rz-section-header-wrap align-items-start text-start d-flex align-items-center gap-2"> 733 734 <div class="rz-section-header d-flex align-items-start text-start align-items-center gap-2"> 735 736 737 <div class="d-flex flex-column align-items-start text-start"> 738 739 740 <h2 class="rz-section-header-title" style="color:#1E2450;font-size:min(20px, 7.2vw);">Contact</h2> 741 742 743 </div> 744 745 746 </div><!-- /.rz-section-header --> 747 748 </div><!-- /.rz-section-header-wrap --> 749</div><!-- /.rz-element-wrapper --> 750 751 752 753 754 <div class="rz-element-wrapper rz-address-wrapper d-lg-flex align-items-center cursor-pointer move-to-offcanvas has-edit-buttons justify-content-start"> 755 <div class="center-top"> 756 <div class="rz-btns-container"> 757
757<script language="JavaScript" type="text/JavaScript"> 758 RZ.module = 'generic'; 759 RZ.nexturl = '/revize/plugins/zbuilder/v1/website/editforms/address-editform.jsp'; 760 RZ.img = '<span class="rzBtn rzBtn-xs">Edit address</span>'; 761 RZ.set = 'pageid=f28d8359-574e-4c15-a747-092f949acdb1'; 762 RZ.options = ''; 763 if (typeof RZaction != 'undefined') RZaction('editform'); 764 </script>
764 765 </div> 766 </div> 767 768 <div class="vr vr-s d-none"></div> 769 <a href="https://www.google.com/maps/search/?api=1&query=229+E.+Park+Ave.%26%238232%3BWaterloo%2C+Iowa+50703" 770 target="_self" 771 class="btn btn-link d-flex align-items-center text-start"> 772 <i class="bi bi-geo-alt-fill me-2"></i>229 E. Park Ave.
Waterloo, Iowa 50703 773 </a> 774 <div class="vr vr-e d-none"></div> 775 776 </div><!-- /.rz-element-wrapper --> 777 778 779 780 781 782 783 784<div class="rz-element-wrapper rz-button-wrapper has-edit-buttons move-to-offcanvas f_btn" 785 786 > 787 788 <div class="center-top"> 789 <div class="rz-btns-container"> 790
790<script> 791 RZ.module = 'generic'; 792 RZ.nexturl = "/revize/plugins/zbuilder/v1/website/editforms/buttons-editform.jsp"; 793 RZ.img = '<span class="rzBtn rzBtn-xs">Edit Buttons</span>'; 794 RZ.caption = ''; 795 RZ.set = 'pageid=8c3267c3-467d-4e67-86cd-d85b9681e542'; 796 RZ.options = ''; 797 if (typeof RZaction != 'undefined') RZaction('editform'); 798 </script>
798 799 </div> 800 </div> 801 <div class="rz-element rz-button-wrap d-flex flex-wrap" 802 style="gap:16px;"> 803 804<div class="d-flex align-items-stretch" data-aos-duration="600"> 805 <a href="tel:(319) 235-0311" target="_blank" 806 class="rz-btn-element d-flex align-items-center justify-content-center btn btn-primary no-rz-text-reveal-btn " 807 style="gap:8px;"> 808 809 810 811 812 <i class="material-icons|local_phone rz-btn-icon flex-shrink-0" aria-hidden="true"></i> 813 814 815 816 817 818 <span class="overflow-hidden d-inline-block" 819 > 820 <span data-text="(319) 235-0311" class="rz-btn-text" 821 > 822 (319) 235-0311 823 </span> 824 </span> 825 826 827 828 829 830 </a> 831</div> 832 833<div class="d-flex align-items-stretch" data-aos-duration="600"> 834 <a href="fax:(319) 235-2891" target="_blank" 835 class="rz-btn-element d-flex align-items-center justify-content-center btn btn-primary no-rz-text-reveal-btn " 836 style="gap:8px;"> 837 838 839 840 841 <i class="material-icons|fax rz-btn-icon flex-shrink-0" aria-hidden="true"></i> 842 843 844 845 846 847 <span class="overflow-hidden d-inline-block" 848 > 849 <span data-text="(319) 235-2891" class="rz-btn-text" 850 > 851 (319) 235-2891 852 </span> 853 </span> 854 855 856 857 858 859 </a> 860</div> 861 862<div class="d-flex align-items-stretch" data-aos-duration="600"> 863 <a href="mailto:[email protected]" target="_blank" 864 class="rz-btn-element d-flex align-items-center justify-content-center btn btn-primary no-rz-text-reveal-btn " 865 style="gap:8px;"> 866 867 868 869 870 <i class="bi bi-envelope-fill rz-btn-icon flex-shrink-0" aria-hidden="true"></i> 871 872 873 874 875 876 <span class="overflow-hidden d-inline-block" 877 > 878 <span data-text="[email protected]" class="rz-btn-text" 879 > 880 [email protected] 881 </span> 882 </span> 883 884 885 886 887 888 </a> 889</div> 890 891 </div> 892</div> 893 894 895 896</div><div class="rz-column-block"> 897 898 899 900 901<div class="rz-element-wrapper rz-link-list-wrapper has-edit-buttons" 902 > 903 <div class="center-top"> 904 <div class="rz-btns-container"> 905
905<script language="JavaScript" type="text/JavaScript"> 906 RZ.module = 'generic'; 907 RZ.nexturl = "/revize/plugins/zbuilder/v1/website/editforms/link_list-editform.jsp"; 908 RZ.img = '<span class="rzBtn rzBtn-sm">Edit Links</span>'; 909 RZ.caption = ''; 910 RZ.set = 'pageid=f12fe50a-7aa6-4e29-8a19-4ff43af297a1'; 911 RZ.options = ''; 912 if (typeof RZaction != 'undefined') RZaction('editform'); 913 </script>
913 914 </div> 915 </div> 916 917 918 <div class="rz-module-header d-flex align-items-center gap-2"> 919 920 921 <span class="rz-module-header-text">Quick Links</span> 922 923 924 </div> 925 926 927 <div class="rz-element rz-link-list-wrap"> 928 <div class="list-group list-group-flush" > 929 930 <a href="services/economic_development/index.php" target="_self" 931 class="list-group-item list-group-item-action bg-transparent d-flex align-items-center" 932 style="gap:16px;"> 933 934 <span >Economic Development</span> 935 936 </a> 937 938 <a href="services/community_planning_development/housing/index.php" target="_self" 939 class="list-group-item list-group-item-action bg-transparent d-flex align-items-center" 940 style="gap:16px;"> 941 942 <span >Housing</span> 943 944 </a> 945 946 <a href="about_inrcog/job_opportunities.php" target="_self" 947 class="list-group-item list-group-item-action bg-transparent d-flex align-items-center" 948 style="gap:16px;"> 949 950 <span >Job Opportunites</span> 951 952 </a> 953 954 <a href="about_inrcog/title_vi.php" target="_self" 955 class="list-group-item list-group-item-action bg-transparent d-flex align-items-center" 956 style="gap:16px;"> 957 958 <span >Title VI</span> 959 960 </a> 961 962 </div><!-- /.list-group --> 963 </div><!-- /.rz-element --> 964</div><!-- /.rz-element-wrapper --> 965 966 967 968 969</div><div class="rz-column-block"> 970 971 972 973 974<div class="rz-element-wrapper rz-link-list-wrapper has-edit-buttons" 975 > 976 <div class="center-top"> 977 <div class="rz-btns-container"> 978
978<script language="JavaScript" type="text/JavaScript"> 979 RZ.module = 'generic'; 980 RZ.nexturl = "/revize/plugins/zbuilder/v1/website/editforms/link_list-editform.jsp"; 981 RZ.img = '<span class="rzBtn rzBtn-sm">Edit Links</span>'; 982 RZ.caption = ''; 983 RZ.set = 'pageid=075293ae-b418-448b-b74d-5a8a02d6d13d'; 984 RZ.options = ''; 985 if (typeof RZaction != 'undefined') RZaction('editform'); 986 </script>
986 987 </div> 988 </div> 989 990 991 <div class="rz-module-header d-flex align-items-center gap-2"> 992 993 994 <span class="rz-module-header-text">Quick Links</span> 995 996 997 </div> 998 999 1000 <div class="rz-element rz-link-list-wrap"> 1001 <div class="list-group list-group-flush" > 1002 1003 <a href="https://inrcog.org/document_library/index.php" target="_blank" 1004 class="list-group-item list-group-item-action bg-transparent d-flex align-items-center" 1005 style="gap:16px;"> 1006 1007 <span >Document Library</span> 1008 1009 </a> 1010 1011 <a href="services/community_planning_development/emergency_preparedness.php" target="_self" 1012 class="list-group-item list-group-item-action bg-transparent d-flex align-items-center" 1013 style="gap:16px;"> 1014 1015 <span >Emergency Preparedness</span> 1016 1017 </a> 1018 1019 <a href="https://inrcog.org/grant_opportunities/index.php" target="_blank" 1020 class="list-group-item list-group-item-action bg-transparent d-flex align-items-center" 1021 style="gap:16px;"> 1022 1023 <span >Grants</span> 1024 1025 </a> 1026 1027 <a href="services/transportation_planning_/index.php" target="_self" 1028 class="list-group-item list-group-item-action bg-transparent d-flex align-items-center" 1029 style="gap:16px;"> 1030 1031 <span >Transportation Planning</span> 1032 1033 </a> 1034 1035 </div><!-- /.list-group --> 1036 </div><!-- /.rz-element --> 1037</div><!-- /.rz-element-wrapper --> 1038 1039 1040 1041 1042</div> 1043 1044 1045 1046</div><!-- /.rz-row-block --> 1047 1048 1049 1050 1051 </div><!-- /.rz-section-block --> 1052</div><!-- /.rz-section-block-wrap --> 1053 1054 1055 </div><!-- /.site-footer --> 1056</footer><!-- /.site-footer-wrap --> 1057<div class="offcanvas-lg offcanvas-bottom" 1058 tabindex="-1" 1059 id="offcanvasHeaderItems"> 1060 <div class="offcanvas-header"> 1061 <button type="button" 1062 class="btn-close" 1063 data-bs-dismiss="offcanvas" 1064 aria-label="Close" 1065 data-bs-target="#offcanvasHeaderItems"></button> 1066 </div> 1067 <div class="offcanvas-body offcanvasHeaderItems-offcanvas-body pt-0"></div> 1068</div><!-- #offcanvasHeaderItems --> 1069 1070 1071<div class="modal modal-lg fade" id="searchModal" tabindex="-1" role="dialog" style="--bs-modal-width:640px;"> 1072 <div class="modal-dialog modal-dialog-centered" role="Site Search"> 1073 <div class="modal-content px-0"> 1074 <div class="modal-header border-0 pb-0 px-lg-3 pt-4"> 1075 <h2 class="h5">Search Iowa Northland Regional Council of Government</h2> 1076 <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> 1077 </div> 1078 <div class="modal-body p-0"> 1079 <form class="form-inline overflow-hidden" method="GET" action="search.php" role="search" aria-label="sitewide"> 1080 <div class="d-flex relative bg-white p-2 px-3"> 1081 <div class="position-relative w-100"> 1082 <div class="form-floating w-100"> 1083 <input id="autocompleteme" autocomplete="off" class="form-control form-control-lg m-0 w-100" name="q" type="search" placeholder="Search..."> 1084 <label for="autocompleteme" class="bg-transparent">Search...</label> 1085 </div> 1086 <div id="autocomplete-spinner" class="spinner-border text-success position-absolute" role="status" 1087 style="top: 50%; right: 4rem; width: 1rem; height: 1rem; margin-top: -9px; display: none; z-index: 10;--bs-spinner-border-width:0.15em" > 1088 <span class="visually-hidden">Loading...</span> 1089 </div> 1090 </div> 1091 1092 <button class="btn btn-link right-center d-flex gap-3 p-0 pe-4 bg-transparent me-1 ps-0 outline-none lh-1" aria-label="Search"><span class="vr"></span> 1093 <span><svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true" class="insta-search-icon"> 1094 <path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path> 1095 </svg><span class="sr-only">Search</span></span> 1096 </button> 1097 </div> 1098 </form> 1099 <div class="all-search-buttons-wrap w-100 lh-1 position-relative" style="display:none"> 1100 <div class="all-search-buttons py-3 p-3 d-md-flex flex-column flex-md-row gap-2 border-top"> 1101 <div class="searchPopover p-3 bg-white d-none d-xl-block popover"> 1102 <div class="searchPopover-arrow"></div><span class="searchPopover-text">Try searching... </span> 1103 </div> 1104 <a href="" class="all-site-search-btn align-content-center btn btn-primary icon-link icon-link-hover w-100 p-2 mb-2 mb-md-0"><span class="d-lg-none">Search</span> <span>site for</span> <span class="search-query-text text-decoration-underline"></span> <i class="bi bi-arrow-right"></i></a> 1105 <a href="" class="all-doc-search-btn align-content-center btn btn-primary icon-link icon-link-hover w-100 p-2"><span class="d-lg-none">Search</span> <span>documents for</span> <span class="search-query-text text-decoration-underline"></span> <i class="bi bi-arrow-right"></i></a> 1106 </div><!-- /.search-buttons --> 1107 </div><!-- /.all-search-buttons-wrap --> 1108 <div class="popular-pages-search p-2"></div> 1109 </div><!-- /.modal-body --> 1110 </div><!-- /.modal-content --> 1111 </div><!-- /.modal-dialog --> 1112</div><!-- /.modal --> 1113 1114 1115 1116 1117<link href="https://cdn.jsdelivr.net/gh/lipis/[email protected]/css/flag-icons.min.css" rel="stylesheet" type="text/css" /> 1118<div class="rz-element-wrapper-combo position-fixed end-0 top-50 d-flex flex-column" role="complementary" aria-label="Utility toolbar" style="z-index:22"> 1119 <!-- Accessibility Button --> 1120 <div class="rz-element-wrapper rz-ada-floaty-btn-element-combo rz-ada-btn-element d-none d-lg-flex position-relative"> 1121 <button 1122 type="button" 1123 class="d-flex align-items-center lh-1 w-100 d-flex align-items-center justify-content-center" 1124 aria-label="Open accessibility options" 1125 title="Accessibility features"> 1126 <i class="bi bi-universal-access" aria-hidden="true"></i> 1127 <span class="visually-hidden">Accessibility features</span> 1128 <span class="ada-text">Accessibility</span> 1129 </button> 1130 </div><!-- /.rz-element-wrapper --> 1131 1132 <!-- Share Button --> 1133 <div class="rz-element-wrapper rz-share-floaty-btn-element-combo d-none d-lg-flex"> 1134 <button 1135 type="button" 1136 class="d-flex align-items-center lh-1 w-100 d-flex align-items-center justify-content-center" 1137 data-bs-toggle="modal" 1138 data-bs-target="#shareModal" 1139 aria-label="Share this page" 1140 title="Share this page"> 1141 <i class="bi bi-share-fill" aria-hidden="true"></i> 1142 <span class="visually-hidden">Share this page</span> 1143 <span class="share-text">Share</span> 1144 </button> 1145 </div><!-- /.rz-element-wrapper --> 1146 1147 <!-- Translate Dropdown --> 1148 <div class="rz-element-wrapper header-translate-wrap-combo relative d-none d-lg-flex align-items-stretch gap-0"> 1149 <button class="btn text-start translate-button btn btn-link relative px-3 d-flex align-items-center" type="button" aria-expanded="false" data-bs-toggle="modal" data-bs-target="#translateModal"> 1150 <div class="fi fi-us selected-flag"></div> 1151 <i class="bi bi-translate me-2"></i> 1152 <span class="visually-hidden">Translate</span> 1153 <span class="translate-text">Translate</span> 1154 </button> 1155 <button class="btn text-start translate-reset px-2" translate="no"> 1156 <i class="fa-solid fa-power-off" aria-hidden="true"></i> 1157 <span class="visually-hidden">Reset Translation</span> 1158 </button> 1159 </div> 1160</div><!-- /.rz-element-wrapper-combo --> 1161 1162 1163<div class="modal fade confirmation-popup" style="--bs-modal-width:420px;z-index:1100" tabindex="-1" data-bs-backdrop="static"> 1164 <div class="modal-dialog modal-dialog-centered"> 1165 <div class="modal-content"> 1166 <div class="modal-body p-4 text-center"> 1167 <div class="d-flex justify-content-center"> 1168 <i class="d-flex lh-1 fs-3 rounded-circle bg-danger-subtle p-4 border-info text-danger-emphasis bi bi-exclamation-octagon"></i> 1169 </div> 1170 <div class="d-flex"></div> 1171 <p class="m-0 mt-3 px-sm-"><span class="fw-bold d-block fs-4 mb-2">Important</span> You are about to leave <strong>Iowa Northland Regional Council of Government</strong> and visit an external site, do you wish to continue?</p> 1172 </div> 1173 <div class="modal-footer flex-nowrap p-0"> 1174 <button id="confirmLeave" type="button" class="btn btn-lg btn-link text-success fs-6 text-decoration-none col-6 py-3 m-0 border-end" style="border-radius:0 0 0 var(--rz-modal-border-radius)"><strong>Yes, leave <i class="bi bi-box-arrow-up-right ms-2 fs-5 lh-1"></i></strong></button> 1175 <button type="button" class="btn btn-lg btn-link text-danger fw-bold fs-6 text-decoration-none col-6 py-3 m-0" data-bs-dismiss="modal" id="cancelLeave" style="border-radius:0 0 var(--rz-modal-border-radius)">No, Stay </button> 1176 </div> 1177 </div> 1178 </div> 1179</div> 1180
1181<script> 1182$(document).ready(function () { 1183 let externalLink = ''; // Store the external link URL 1184 1185 $('a') 1186 .not('[href^="javascript:"]') 1187 .not('[href^="mailto:"]') 1188 .not('[href^="tel:"]') 1189 .not('[href="http://cms4.revize.com/revize/supportrevize/revize_faq.php"]') 1190 .not('[href="https://intercom.help/revizefaqs/en/"]') 1191 .not('.rz-brand-footer a') 1192 .not('#revize-login') 1193 .not('.copy-live-link') 1194 .on('click', function (event) { 1195 // Ignore links with .rzBtn children 1196 if ($(this).find('span.rzBtn').length === 0) { 1197 const linkUrl = $(this).prop('href'); 1198 const linkHost = new URL(linkUrl).hostname; 1199 const currentHost = window.location.hostname; 1200 1201 // Treat current domain and all revize.com domains/subdomains as internal 1202 const isRevizeDomain = 1203 linkHost === 'revize.com' || 1204 linkHost.endsWith('.revize.com'); 1205 1206 // If different domain and NOT a Revize domain, show confirmation popup 1207 if (linkHost !== currentHost && !isRevizeDomain) { 1208 event.preventDefault(); 1209 externalLink = linkUrl; 1210 $('.confirmation-popup').addClass('show').show(); 1211 } 1212 } 1213 }); 1214 1215 // Confirm external navigation 1216 $('#confirmLeave').on('click', function () { 1217 if (externalLink) { 1218 window.open(externalLink, '_blank'); 1219 } 1220 1221 $('.confirmation-popup').removeClass('show').hide(); 1222 externalLink = ''; 1223 }); 1224 1225 // Cancel external navigation 1226 $('#cancelLeave').on('click', function () { 1227 $('.confirmation-popup').removeClass('show').hide(); 1228 externalLink = ''; 1229 }); 1230}); 1231</script>
1231 1232 <div class="modal fade" 1233 id="event-modal" 1234 tabindex="-1" 1235 role="dialog" 1236 aria-labelledby="modal-event-title" 1237 aria-hidden="true"> 1238 <div id="event-modal-dialog" 1239 class="modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable" 1240 role="document" 1241 style="--bs-modal-width:1000px"> 1242 <div class="modal-content"> 1243 1244 <div class="modal-header align-items-center"> 1245 <div> 1246 <h2 class="h4 modal-subtitle m-0 fs-4 fw-bold">Event Details</h2> 1247 </div> 1248 <button type="button" 1249 class="btn-close mt-0" 1250 data-bs-dismiss="modal" 1251 aria-label="Close"></button> 1252 </div> 1253 1254 <div class="modal-body p-0" 1255 id="modal-event-body"> 1256 <div class="center-center"><div class="rz-btns-container"></div></div> 1257 <div class="row row-cols-lg-2 g-0 mx-0"> 1258 <div class="event-modal-header" 1259 style="min-height:200px"></div><!-- /.event-modal-header for image --> 1260 <div class="event-details d-flex flex-column has-edit-buttons"> 1261 <div class="d-flex align-items-start justify-content-between bg-light p-4"> 1262 <div class="w-100"> 1263 <div class="d-flex align-items-center gap-3"> 1264 <div class="event-border-color" 1265 style="margin-top:3px;width:12px;height:26px;border-radius:100px;align-self:start;"></div> 1266 <div class="w-100"> 1267 <div class="d-flex justify-content-between align-items-center"> 1268 <h3 class="fs-4 fw-bold" id="modal-event-title">City Council Meeting </h3> 1269 <a href="calendar" 1270 class="flex-shrink-0 btn btn-light bg-white border-0 btn-sm" 1271 data-bs-toggle="tooltip" 1272 data-bs-placement="left" 1273 data-bs-title="view Calendar" 1274 data-bs-offset="0,20"> 1275 <i class="bi bi-box-arrow-up-right"></i> 1276 <span class="sr-only">View Calendar</span> 1277 </a> 1278 </div> 1279 1280 <p class="text-muted row row-cols-1 g-2 my-0 p-0 fw-normal lh-sm small"> 1281 <span class="modal-event-date w-max-content"><i class="bi bi-calendar4-event me-2"></i></span> 1282 <span class="modal-event-time"><i class="bi bi-clock me-2"></i></span> 1283 <span class="modal-location w-100"><i class="bi bi-geo-alt me-2"></i></span> 1284 </p> 1285 </div> 1286 </div> 1287 </div> 1288 <button type="button" 1289 class="btn-close bg-white d-none" 1290 data-bs-dismiss="modal" 1291 aria-label="Close"></button> 1292 </div><!-- /.d-flex --> 1293 1294 <div class="d-flex flex-column p-4 my-auto row-gap-4"> 1295 <div class="modal-event-description small"> 1296 <h4 class="h6 fw-bold">Description</h4> 1297 <div id="modal-event-subtitle"></div> 1298 <div id="modal-event-description"> 1299 </div> 1300 </div> 1301 <div style="width: 100%" id="modal-event-location" class="ratio ratio-16x9"></div> 1302 </div><!-- /.d-flex --> 1303 1304 <div class="modal-action-buttons d-flex gap-2 mt-auto mb-4 px-4"> 1305 1306 <a href="#" 1307 class="btn btn-primary border-0" id="modal-event-readmore">Read More</a> 1308 </div><!-- /.modal-action-buttons --> 1309 1310 </div><!-- /.event-details --> 1311 </div><!-- /.row --> 1312 </div><!-- /.modal-body --> 1313 </div><!-- /.modal-content --> 1314 </div> 1315 </div> 1316 1317 <style> 1318 #modal-event-duration{display:none} 1319 .rz-business-inner-map{border:1px solid var(--bs-border-color)!important;border-radius:var(--bs-border-radius)} 1320 </style> 1321<div class="left-bottom position-fixed mb-2 ms-2" id="eNotifyBtn"> 1322 <button type="button" class="btn bg-success-subtle border-0 p-3 fs-4 lh-1 rounded" data-bs-toggle="modal" data-bs-target="#eNotifyModal"> 1323 <span class="position-absolute top-0 start-100 translate-middle badge rounded-circle bg-danger p-2"><span class="visually-hidden">E notify</span></span> 1324 <i class="bi bi-bell text-success-emphasis"></i> 1325 </button> 1326</div> 1327<div class="modal fade e-notify-popup" style="--bs-modal-width:560px;z-index:1100" id="eNotifyModal" tabindex="-1" aria-hidden="true"> 1328 <div class="modal-dialog modal-dialog-centered"> 1329 <div class="modal-content"> 1330 <div class="modal-body p-lg-4"> 1331 <button type="button" class="btn-close top-0 end-0 position-absolute m-3 z-5" data-bs-dismiss="modal" aria-label="Close"></button> 1332 <div class="d-flex"> 1333 <i class="d-flex lh-1 fs-3 rounded-circle bg-success-subtle p-4 border-info text-success-emphasis bi bi-mailbox-flag"></i> 1334 </div> 1335 <div class="d-flex"></div> 1336 <p class="my-3"><span class="fw-bold d-block fs-5">Email notification</span>
1336 Subscribe to receive updates whenever this page changes.</p> 1337 <form action="./enotify/index.php" method="get"> 1338 <label class="form-label w-100 text-start" for="eNotifyEmail">Email</label> 1339 <div class="input-group mb-0"> 1340 <input type="email" class="form-control" placeholder="Your email" aria-label="Recipient’s email" name="email" aria-describedby="button-addon" id="eNotifyEmail"> 1341 <input type="hidden" name="successMessage" value="3"> 1342 <button class="btn btn-success" type="submit" id="button-addon">Subscribe</button> 1343 </div> 1344 <div class="form-text" id="basic-addon4">You may unsubscribe at anytime</div> 1345<div class="d-none"> 1346 <div class="text-center position-relative"><span class="mb-white rounded lh-1 p-3 rounded d-inline-block z-2 position-relative bg-white">or</span><div class="position-absolute top-50 start-0 border-top z-1 w-100"></div> 1347 </div> 1348 <label class="form-label w-100 text-start" for="eNotifyPhone">Phone number</label> 1349 <div class="input-group mb-0"> 1350 <input type="tel" class="form-control" placeholder="123-123-45679" aria-label="Recipient’s phone number" aria-describedby="button-addon" id="eNotifyPhone"> 1351 <button class="btn btn-success" type="button" id="button-addon-2">Subscribe</button> 1352 </div> 1353 <div class="form-text">Messaging rates may apply</div> 1354</div> 1355 </form> 1356 </div> 1357 <div class="modal-footer px-lg-4"> 1358 <button type="button" class="btn btn-dark" data-bs-dismiss="modal" id="canceleNotifyModal">Close</button> 1359 </div> 1360 </div> 1361 </div> 1362</div>
1363<script> 1364document.addEventListener('submit', function (e) { 1365 const form = e.target; 1366 if (!form.matches('#eNotifyModal form')) return; 1367 1368 e.preventDefault(); 1369 1370 const email = form.querySelector('[name="email"]').value.trim(); 1371 if (!email) return; 1372 1373 window.location.href = './enotify/index.php?email=' + encodeURIComponent(email) + '&successMessage=3#post'; 1374}); 1375</script>
1375 1376<div id="share-modal-section"> 1377 <div class="modal fade" id="shareModal" tabindex="-1" role="dialog" aria-labelledby="shareModal"> 1378 <div class="modal-dialog modal-dialog-centered" role="document"> 1379 <div class="modal-content"> 1380 <div class="modal-header border-0 bg-transparent pb-0 px-lg-4 pt-4"> 1381 <div class="w-100 text-center"> 1382 <span class="d-block h5 mb-1 w-100">Share this page</span> 1383 <p class="mb-1">On your favorite social media platform</p> 1384 </div> 1385 <button type="button" class="btn-close position-absolute end-0 top-0 m-3" data-bs-dismiss="modal" aria-label="Close"></button> 1386 </div> 1387 <div class="modal-body p-lg-4"> 1388 <div class="share-btns row m-0 row-cols-md-3 gap-2"> 1389 <a href="#" class="btn btn-primary btn-facebook" target="_blank"> 1390 <i class="fa-brands fs-5 fa-square-facebook"></i> Facebook 1391 </a> 1392 1393 <a href="#" class="btn btn-primary btn-twitter" target="_blank"> 1394 <i class="fa-brands fs-5 fa-x-twitter"></i> x(twitter) 1395 </a> 1396 1397 <a href="#" class="btn btn-primary btn-linkedin" target="_blank"> 1398 <i class="fa-brands fs-5 fa-linkedin"></i> Linkedin 1399 </a> 1400 1401 <a href="#" class="btn btn-primary btn-reddit" target="_blank"> 1402 <i class="fa-brands fs-5 fa-square-reddit"></i> reddit 1403 </a> 1404 <div class="w-100 p-0 my-2"><div class="d-flex align-items-center"><div class="border-top flex-fill"></div><span class="bg-body px-3">Or</span><div class="border-top flex-fill"></div></div></div> 1405 1406 <a href="" class="btn btn-outline-dark w-100 border emailpage"><i class="fa-regular fs-5 fa-envelope"></i> Email Page Link</a> 1407 1408 <a href="" class="btn btn-outline-dark w-100 border share-copy-link"><i class="fa-regular fs-5 fa-copy"></i> Copy Current URL</a> 1409 1410 </div><!-- /.share-btns --> 1411 1412
1412<script> 1413 $(document).ready(function () { 1414 // Build social share URLs from current page 1415 var pageUrl = window.location.href; 1416 var encodedUrl = encodeURIComponent(pageUrl); 1417 1418 $('.btn-facebook').attr( 1419 'href', 1420 'https://www.facebook.com/sharer/sharer.php?u=' + encodedUrl 1421 ); 1422 1423 $('.btn-twitter').attr( 1424 'href', 1425 'https://twitter.com/intent/tweet?url=' + encodedUrl 1426 ); 1427 1428 $('.btn-linkedin').attr( 1429 'href', 1430 'https://www.linkedin.com/sharing/share-offsite/?url=' + encodedUrl 1431 ); 1432 1433 $('.btn-reddit').attr( 1434 'href', 1435 'https://www.reddit.com/submit?url=' + encodedUrl 1436 ); 1437 1438 // Copy to clipboard 1439 $('.share-copy-link').on('click', function (e) { 1440 e.preventDefault(); 1441 1442 var urlToCopy = $(this).attr('href') || $(this).data('url') || window.location.href; 1443 1444 if (navigator.clipboard && navigator.clipboard.writeText) { 1445 navigator.clipboard 1446 .writeText(urlToCopy) 1447 .then(function () { 1448 new bootstrap.Toast(document.getElementById('coppiedToast')).show(); 1449 }) 1450 .catch(function () { 1451 fallbackCopy(urlToCopy); 1452 }); 1453 } else { 1454 fallbackCopy(urlToCopy); 1455 } 1456 }); 1457 1458 function fallbackCopy(text) { 1459 var $tempInput = $('<input style="position:absolute;left:-9999px;">'); 1460 $('body').append($tempInput); 1461 $tempInput.val(text).select(); 1462 document.execCommand('copy'); 1463 $tempInput.remove(); 1464 new bootstrap.Toast(document.getElementById('coppiedToast')).show(); 1465 } 1466 1467 // Email page link 1468 $('.emailpage').on('click', function (e) { 1469 e.preventDefault(); 1470 1471 var pageUrl = window.location.href; 1472 var subject = encodeURIComponent('Check out this page'); 1473 var body = encodeURIComponent('Hey,\n\nI thought you might find this interesting:\n' + pageUrl); 1474 window.location.href = 'mailto:?subject=' + subject + '&body=' + body; 1475 }); 1476 }); 1477 </script>
1477 1478 1479 <div class="toast-container position-fixed top-0 start-50 translate-middle-x"> 1480 <div id="coppiedToast" class="toast align-items-center align-items-center text-bg-success border-0 border-0 fade" role="alert" aria-live="assertive" aria-atomic="true"> 1481 <div class="d-flex"> 1482 <div class="toast-body"> 1483 URL copied to clipboard! 1484 </div> 1485 <button type="button" class="btn-close btn-close-white me-2 m-auto" data-bs-dismiss="toast" aria-label="Close"></button> 1486 </div> 1487 </div> 1488 </div> 1489 1490 </div><!-- /.modal-body --> 1491 </div><!-- /.modal-content --> 1492 </div><!-- /.modal-dialog --> 1493 </div><!-- /.modal --> 1494</div><!-- /#modal-section --><link href="https://cdn.jsdelivr.net/gh/lipis/[email protected]/css/flag-icons.min.css" rel="stylesheet" type="text/css" /> 1495<div class="modal fade" id="translateModal" tabindex="-1" aria-hidden="true"> 1496 <div class="modal-dialog modal-sm modal-dialog-centered modal-dialog-scrollable"> 1497 <div class="modal-content"> 1498 <form role="search" aria-label="Search Languages" class="sticky-top bg-white m-0 align-self-center position-relative translate-search w-100 p-3 border-bottom"> 1499 <input type="search" placeholder="Search languages..." autocomplete="off" class="form-control" id="translatesearch-input"> 1500 <button aria-label="Search" tabindex="-1" class="btn btn-link position-absolute top-50 end-0 translate-middle-y gap-3 ps-0 pe-3 me-3 me-1 lh-1 d-flex align-items-center"> 1501 <label for="translatesearch-input"><span class="visually-hidden">Search</span><svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true" class="DocSearch-Search-Icon"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg></label> 1502 </button>
1503 </form> 1504 <div class="modal-body" style="max-height:300px"> 1505 <div class="lang-no-results text-center d-none text-muted small">No matching languages.</div> 1506 <div class="translation-links row row-cols-lg-1"> 1507 <div> 1508 <button class="btn btn-link text-body p-2 text-start w-100 English" data-lang="English" translate="no"> 1509 <span class="fi fi-us me-2"></span><strong>English</strong> 1510 </button> 1511 </div> 1512 <div> 1513 <button class="btn btn-link text-body p-2 text-start w-100 Afrikaans" data-lang="Afrikaans"> 1514 <span class="fi fi-za me-2"></span>Afrikaans 1515 </button> 1516 </div> 1517 <div> 1518 <button class="btn btn-link text-body p-2 text-start w-100 Albanian" data-lang="Albanian"> 1519 <span class="fi fi-al me-2"></span>Albanian 1520 </button> 1521 </div> 1522 <div> 1523 <button class="btn btn-link text-body p-2 text-start w-100 Arabic" data-lang="Arabic"> 1524 <span class="fi fi-sa me-2"></span>Arabic 1525 </button> 1526 </div> 1527 <div> 1528 <button class="btn btn-link text-body p-2 text-start w-100 Armenian" data-lang="Armenian"> 1529 <span class="fi fi-am me-2"></span>Armenian 1530 </button> 1531 </div> 1532 <div> 1533 <button class="btn btn-link text-body p-2 text-start w-100 Azerbaijani" data-lang="Azerbaijani"> 1534 <span class="fi fi-az me-2"></span>Azerbaijani 1535 </button> 1536 </div> 1537 <div> 1538 <button class="btn btn-link text-body p-2 text-start w-100 Basque" data-lang="Basque"> 1539 <span class="fi fi-es me-2"></span>Basque 1540 </button> 1541 </div> 1542 <div> 1543 <button class="btn btn-link text-body p-2 text-start w-100 Belarusian" data-lang="Belarusian"> 1544 <span class="fi fi-by me-2"></span>Belarusian 1545 </button> 1546 </div> 1547 <div> 1548 <button class="btn btn-link text-body p-2 text-start w-100 Bengali" data-lang="Bengali"> 1549 <span class="fi fi-bd me-2"></span>Bengali 1550 </button> 1551 </div> 1552 <div> 1553 <button class="btn btn-link text-body p-2 text-start w-100 Bosnian" data-lang="Bosnian"> 1554 <span class="fi fi-ba me-2"></span>Bosnian 1555 </button> 1556 </div> 1557 <div> 1558 <button class="btn btn-link text-body p-2 text-start w-100 Bulgarian" data-lang="Bulgarian"> 1559 <span class="fi fi-bg me-2"></span>Bulgarian 1560 </button> 1561 </div> 1562 <div> 1563 <button class="btn btn-link text-body p-2 text-start w-100 Catalan" data-lang="Catalan"> 1564 <span class="fi fi-ad me-2"></span>Catalan 1565 </button> 1566 </div> 1567 <div> 1568 <button class="btn btn-link text-body p-2 text-start w-100 Cebuano" data-lang="Cebuano"> 1569 <span class="fi fi-ph me-2"></span>Cebuano 1570 </button> 1571 </div> 1572 <div> 1573 <button class="btn btn-link text-body p-2 text-start w-100 Chinese" data-lang="Chinese (Simplified)"> 1574 <span class="fi fi-cn me-2"></span>Chinese (Simplified) 1575 </button> 1576 </div> 1577 <div> 1578 <button class="btn btn-link text-body p-2 text-start w-100 Chinese" data-lang="Chinese (Traditional)"> 1579 <span class="fi fi-tw me-2"></span>Chinese (Traditional) 1580 </button> 1581 </div> 1582 <div> 1583 <button class="btn btn-link text-body p-2 text-start w-100 Croatian" data-lang="Croatian"> 1584 <span class="fi fi-hr me-2"></span>Croatian 1585 </button> 1586 </div> 1587 <div> 1588 <button class="btn btn-link text-body p-2 text-start w-100 Czech" data-lang="Czech"> 1589 <span class="fi fi-cz me-2"></span>Czech 1590 </button> 1591 </div> 1592 <div> 1593 <button class="btn btn-link text-body p-2 text-start w-100 Danish" data-lang="Danish"> 1594 <span class="fi fi-dk me-2"></span>Danish 1595 </button> 1596 </div> 1597 <div> 1598 <button class="btn btn-link text-body p-2 text-start w-100 Dutch" data-lang="Dutch"> 1599 <span class="fi fi-nl me-2"></span>Dutch 1600 </button> 1601 </div> 1602 <div> 1603 <button class="btn btn-link text-body p-2 text-start w-100 Esperanto" data-lang="Esperanto"> 1604 <span class="fi fi-un me-2"></span>Esperanto 1605 </button> 1606 </div> 1607 <div> 1608 <button class="btn btn-link text-body p-2 text-start w-100
1608Estonian" data-lang="Estonian"> 1609 <span class="fi fi-ee me-2"></span>Estonian 1610 </button> 1611 </div> 1612 <div> 1613 <button class="btn btn-link text-body p-2 text-start w-100 Filipino" data-lang="Filipino"> 1614 <span class="fi fi-ph me-2"></span>Filipino 1615 </button> 1616 </div> 1617 <div> 1618 <button class="btn btn-link text-body p-2 text-start w-100 Finnish" data-lang="Finnish"> 1619 <span class="fi fi-fi me-2"></span>Finnish 1620 </button> 1621 </div> 1622 <div> 1623 <button class="btn btn-link text-body p-2 text-start w-100 French" data-lang="French"> 1624 <span class="fi fi-fr me-2"></span>French 1625 </button> 1626 </div> 1627 <div> 1628 <button class="btn btn-link text-body p-2 text-start w-100 Galician" data-lang="Galician"> 1629 <span class="fi fi-es me-2"></span>Galician 1630 </button> 1631 </div> 1632 <div> 1633 <button class="btn btn-link text-body p-2 text-start w-100 Georgian" data-lang="Georgian"> 1634 <span class="fi fi-ge me-2"></span>Georgian 1635 </button> 1636 </div> 1637 <div> 1638 <button class="btn btn-link text-body p-2 text-start w-100 German" data-lang="German"> 1639 <span class="fi fi-de me-2"></span>German 1640 </button> 1641 </div> 1642 <div> 1643 <button class="btn btn-link text-body p-2 text-start w-100 Greek" data-lang="Greek"> 1644 <span class="fi fi-gr me-2"></span>Greek 1645 </button> 1646 </div> 1647 <div> 1648 <button class="btn btn-link text-body p-2 text-start w-100 Gujarati" data-lang="Gujarati"> 1649 <span class="fi fi-in me-2"></span>Gujarati 1650 </button> 1651 </div> 1652 <div> 1653 <button class="btn btn-link text-body p-2 text-start w-100 Haitian" data-lang="Haitian Creole"> 1654 <span class="fi fi-ht me-2"></span>Haitian Creole 1655 </button> 1656 </div> 1657 <div> 1658 <button class="btn btn-link text-body p-2 text-start w-100 Hausa" data-lang="Hausa"> 1659 <span class="fi fi-ng me-2"></span>Hausa 1660 </button> 1661 </div> 1662 <div> 1663 <button class="btn btn-link text-body p-2 text-start w-100 Hebrew" data-lang="Hebrew"> 1664 <span class="fi fi-il me-2"></span>Hebrew 1665 </button> 1666 </div> 1667 <div> 1668 <button class="btn btn-link text-body p-2 text-start w-100 Hindi" data-lang="Hindi"> 1669 <span class="fi fi-in me-2"></span>Hindi 1670 </button> 1671 </div> 1672 <div> 1673 <button class="btn btn-link text-body p-2 text-start w-100 Hmong" data-lang="Hmong"> 1674 <span class="fi fi-cn me-2"></span>Hmong 1675 </button> 1676 </div> 1677 <div> 1678 <button class="btn btn-link text-body p-2 text-start w-100 Hungarian" data-lang="Hungarian"> 1679 <span class="fi fi-hu me-2"></span>Hungarian 1680 </button> 1681 </div> 1682 <div> 1683 <button class="btn btn-link text-body p-2 text-start w-100 Icelandic" data-lang="Icelandic"> 1684 <span class="fi fi-is me-2"></span>Icelandic 1685 </button> 1686 </div> 1687 <div> 1688 <button class="btn btn-link text-body p-2 text-start w-100 Igbo" data-lang="Igbo"> 1689 <span class="fi fi-ng me-2"></span>Igbo 1690 </button> 1691 </div> 1692 <div> 1693 <button class="btn btn-link text-body p-2 text-start w-100 Indonesian" data-lang="Indonesian"> 1694 <span class="fi fi-id me-2"></span>Indonesian 1695 </button> 1696 </div> 1697 <div> 1698 <button class="btn btn-link text-body p-2 text-start w-100 Irish" data-lang="Irish"> 1699 <span class="fi fi-ie me-2"></span>Irish 1700 </button> 1701 </div> 1702 <div> 1703 <button class="btn btn-link text-body p-2 text-start w-100 Italian" data-lang="Italian"> 1704 <span class="fi fi-it me-2"></span>Italian 1705 </button> 1706 </div> 1707 <div> 1708 <button class="btn btn-link text-body p-2 text-start w-100 Japanese" data-lang="Japanese"> 1709 <span class="fi fi-jp me-2"></span>Japanese 1710 </button> 1711 </div> 1712 <div> 1713 <button class="btn btn-link text-body p-2 text-start w-100 Javanese" data-lang="Javanese"> 1714 <span class="fi fi-id me-2"></span>Javanese 1715 </button> 1716 </div> 1717 <div> 1718 <button class="btn btn-link text-body p-2 text-start w-100 K
1718annada" data-lang="Kannada"> 1719 <span class="fi fi-in me-2"></span>Kannada 1720 </button> 1721 </div> 1722 <div> 1723 <button class="btn btn-link text-body p-2 text-start w-100 Khmer" data-lang="Khmer"> 1724 <span class="fi fi-kh me-2"></span>Khmer 1725 </button> 1726 </div> 1727 <div> 1728 <button class="btn btn-link text-body p-2 text-start w-100 Korean" data-lang="Korean"> 1729 <span class="fi fi-kr me-2"></span>Korean 1730 </button> 1731 </div> 1732 <div> 1733 <button class="btn btn-link text-body p-2 text-start w-100 Lao" data-lang="Lao"> 1734 <span class="fi fi-la me-2"></span>Lao 1735 </button> 1736 </div> 1737 <div> 1738 <button class="btn btn-link text-body p-2 text-start w-100 Latin" data-lang="Latin"> 1739 <span class="fi fi-va me-2"></span>Latin 1740 </button> 1741 </div> 1742 <div> 1743 <button class="btn btn-link text-body p-2 text-start w-100 Latvian" data-lang="Latvian"> 1744 <span class="fi fi-lv me-2"></span>Latvian 1745 </button> 1746 </div> 1747 <div> 1748 <button class="btn btn-link text-body p-2 text-start w-100 Lithuanian" data-lang="Lithuanian"> 1749 <span class="fi fi-lt me-2"></span>Lithuanian 1750 </button> 1751 </div> 1752 <div> 1753 <button class="btn btn-link text-body p-2 text-start w-100 Macedonian" data-lang="Macedonian"> 1754 <span class="fi fi-mk me-2"></span>Macedonian 1755 </button> 1756 </div> 1757 <div> 1758 <button class="btn btn-link text-body p-2 text-start w-100 Malay" data-lang="Malay"> 1759 <span class="fi fi-my me-2"></span>Malay 1760 </button> 1761 </div> 1762 <div> 1763 <button class="btn btn-link text-body p-2 text-start w-100 Maltese" data-lang="Maltese"> 1764 <span class="fi fi-mt me-2"></span>Maltese 1765 </button> 1766 </div> 1767 <div> 1768 <button class="btn btn-link text-body p-2 text-start w-100 Maori" data-lang="Maori"> 1769 <span class="fi fi-nz me-2"></span>Maori 1770 </button> 1771 </div> 1772 <div> 1773 <button class="btn btn-link text-body p-2 text-start w-100 Marathi" data-lang="Marathi"> 1774 <span class="fi fi-in me-2"></span>Marathi 1775 </button> 1776 </div> 1777 <div> 1778 <button class="btn btn-link text-body p-2 text-start w-100 Mongolian" data-lang="Mongolian"> 1779 <span class="fi fi-mn me-2"></span>Mongolian 1780 </button> 1781 </div> 1782 <div> 1783 <button class="btn btn-link text-body p-2 text-start w-100 Nepali" data-lang="Nepali"> 1784 <span class="fi fi-np me-2"></span>Nepali 1785 </button> 1786 </div> 1787 <div> 1788 <button class="btn btn-link text-body p-2 text-start w-100 Norwegian" data-lang="Norwegian"> 1789 <span class="fi fi-no me-2"></span>Norwegian 1790 </button> 1791 </div> 1792 <div> 1793 <button class="btn btn-link text-body p-2 text-start w-100 Persian" data-lang="Persian"> 1794 <span class="fi fi-ir me-2"></span>Persian 1795 </button> 1796 </div> 1797 <div> 1798 <button class="btn btn-link text-body p-2 text-start w-100 Polish" data-lang="Polish"> 1799 <span class="fi fi-pl me-2"></span>Polish 1800 </button> 1801 </div> 1802 <div> 1803 <button class="btn btn-link text-body p-2 text-start w-100 Portuguese" data-lang="Portuguese"> 1804 <span class="fi fi-pt me-2"></span>Portuguese 1805 </button> 1806 </div> 1807 <div> 1808 <button class="btn btn-link text-body p-2 text-start w-100 Punjabi" data-lang="Punjabi"> 1809 <span class="fi fi-in me-2"></span>Punjabi 1810 </button> 1811 </div> 1812 <div> 1813 <button class="btn btn-link text-body p-2 text-start w-100 Romanian" data-lang="Romanian"> 1814 <span class="fi fi-ro me-2"></span>Romanian 1815 </button> 1816 </div> 1817 <div> 1818 <button class="btn btn-link text-body p-2 text-start w-100 Russian" data-lang="Russian"> 1819 <span class="fi fi-ru me-2"></span>Russian 1820 </button> 1821 </div> 1822 <div> 1823 <button class="btn btn-link text-body p-2 text-start w-100 Serbian" data-lang="Serbian"> 1824 <span class="fi fi-rs me-2"></span>Serbian 1825 </button> 1826 </div> 1827 <div> 1828 <button class="btn btn-link text-body p-2 text-start w-100 Slovak" data-lang="Slovak"> 1829 <span class="fi fi-sk me-2"></span>Slovak 1830 </button> 1831 </div> 1832 <div> 1833 <button class="btn btn-link text-body p-2 text-start w-100 Slovenian" data-lang="Slovenian"> 1834 <span class="fi fi-si me-2"></span>Slovenian 1835 </button> 1836 </div> 1837 <div> 1838 <button class="btn btn-link text-body p-2 text-start w-100 Somali" data-lang="Somali"> 1839 <span class="fi fi-so me-2"></span>Somali 1840 </button> 1841 </div> 1842 <div> 1843 <button class="btn btn-link text-body p-2 text-start w-100 Spanish" data-lang="Spanish"> 1844 <span class="fi fi-es me-2"></span>Spanish 1845 </button> 1846 </div> 1847 <div> 1848 <button class="btn btn-link text-body p-2 text-start w-100 Swahili" data-lang="Swahili"> 1849 <span class="fi fi-ke me-2"></span>Swahili 1850 </button> 1851 </div> 1852 <div> 1853 <button class="btn btn-link text-body p-2 text-start w-100 Swedish" data-lang="Swedish"> 1854 <span class="fi fi-se me-2"></span>Swedish 1855 </button> 1856 </div> 1857 <div> 1858 <button class="btn btn-link text-body p-2 text-start w-100 Tamil" data-lang="Tamil"> 1859 <span class="fi fi-in me-2"></span>Tamil 1860 </button> 1861 </div> 1862 <div> 1863 <button class="btn btn-link text-body p-2 text-start w-100 Telugu" data-lang="Telugu"> 1864 <span class="fi fi-in me-2"></span>Telugu 1865 </button> 1866 </div> 1867 <div> 1868 <button class="btn btn-link text-body p-2 text-start w-100 Thai" data-lang="Thai"> 1869 <span class="fi fi-th me-2"></span>Thai 1870 </button> 1871 </div> 1872 <div> 1873 <button class="btn btn-link text-body p-2 text-start w-100 Turkish" data-lang="Turkish"> 1874 <span class="fi fi-tr me-2"></span>Turkish 1875 </button> 1876 </div> 1877 <div> 1878 <button class="btn btn-link text-body p-2 text-start w-100 Ukrainian" data-lang="Ukrainian"> 1879 <span class="fi fi-ua me-2"></span>Ukrainian 1880 </button> 1881 </div> 1882 <div> 1883 <button class="btn btn-link text-body p-2 text-start w-100 Urdu" data-lang="Urdu"> 1884 <span class="fi fi-pk me-2"></span>Urdu 1885 </button> 1886 </div> 1887 <div> 1888 <button class="btn btn-link text-body p-2 text-start w-100 Vietnamese" data-lang="Vietnamese"> 1889 <span class="fi fi-vn me-2"></span>Vietnamese 1890 </button> 1891 </div> 1892 <div> 1893 <button class="btn btn-link text-body p-2 text-start w-100 Welsh" data-lang="Welsh"> 1894 <span class="fi fi-gb me-2"></span>Welsh 1895 </button> 1896 </div> 1897 <div> 1898 <button class="btn btn-link text-body p-2 text-start w-100 Yoruba" data-lang="Yoruba"> 1899 <span class="fi fi-ng me-2"></span>Yoruba 1900 </button> 1901 </div> 1902 <div> 1903 <button class="btn btn-link text-body p-2 text-start w-100 Zulu" data-lang="Zulu"> 1904 <span class="fi fi-za me-2"></span>Zulu 1905 </button> 1906 </div> 1907 </div> 1908 </div> 1909 <div class="modal-footer p-2"> 1910 <div class="lang-search-status text-center small text-muted" aria-l
1910ive="polite" aria-atomic="true"></div> 1911 <button type="button" class="btn btn-sm btn-primary ms-auto" data-bs-dismiss="modal">Close</button> 1912 <button class="btn btn-link text-body p-2 text-start translate-reset" translate="no"> 1913 <i class="fa-solid fa-power-off" aria-hidden="true"></i> 1914 <span class="visually-hidden">Reset Translation</span> 1915 </button> 1916 </div> 1917 </div> 1918 </div> 1919</div> 1920<div id="google-translate" class="d-none"></div>
1921<script> 1922function googleTranslateElementInit() { 1923 new google.translate.TranslateElement( 1924 { pageLanguage: 'en', autoDisplay: false, layout: google.translate.TranslateElement.InlineLayout.SIMPLE }, 1925 'google-translate' 1926 ); 1927} 1928</script>
vendor: 2 bytes, line 1928
1928
1929<script> 1930var translateURL = "//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"; 1931$.getScript(translateURL); 1932 1933function clickLanguage(langText, maxTries, intervalMs) { 1934 langText = (langText || '').trim(); 1935 maxTries = maxTries || 30; 1936 intervalMs = intervalMs || 200; 1937 var tries = 0; 1938 var timer = setInterval(function () { 1939 var $frame = $("iframe.skiptranslate"); 1940 if ($frame.length) { 1941 var doc = $frame.contents(); 1942 var $target = doc.find('span.text').filter(function () { 1943 return $(this).text().trim() === langText; 1944 }).closest('a'); 1945 if (!$target.length) { 1946 $target = doc.find('span.text').filter(function () { 1947 return $(this).text().trim() === 'English'; 1948 }).closest('a'); 1949 } 1950 if ($target.length) { 1951 $target.get(0).click(); 1952 clearInterval(timer); 1953 return; 1954 } 1955 } 1956 tries++; 1957 if (tries >= maxTries) clearInterval(timer); 1958 }, intervalMs); 1959} 1960 1961function getCookie(cname) { 1962 let name = cname + "="; 1963 let ca = document.cookie.split(';'); 1964 for(let i = 0; i < ca.length; i++) { 1965 let c = ca[i]; 1966 while (c.charAt(0) == ' ') c = c.substring(1); 1967 if (c.indexOf(name) == 0) return c.substring(name.length, c.length); 1968 } 1969 return ""; 1970} 1971 1972function sanitizeFlag(code) { 1973 var v = (code || "").toLowerCase().trim(); 1974 if (!v || v === "undefined" || v === "null") return ""; 1975 if (!/^[a-z]{2}$/.test(v)) return ""; 1976 return v; 1977} 1978 1979function applyActiveFromCookie() { 1980 var code = sanitizeFlag(getCookie('lang')) || sanitizeFlag(getCookie('code')) || 'us'; 1981 var $btn = $('.translation-links button').filter(function(){ 1982 var dataCode = ($(this).data('code') || '').toString().toLowerCase(); 1983 if (dataCode && dataCode === code) return true; 1984 var cls = ($(this).find('span[class*="fi-"]').attr('class') || ''); 1985 var m = cls.match(/\bfi-([a-z]{2})\b/i); 1986 return m && m[1].toLowerCase() === code; 1987 }).first(); 1988 if (!$btn.length && code === 'us') $btn = $('.translation-links button[data-lang="English"]').first(); 1989 $('.translation-links button').removeClass('active'); 1990 if ($btn.length) $btn.addClass('active'); 1991} 1992 1993(function initSelectedFlag(){ 1994 var initialCode = sanitizeFlag(getCookie('lang')) || sanitizeFlag(getCookie('code')) || "us"; 1995 $('.selected-flag').attr('class', 'fi fi-' + initialCode + ' selected-flag'); 1996 $('.c-code').text(initialCode); 1997 applyActiveFromCookie(); 1998})(); 1999 2000$(".translation-links button").on("click", function () { 2001 var lang = $(this).data("lang"); 2002 $('.translation-links button').removeClass('active'); 2003 $(this).addClass('active'); 2004 clickLanguage(lang); 2005 var cCode = $(this).data('code'); 2006 if (!cCode) { 2007 var cls = $(this).find('span[class*="fi-"]').attr('class') || ''; 2008 var m = cls.match(/\bfi-([a-z]{2})\b/i); 2009 if (m) cCode = m[1].toLowerCase(); 2010 } 2011 if (!cCode) cCode = 'us'; 2012 $('.selected-flag').attr('class', 'fi fi-' + cCode + ' selected-flag'); 2013 $('.c-code').text(cCode); 2014 document.cookie = 'lang=' + cCode + '; path=/'; 2015 document.cookie = 'code=' + cCode + '; path=/'; 2016 return false; 2017}); 2018 2019var $translateReset = $(".translate-reset");
2020$translateReset.on("keydown click", function (e) { 2021 if (e.keyCode === 13 || e.type === "click") { 2022 clickLanguage('English'); 2023 $('.translation-links button').removeClass('active'); 2024 $('.translation-links button[data-lang="English"]').addClass('active'); 2025 $('.selected-flag').attr('class','fi fi-us selected-flag'); 2026 $('.c-code').text('us'); 2027 document.cookie = 'lang=us; path=/'; 2028 document.cookie = 'code=us; path=/'; 2029 } 2030}); 2031 2032(function($){ 2033 var $form = $('.translate-search'); 2034 var $input = $form.find('input[type="search"]'); 2035 var $list = $('.translation-links'); 2036 var $btns = $list.find('div'); 2037 var $empty = $('.lang-no-results'); 2038 var $status = $('.lang-search-status'); 2039 $form.on('submit', function(e){ e.preventDefault(); }); 2040 function norm(s){ 2041 return (s||'').toString().toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g,''); 2042 } 2043 $btns.each(function(){ 2044 var $b = $(this); 2045 var txt = $b.text().trim(); 2046 var lang = ($b.data('lang')||'')+''; 2047 $b.attr('data-search', norm(txt + ' ' + lang)); 2048 }); 2049 function updateStatus(visible, total){ 2050 if ($status.length) $status.text(visible + ' of ' + total + ' languages'); 2051 if ($empty.length) $empty.toggleClass('d-none', visible > 0); 2052 } 2053 var total = $btns.length; 2054 updateStatus(total, total); 2055 function filter(){ 2056 var q = norm($input.val()); 2057 if (!q){ 2058 $btns.removeClass('d-none'); 2059 updateStatus(total, total); 2060 return; 2061 } 2062 var visible = 0; 2063 $btns.each(function(){ 2064 var $b = $(this); 2065 var hay = $b.attr('data-search') || ''; 2066 var match = hay.indexOf(q) !== -1; 2067 $b.toggleClass('d-none', !match); 2068 if (match) visible++; 2069 }); 2070 $btns.filter('.d-none').attr('tabindex', -1); 2071 $btns.not('.d-none'); 2072 updateStatus(visible, total); 2073 } 2074 $input.on('input keyup', filter); 2075})(jQuery); 2076// ADA, Fix Google Translate Inputs 2077function fixGoogleTranslateInputs() { 2078 const inputs = [ 2079 { id: "goog-gt-votingInputSrcLang", label: "Source Language Input" }, 2080 { id: "goog-gt-votingInputTrgLang", label: "Target Language Input" }, 2081 { id: "goog-gt-votingInputSrcText", label: "Source Text Input" }, 2082 { id: "goog-gt-votingInputTrgText", label: "Target Text Input" }, 2083 { id: "goog-gt-votingInputVote", label: "Vote Input" }, 2084 ]; 2085 2086 let allLabelsSet = true; 2087 inputs.forEach((item) => { 2088 const input = document.getElementById(item.id); 2089 if (input) { 2090 input.setAttribute("aria-label", item.label); 2091 } else { 2092 allLabelsSet = false; 2093 } 2094 }); 2095 2096 if (allLabelsSet) { 2097 googleObserver.disconnect(); 2098 } 2099 } 2100 const googleObserver = new MutationObserver((mutationsList, observer) => { 2101 for (let mutation of mutationsList) { 2102 if (mutation.type === "childList") { 2103 fixGoogleTranslateInputs(); 2104 } 2105 } 2106 }); 2107 googleObserver.observe(document.body, { childList: true, subtree: true }); 2108 fixGoogleTranslateInputs(); 2109</script>
vendor: 2 bytes, line 2109
2109
2110<script> 2111// === prevent translation on certain elements === 2112var NO_TRANSLATE_SELECTORS = [ 2113 '.material-icons', 2114 '.main-logo', 2115 '.nav-label', 2116 '.mini-calendar', 2117 '.rz-address-wrapper', 2118 '[data-no-translate]', 2119 'a[href^="mailto:"]' 2120]; 2121 2122function applyNoTranslate() { 2123 try { 2124 NO_TRANSLATE_SELECTORS.forEach(function (sel) { 2125 var $els = $(sel); 2126 if ($els.length) { 2127 $els 2128 .addClass('notranslate') 2129 .attr('translate', 'no') 2130 .attr('lang', $els.attr('lang') || 'en'); 2131 } 2132 }); 2133 } catch (e){ 2134 2135 } 2136} 2137 2138$(applyNoTranslate); 2139var noTranslateObserver = new MutationObserver(function () { 2140 applyNoTranslate(); 2141}); 2142noTranslateObserver.observe(document.documentElement, { childList: true, subtree: true }); 2143</script>
2143 2144<div class="offcanvas offcanvas-end offcanvas-business-item" tabindex="-1" id="catalogueDetails" aria-modal="true"> 2145 <div class="offcanvas-body p-0"> 2146 <div class="ratio ratio-16x9 mb-4 featured-image-wrap z-0" style="background-image: url('');"></div> 2147 <button type="button" class="btn-close m-3 me-4 p-2 position-absolute end-0 top-0 bg-white" data-bs-dismiss="offcanvas" aria-label="Close"></button> 2148 <h4 class="p-2 px-md-4 catalogue-title">Catalogue title</h4> 2149 <ul class="nav nav-underline justify-content-start border-bottom m-0 px-4" id="businessTabs" role="tablist"> 2150 <li class="nav-item m-0 " role="presentation"> 2151 <button class="nav-link py-2 active" id="home-tab" data-bs-toggle="tab" data-bs-target="#overview-tab-pane" type="button" role="tab" aria-controls="overview-tab-pane" aria-selected="true">Overview</button> 2152 </li> 2153 <li class="nav-item m-0" role="presentation"> 2154 <button class="nav-link py-2" id="profile-tab" data-bs-toggle="tab" data-bs-target="#about-tab-pane" type="button" role="tab" aria-controls="about-tab-pane" aria-selected="false" tabindex="-1">About</button> 2155 </li> 2156 <li class="nav-item m-0 d-none" role="presentation"> 2157 <button class="nav-link py-2" id="contact-tab" data-bs-toggle="tab" data-bs-target="#photos-tab-pane" type="button" role="tab" aria-controls="photos-tab-pane" aria-selected="false" tabindex="-1">Photos</button> 2158 </li> 2159 </ul> 2160 <div id="business-details"> 2161 <div class="tab-content" id="businessTabContent"> 2162 <div class="tab-pane p-4 fade active show" id="overview-tab-pane" role="tabpanel" tabindex="0"> 2163 <div class="row row-cols-3 row-cols-md-3 py-lg-3 px-2 catalogue-helpful-links"> 2164 <p class="d-flex flex-column text-center m-0"> 2165 <a href="" class="btn btn-link px-0 py-4 p-lg-4 d-flex flex-column text-decoration-none row g-4"><i class="m-0 bi bi-box-arrow-up-right lh-1 fs-2"></i><span>Website</span></a> 2166 </p> 2167 <p class="d-flex flex-column text-center m-0 catalogue-map-link"> 2168 <a href="" class="btn btn-link px-0 py-4 p-lg-4 d-flex flex-column text-decoration-none row g-4"><i class="m-0 bi bi-geo-alt lh-1 fs-2"></i><span>View Map</span></a> 2169 </p> 2170 <!-- <p class="d-flex flex-column text-center m-0"> 2171 <a href="" class="btn btn-link px-0 py-4 p-lg-4 d-flex flex-column text-decoration-none row g-4"><i class="m-0 bi bi-heart lh-1 fs-2"></i><span>Save</span></a> 2172 </p> --> 2173 <p class="d-flex flex-column text-center m-0"> 2174 <a href="" class="btn btn-link px-0 py-4 p-lg-4 d-flex flex-column text-decoration-none row g-4" data-bs-toggle="modal" data-bs-target="#shareModal"><i class="m-0 bi bi-share lh-1 fs-2"></i><span>Share</span></a> 2175 </p> 2176 </div><!-- /.d-flex --> 2177 <hr class="mt-0 mb-4"> 2178 <div class="row row-cols-1 row-cols-md-3 catalogue-contacts gap-md-3"> 2179 </div><!-- /.row --> 2180 <table class="table catalogue-hours"> 2181 <thead> 2182 <tr> 2183 <th scope="col" style="width:160px" class="ps-0 small text-muted">Days</th> 2184 <th scope="col" class="small text-muted">Hours</th> 2185 </tr> 2186 </thead> 2187 2188 <tbody class="table-group-divider"> 2189 <tr> 2190 <th scope="row" class="ps-0 text-nowrap">Sunday</th> 2191 <td></td> 2192 </tr> 2193 <tr> 2194 <th scope="row" class="ps-0 text-nowrap">Monday</th> 2195 <td></td> 2196 </tr> 2197 <tr> 2198 <th scope="row" class="ps-0 text-nowrap">Tuesday</th> 2199 <td></td> 2200 </tr> 2201 <tr> 2202 <th scope="row" class="ps-0 text-nowrap">Wednesday</th> 2203 <td></td> 2204 </tr> 2205 <tr> 2206 <th scope="row" class="ps-0 text-nowrap">Thursday</th> 2207 <td></td> 2208 </tr> 2209 <tr> 2210 <th scope="row" class="ps-0 text-nowrap">Friday</th> 2211 <td></td> 2212 </tr> 2213 <tr> 2214 <th scope="row" class="ps-0 text-nowrap">Saturday</th> 2215 <td></td> 2216 </tr> 2217 </tbody> 2218 </table> 2219 </div><!-- /.tab-pane --> 2220 <div class="tab-pane p-4 fade" id="about-tab-pane" role="tabpanel" tabindex="0"> 2221 </div><!-- /.tab-pane --> 2222 <div class="tab-pane p-4 fade" id="photos-tab-pane" role="tabpanel" tabindex="0"> 2223 <div class="alert alert-warning text-dark border-0 border-start border-warning rounded-0 show" style="border-width:5px!important">#todo masonry has to refresh after clicking photos tab</div> 2224 <div class="rz-gallery-wrap"> 2225
2226 <div id="businessDetailslightgallery" class="row row-cols-1 row-cols-md-2 row-cols-lg-3 g-2" data-masonry="{"percentPosition": true, "itemSelector": ".rz-gallery-image"}" style="position: relative; height: 0px;"> 2227 2228 <!-- <div data-src="_assets_/images/no-image-slider-2.jpg" class="rz-gallery-image" data-lg-size="3000-2000" style="position: absolute;"> 2229 <img src="_assets_/images/no-image-slider-2.jpg" class="w-100" alt=""> 2230 <span class="rz-zoom cursor-pointer z-index-1 bg-white fs-3 lh-1 p-4 rounded-circle"> 2231 <i class="bi bi-arrows-angle-expand lh-1"></i> 2232 </span> 2233 </div> 2234 2235 <div data-src="_assets_/images/no-image-slider.jpg" class="rz-gallery-image" data-lg-size="3000-2000" style="position: absolute;"> 2236 <img src="_assets_/images/no-image-slider.jpg" class="w-100" alt=""> 2237 <span class="rz-zoom cursor-pointer z-index-1 bg-white fs-3 lh-1 p-4 rounded-circle"> 2238 <i class="bi bi-arrows-angle-expand lh-1"></i> 2239 </span> 2240 </div> 2241 2242 <div data-src="_assets_/images/no-image-slider-2.jpg" class="rz-gallery-image" data-lg-size="3000-2000" style="position: absolute;"> 2243 <img src="_assets_/images/no-image-slider-2.jpg" class="w-100" alt=""> 2244 <span class="rz-zoom cursor-pointer z-index-1 bg-white fs-3 lh-1 p-4 rounded-circle"> 2245 <i class="bi bi-arrows-angle-expand lh-1"></i> 2246 </span> 2247 </div> 2248 2249 <div data-src="_assets_/images/no-image-slider-2.jpg" class="rz-gallery-image" data-lg-size="3000-2000" style="position: absolute;"> 2250 <img src="_assets_/images/no-image-slider-2.jpg" class="w-100" alt=""> 2251 <span class="rz-zoom cursor-pointer z-index-1 bg-white fs-3 lh-1 p-4 rounded-circle"> 2252 <i class="bi bi-arrows-angle-expand lh-1"></i> 2253 </span> 2254 </div> 2255 2256 <div data-src="_assets_/images/no-image-slider-2.jpg" class="rz-gallery-image" data-lg-size="3000-2000" style="position: absolute;"> 2257 <img src="_assets_/images/no-image-slider-2.jpg" class="w-100" alt=""> 2258 <span class="rz-zoom cursor-pointer z-index-1 bg-white fs-3 lh-1 p-4 rounded-circle"> 2259 <i class="bi bi-arrows-angle-expand lh-1"></i> 2260 </span> 2261 </div> --> 2262 2263 </div><!-- #lightgallery --> 2264 </div><!-- /.rz-gallery-wrap --> 2265 </div><!-- /.tab-pane --> 2266 </div><!-- /.tab-content --> 2267 </div><!-- /#business-details --> 2268 </div><!-- /.offcanvas-body --> 2269</div> 2270 2271
2272<script> 2273 2274var catalogueDetailsMap = { modal: null }; 2275var catalogueJSONData = null; 2276 2277if (typeof indexByIdOrRid !== 'function') { 2278 function indexByIdOrRid(data){ 2279 if (!data) return {}; 2280 if (!Array.isArray(data)) return data; 2281 return data.reduce((m, item) => { 2282 if (!item) return m; 2283 const key = item.rid ?? item.id; 2284 if (key != null) m[String(key)] = item; 2285 return m; 2286 }, {}); 2287 } 2288} 2289 2290function openCatalogueDetails(rid) { 2291 if (!catalogueDetailsMap.modal || !catalogueJSONData) return; 2292 2293 rid = String(rid); 2294 var cRecord = catalogueJSONData[rid]; 2295 if (!cRecord) return; 2296 2297 var m = catalogueDetailsMap; 2298 2299 var parsedOptions = cRecord.options; 2300 if (typeof parsedOptions === 'string') { 2301 try { parsedOptions = JSON.parse(parsedOptions); } catch(e){ parsedOptions = {}; } 2302 } 2303 parsedOptions = parsedOptions || {}; 2304 2305 var imgURL = (cRecord.image || '').trim(); 2306 if (imgURL && !imgURL.endsWith('/')) { 2307 m.img && m.img.classList.remove('d-none'); 2308 if (m.img) { 2309 m.img.style.backgroundImage = "url('" + imgURL + "')"; 2310 } 2311 } else { 2312 if (m.img) { 2313 m.img.style.backgroundImage = ''; 2314 m.img.classList.add('d-none'); 2315 } 2316 } 2317 2318 // Title 2319 if (m.title) { 2320 var rawTitle = cRecord.title || cRecord.name || ""; 2321 m.title.textContent = decodeHtmlEntities(rawTitle); 2322 } 2323 2324 if (m.helpful) { 2325 var links = m.helpful.querySelectorAll("a"); 2326 if (links.length) { 2327 var el = links[0]; 2328 var webUrl = (parsedOptions.website_url || "").trim(); 2329 var webText = (parsedOptions.website_text || "Visit Website").trim(); 2330 if (webUrl && webUrl !== "#") { 2331 el.href = webUrl; 2332 el.target = "_blank"; 2333 var span = el.querySelector("span"); 2334 if (span) span.innerText = webText; 2335 el.parentElement && el.parentElement.classList.remove("d-none"); 2336 } else { 2337 el.href = ""; 2338 el.parentElement && el.parentElement.classList.add("d-none"); 2339 } 2340 } 2341 } 2342 2343 if (m.maplink) { 2344 var mapAs = m.maplink.querySelectorAll("a"); 2345 if (mapAs.length) { 2346 var mapEl = mapAs[0]; 2347 var addr = (parsedOptions.val_address || "").trim(); 2348 if (addr) { 2349 var encoded = encodeURIComponent(addr).replace(/%20/g, "+"); 2350 mapEl.href = "https://www.google.com/maps/search/?api=1&query=" + encoded; 2351 mapEl.target = "_blank"; 2352 mapEl.parentElement && mapEl.parentElement.classList.remove('d-none'); 2353 } else { 2354 mapEl.href = ""; 2355 mapEl.parentElement && mapEl.parentElement.classList.add('d-none'); 2356 } 2357 } 2358 } 2359 2360 if (m.contacts) { 2361 m.contacts.innerHTML = ""; 2362 if (Array.isArray(parsedOptions.contacts)) {
2363 parsedOptions.contacts.forEach(function(contact) { 2364 var newAddress = document.createElement("address"); 2365 newAddress.innerHTML = '<strong class="small text-muted">' + (contact.val_header||'') + '</strong><br>'; 2366 2367 var inner = contact.val_text || ''; 2368 if (contact.val_href) { 2369 try { 2370 var href = contact.val_href; 2371 var isSelf = href.startsWith('tel:') || href.startsWith('mailto:') || href.startsWith(location.origin); 2372 inner = '<a href="'+href+'" target="'+(isSelf?'_self':'_blank')+'">'+ inner +'</a>'; 2373 } catch(e) { /* ignore bad href */ } 2374 } 2375 newAddress.innerHTML += inner; 2376 m.contacts.append(newAddress); 2377 }); 2378 } 2379 } 2380 2381 if (m.hours) { 2382 const table = m.hours; 2383 const dayKeys = [ 2384 'val_sunday','val_monday','val_tuesday','val_wednesday', 2385 'val_thursday','val_friday','val_saturday' 2386 ]; 2387 2388 const tds = Array.from(table.querySelectorAll('tbody td')); 2389 let hasAny = false; 2390 2391 tds.forEach((td, i) => { 2392 const val = parsedOptions.hours && parsedOptions.hours[dayKeys[i]]; 2393 const v = (val || '').trim(); 2394 td.textContent = v; 2395 if (v) hasAny = true; 2396 }); 2397 2398 table.classList.toggle('d-none', !hasAny); 2399 } 2400 2401 if (m.detail) { 2402 const pane = m.detail; 2403 const tabPane = pane.closest('.tab-pane'); 2404 const tabLink = tabPane ? document.querySelector(`[data-bs-target="#${tabPane.id}"]`) : null; 2405 2406 pane.innerHTML = "Loading..."; 2407 2408 fetch('catalogue/' + encodeURIComponent(rid) + '.php?display=json') 2409 .then(res => res.json()) 2410 .then(data => { 2411 const html = (data && data.details) ? data.details.trim() : ""; 2412 2413 pane.innerHTML = html || ""; 2414 2415 const isEmpty = !html; 2416 if (tabPane) tabPane.classList.toggle('d-none', isEmpty); 2417 if (tabLink) tabLink.classList.toggle('d-none', isEmpty); 2418 }) 2419 .catch(() => { 2420 pane.innerHTML = ""; 2421 if (tabPane) tabPane.classList.add('d-none'); 2422 if (tabLink) tabLink.classList.add('d-none'); 2423 }); 2424 } 2425 2426 // Gallery #TODO) 2427 if (m.gallery) m.gallery.innerHTML = ""; 2428 2429 try { 2430 bootstrap.Offcanvas.getOrCreateInstance(m.modal).show(); 2431 } catch(e) { 2432 console.error('Offcanvas show failed:', e); 2433 } 2434 2435 if (window.pushOcState) pushOcState('catalogueDetails', rid); 2436} 2437 2438document.addEventListener('DOMContentLoaded', function() { 2439 var modal = document.querySelector("#catalogueDetails"); 2440 if (!modal) return; 2441 2442 catalogueDetailsMap = { 2443 modal: modal, 2444 img: modal.querySelector(".featured-image-wrap"), 2445 title: modal.querySelector(".offcanvas-body .catalogue-title"), 2446 helpful: modal.querySelector(".catalogue-helpful-links"), 2447 maplink: modal.querySelector(".catalogue-map-link"), 2448 contacts: modal.querySelector(".catalogue-contacts"), 2449 hours: modal.querySelector(".catalogue-hours"), 2450 detail: modal.querySelector("#about-tab-pane"), 2451 gallery: modal.querySelector("#businessDetailslightgallery"), 2452 }; 2453 2454 fetch('_includes_/published/catalogue.json') 2455 .then(res => res.json()) 2456 .then(data => { catalogueJSONData = indexByIdOrRid(data); }) 2457 .then(() => { if (typeof tryDeepLinkNow === 'function') tryDeepLinkNow('catalogueDetails'); }) 2458 .catch((e) => { console.error('catalogue.json load failed', e); catalogueJSONData = {}; }); 2459}); 2460</script>
2460<div class="offcanvas offcanvas-bottom offcanvas-news-item mx-auto rounded-0 bg-body" tabindex="-1" id="newsDetails" style="--bs-offcanvas-height:95vh;"> 2461<div class="progress rounded-0" role="progressbar" aria-label="Scroll Progress" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100" style="height: 8px"> 2462 <div class="progress-bar bg-secondary"></div></div> 2463 2464 <div class="offcanvas-header border-bottom fw-bold"> 2465 Article Details 2466 <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button> 2467 </div> 2468 <div class="offcanvas-body pt-0"> 2469 <div class="container p-0"> 2470 <div class="col-lg-9 mx-auto"> 2471 2472 <div class="sticky-top"> 2473 <div class="d-flex small bg-body flex-wrap align-items-center py-3"> 2474 <div class="d-flex me-3"> 2475 <div class="d-flex post-info-wrap"> 2476 <p class="post-published m-0"> 2477 <span class="opacity-75">Published:</span> 2478 <time></time> <i class="bi bi-dot d-inline-block"></i> 2479 <span id="eta"></span> 2480 </p><!-- /.post-published --> 2481 </div><!-- /.post-info-wrap --> 2482 </div><!-- /.d-flex --> 2483 2484 <div class="post-btns-wrap ms-auto"> 2485 <button type="button" class="btn px-3 py-1 py-md-2 btn-outline-light d-flex gap-2 align-items-center" data-bs-toggle="modal" data-bs-target="#shareModal" aria-label="Share this post"> 2486 <i class="bi bi-share align-middle" aria-hidden="true"></i> 2487 <span class="visually-hidden">Share</span> 2488 </button> 2489 </div><!-- /.post-btns-wrap --> 2490 2491 </div><!-- /.d-flex --> 2492 </div><!-- /.sticky-top --> 2493 2494 <div class="featured-image-wrapper"></div> 2495 2496 <div class="p-lg-2 px-md-5"> 2497 <h3 class="mb-3 h3">Article Title</h3> 2498 <nav aria-label="breadcrumb" class="breadcrumb mb-3"> 2499 <ul> 2500 <li class="breadcrumb-item"><a href="./news">Articles</a> 2501 <li class="breadcrumb-item active text-truncate" aria-current="page"></li> 2502 </ul> 2503 </nav> 2504 <div id="news-full-details" class="article-full-details"></div><!-- /#post-details --> 2505 </div><!-- /.p-lg-2 --> 2506 </div><!-- /.col-lg-9 --> 2507 </div><!-- /.container --> 2508 </div><!-- /.offcanvas-body --> 2509</div><!-- /.offcanvas --> 2510
2511<script> 2512var newsDetailsMap = { modal: null }; 2513var newsJSONData = null; 2514 2515if (typeof indexByIdOrRid !== 'function') { 2516 function indexByIdOrRid(data){ 2517 if (!data) return {}; 2518 if (!Array.isArray(data)) return data; 2519 return data.reduce((m, item) => { 2520 if (!item) return m; 2521 const key = item.rid ?? item.id; 2522 if (key != null) m[String(key)] = item; 2523 return m; 2524 }, {}); 2525 } 2526} 2527 2528function hasImg(url) { 2529 if (!url) return false; 2530 var s = String(url).trim(); 2531 if (!s) return false; 2532 if (/^(null|undefined|none|n\/a)$/i.test(s)) return false; 2533 return true; 2534} 2535 2536/* global helper: decode ✨ & etc */ 2537window.decodeHtmlEntities = window.decodeHtmlEntities || function (str) { 2538 if (str == null) return ''; 2539 const ta = document.createElement('textarea'); 2540 ta.innerHTML = String(str); 2541 return ta.value; 2542}; 2543 2544function setFeaturedImage(url) { 2545 var m = newsDetailsMap; 2546 var modal = m.modal; 2547 if (!modal) return; 2548 2549 var wrap = modal.querySelector(".featured-image-wrapper"); 2550 if (!wrap) return; 2551 2552 if (hasImg(url)) { 2553 wrap.className = "featured-image-wrapper ratio ratio-16x9 mb-4 featured-image-wrap rounded"; 2554 wrap.style.backgroundImage = "url('" + url + "')"; 2555 m.img = wrap; 2556 } else { 2557 wrap.className = "featured-image-wrapper"; 2558 wrap.style.backgroundImage = ""; 2559 m.img = null; 2560 } 2561} 2562 2563function openNewsDetails(rid) {
2564 if (!newsDetailsMap.modal || !newsJSONData) return; 2565 2566 rid = String(rid); 2567 var cRecord = newsJSONData[rid]; 2568 if (!cRecord) return; 2569 2570 var m = newsDetailsMap; 2571 2572 setFeaturedImage(cRecord.image); 2573 2574 const titleDecoded = decodeHtmlEntities(cRecord.title || ""); 2575 2576 m.title.textContent = titleDecoded; 2577 m.date.textContent = cRecord.date || cRecord.posted || ""; 2578 m.breadcrumb.textContent = titleDecoded; 2579 2580 m.detail.innerHTML = "Loading..."; 2581 fetch('articles/' + encodeURIComponent(rid) + '.php?display=json') 2582 .then(res => res.json()) 2583 .then(newsData => { m.detail.innerHTML = newsData.details || ""; }) 2584 .catch(() => { m.detail.innerHTML = ""; }); 2585 2586 try { 2587 bootstrap.Offcanvas.getOrCreateInstance(m.modal).show(); 2588 } catch(e) { 2589 console.error('Offcanvas show failed:', e); 2590 } 2591 2592 if (window.pushOcState) pushOcState('newsDetails', rid); 2593} 2594 2595document.addEventListener('DOMContentLoaded', function() { 2596 var modal = document.querySelector("#newsDetails"); 2597 if (!modal) return; 2598 2599 newsDetailsMap = { 2600 modal: modal, 2601 img: modal.querySelector(".featured-image-wrapper"), 2602 title: modal.querySelector("h3.h3"), 2603 date: modal.querySelector(".post-published>time"), 2604 breadcrumb: modal.querySelector(".breadcrumb-item.active"), 2605 detail: modal.querySelector("#news-full-details") 2606 }; 2607 2608 // Scroll progress bar 2609 var scrollTarget = modal.querySelector('.offcanvas-body'); 2610 var progressBar = modal.querySelector('.progress-bar'); 2611 var progressOuter = modal.querySelector('.progress[role="progressbar"]'); 2612 2613 function updateScrollProgress() { 2614 if (!scrollTarget || !progressBar) return; 2615 2616 var maxScroll = scrollTarget.scrollHeight - scrollTarget.clientHeight; 2617 var current = scrollTarget.scrollTop || 0; 2618 2619 var pct = 0; 2620 if (maxScroll > 0) { 2621 pct = (current / maxScroll) * 100; 2622 } 2623 pct = Math.min(Math.max(pct, 0), 100); 2624 2625 progressBar.style.width = pct + '%'; 2626 if (progressOuter) { 2627 progressOuter.setAttribute('aria-valuenow', Math.round(pct)); 2628 } 2629 } 2630 2631 if (scrollTarget && progressBar) { 2632 scrollTarget.addEventListener('scroll', updateScrollProgress, { passive: true }); 2633 2634 modal.addEventListener('show.bs.offcanvas', function () { 2635 if (!scrollTarget) return; 2636 scrollTarget.scrollTop = 0; 2637 updateScrollProgress(); 2638 }); 2639 2640 updateScrollProgress(); 2641 } 2642 2643 fetch('_includes_/published/news_list.json') 2644 .then(res => res.json()) 2645 .then(data => { newsJSONData = indexByIdOrRid(data); }) 2646 .then(() => { if (typeof tryDeepLinkNow === 'function') tryDeepLinkNow('newsDetails'); }) 2647 .catch((e) => { console.error('news_list.json load failed', e); newsJSONData = {}; }); 2648}); 2649</script>
2649<div class="offcanvas offcanvas-end offcanvas-job-item" 2650 tabindex="-1" 2651 id="jobDetails"> 2652 <div class="offcanvas-header bg-light p-4 px-lg-5"> 2653 <h3 class="offcanvas-title fs-4">Job post</h3> 2654 <button type="button" 2655 class="btn-close" 2656 data-bs-dismiss="offcanvas" 2657 aria-label="Close"></button> 2658 </div> 2659 <div class="offcanvas-body p-0"> 2660 2661 <div class="p-4 p-lg-5"> 2662 <div class="d-flex align-items-center justify-content-between"> 2663 <div> 2664 <p class="h3 m-0 fs-3 d-flex flex-column"> 2665 <small class="fs-6 text-muted fw-bold">Position</small> 2666 </p> 2667 <h4 class="job-position">Job Position</h4> 2668 </div> 2669 <span class="btn btn-link btn-lg ms-auto d-none" 2670 id="saveItemBtn" 2671 tabindex="0"> 2672 <i class="bi bi-heart text-danger ms-auto cursor-pointer"></i> 2673 </span> 2674 <span class="btn btn-link btn-lg p-0" 2675 data-bs-toggle="modal" 2676 data-bs-target="#shareModal" 2677 tabindex="0"> 2678 <i class="bi bi-share text-body"></i> 2679 </span> 2680 </div> 2681 </div><!-- /.p-4 --> 2682 2683 <div class="job-details"> 2684 <div class="bg-light p-4 p-lg-5"> 2685 <div class="row row-cols-1 row-cols-sm-2 g-2 attribute-callouts"></div> 2686 2687 <a href="#" 2688 class="btn btn-primary mt-lg-4 apply-link"> 2689 Apply Now<i class="bi bi-box-arrow-up-right ms-2"></i> 2690 </a> 2691 </div><!-- /.bg-light --> 2692 2693 <div class="bg-white p-4 p-lg-5"> 2694 <!-- <p class="small bg-success-subtle text-success-emphasis p-1 px-2 mb-2 rounded-pill d-inline-flex"> 2695 <small><i class="bi bi-exclamation-circle"></i> Urgent Hire</small> 2696 </p> --> 2697 <p class="fs-4"></p> 2698 <div class="job-full-details"></div> 2699 </div><!-- /.bg-white --> 2700 </div><!-- /#job-details --> 2701 </div><!-- /.offcanvas-body --> 2702</div><!-- /.offcanvas --> 2703 2704<div class="toast align-items-center text-bg-success border-0 position-fixed bottom-0 end-0 m-4" 2705 id="savedItem" 2706 role="alert" 2707 aria-live="assertive" 2708 aria-atomic="true"> 2709 <div class="d-flex"> 2710 <div class="toast-body"> 2711 Added to your favorites! 2712 <a href="" class="text-light">See all here</a> 2713 </div> 2714 <button type="button" 2715 class="btn-close btn-close-white me-2 m-auto" 2716 data-bs-dismiss="toast" 2717 aria-label="Close"></button> 2718 </div> 2719</div><!-- /.toast --> 2720
2721<script> 2722var jobDetailsMap = { modal: null }; 2723var jobJSONData = null; 2724 2725if (typeof indexByIdOrRid !== 'function') { 2726 function indexByIdOrRid(data){ 2727 if (!data) return {}; 2728 if (!Array.isArray(data)) return data; 2729 return data.reduce((m, item) => { 2730 if (!item) return m; 2731 const key = item.rid ?? item.id; 2732 if (key != null) m[String(key)] = item; 2733 return m; 2734 }, {}); 2735 } 2736} 2737 2738function openJobDetails(rid) { 2739 if (!jobDetailsMap.modal || !jobJSONData) return; 2740 2741 rid = String(rid); 2742 var cRecord = jobJSONData[rid]; 2743 if (!cRecord) return; 2744 2745 var m = jobDetailsMap; 2746 var parsedOptions = cRecord.options || {}; 2747 2748 if (m.titleB) m.titleB.textContent = decodeHtmlEntities(cRecord.title || ""); 2749 2750 if (m.callouts) { 2751 m.callouts.innerHTML = ""; 2752 if (Array.isArray(parsedOptions.attributes)) { 2753 parsedOptions.attributes.forEach(function(attr) { 2754 var header = attr.val_header || ""; 2755 var text = attr.val_text || ""; 2756 var icon = parseIconClass(attr.val_icon) || { class: "bi bi-info-circle", ligature: "" }; 2757 var wrap = document.createElement("div"); 2758 wrap.innerHTML = ` 2759 <p class="d-flex gap-3 align-items-center my-2 my-lg-3"> 2760 <i class="${icon.class} flex-shrink-0 d-flex align-items-center justify-content-center text-primary bg-white rounded-circle w-h-48 fs-5">${icon.ligature}</i> 2761 <span><strong class="small text-muted lh-1">${header}</strong><br>${text}</span> 2762 </p>`; 2763 m.callouts.append(wrap.firstElementChild); 2764 }); 2765 } 2766 2767 var posted = cRecord.posted || ""; 2768 if (posted) { 2769 var pWrap = document.createElement('div'); 2770 pWrap.innerHTML = ` 2771 <p class="d-flex gap-3 align-items-center"> 2772 <i class="bi bi-clock flex-shrink-0 d-flex align-items-center justify-content-center text-primary bg-white rounded-circle w-h-48 fs-5"></i> 2773 <span><strong class="small text-muted lh-1">Posted</strong><br>${posted}</span> 2774 </p>`; 2775 m.callouts.append(pWrap.firstElementChild); 2776 } 2777 } 2778 2779 if (m.apply) { 2780 var btnURL = (parsedOptions.website_url || "").trim(); 2781 var btnText = (parsedOptions.website_text || "Learn More").trim(); 2782 2783 if (btnURL && btnURL !== "#") { 2784 m.apply.classList.remove("d-none"); 2785 m.apply.setAttribute("href", btnURL); 2786 m.apply.setAttribute("target", "_blank"); 2787 m.apply.innerHTML = btnText + '<i class="bi bi-box-arrow-up-right ms-2"></i>'; 2788 } else { 2789 m.apply.classList.add("d-none"); 2790 m.apply.setAttribute("href", "#"); 2791 } 2792 } 2793 2794 if (m.detail) { 2795 const pane = m.detail; 2796 const tabPane = pane.closest('.tab-pane'); 2797 const tabLink = tabPane ? document.querySelector(`[data-bs-target="#${tabPane.id}"]`) : null; 2798 2799 pane.innerHTML = "Loading..."; 2800 2801 fetch('jobs/' + encodeURIComponent(rid) + '.php?display=json') 2802 .then(res => res.json()) 2803 .then(data => { 2804 const html = (data && data.details) ? data.details.trim() : ""; 2805 2806 pane.innerHTML = html || ""; 2807 2808 const isEmpty = !html; 2809 if (tabPane) tabPane.classList.toggle('d-none', isEmpty); 2810 if (tabLink) tabLink.classList.toggle('d-none', isEmpty); 2811 }) 2812 .catch(() => { 2813 pane.innerHTML = ""; 2814 if (tabPane) tabPane.classList.add('d-none'); 2815 if (tabLink) tabLink.classList.add('d-none'); 2816 }); 2817 } 2818 2819 try { 2820 bootstrap.Offcanvas.getOrCreateInstance(m.modal).show(); 2821 } catch(e) { 2822 console.error('Offcanvas show failed:', e); 2823 } 2824 2825 if (window.pushOcState) pushOcState('jobDetails', rid); 2826} 2827 2828document.addEventListener('DOMContentLoaded', function() { 2829 var modal = document.querySelector("#jobDetails"); 2830 if (!modal) return; 2831 2832 jobDetailsMap = { 2833 modal: modal, 2834 titleB: modal.querySelector(".job-position"), 2835 callouts: modal.querySelector(".attribute-callouts"), 2836 detail: modal.querySelector(".job-full-details"), 2837 apply: modal.querySelector(".apply-link") 2838 }; 2839 2840 fetch('_includes_/published/job_list.json') 2841 .then(res => res.json()) 2842 .then(data => { jobJSONData = indexByIdOrRid(data); }) 2843 .then(() => { if (typeof tryDeepLinkNow === 'function') tryDeepLinkNow('jobDetails'); }) 2844 .catch((e) => { console.error('job_list.json load failed', e); jobJSONData = {}; }); 2845}); 2846 2847</script>
2847 2848<div class="offcanvas offcanvas-end offcanvas-bid-item" 2849 tabindex="-1" 2850 id="bidDetails"> 2851 <div class="offcanvas-header bg-light p-4 px-lg-5"> 2852 <h3 class="offcanvas-title fs-4">Bid details</h3> 2853 <button type="button" 2854 class="btn-close" 2855 data-bs-dismiss="offcanvas" 2856 aria-label="Close"></button> 2857 </div> 2858 <div class="offcanvas-body p-0"> 2859 2860 <div class="p-4 p-lg-5"> 2861 <div class="d-flex align-items-center justify-content-between"> 2862 <div> 2863 <p class="mb-2"> 2864 <span class="small">Status:</span> <span class="badge bid-status d-none d-inline-flex"></span> 2865 </p> 2866 <h4 class="bid-title">Bid Title</h4> 2867 </div> 2868 <span class="btn btn-link btn-lg p-0" 2869 data-bs-toggle="modal" 2870 data-bs-target="#shareModal" 2871 tabindex="0"> 2872 <i class="bi bi-share text-body"></i> 2873 </span> 2874 </div> 2875 </div> 2876 2877 <div class="bid-details"> 2878 <div class="bg-light p-4 p-lg-5"> 2879 <div class="row row-cols-1 row-cols-sm-2 g-2 start-end-dates"> 2880 <p class="d-flex gap-3 align-items-center my-2 my-lg-3 bid-start-wrap"> 2881 <i class="bi bi-check2 flex-shrink-0 d-flex align-items-center justify-content-center text-success bg-white rounded-circle w-h-48 fs-4"></i> 2882 <span> 2883 <strong class="small text-muted lh-1">Start date</strong><br> 2884 Start: <span class="bid-start-date"></span> 2885 </span> 2886 </p> 2887 2888 <p class="d-flex gap-3 align-items-center my-2 my-lg-3 bid-end-wrap"> 2889 <i class="bi bi-x-lg flex-shrink-0 d-flex align-items-center justify-content-center text-danger bg-white rounded-circle w-h-48 fs-5"></i> 2890 <span> 2891 <strong class="small text-muted lh-1">End date</strong><br> 2892 End: <span class="bid-end-date"></span> 2893 </span> 2894 </p> 2895 </div> 2896 <a href="#" 2897 class="btn btn-primary mt-3 mt-lg-4 apply-link"> 2898 Apply Now<i class="bi bi-box-arrow-up-right ms-2"></i> 2899 </a> 2900 </div> 2901 2902 <div class="bg-white p-4 p-lg-5"> 2903 <p class="fs-4"></p> 2904 <div class="bid-full-details"></div> 2905 </div> 2906 </div> 2907 </div> 2908</div> 2909
2910<script> 2911var bidDetailsMap = { modal: null }; 2912var bidJSONData = null; 2913 2914if (typeof indexByIdOrRid !== 'function') { 2915 function indexByIdOrRid(data){ 2916 if (!data) return {}; 2917 if (!Array.isArray(data)) return data; 2918 return data.reduce((m, item) => { 2919 if (!item) return m; 2920 const key = item.rid ?? item.id; 2921 if (key != null) m[String(key)] = item; 2922 return m; 2923 }, {}); 2924 } 2925} 2926 2927function fmtDate(iso) { 2928 if (!iso) return ""; 2929 var s = String(iso).trim(); 2930 if (!s) return ""; 2931 var d = new Date(s.slice(0, 10) + "T00:00:00"); 2932 if (Number.isNaN(d.getTime())) return s; 2933 return d.toLocaleDateString(undefined, { year: "numeric", month: "short", day: "numeric" }); 2934} 2935 2936function statusClass(status) { 2937 var s = String(status || "").trim().toLowerCase(); 2938 if (s === "open") return "text-bg-success"; 2939 if (s === "closed") return "text-bg-danger"; 2940 if (s === "awarded") return "text-bg-primary"; 2941 if (s === "canceled" || s === "cancelled") return "text-bg-dark"; 2942 if (s === "pending") return "text-bg-secondary"; 2943 return "text-bg-secondary"; 2944} 2945 2946function openBidDetails(rid) { 2947 if (!bidDetailsMap.modal || !bidJSONData) return false; 2948 2949 rid = String(rid); 2950 var cRecord = bidJSONData[rid]; 2951 if (!cRecord) return false; 2952 2953 var m = bidDetailsMap; 2954 var parsedOptions = cRecord.options || {}; 2955 2956 if (m.titleB) m.titleB.textContent = cRecord.title || ""; 2957 2958 // STATUS 2959 if (m.statusEl) { 2960 var status = (parsedOptions.val_status || "").trim(); 2961 if (status) { 2962 m.statusEl.className = "small px-2 py-1 rounded-1 bid-status " + statusClass(status); 2963 m.statusEl.textContent = status; 2964 m.statusEl.classList.remove("d-none"); 2965 } else { 2966 m.statusEl.classList.add("d-none"); 2967 m.statusEl.textContent = ""; 2968 } 2969 } 2970 2971 // DATES (Start/End) 2972 var sd = fmtDate(parsedOptions.start_date || parsedOptions.startDate); 2973 var ed = fmtDate(parsedOptions.end_date || parsedOptions.endDate); 2974 2975 if (m.startWrap && m.startEl) { 2976 if (sd) { 2977 m.startEl.textContent = sd; 2978 m.startWrap.classList.remove("d-none"); 2979 } else { 2980 m.startEl.textContent = ""; 2981 m.startWrap.classList.add("d-none"); 2982 } 2983 } 2984 2985 if (m.endWrap && m.endEl) { 2986 if (ed) { 2987 m.endEl.textContent = ed; 2988 m.endWrap.classList.remove("d-none"); 2989 } else { 2990 m.endEl.textContent = ""; 2991 m.endWrap.classList.add("d-none"); 2992 } 2993 } 2994 2995 if (m.apply) { 2996 var btnURL = (parsedOptions.website_url || "").trim(); 2997 var btnText = (parsedOptions.website_text || "Learn More").trim(); 2998 2999 if (btnURL && btnURL !== "#") { 3000 m.apply.classList.remove("d-none"); 3001 m.apply.setAttribute("href", btnURL); 3002 m.apply.setAttribute("target", "_blank"); 3003 m.apply.innerHTML = btnText + '<i class="bi bi-box-arrow-up-right ms-2"></i>'; 3004 } else { 3005 m.apply.classList.add("d-none"); 3006 m.apply.setAttribute("href", "#"); 3007 } 3008 } 3009 3010 if (m.detail) { 3011 var pane = m.detail; 3012 pane.innerHTML = "Loading..."; 3013 3014 fetch('bids/' + encodeURIComponent(rid) + '.php?display=json') 3015 .then(function(res){ return res.json(); }) 3016 .then(function(data){ 3017 var html = (data && data.details) ? String(data.details).trim() : ""; 3018 pane.innerHTML = html || ""; 3019 }) 3020 .catch(function(){ 3021 pane.innerHTML = ""; 3022 }); 3023 } 3024 3025 try { 3026 bootstrap.Offcanvas.getOrCreateInstance(m.modal).show(); 3027 } catch(e) { 3028 console.error('Offcanvas show failed:', e); 3029 } 3030 3031 if (window.pushOcState) pushOcState('bidDetails', rid); 3032 3033 return false; 3034} 3035 3036document.addEventListener('DOMContentLoaded', function() { 3037 var modal = document.querySelector("#bidDetails"); 3038 if (!modal) return; 3039 3040 bidDetailsMap = { 3041 modal: modal, 3042 titleB: modal.querySelector(".bid-title"), 3043 statusEl: modal.querySelector(".bid-status"), 3044 startWrap: modal.querySelector(".bid-start-wrap"), 3045 endWrap: modal.querySelector(".bid-end-wrap"), 3046 startEl: modal.querySelector(".bid-start-date"), 3047 endEl: modal.querySelector(".bid-end-date"), 3048 detail: modal.querySelector(".bid-full-details"), 3049 apply: modal.querySelector(".apply-link") 3050 }; 3051 3052 fetch('_includes_/published/bids_list.json') 3053 .then(function(res){ return res.json(); }) 3054 .then(function(data){ bidJSONData = indexByIdOrRid(data); }) 3055 .then(function(){ if (typeof tryDeepLinkNow === 'function') tryDeepLinkNow('bidDetails'); }) 3056 .catch(function(e){
3057 console.error('bids_list.json load failed', e); 3058 bidJSONData = {}; 3059 }); 3060}); 3061</script>
3061 3062 <div class="rz-brand-footer bg-black small text-white py-3 py-lg-2"> 3063 <div class="container-fluid small"> 3064 <div class="d-lg-flex align-items-center"> 3065 <div class="col w-100 d-flex flex-lg-row flex-column gap-2 mb-lg-0 mb-3 p-0"> 3066 <span class="footer-copyright">© 2026 Iowa Northland Regional Council of Government</span> 3067 <a class="text-white f-accessibility_statement" href="accessibility_statement/index.php">Accessibility Statement</a> 3068 <a class="text-white f-privacy_policy" href="privacy_policy/index.php">Privacy Policy</a> 3069 <a class="text-white f-terms_and_conditions" href="terms_and_conditions/index.php">Terms and Conditions</a> 3070 <a class="text-white f-cookie_policy" href="cookie_policy/index.php">Cookie Policy</a> 3071 </div><!-- /.col --> 3072 <div class="text-lg-end align-items-center d-xl-flex gap-1 justify-content-start justify-content-lg-end f-powered-by"> 3073 Designed & Powered by <a href="https://www.revize.com/" target="_blank" class="text-white">revize.</a>,<br class="d-xl-none"> the Government Website Experts <i class="bi bi-dot"></i> <a href="https://builder1.revize.com/revize/security/index.jsp?webspace=inrcog&filename=/news/index.php" class="btn btn-primary btn-primary-rz btn-sm rounded-1">Staff Login</a> 3074 </div> 3075 </div><!-- /.d-lg-flex --> 3076 </div><!-- /.container-fluid --> 3077 </div> 3078
3078<script src="/revize/plugins/revize_calendar/index.v2.js"></script>
3078 3079
3079<script src="/revize/plugins/zbuilder/v1/website/_assets_/js/scripts.js"></script>
vendor: 81 bytes, lines 3079-3081
3079 3080 <script src="https://www.google.com/recaptcha/api.js" async defer></script> 3081
3081<script src="/revize/plugins/page_builder/formwizard.form_validation_include.js"></script>
3081 3082
3082<script> 3083const interval = setInterval(function() { 3084document.querySelectorAll('.rz-element.rz-card-wrap').forEach(cardWrap => { 3085 const category = cardWrap.getAttribute('data-category'); // Get the data-category 3086 const imgWrap = cardWrap.querySelector('.rz-card-img-wrap'); // Find the image wrapper 3087 3088 if (category && imgWrap) { 3089 const categoryDiv = document.createElement('div'); // Create new div 3090 categoryDiv.className = 'cateName'; // Give it the class .cateName 3091 categoryDiv.textContent = category; // Set the text to the category 3092 imgWrap.appendChild(categoryDiv); // Append it inside .rz-card-img-wrap 3093 } 3094}); 3095 $('.rz-business-directory-card').each(function () 3096 { 3097 if ($(this).children('.card-contact-list').length === 0) 3098 { 3099 $(this).append('<div class="card-contact-list"></div>'); 3100 } 3101 }); 3102 3103 document.querySelectorAll('.rz-business-directory-card').forEach(card => { 3104 const rightBx = card.querySelector('.card-contact-list'); 3105 if (rightBx) { 3106 const elementsToMove = card.querySelectorAll('.rz-card-address, .catalogues_contacts, a.rz-card-btn'); 3107 elementsToMove.forEach(el => { 3108 rightBx.appendChild(el); }); 3109 } clearInterval(interval); }); 3110},300); 3111 3112$('.card-contact-list .rz-card-actions button') 3113 .detach() 3114 .appendTo('.catalogues_contacts'); 3115 3116var qlItems = $('.homepage-quick-links #tns2-mw .tiny-carousel .rz-qlink-wrap'); 3117 for(var i = 0; i < qlItems.length; i+=2) { 3118 qlItems.slice(i, i+2).wrapAll('<div class="tns-item"></div>'); 3119} 3120$(document).ready(function() { 3121 var breadcrumb = $('.rz-slider-caption-title .breadcrumb').detach(); 3122 $('.post-content .container').prepend(breadcrumb); 3123}); 3124</script>
3124 3125</div><!-- /.rz-site-wrap --> 3126</body> 3127</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.