1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <base href="https://www.wvc-ut.gov/" /> 5 <meta charset="utf-8"> 6 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 7 <meta name="viewport" content="width=device-width, initial-scale=1"><!-- Metadata Area Starts --> <title>West Valley City, UT</title> 8 <meta property="og:title" content="West Valley City, UT" /> 9 <meta property="og:image" content="https://www.wvc-ut.gov/website_assets/logo.png?t=202606190933170" /> 10 11 12<link href="/revize/plugins/setup/css/revize.css" rel="stylesheet" type="text/css" /> 13 14 15
16<script type="text/javascript"> 17 18 19 20</script>
20 21 22 23 24 25<!-- #jquery --> 26
26<script src="/revize/plugins/zbuilder/v1/website/_assets_/plugins/jquery/jquery.min.js"></script>
26 27 28<!-- #jquery lazy --> 29
29<script src="/revize/plugins/zbuilder/v1/website/_assets_/plugins/jquery.lazy-master/jquery.lazy.min.js"></script>
29 30 31<!-- #masonry scripts --> 32
32<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/masonry.pkgd.min.js" crossorigin="anonymous"></script>
32 33
33<script src="https://code.jquery.com/ui/1.14.0/jquery-ui.js"></script>
33 34 35<!-- #lightGallery scripts --> 36
36<script src="/revize/plugins/zbuilder/v1/website/_assets_/plugins/lightGallery-master/dist/lightgallery.min.js"></script>
36 37 38<!-- lightgallery plugins --> 39
39<script src="/revize/plugins/zbuilder/v1/website/_assets_/plugins/lightGallery-master/dist/plugins/thumbnail/lg-thumbnail.umd.js"></script>
39 40
40<script src="/revize/plugins/zbuilder/v1/website/_assets_/plugins/lightGallery-master/dist/plugins/zoom/lg-zoom.umd.js"></script>
40 41
41<script src="/revize/plugins/zbuilder/v1/website/_assets_/plugins/lightGallery-master/dist/plugins/video/lg-video.min.js"></script>
41 42 43<!-- #lightGallery css --> 44 <link href="/revize/plugins/zbuilder/v1/website/_assets_/plugins/lightGallery-master/dist/css/lightgallery-bundle.min.css" rel="stylesheet" /> 45 46<!-- #bootstrap js + popper js --> 47
47<script src="/revize/plugins/zbuilder/v1/website/_assets_/plugins/popperjs/popper.min.js"></script>
47 48
48<script src="/revize/plugins/zbuilder/v1/website/_assets_/plugins/bootstrap/js/bootstrap.min.js"></script>
48 49 50<!-- #bootstrap css and fonts --> 51 <link href="/revize/plugins/zbuilder/v1/website/_assets_/plugins/bootstrap/css/bootstrap.css" rel="stylesheet" /> 52 <link href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.min.css" rel="stylesheet" /> 53 54<!-- #dotjs --> 55
55<script src="/revize/plugins/revize_calendar/doT.min.js"></script>
55 56 57<!-- #tiny sider --> 58 <link href="/revize/plugins/zbuilder/v1/website/_assets_/plugins/tiny-slider/dist/tiny-slider.css" rel="stylesheet" /> 59
59<script src="/revize/plugins/zbuilder/v1/website/_assets_/plugins/tiny-slider/dist/min/tiny-slider.js"></script>
59 60 61<!-- #font awesome css --> 62 <link href="/revize/plugins/zbuilder/v1/website/_assets_/fonts/font-awesome/css/all.min.css" rel="stylesheet" > 63 64<!-- #font Google Material Icons --> 65 <link href="https://fonts.googleapis.com/css2?family=Material+Icons" rel="stylesheet" /> 66 <link href="https://fonts.googleapis.com/css2?family=Material+Icons+Outlined" rel="stylesheet" /> 67 68<!-- #aos css + js--> 69
69<script src="/revize/plugins/zbuilder/v1/website/_assets_/plugins/aos/src/js/aos.min.js"></script>
69 70 <link href="/revize/plugins/zbuilder/v1/website/_assets_/plugins/aos/src/css/aos.min.css" rel="stylesheet" > 71<!-- #aos --> 72 73<!-- #fitty --> 74
74<script src="/revize/plugins/zbuilder/v1/website/_assets_/plugins/fitty-gh-pages/dist/fitty.min.js"></script>
74 75
75<script src="/revize/plugins/zbuilder/v1/website/_assets_/plugins/revizeWeather/js/revizeWeather.min.js"></script>
75 76 77<!-- #layout css --> 78 <link href="/revize/plugins/zbuilder/v1/website/_assets_/css/layout.css?v=1" rel="stylesheet"> 79 <link href="_assets_/css/css_variables_T34_R3.css?t=1790792494000" rel="stylesheet"> 80 81<!-- #favicons --> 82 <link rel="shortcut icon" href="website_assets/favicon.ico?t=202606250907290"> 83 <link rel="apple-touch-icon" href="website_assets/apple-touch-icon.png?t=202606250907340"> 84 <meta name="theme-color" content="#000000" /> 85 86 <!-- Google tag (gtag.js) -->
vendor: 66 bytes, lines 86-87
86 87 <script async src="https://www.googletagmanager.com/gtag/js?id=
87G-VQW5GLDRK1
vendor: 14 bytes, lines 87-88
87"></script> 88
88<script> 89
vendor: 140 bytes, lines 89-93
89window.dataLayer = window.dataLayer || []; 90 function gtag(){dataLayer.push(arguments);} 91 gtag('js', new Date()); 92 93 gtag('config', '
93G-VQW5GLDRK1
vendor: 6 bytes, lines 93-94
93'); 94
94</script>
94<style> 95@media (max-width: 767px) { 96 .rz-news-card-list.row-cols-xs > * {flex: 0 0 auto; width:100.0%} 97} 98@media (min-width: 768px) and (max-width: 991px) { 99 .rz-news-card-list.row-cols-md > * {flex: 0 0 auto; width:50.0%} 100} 101@media (min-width: 992px) { 102 .rz-news-card-list.row-cols-lg > * {flex: 0 0 auto; width:33.333332%} 103} 104</style> 105<link href="/revize/plugins/revize_calendar/core/main.css" rel="stylesheet" /> 106<link href="/revize/plugins/revize_calendar/daygrid/main.min.css" rel="stylesheet" /> 107<link href="/revize/plugins/revize_calendar/timegrid/main.min.css" rel="stylesheet" /> 108<link href="/revize/plugins/revize_calendar/list/main.min.css" rel="stylesheet" /> 109<link href="_assets_/plugins/revizeCalendar/css/mini.css" rel="stylesheet" /> 110<link href="/revize/plugins/revize_calendar/core/nav-panels.css" rel="stylesheet" />
110<script> 111 var defaultCalendarColor = "#3788d8"; 112 var ImportCals = []; 113 var calendarProps = {'1' : { 'color' : '#187293' , 'name' : 'Public Events' }, 114'2' : { 'color' : '#000000' , 'name' : 'City Office Closures' }, 115'3' : { 'color' : '#d06901' , 'name' : 'City Council Meetings' }, 116'8' : { 'color' : '' , 'name' : 'calendar-list-options' }, 117}; 118 var RZCalendarTimezone = ""; 119</script>
119 120 121</head> 122<body id="freeform" class="rz-page-links-992" data-zipcode="84119" data-header-left="false"> 123 124 125 126
127<script type="text/javascript"> 128if (typeof(RZ) == 'undefined') RZ = {}; 129if (!RZ.link) RZ.link = new Object(); 130RZ.pagetype = 'template' 131RZ.baseurlprefix = '../../' 132RZ.baseurlpath = 'our_community/about_us/' 133RZ.protocolRelativeRevizeBaseUrl='//builder1.revize.com' 134 135RZ.pagetemplatename = 'freeform' 136RZ.pagetemplateid = '1' 137RZ.pagemodule = "links" 138RZ.pagemoduleid = '1' 139RZ.pagerecordid = '992'; 140 141RZ.pageid = "links-992"; 142RZ.pageparentid = '991'; 143RZ.pagesectionid = '992'; 144RZ.pagesectionname = 'about_us'; 145RZ.pagesectionlevel = '2'; 146RZ.pagesectionfolder = 'our_community/about_us/'; 147RZ.pagesectionfilter = 'sectionid=992'; 148RZ.pagelinkfilter = 'linklevel=2 and linksectionid=992'; 149RZ.pagelinklevel = '2'; 150RZ.pagelinkid = '992'; 151RZ.pageidfield = ''; 152 153RZ.isnewrecord = false; 154RZ.editmodule = ""; 155RZ.editrecordid = '992'; 156RZ.editrecordversion = ''; 157RZ.editversion = ''; 158RZ.editaction = ''; 159 160RZ.page_roles = '' 161RZ.page_users = '153b32850cfa60301ba7cb535f52d1f2803f9ef3d7971bcbda382583175a72a6|183e24ceed82e872b563047ccb77a13692fcfb817393bdfe0c5c10eee57e0c5a' 162RZ.page_key = "freeform[992]" 163RZ.parent_key = 'freeform[991]' 164RZ.inherit_key = 'index[]' 165RZ.workflowname = '' 166RZ.permissions_options = 'warningsOFF' 167RZ.permissions_module = 'webspace_page_permissions' 168RZ.webspace = "westvalleycityutah" 169RZ.webspacedesc = ""; 170 171RZ.featurespattern = '(EZ)'; 172null 173 174RZ.webspacelinksurl = '' 175RZ.webspacelinksurl = './webspace/links.html' 176RZ.workflowlist = '' 177RZ.revizeserverurl = 'https://builder1.revize.com/revize/westvalleycityutah'; 178 179if (!RZ.nextseq) RZ.nextseq = {linknames:{},modules:{}}; 180 181RZ.webspace_config = new Object(); 182RZ.webspace_config.admin_email = "[email protected]"; 183RZ.webspace_config.calendar_options = "max_events=6"; 184RZ.webspace_config.form_captcha = "yes"; 185RZ.webspace_config.form_server = "revizeserver"; 186RZ.webspace_config.form_technology = "jsp"; 187RZ.webspace_config.formwizard_ftp_password = ""; 188RZ.webspace_config.formwizard_ftp_port = ""; 189RZ.webspace_config.formwizard_ftp_server = ""; 190RZ.webspace_config.formwizard_ftp_user = ""; 191RZ.webspace_config.formwizard_setup = "yes"; 192RZ.webspace_config.formwizard_smtp_password = "xxx"; 193RZ.webspace_config.formwizard_smtp_server = "xxx"; 194RZ.webspace_config.formwizard_smtp_user = "xxx"; 195RZ.webspace_config.google_analytics = ""; 196RZ.webspace_config.home_pageid = "0"; 197RZ.webspace_config.home_sectionid = "0"; 198RZ.webspace_config.home_template = "home,index,sitemap"; 199RZ.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=\"\" />"; 200RZ.webspace_config.image_maxheight = "3000"; 201RZ.webspace_config.image_maxwidth = "3000"; 202RZ.webspace_config.image_setup = "yes"; 203RZ.webspace_config.livesite_url = ""; 204RZ.webspace_config.menu_links_module = "links"; 205RZ.webspace_config.menu_newsection = ""; 206RZ.webspace_config.menu_nexturl = "webspace_menu-editform.jsp"; 207RZ.webspace_config.menu_sections_module = "sections"; 208RZ.webspace_config.menu_system = "custom"; 209RZ.webspace_config.menu_version = "1.00"; 210RZ.webspace_config.new_menu_manager_enabled = "yes"; 211RZ.webspace_config.notify_options = "hide_text=yes"; 212RZ.webspace_config.notify_return_url = "enotify/index.php"; 213RZ.webspace_config.rte_setup = "yes"; 214RZ.webspace_config.to_email = "[email protected]"; 215RZ.webspace_config.use_folders = "1"; 216 217RZ.isauthenticationactive = true 218RZ.warning = "" 219RZ.adminwinmsg = null 220 221RZ.channels = 'revize'; 222RZ.jsversion = 1.2</script>
vendor: 2 bytes, line 222
222
223<script type="text/javascript" src="/revize/util/snippet_helper.js"></script>
223 224 225 226 227<div class="skippy visually-hidden-focusable left-top mt-3 position-fixed align-items-center" style="z-index:1026"> 228 <div class="container-xl"> 229 <a class="d-inline-flex btn btn-light bg-white px-4 p-3 gap-4 align-items-center" 230 href="our_community/about_us/index.php#rz-content-wrap"> 231 <span class="d-inline-flex align-items-center gap-2"> 232 <i class="bi bi-window-sidebar fs-4" aria-hidden="true"></i> 233 <span>Skip to main content</span> 234 <span class="ms-5" aria-hidden="true"> 235 <svg width="26" height="27" viewBox="0 0 26 27" xmlns="http://www.w3.org/2000/svg" role="presentation" aria-hidden="true"> 236 <g fill="none" fill-rule="evenodd"> 237 <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" 238 fill="currentColor" fill-rule="nonzero" /> 239 <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" /> 240 <path d="M8.1 12.7L5.4 10l2.7-2.7" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" /> 241 </g> 242 </svg> 243 </span> 244 </span> 245 </a> 246 </div> 247</div>
248<script>function RZBarAddButton() { return false; }</script>
248 249<header class="site-header-wrap" data-menu-onhover="false" data-mega-at="8" data-nav-icons="false" data-logo="image" data-logo-tagline="false" data-logo-move="false" data-sticky="true" data-menu-buttons-left="false"> 250 <div class="site-header"> 251 252 253 254 255<div class="rz-section-block-wrap position-relative"> 256 257 258 259 <div class="rz-section-block container" style="max-width:1392px;"> 260 261 262 263 264 265<div class="rz-row-block d-grid opt_row_columns_7" style="grid-template-columns:316px auto 190px;"> 266<div class="rz-column-block d-lg-flex flex-lg-wrap flex-lg-row justify-content-lg-start align-items-lg-center"> 267 <div class="rz-element-wrapper logo-section d-flex d-lg-block"> 268 269 <div class="responsive-menu align-items-center d-flex d-lg-none gap-1"> 270 <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"> 271 <i class="bi bi-three-dots" aria-hidden="True"></i> 272 </button> 273 <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"> 274 <i class="bi bi-share-fill" aria-hidden="True"></i> 275 </button> 276 </div><!-- /.responsive-menu --> 277 278 279 <a href="./" class="flex-fill d-flex text-center flex-column text-decoration-none main-logo main-logo-text justify-content-center"> 280 <span class="lh-1">West Valley City, UT</span> 281 <p class="logo-tagline lh-1 m-0">Live work play</p> 282 </a> 283 284 <a href="./" class="d-flex align-items-center text-decoration-none main-logo main-logo-image"> 285 <img loading="lazy" src="website_assets/logo.png?t=202606190933170" alt="West Valley City, UT" class="logo-no-scroll header-logo-img"> 286 <img loading="lazy" src="website_assets/logo-scroll.png?t=202606250755050" alt="West Valley City, UT" class="logo-on-scroll d-none"> 287 </a> 288 289 <div class="offcanvas-toggles align-items-center d-flex d-lg-none gap-1"> 290 <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"> 291 <i class="fa-solid fa-magnifying-glass" aria-hidden="True"></i> 292 </button> 293 <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"> 294 <i class="fa-solid fa-bars" aria-hidden="True"></i> 295 </button> 296 </div><!-- /.offcanvas-toggles --> 297 298 </div><!-- /.rz-element-wrapper --> 299 300 301 302<div class="rz-element-wrapper rz-single-image-wrapper has-edit-buttons mega-layer-img hide-edit-buttons d-none" 303 > 304 <div class="center-center"> 305 <div class="rz-btns-container"> 306
306<script language="JavaScript" type="text/JavaScript"> 307 RZ.module = 'generic'; 308 RZ.nexturl = "/revize/plugins/zbuilder/v1/website/editforms/image-editform.jsp"; 309 RZ.img = '<span class="rzBtn rzBtn-xs">Edit Image</span>'; 310 RZ.caption = ''; 311 RZ.set = 'pageid=2f490eb5-da98-4a32-9578-f24f6101e245'; 312 RZ.options = ''; 313 if (typeof RZaction != 'undefined') RZaction('editform'); 314 </script>
314 315 </div> 316 </div> 317 318 <div class="rz-element rz-single-image-wrap"> 319 320 <div class="rz-single-image position-relative"> 321 322 323 <img loading="lazy" 324 src="website_assets/mega-layer-img.png?t=202607040807560" 325 alt="mega-img-1" 326 style="width:100%;" 327 > 328 329 </div><!-- /.rz-single-image --> 330 331 </div><!-- /.rz-single-image-wrap --> 332</div><!-- /.rz-element-wrapper --> 333 334 335 336 337 338 339 340 341<div class="rz-element-wrapper rz-single-image-wrapper has-edit-buttons mega-tower-img d-none" 342 > 343 <div class="center-center"> 344 <div class="rz-btns-container"> 345
345<script language="JavaScript" type="text/JavaScript"> 346 RZ.module = 'generic'; 347 RZ.nexturl = "/revize/plugins/zbuilder/v1/website/editforms/image-editform.jsp"; 348 RZ.img = '<span class="rzBtn rzBtn-xs">Edit Image</span>'; 349 RZ.caption = ''; 350 RZ.set = 'pageid=ff18655e-440e-4dba-8c66-aff79b34ba87'; 351 RZ.options = ''; 352 if (typeof RZaction != 'undefined') RZaction('editform'); 353 </script>
353 354 </div> 355 </div> 356 357 <div class="rz-element rz-single-image-wrap"> 358 359 <div class="rz-single-image position-relative"> 360 361 362 <img loading="lazy" 363 src="website_assets/mega-tower-img.png?t=202607040807590" 364 alt="mega-img-2" 365 style="width:100%;" 366 > 367 368 </div><!-- /.rz-single-image --> 369 370 </div><!-- /.rz-single-image-wrap --> 371</div><!-- /.rz-element-wrapper --> 372 373 374 375 376 377</div><div class="rz-column-block d-lg-flex flex-lg-wrap justify-content-lg-center align-items-lg-center"> 378<div class="offcanvas-lg offcanvas-end" tabindex="-1" id="offcanvasNav" aria-labelledby="offcanvasNavLabel"> 379 <div class="offcanvas-header border-bottom"> 380 <h5 class="offcanvas-title" id="offcanvasNavLabel">Main Menu</h5> 381 <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close" data-bs-target="#offcanvasNav"></button> 382 </div> 383 384 <div class="offcanvas-body pt-0"> 385 386 <div class="rz-element-wrapper rz-topnav-block-wrapper has-edit-buttons"> 387 <div class="rz-element rz-topnav-wrap"> 388 <div class="rz-topnav-element"> 389 390 391<ul id="nav" class="v2_05-23-2012"> 392 <li class="menuLI level0 menuDisplay li-125 children"><a class="menuA level0 menuDisplay" href="government/index.php" target="_self">Government</a> 393 <ul class="menuUL level1 menuHidden ul-126"> 394 <li class="menuLI level1 menuHidden li-126 children"><a class="menuA level1 menuHidden" href="government/city_council/index.php" target="_self">City Council</a> 395 <ul class="menuUL level2 menuHidden ul-127"> 396 <li class="menuLI level2 menuHidden li-127"><a class="menuA level2 menuHidden" href="government/city_council/city_council_meetings/index.php" target="_self">City Council Meetings</a></li> 397 <li class="menuLI level2 menuHidden li-142"><a class="menuA level2 menuHidden" href="https://ob.wvc-ut.gov/OnBaseAgendaOnline/Meetings/Search?dropid=11&mtids=109%2C110%2C111&dropsv=01%2F01%2F2026%2000%3A00%3A00&dropev=12%2F31%2F2026%2000%3A00%3A00" target="_new">City Council Meeting Agendas & Minutes</a></li> 398 <li class="menuLI level2 menuHidden li-129"><a class="menuA level2 menuHidden" href="government/city_council/city_council_members/index.php" target="_self">City Council Members</a></li> 399 <li class="menuLI level2 menuHidden li-143"><a class="menuA level2 menuHidden" href="https://gisportal.wvc-ut.gov/portal/apps/experiencebuilder/experience/?id=16062a18d1394454b3ab718dcc6ae69e" target="_new">City Council District Map</a></li> 400 <li class="menuLI level2 menuHidden li-144"><a class="menuA level2 menuHidden" href="government/city_council/recent_ordinances.php" target="_self">Recent Ordinances</a></li> 401 </ul> 402 </li> 403 <li class="menuLI level1 menuHidden li-147 children"><a class="menuA level1 menuHidden" href="government/city_boards_commissions/index.php" target="_self">City Boards & Commissions</a> 404 <ul class="menuUL level2 menuHidden ul-148"> 405 <li class="menuLI level2 menuHidden li-148"><a class="menuA level2 menuHidden" href="government/city_boards_commissions/planning_commission.php" target="_self">Planning Commission</a></li> 406 <li class="menuLI level2 menuHidden li-149"><a class="menuA level2 menuHidden" href="government/city_boards_commissions/professional_standards_review_board.php" target="_self">Professional Standards Review Board</a></li> 407 <li class="menuLI level2 menuHidden li-150"><a class="menuA level2 menuHidden" href="government/city_boards_commissions/clean_beautiful_committee/index.php" target="_self">Clean & Beautiful Committee</a></li> 408 <li class="menuLI level2 menuHidden li-151"><a class="menuA level2 menuHidden" href="government/city_boards_commissions/healthy_wvc/index.php" target="_self">Healthy WVC</a></li> 409 <li class="menuLI level2 menuHidden li-152"><a class="menuA level2 menuHidden" href="government/city_boards_commissions/board_of_adjustment.php" target="_self">Board of Adjustment</a></li> 410 <li class="menuLI level2 menuHidden li-153"><a class="menuA level2 menuHidden" href="government/city_boards_commissions/building_authority.php" target="_self">Building Authority</a></li> 411 <li class="menuLI level2 menuHidden li-154"><a class="menuA level2 menuHidden" href="government/city_boards_commissions/redevelopment_agency.php" target="_self">Redevelopment Agency</a></li> 412 <li class="menuLI level2 menuHidden li-155"><a class="menuA level2 menuHidden" href="government/city_boards_commissions/veterans_committee/index.php" target="_self">Veterans Committee</a></li> 413 <li class="menuLI level2 menuHidden li-171"><a class="menuA level2 menuHidden" href="https://ob.wvc-ut.gov/OnBaseAgendaOnline/" target="_new">Agendas & Minutes</a></li> 414 <li class="menuLI level2 menuHidden li-172"><a class="menuA level2 menuHidden" href="government/city_boards_commissions/volunteer_for_board_commission_position.php" target="_self">Volunteer for Board/Commission Position</a></li> 415 </ul> 416 </li> 417 <li class="menuLI level1 menuHidden li-183"><a class="menuA level1 menuHidden" href="https://westvalleycity.municipal.codes/" target="_new">City Code & Ordinances</a></li> 418 <li class="menuLI level1 menuHidden li-184"><a class="menuA level1 menuHidden" href="government/official_notices.php" target="_self">Official Notices</a></li> 419 <li class="menuLI level1 menuHidden li-185 children"><a class="menuA level1 menuHidden" href="government/department_list/index.php" target="_self">Department List</a> 420 <ul class="menuUL level2 menuHidden ul-186"> 421 <li class="menuLI level2 menuHidden li-186"><a class="menuA level2 menuHidden" href="government/department_list/administration/index.php" target="_self">Administration</a></li> 422 <li class="menuLI level2 menuHidden li-203"><a class="menuA level2 menuHidden" href="government/department_list/animal_services/index.php" target="_self">Animal Services</a></li> 423 <li class="menuLI level2 menuHidden li-227"><a class="menuA level2 menuHidden" href="government/department_list/community_development/building_inspections/index.php" target="_self">Building Inspections</a></li> 424 <li class="menuLI level2 menuHidden li-228"><a class="menuA level2 menuHidden" href="government/department_list/code_enforcement/index.php" target="_self">Code Enforcement</a></li> 425 <li class="menuLI level2 menuHidden li-229"><a class="menuA level2 menuHidden" href="government/department_list/community_development/index.php" target="_self">Community Development</a></li> 426 <li class="menuLI level2 menuHidden li-230"><a class="menuA level2 menuHidden" href="government/department_list/community_engagement_culture/index.php" target="_self">Community Engagement & Culture</a></li> 427 <li class="menuLI level2 menuHidden li-231"><a class="menuA level2 menuHidden" href="government/department_list/finance/index.php" target="_self">Finance</a></li> 428 <li class="menuLI level2 menuHidden li-706"><a class="menuA level2 menuHidden" href="https://builder1.revize.com/revize/westvalleycityutahfire" target="_new">Fire Department</a></li> 429 <li class="menuLI level2 menuHidden li-707"><a class="menuA level2 menuHidden" href="government/department_list/human_resources/index.php" target="_self">Human Resources</a></li> 430 <li class="menuLI level2 menuHidden li-708"><a class="menuA level2 menuHidden" href="government/department_list/justice_court/index.php" target="_self">Justice Court</a></li> 431 <li class="menuLI level2 menuHidden li-709"><a class="menuA level2 menuHidden" href="https://builder1.revize.com/revize/westvalleycityutahparksandrec/" target="_new">Parks & Recreation</a></li> 432 <li class="menuLI level2 menuHidden li-710"><a class="menuA level2 menuHidden" href="government/department_list/community_development/planning_zoning/index.php" target="_self">Planning & Zoning</a></li> 433 <li class="menuLI level2 menuHidden li-711"><a class="menuA level2 menuHidden" href="https://builder1.revize.com/revize/westvalleycityutahpolice/" target="_new">Police Department</a></li> 434 <li class="menuLI level2 menuHidden li-712"><a class="menuA level2 menuHidden" href="government/department_list/communications/index.php" target="_self">Communications</a></li> 435 <li class="menuLI level2 menuHidden li-713"><a class="menuA level2 menuHidden" href="government/department_list/public_works/index.php" target="_self">Public Works</a></li> 436 <li class="menuLI level2 menuHidden li-714"><a class="menuA level2 menuHidden" href="http://www.whywestvalley.c
436om/" target="_new">RDA & Economic Development</a></li> 437 <li class="menuLI level2 menuHidden li-772"><a class="menuA level2 menuHidden" href="government/department_list/city_attorney_s_office/index.php" target="_self">City Attorney's Office</a></li> 438 <li class="menuLI level2 menuHidden li-775"><a class="menuA level2 menuHidden" href="government/department_list/victim_services/index.php" target="_self">Victim Services</a></li> 439 </ul> 440 </li> 441 <li class="menuLI level1 menuHidden li-949"><a class="menuA level1 menuHidden" href="government/department_list/administration/city_recorder_s_office/city_election_information/index.php" target="_self">Elections</a></li> 442 <li class="menuLI level1 menuHidden li-950"><a class="menuA level1 menuHidden" href="government/transparency_standard.php" target="_self">Transparency Standard</a></li> 443 <li class="menuLI level1 menuHidden li-951 children"><a class="menuA level1 menuHidden" href="government/efficiency_sustainability/index.php" target="_self">Efficiency & Sustainability</a> 444 <ul class="menuUL level2 menuHidden ul-954"> 445 <li class="menuLI level2 menuHidden li-954"><a class="menuA level2 menuHidden" href="government/efficiency_sustainability/timeline.php" target="_self">Timeline</a></li> 446 <li class="menuLI level2 menuHidden li-955"><a class="menuA level2 menuHidden" href="government/efficiency_sustainability/solar.php" target="_self">Solar</a></li> 447 <li class="menuLI level2 menuHidden li-956"><a class="menuA level2 menuHidden" href="government/efficiency_sustainability/water.php" target="_self">Water</a></li> 448 <li class="menuLI level2 menuHidden li-957"><a class="menuA level2 menuHidden" href="government/department_list/public_works/garbage_recycling/recycling_service/index.php#acc_0_panel_0 " target="_self">Recycling</a></li> 449 <li class="menuLI level2 menuHidden li-958"><a class="menuA level2 menuHidden" href="government/department_list/public_works/garbage_recycling/recycling_service/glass_recycling_info.php" target="_self">Glass Recycling</a></li> 450 <li class="menuLI level2 menuHidden li-959"><a class="menuA level2 menuHidden" href="government/efficiency_sustainability/rs_zoning.php" target="_self">RS Zoning</a></li> 451 <li class="menuLI level2 menuHidden li-960"><a class="menuA level2 menuHidden" href="government/efficiency_sustainability/resources.php" target="_self">Resources</a></li> 452 </ul> 453 </li> 454 <li class="menuLI level1 menuHidden li-952"><a class="menuA level1 menuHidden" href="government/bids_and_notices.php" target="_self">Bids and Notices</a></li> 455 <li class="menuLI level1 menuHidden li-953"><a class="menuA level1 menuHidden" href="government/found_property_public_notice.php" target="_self">Found Property Public Notice</a></li> 456 </ul> 457 </li> 458 <li class="menuLI level0 menuDisplay li-961 children"><a class="menuA level0 menuDisplay" href="services/index.php" target="_self">Services</a> 459 <ul class="menuUL level1 menuHidden ul-962"> 460 <li class="menuLI level1 menuHidden li-962"><a class="menuA level1 menuHidden" href="services/affordable_housing.php" target="_self">Affordable Housing</a></li> 461 <li class="menuLI level1 menuHidden li-963"><a class="menuA level1 menuHidden" href="https://builder1.revize.com/revize/westvalleycityutahparksandrec/harman_senior_recreation_center/index.php" target="_new">Aging & Adult Services</a></li> 462 <li class="menuLI level1 menuHidden li-964"><a class="menuA level1 menuHidden" href="government/department_list/animal_services/index.php" target="_self">Animal Services</a></li> 463 <li class="menuLI level1 menuHidden li-965"><a class="menuA level1 menuHidden" href="services/billing.php" target="_self">Billing</a></li> 464 <li class="menuLI level1 menuHidden li-966"><a class="menuA level1 menuHidden" href="government/department_list/finance/index.php" target="_self">Budget & Finance</a></li> 465 <li class="menuLI level1 menuHidden li-967 children"><a class="menuA level1 menuHidden" href="services/building_development/index.php" target="_self">Building & Development</a> 466 <ul class="menuUL level2 menuHidden ul-1083"> 467 <li class="menuLI level2 menuHidden li-1083"><a class="menuA level2 menuHidden" href="government/department_list/community_development/building_inspections/index.php" target="_self">Building Inspections</a></li> 468 <li class="menuLI level2 menuHidden li-1085"><a class="menuA level2 menuHidden" href="government/department_list/code_enforcement/index.php" target="_self">Code Enforcement</a></li> 469 <li class="menuLI level2 menuHidden li-1087"><a class="menuA level2 menuHidden" href="government/department_list/community_development/planning_zoning/index.php" target="_self">Planning & Zoning</a></li> 470 <li class="menuLI level2 menuHidden li-1089"><a class="menuA level2 menuHidden" href="https://www.whywestvalley.c
470om/" target="_new">RDA & Economic Development</a></li> 471 </ul> 472 </li> 473 <li class="menuLI level1 menuHidden li-972"><a class="menuA level1 menuHidden" href="government/department_list/code_enforcement/index.php" target="_self">Code Enforcement</a></li> 474 <li class="menuLI level1 menuHidden li-975"><a class="menuA level1 menuHidden" href="government/department_list/community_development/community_grants_division/index.php" target="_self">Community Grants</a></li> 475 <li class="menuLI level1 menuHidden li-973"><a class="menuA level1 menuHidden" href="government/department_list/justice_court/index.php" target="_self">Courts</a></li> 476 <li class="menuLI level1 menuHidden li-974"><a class="menuA level1 menuHidden" href="https://www.wvcfd.com/" target="_new">Fire</a></li> 477 <li class="menuLI level1 menuHidden li-1573"><a class="menuA level1 menuHidden" href="government/department_list/public_works/garbage_recycling/index.php" target="_self">Garbage & Recycling</a></li> 478 <li class="menuLI level1 menuHidden li-977"><a class="menuA level1 menuHidden" href="government/department_list/communications/index.php" target="_self">Media Relations</a></li> 479 <li class="menuLI level1 menuHidden li-978"><a class="menuA level1 menuHidden" href="services/mosquito_abatement.php" target="_self">Mosquito Abatement</a></li> 480 <li class="menuLI level1 menuHidden li-979"><a class="menuA level1 menuHidden" href="government/department_list/community_engagement_culture/neighborhood_services/index.php" target="_self">Neighborhood Services</a></li> 481 <li class="menuLI level1 menuHidden li-980"><a class="menuA level1 menuHidden" href="https://www.wvcparksandrec.com/" target="_new">Parks & Recreation</a></li> 482 <li class="menuLI level1 menuHidden li-981"><a class="menuA level1 menuHidden" href="government/department_list/community_development/planning_zoning/index.php" target="_self">Planning & Zoning</a></li> 483 <li class="menuLI level1 menuHidden li-982"><a class="menuA level1 menuHidden" href="https://www.wvcpd.com" target="_new">Police</a></li> 484 <li class="menuLI level1 menuHidden li-983"><a class="menuA level1 menuHidden" href="government/department_list/public_works/index.php" target="_self">Public Works</a></li> 485 <li class="menuLI level1 menuHidden li-984"><a class="menuA level1 menuHidden" href="government/department_list/administration/city_recorder_s_office/index.php" target="_self">Records</a></li> 486 <li class="menuLI level1 menuHidden li-976"><a class="menuA level1 menuHidden" href="https://www.saltlakecounty.gov/health/" target="_new">SL County Health Department</a></li> 487 <li class="menuLI level1 menuHidden li-985"><a class="menuA level1 menuHidden" href="https://www.saltlakecounty.gov/recorder/residents/property-watch/" target="_new">SL County Property Watch</a></li> 488 <li class="menuLI level1 menuHidden li-986"><a class="menuA level1 menuHidden" href="https://gisportal.wvc-ut.gov/Crowdsource/" target="_new">Submit a Service Request</a></li> 489 <li class="menuLI level1 menuHidden li-987"><a class="menuA level1 menuHidden" href="government/department_list/public_works/utility_billing/sanitation_and_utility_fees.php" target="_self">Utility Billing</a></li> 490 <li class="menuLI level1 menuHidden li-988"><a class="menuA level1 menuHidden" href="government/department_list/victim_services/index.php" target="_self">Victim Services</a></li> 491 <li class="menuLI level1 menuHidden li-989"><a class="menuA level1 menuHidden" href="services/west_valley_city_connect.php" target="_self">West Valley City Connect</a></li> 492 </ul> 493 </li> 494 <li class="menuLI level0 menuDisplay li-991 children"><a class="menuA level0 menuDisplay" href="our_community/index.php" target="_self">Our Community</a> 495 <ul class="menuUL level1 menuHidden ul-992"> 496 <li class="menuLI level1 menuHidden li-992 children"><a class="menuA level1 menuHidden" href="our_community/about_us/index.php" target="_self">About Us</a> 497 <ul class="menuUL level2 menuHidden ul-993"> 498 <li class="menuLI level2 menuHidden li-993"><a class="menuA level2 menuHidden" href="https://westvalleycity.municipal.codes/" target="_new">City Code</a></li> 499 <li class="menuLI level2 menuHidden li-994"><a class="menuA level2 menuHidden" href="https://gisportal.wvc-ut.gov/
499portal/home/index.html" target="_new">City Maps</a></li> 500 <li class="menuLI level2 menuHidden li-995"><a class="menuA level2 menuHidden" href="our_community/about_us/contact_information.php" target="_self">Contact Information</a></li> 501 <li class="menuLI level2 menuHidden li-996"><a class="menuA level2 menuHidden" href="our_community/about_us/demographics/index.php" target="_self">Demographics</a></li> 502 <li class="menuLI level2 menuHidden li-997"><a class="menuA level2 menuHidden" href="our_community/about_us/history_of_west_valley_city/index.php" target="_self">History of West Valley City</a></li> 503 </ul> 504 </li> 505 <li class="menuLI level1 menuHidden li-1000"><a class="menuA level1 menuHidden" href="government/department_list/finance/city_budget_financial_audit.php" target="_self">City Budget</a></li> 506 <li class="menuLI level1 menuHidden li-1001 children"><a class="menuA level1 menuHidden" href="our_community/city_facilities/index.php" target="_self">City Facilities</a> 507 <ul class="menuUL level2 menuHidden ul-1002"> 508 <li class="menuLI level2 menuHidden li-1002"><a class="menuA level2 menuHidden" href="https://builder1.revize.com/revize/westvalleycityutahparksandrec/family_fitness_center_centennial_outdoor_pool/index.php" target="_new">Family Fitness Center</a></li> 509 <li class="menuLI level2 menuHidden li-1003"><a class="menuA level2 menuHidden" href="https://builder1.revize.com/revize/westvalleycityutahparksandrec/harman_senior_recreation_center/index.php" target="_new">Harman Senior Recreation Center</a></li> 510 <li class="menuLI level2 menuHidden li-1004"><a class="menuA level2 menuHidden" href="https://maverikcenter.com/" target="_new">Maverik Center</a></li> 511 <li class="menuLI level2 menuHidden li-1005"><a class="menuA level2 menuHidden" href="https://www.golfstonebridgeutah.com/" target="_new">Stonebridge Golf Club</a></li> 512 <li class="menuLI level2 menuHidden li-1006"><a class="menuA level2 menuHidden" href="https://www.golftheridgegc.com/" target="_new">The Ridge Golf Club</a></li> 513 <li class="menuLI level2 menuHidden li-1007"><a class="menuA level2 menuHidden" href="https://www.culturalcelebration.org/" target="_new">Utah Cultural Celebration Center</a></li> 514 </ul> 515 </li> 516 <li class="menuLI level1 menuHidden li-1008"><a class="menuA level1 menuHidden" href="https://gisportal.wvc-ut.gov/portal/home/" target="_new">City Maps</a></li> 517 <li class="menuLI level1 menuHidden li-1009"><a class="menuA level1 menuHidden" href="https://fairbournebusinesspark.com/" target="_new">Fairbourne Station</a></li> 518 <li class="menuLI level1 menuHidden li-1010"><a class="menuA level1 menuHidden" href="government/city_boards_commissions/index.php" target="_self">Get Involved</a></li> 519 <li class="menuLI level1 menuHidden li-1011"><a class="menuA level1 menuHidden" href="our_community/living_in_wvc.php" target="_self">Living in WVC</a></li> 520 <li class="menuLI level1 menuHidden li-1012"><a class="menuA level1 menuHidden" href="our_community/moving_to_wvc.php" target="_self">Moving to WVC</a></li> 521 <li class="menuLI level1 menuHidden li-1013"><a class="menuA level1 menuHidden" href="https://builder1.revize.com/revize/westvalleycityutahparksandrec/" target="_new">Parks & Recreation</a></li> 522 <li class="menuLI level1 menuHidden li-1014 children"><a class="menuA level1 menuHidden" href="our_community/schools/index.php" target="_self">Schools</a> 523 <ul class="menuUL level2 menuHidden ul-1015"> 524 <li class="menuLI level2 menuHidden li-1015"><a class="menuA level2 menuHidden" href="our_community/schools/after_school_programs.php" target="_self">After School Programs</a></li> 525 <li class="menuLI level2 menuHidden li-1016"><a class="menuA level2 menuHidden" href="https://www.graniteschools.org/" target="_new">Granite School District Public Schools</a></li> 526 <li class="menuLI level2 menuHidden li-1017"><a class="menuA level2 menuHidden" href="https://www.schools.utah.gov/charterschools/" target="_new">Utah Public Charter Schools</a></li> 527 <li class="menuLI level2 menuHidden li-1018"><a class="menuA level2 menuHidden" href="https://ushe.edu/" target="_new">Utah Higher Education</a></li> 528 </ul> 529 </li> 530 <li class="menuLI level1 menuHidden li-1019"><a class="menuA level1 menuHidden" href="our_community/westfest.php" target="_self">WestFest</a></li> 531 <li class="menuLI level1 menuHidden li-1020"><a class="menuA level1 menuHidden" href="our_community/military_veterans.php" target="_self">Military & Veterans</a></li> 532 </ul> 533 </li> 534 <li class="menuLI level0 menuDisplay li-1021 children"><a class="menuA level0 menuDisplay" href="business/index.php" target="_self">Business</a> 535 <ul class="menuUL level1 menuHidden ul-1022"> 536 <li class="menuLI level1 menuHidden li-1022">
536<a class="menuA level1 menuHidden" href="government/bids_and_notices.php" target="_self">Bids</a></li> 537 <li class="menuLI level1 menuHidden li-1023"><a class="menuA level1 menuHidden" href="government/department_list/community_development/building_inspections/index.php" target="_self">Building Permits & Inspections</a></li> 538 <li class="menuLI level1 menuHidden li-1024"><a class="menuA level1 menuHidden" href="https://www.chamberwest.com/" target="_new">Chamber of Commerce</a></li> 539 <li class="menuLI level1 menuHidden li-1025"><a class="menuA level1 menuHidden" href="https://www.whywestvalley.com/" target="_new">Economic Development</a></li> 540 <li class="menuLI level1 menuHidden li-1026"><a class="menuA level1 menuHidden" href="government/department_list/public_works/engineering/index.php" target="_self">Engineering</a></li> 541 <li class="menuLI level1 menuHidden li-1027"><a class="menuA level1 menuHidden" href="government/department_list/finance/business_licensing/index.php" target="_self">Licensing</a></li> 542 <li class="menuLI level1 menuHidden li-1028"><a class="menuA level1 menuHidden" href="government/department_list/community_development/planning_zoning/index.php" target="_self">Planning & Zoning</a></li> 543 <li class="menuLI level1 menuHidden li-1029"><a class="menuA level1 menuHidden" href="https://pllportal.wvc-ut.gov/portal" target="_new">Renew Your Business License</a></li> 544 <li class="menuLI level1 menuHidden li-1031"><a class="menuA level1 menuHidden" href="https://www.whywestvalley.com/site-selection/new-business-interactive-map" target="_new">New Businesses Interactive Map</a></li> 545 </ul> 546 </li> 547 <li class="menuLI level0 menuDisplay li-1032 children"><a class="menuA level0 menuDisplay" href="how_do_i/index.php" target="_self">How Do I...</a> 548 <ul class="menuUL level1 menuHidden ul-1033"> 549 <li class="menuLI level1 menuHidden li-1033 children"><a class="menuA level1 menuHidden" href="how_do_i/apply/index.php" target="_self">Apply</a> 550 <ul class="menuUL level2 menuHidden ul-1034"> 551 <li class="menuLI level2 menuHidden li-1034"><a class="menuA level2 menuHidden" href="government/department_list/community_development/building_inspections/apply_for_a_building_permit.php" target="_self">Building Permit</a></li> 552 <li class="menuLI level2 menuHidden li-1035"><a class="menuA level2 menuHidden" href="government/department_list/finance/business_licensing/index.php" target="_self">Business License</a></li> 553 <li class="menuLI level2 menuHidden li-1036"><a class="menuA level2 menuHidden" href="government/department_list/human_resources/index.php" target="_self">Employment</a></li> 554 <li class="menuLI level2 menuHidden li-1037"><a class="menuA level2 menuHidden" href="https://builder1.revize.com/revize/westvalleycityutahfire/prevention_inspections/index.php" target="_new">Fire Permits</a></li> 555 </ul> 556 </li> 557 <li class="menuLI level1 menuHidden li-1038"><a class="menuA level1 menuHidden" href="government/department_list/city_attorney_s_office/civil_division.php" target="_self">Report an Accident, Injury, or Damage</a></li> 558 <li class="menuLI level1 menuHidden li-1039"><a class="menuA level1 menuHidden" href="services/billing.php" target="_self">Pay My Bill</a></li> 559 <li class="menuLI level1 menuHidden li-1040 children"><a class="menuA level1 menuHidden" href="how_do_i/read/index.php" target="_self">Read</a> 560 <ul class="menuUL level2 menuHidden ul-1041"> 561 <li class="menuLI level2 menuHidden li-1041"><a class="menuA level2 menuHidden" href="https://ob.wvc-ut.gov/OnBaseAgendaOnline/Meetings/Search?dropid=11&mtids=109%2C110%2C111&dropsv=01%2F01%2F2026%2000%3A00%3A00&dropev=12%2F31%2F2026%2000%3A00%3A00" target="_new">Agendas & Minutes</a></li> 562 <li class="menuLI level2 menuHidden li-1042"><a class="menuA level2 menuHidden" href="https://westvalleycity.municipal.codes/" target="_new">Municipal Code</a></li> 563 </ul> 564 </li> 565 <li class="menuLI level1 menuHidden li-1102"><a class="menuA level1 menuHidden" href="government/department_list/administration/city_recorder_s_office/administrative_government_records_request.php" target="_self">Request a Record</a></li> 566 <li class="menuLI level1 menuHidden li-1105"><a class="menuA level1 menuHidden" href="https://builder1.revize.com/revize/westvalleycityutahparksandrec/city_parks.php" target="_new">Reserve a Park</a></li> 567 <li class="menuLI level1 menuHidden li-1106"><a class="menuA level1 menuHidden" href="government/department_list/administration/city_recorder_s_office/city_election_information/index.php" target="_self">Run for Office</a></li> 568 </ul> 569 </li> 570</ul> 571 572 </div><!-- /.rz-topnav-element --> 573 </div><!-- /.rz-element --> 574 575 </div><!-- /.rz-element-wrapper --> 576 577 </div><!-- /.offcanvas-body --> 578</div><!-- /.offcanvas-lg --> 579</div><div class="rz-column-block d-lg-flex flex-lg-wrap justify-content-lg-end align-items-lg-center"> 580 <div class="header-element header-search-wrap align-items-stretch w-100 gap-3"> 581 <div class="vr vr-s d-none"></div> 582 <form class="m-0 align-self-center position-relative header-site-search w-100" 583 method="GET" action="search.php" role="search"> 584 <label for="search_input" class="sr-only">Search West Valley City, UT</label> 585 <input id="search_input" class="form-control" name="q" type="search" 586 placeholder="How can we help?" 587 autocomplete="off" 588 > 589 <!-- Icon-only search button --> 590 <button class="search-btn-with-icon btn btn-link position-absolute top-50 end-0 translate-middle-y gap-3 ps-0 pe-3 lh-1 d-flex align-items-center" 591 aria-label="Search" tabindex="0">
592 <span class="vr d-inline-flex align-self-center" style="height:1rem"></span> 593 <i class="bi bi-search"></i> 594 </button> 595 </form> 596 <div class="vr vr-e d-none"></div> 597 </div><!--/.header-element--> 598</div> 599 600 601 602</div><!-- /.rz-row-block --> 603 604 605 606 607 </div><!-- /.rz-section-block --> 608</div><!-- /.rz-section-block-wrap --> 609 610 611 </div><!-- /.site-header --> 612</header><!-- /.site-header-wrap --> 613<div class="rz-site-wrap"> 614 <main id="rz-content-wrap"> 615 616 <!-- --><div class="rz-element-wrapper rz-slider-wrapper has-edit-buttons position-relative overflow-hidden" style=" --rz-slider-bg:#000000; "> 617 618 <div class="center-center"> 619 <div class="rz-btns-container"> 620
620<script language="JavaScript" type="text/JavaScript"> 621 RZ.module = 'generic'; 622 RZ.nexturl = "/revize/plugins/zbuilder/v1/website/editforms/slider-editform.jsp"; 623 RZ.img = '<span class="rzBtn rzBtn-sm">Edit Slider</span>'; 624 RZ.caption = ''; 625 RZ.set = 'pageid=slider-992'; 626 RZ.options = ''; 627 if (typeof RZaction != 'undefined') RZaction('editform'); 628 </script>
628 629 </div> 630 </div> 631 632 633 <div 634 635 data-controls-position="bottom" 636 class="rz-freeform-slider rz-slider tiny-carousel-wrap" 637 638 style=" 639 640 641 642 643 644 645 646 647 648 " 649 > 650 651 652 <div class="rz-slider-bg-overlay" ></div> 653 654 655 656 <div class="tiny-slider" 657 style="height:100%;" 658 data-tiny-items="1" 659 data-tiny-mode="gallery" 660 data-tiny-items-md="1" 661 data-tiny-items-sm="1" 662 data-tiny-gap="0" 663 data-tiny-controls="true" 664 data-tiny-nav="true" 665 data-tiny-autoplay-buttons="true" 666 data-tiny-autoplay="true"> 667 668 <div class="tiny-item" style="height:100%;"> 669 <div class="tns-lazy-img tns-bg-slide" 670 data-style="background:url('website_assets/inner-slide.png?t=202606212333240') center center / cover no-repeat;"></div> 671 </div> 672 673 </div><!--/.tiny-slider--> 674 675 </div><!-- /.slider --> 676 <div class="rz-slider-caption-wrap d-flex flex-column overflow-hidden justify-content-center align-items-start"> 677 <div class="rz-slider-caption container d-flex flex-column align-items-start"> 678 <div class="rz-slider-caption-title d-flex flex-column text-center justify-content-center align-items-start"> 679 680 681 <h1>About Us</h1> 682 683 <nav aria-label="breadcrumb" class="breadcrumb"> 684 <ul><li><a href="./">Home</a> </li><li><a href="our_community/index.php">Our Community</a> </li><li>About Us</li></ul></nav> 685 686 </div> 687 </div><!-- /.rz-slider-caption --> 688 </div><!-- /.rz-slider-caption-wrap --> 689</div><!-- /.slider-wrap --> 690 691 692 <div id="freeform-content-wrapper" class="position-relative z-3"> 693 <div class="container-fluid px-0 d-flex flex-column flex-lg-row flex-lg-nowrap"> 694 <div class="col freeform-left-col-fill"></div> 695 696 <div class="col-side-wrap position-relative"> 697 <div class="col-side h-100 has-edit-buttons"> 698 <div class="sticky-top freeform-leftcol-builder-edit-btn-wrap" style="z-index:1041;top:140px;right:0;"> 699 <div class="rz-btns-container freeform-leftcol-builder-edit-btn-container"> 700
700<script language="JavaScript" type="text/JavaScript"> 701 RZ.module = 'page_builder'; RZ.linkname = ''; 702 RZ.template = '*none*'; RZ.recordid = ''; 703 RZ.nexturl = "/revize/plugins/zbuilder/v1/website/editforms/site_builder-editform.jsp?type=leftnav"; 704 RZ.popupwidth = ''; RZ.popupheight = ''; RZ.popupscroll = ''; 705 RZ.img = '<span class="rzBtn rzBtn freeform-builder-edit-btn" data-bs-toggle="tooltip" data-placement="right" aria-label="Edit column with builder" data-bs-original-title="Edit column with builder"><i class="bi bi-columns-gap fs-4"></i></span>'; 706 RZ.set = 'pageid=leftnav-links-992'; 707 RZ.options = ''; 708 if (typeof RZaction != 'undefined') RZaction('edititem'); 709 </script>
709 710 </div> 711 </div> 712 <!-- side content here --> 713 714 715 <div class="rz-element-wrapper rz-submenu-wrapper"> 716 <div class="submenu-header rz-module-header d-none d-lg-flex"> 717 <i class="module-header-icon-before lh-1 flex-shrink-0" aria-hidden="true"></i> 718 <span class="rz-module-header-text">Related Pages</span> 719 <i class="module-header-icon-after lh-1 flex-shrink-0" aria-hidden="true"></i> 720 </div> 721 722 <div class="submenu-wrap has-edit-buttons"> 723 <nav aria-labelledby="submenu" data-style="vertical"> 724 725 726 727 728 <div class="rz-btns-container center-top"> 729
729<script language="JavaScript" type="text/JavaScript"> 730 RZ.module = 'links'; 731 RZ.nexturl = "/revize/plugins/menus/webspace_menu-editlist.jsp?pageid=links-992&" 732 + "linksfilter=linkplacement=leftnav and linkparentid=992&" 733 + "numberoflevels=2&" 734 + "linkoptions=url,template,file&" 735 + "linknewsection=*all*"; 736 RZ.img = '<span class="rzBtn rzBtn-sm">Edit Submenu</span>'; 737 RZ.caption = ''; 738 RZ.set = "links.linkplacement=leftnav" 739 RZ.options = ''; 740 if (typeof RZaction != 'undefined') RZaction('editlist'); 741 </script>
741 742 </div> 743 744 <ul id="submenu" class="v08-30-2012"> 745 <li id="li-993" class="menuLI level0 menuSelectedChild first"><a class="menuA level0 menuSelectedChild first" href="https://westvalleycity.municipal.codes/" target="_blank" >City Code</a></li> 746 <li id="li-994" class="menuLI level0 menuSelectedChild"><a class="menuA level0 menuSelectedChild" href="https://gisportal.wvc-ut.gov/portal/home/index.html" target="_blank" >City Maps</a></li> 747 <li id="li-995" class="menuLI level0 menuSelectedChild"><a class="menuA level0 menuSelectedChild" href="our_community/about_us/contact_information.php" target="_self" >Contact Information</a></li> 748 <li id="li-996" class="menuLI level0 menuSelectedChild children"><a class="menuA level0 menuSelectedChild" href="our_community/about_us/demographics/index.php" target="_self" >Demographics</a> 749 <ul id="ul-1054" class="menuUL level1 menuHidden"> 750 <li id="li-1054" class="menuLI level1 menuHidden"><a class="menuA level1 menuHidden" href="our_community/about_us/demographics/educational_attainment.php" target="_self" >Educational Attainment</a></li> 751 <li id="li-1055" class="menuLI level1 menuHidden"><a class="menuA level1 menuHidden" href="our_community/about_us/demographics/employment_and_business.php" target="_self" >Employment and Business</a></li> 752 <li id="li-1056" class="menuLI level1 menuHidden"><a class="menuA level1 menuHidden" href="our_community/about_us/demographics/households_by_income.php" target="_self" >Households by Income</a></li> 753 <li id="li-1057" class="menuLI level1 menuHidden"><a class="menuA level1 menuHidden" href="our_community/about_us/demographics/housing_units.php" target="_self" >Housing Units</a></li> 754 <li id="li-1058" class="menuLI level1 menuHidden"><a class="menuA level1 menuHidden" href="our_community/about_us/demographics/marital_status.php" target="_self" >Marital Status</a></li> 755 <li id="li-1059" class="menuLI level1 menuHidden"><a class="menuA level1 menuHidden" href="our_community/about_us/demographics/population_by_age.php" target="_self" >Population by Age</a></li> 756 <li id="li-1060" class="menuLI level1 menuHidden"><a class="menuA level1 menuHidden" href="our_community/about_us/demographics/population_by_race_ethnicity.php" target="_self" >Population by Race / Ethnicity</a></li> 757 <li id="li-1061" class="menuLI level1 menuHidden"><a class="menuA level1 menuHidden" href="our_community/about_us/demographics/population_demographics.php" target="_self" >Population Demographics</a></li> 758 <li id="li-1062" class="menuLI level1 menuHidden"><a class="menuA level1 menuHidden" href="our_community/about_us/demographics/vehicles_available.php" target="_self" >Vehicles Available</a></li> 759 </ul> 760 </li> 761 <li id="li-997" class="menuLI level0 menuSelectedChild children"><a class="menuA level0 menuSelectedChild" href="our_community/about_us/history_of_west_valley_city/index.php" target="_self" >History of West Valley City</a> 762 <ul id="ul-1093" class="menuUL level1 menuHidden"> 763 <li id="li-1093" class="menuLI level1 menuHidden"><a class="menuA level1 menuHidden" href="our_community/about_us/history_of_west_valley_city/historic_sites.php" target="_self" >Historic Sites</a></li> 764 <li id="li-1094" class="menuLI level1 menuHidden"><a class="menuA level1 menuHidden" href="our_community/about_us/history_of_west_valley_city/timeline.php" target="_self" >Timeline</a></li> 765 </ul> 766 </li> 767</ul> 768 769 </nav> 770 </div><!-- /#submenu-wrap --> 771 </div><!-- /.rz-element-wrapper --> 772 773 </div><!-- /.col-side --> 774 </div><!-- /.col-side-wrap --> 775 776 <div class="col-post-wrap"> 777 <div class="col-post h-100"> 778 <div id="post" class="h-100"> 779 <div class="post-content h-100"> 780 <!-- main content --> 781 782 783 784 785 786<div class="rz-section-block-wrap position-relative"> 787 788 789 790 <div class="rz-section-block container"> 791 792 793 794 795 796<div class="rz-row-block d-grid"> 797<div class="rz-column-block"> 798 799 800<div class="rz-element-wrapper rz-rte-wrapper has-edit-buttons" 801 802 > 803 804 805 806 <div class="center-top"> 807 <div class="rz-btns-container"> 808
808<script language="JavaScript" type="text/JavaScript"> 809 RZ.module = 'generic'; 810 RZ.nexturl = '/revize/plugins/zbuilder/v1/website/editforms/rte-editform.jsp'; 811 RZ.img = '<span class="rzBtn rzBtn-xs">Edit Content</span>'; 812 RZ.set = 'pageid=0fbdf6ee-afdf-4b62-bee6-6a88c3fbfef2'; 813 RZ.options = ''; 814 if (typeof RZaction != 'undefined') RZaction('editform'); 815 </script>
815 816 </div> 817 </div> 818 819 <div class="rz-element rz-rte-wrap clearfix"> 820 821 <div class="rz-rte-element"> 822 823 824 <h2 id="versionHeadLine" class="headline">A Brief History of West Valley City</h2> 825<div id="cc251bde38-7b3f-44b9-b06f-e96274484937" class="pageContent cpGrid cpGrid24" data-containerid="251bde38-7b3f-44b9-b06f-e96274484937"> 826<div class="row outer wide"> 827<div class="outer col col24 first last" data-widgetcontainerid="ff90ec36-27ca-4acd-97ce-8274aa284adc"> 828<div class="row nest first last wide"> 829<div class="inner col col24 first last idb8627730-a17c-4a8a-ab69-784b6cbb93ff" data-widgetcontainerid="b8627730-a17c-4a8a-ab69-784b6cbb93ff"> 830<div id="divEditor3e8ec28e-a277-4e61-b04a-7d126c71669f" class="widget editor pageStyles wide" data-elementqueryclasses="{"wide-narrow":"min-width:25em"}"> 831<div class="fr-view"> 832<p id="isPasted">In 1848, Joseph Harker and his family crossed the Jordan River and settled in what is now West Valley City. Soon after, other pioneer families followed, leaving Salt Lake City to go “over Jordan.” They built farming communities that later became known as Granger, Hunter, Redwood, and Chesterfield.</p> 833<p>Over the next century, the area grew steadily. Roads were paved, including 3500 South in 1918. Services and organizations were created, such as the Granger-Hunter Improvement District in 1949. The community saw its first bank open in 1956; Granger High School in 1958; and the Granger-Hunter Chamber of Commerce in 1961. By 1980, the communities joined together and officially incorporated as West Valley City.</p> 834<p>Growth continued into the 2000s. In 2002, West Valley City hosted Olympic hockey during the Winter Games. This event sparked new development, including the E Center (now the Maverik Center) and major upgrades around the arena.</p> 835<p>Economic development has remained a top priority. Business parks such as Lake Park Corporate Center, West Ridge Commerce Park, Decker Lake Business District, and Metro Business Park are now home to companies like Verizon Wireless, Frito Lay, Backcountry.com, UPS, and Discover Card. In the city center, Valley Fair Mall has been completely redeveloped, and the new transit-oriented project, Fairbourne Station, is reshaping the downtown area.</p> 836<p>West Valley City is known for its cultural diversity. According to the 2010 Census, nearly 35% of the population identified as non-white. To celebrate this diversity, the city broke ground on the Utah Cultural Celebration Center in 2002, a dream of former Mayor Gearld L. Wright. Since opening, the Center has hosted festivals, Pow Wows, the Utah Polynesian Festival, Day of the Dead celebrations, summer and winter concerts, art exhibits, and education programs. It is also home to one of only three Olmec Heads in the United States, a gift from Mexico.</p> 837<p>Recreation is another part of life in West Valley City. The city offers two golf courses, more than 20 parks, the 96,000-square-foot Family Fitness Center, and the Harman Senior Recreation Center, giving residents of all ages places to stay active and connected.</p> 838<p>Today, with a population of more than 145,000, West Valley City is Utah’s second-largest city. From Joseph Harker’s first camp on the Jordan River to a thriving community of culture, business, and recreation, the city continues to live up to its motto: “Progress as promised.”</p> 839</div> 840</div> 841</div> 842</div> 843</div> 844</div> 845</div> 846 847 </div> 848 849 </div> 850</div> 851 852 853</div> 854 855 856 857</div><!-- /.rz-row-block --> 858 859 860 861 862 </div><!-- /.rz-section-block --> 863</div><!-- /.rz-section-block-wrap --> 864 865 866 </div><!-- /.post-content --> 867 </div><!-- /#post --> 868 </div><!-- /.col-post --> 869 </div><!-- /.col-post-wrap --> 870 <div class="col freeform-right-col-fill"></div> 871 </div><!-- /.row --> 872 </div><!-- /.freeform-content-wrapper --> 873 </main><!-- /#rz-content-wrap --> 874 875<footer class="site-footer-wrap"> 876 <div class="site-footer"> 877 878 879 880 881<div class="rz-section-block-wrap position-relative" style="background-color:#000;--rz-section-padding-sm:48px 0;--rz-section-padding-md:48px 0;--rz-section-padding-lg:48px 0;"> 882 883 884 885 <div class="rz-section-block container"> 886 887 888 889 890 891<div class="rz-row-block d-grid"> 892<div class="rz-column-block d-flex flex-wrap flex-column justify-content-center align-items-center d-md-flex flex-md-wrap flex-md-column justify-content-md-center align-items-md-center d-lg-flex flex-lg-wrap flex-lg-row justify-content-lg-start align-items-lg-start"> 893 894 895 896<div class="rz-element-wrapper rz-section-header-wrapper has-edit-buttons" style="margin:0px 0px 64px 0px;"> 897 <div class="center-top"> 898 <div class="rz-btns-container"> 899
899<script language="JavaScript" type="text/JavaScript"> 900 RZ.module = 'generic'; 901 RZ.nexturl = "/revize/plugins/zbuilder/v1/website/editforms/section_header-editform.jsp"; 902 RZ.img = '<span class="rzBtn rzBtn-sm">Edit Section Header</span>'; 903 RZ.caption = ''; 904 RZ.set = 'pageid=438f0e81-2b79-446b-bbfb-71b3f20494be'; 905 RZ.options = ''; 906 if (typeof RZaction != 'undefined') RZaction('editform'); 907 </script>
907 908 </div> 909 </div> 910 <div class="rz-element rz-section-header-wrap align-items-start text-start d-flex align-items-center gap-2"> 911 912 <div class="rz-section-header d-flex align-items-start text-start align-items-center gap-2"> 913 914 915 <div class="d-flex flex-column align-items-start text-start"> 916 917 918 <h2 class="rz-section-header-title mb-0" style="color:#ffffff;font-size:min(80px, 7.2vw);">West Valley City</h2> 919 920 921 </div> 922 923 924 </div><!-- /.rz-section-header --> 925 926 </div><!-- /.rz-section-header-wrap --> 927</div><!-- /.rz-element-wrapper --> 928 929 930 931</div> 932 933 934 935</div><!-- /.rz-row-block --> 936 937 938 939 940<div class="rz-row-block d-grid opt_row_columns_4"> 941<div class="rz-column-block"> 942 943 944<div class="rz-element-wrapper rz-rte-wrapper has-edit-buttons hide-edit-buttons" 945 946 > 947 948 949 950 <div class="center-top"> 951 <div class="rz-btns-container"> 952
952<script language="JavaScript" type="text/JavaScript"> 953 RZ.module = 'generic'; 954 RZ.nexturl = '/revize/plugins/zbuilder/v1/website/editforms/rte-editform.jsp'; 955 RZ.img = '<span class="rzBtn rzBtn-xs">Edit Content</span>'; 956 RZ.set = 'pageid=85dc9365-24ae-4e28-9278-3b06ecaeb84c'; 957 RZ.options = ''; 958 if (typeof RZaction != 'undefined') RZaction('editform'); 959 </script>
959 960 </div> 961 </div> 962 963 <div class="rz-element rz-rte-wrap clearfix"> 964 965 <div class="rz-rte-element" style="color:#ffffff;"> 966 967 968 <strong>City Hall</strong> 969 970 </div> 971 972 </div> 973</div> 974 975 976 977 <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"> 978 <div class="center-top"> 979 <div class="rz-btns-container"> 980
980<script language="JavaScript" type="text/JavaScript"> 981 RZ.module = 'generic'; 982 RZ.nexturl = '/revize/plugins/zbuilder/v1/website/editforms/address-editform.jsp'; 983 RZ.img = '<span class="rzBtn rzBtn-xs">Edit address</span>'; 984 RZ.set = 'pageid=0fa9c7e3-cbe4-456b-9db8-9f54bdda9d35'; 985 RZ.options = ''; 986 if (typeof RZaction != 'undefined') RZaction('editform'); 987 </script>
987 988 </div> 989 </div> 990 991 <div class="vr vr-s d-none"></div> 992 <a href="https://www.google.com/maps/search/?api=1&query=3600+South+Constitution+Boulevard%26%238232%3BWest+Valley+City%2C+UT+84119" 993 target="_self" 994 class="btn btn-link d-flex align-items-center text-start"> 995 <i class="bi bi-geo-alt-fill me-2"></i>3600 South Constitution Boulevard
West Valley City, UT 84119 996 </a> 997 <div class="vr vr-e d-none"></div> 998 999 </div><!-- /.rz-element-wrapper --> 1000 1001 1002</div><div class="rz-column-block"> 1003 1004 1005<div class="rz-element-wrapper rz-rte-wrapper has-edit-buttons" 1006 1007 > 1008 1009 1010 1011 <div class="center-top"> 1012 <div class="rz-btns-container"> 1013
1013<script language="JavaScript" type="text/JavaScript"> 1014 RZ.module = 'generic'; 1015 RZ.nexturl = '/revize/plugins/zbuilder/v1/website/editforms/rte-editform.jsp'; 1016 RZ.img = '<span class="rzBtn rzBtn-xs">Edit Content</span>'; 1017 RZ.set = 'pageid=a29b20ab-a55c-43e3-a09e-2423abab187c'; 1018 RZ.options = ''; 1019 if (typeof RZaction != 'undefined') RZaction('editform'); 1020 </script>
1020 1021 </div> 1022 </div> 1023 1024 <div class="rz-element rz-rte-wrap clearfix"> 1025 1026 <div class="rz-rte-element" style="color:#ffffff;"> 1027 1028 1029 Phone: 801-966-3600<br />TTY: 385-316-8658 1030 1031 </div> 1032 1033 </div> 1034</div> 1035 1036 1037</div><div class="rz-column-block d-flex flex-wrap flex-column justify-content-center align-items-center d-md-flex flex-md-wrap flex-md-column justify-content-md-center align-items-md-center d-lg-flex flex-lg-wrap flex-lg-row justify-content-lg-end align-items-lg-start"> 1038 1039 1040 1041 1042<div class="rz-element-wrapper rz-button-wrapper has-edit-buttons move-to-offcanvas footer-social-btns" 1043 1044 > 1045 1046 <div class="center-top"> 1047 <div class="rz-btns-container"> 1048
1048<script> 1049 RZ.module = 'generic'; 1050 RZ.nexturl = "/revize/plugins/zbuilder/v1/website/editforms/buttons-editform.jsp"; 1051 RZ.img = '<span class="rzBtn rzBtn-xs">Edit Buttons</span>'; 1052 RZ.caption = ''; 1053 RZ.set = 'pageid=238a2126-33bb-4c2f-ae9b-92743e03f8dc'; 1054 RZ.options = ''; 1055 if (typeof RZaction != 'undefined') RZaction('editform'); 1056 </script>
1056 1057 </div> 1058 </div> 1059 <div class="rz-element rz-button-wrap d-flex flex-wrap" 1060 style="gap:20px;"> 1061 1062<div class="d-flex align-items-stretch" data-aos-duration="600"> 1063 <a href="https://www.facebook.com/WestValleyCity" target="_blank" 1064 class="rz-btn-element d-flex align-items-center justify-content-center btn btn-primary no-rz-text-reveal-btn " 1065 style="background:linear-gradient(90deg, #00000000 0%, #00000000 100%);--bs-btn-border-radius:0px;--bs-btn-border-width:0px;--bs-btn-border-color:#00000000;--bs-btn-border-hover-color:#00000000;padding:0px 0px 0px 0px;"> 1066 1067 1068 1069 1070 <i class="fab fa-facebook-f rz-btn-icon flex-shrink-0" style="font-size:32px;width:32px;height:32px;line-height:32px;border-radius:0px;color:#ffffff;background:#00000000;" aria-hidden="true"></i> 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 </a> 1081</div> 1082 1083<div class="d-flex align-items-stretch" data-aos-duration="600"> 1084 <a href="https://www.instagram.com/wvcut" target="_blank" 1085 class="rz-btn-element d-flex align-items-center justify-content-center btn btn-primary no-rz-text-reveal-btn " 1086 style="background:linear-gradient(90deg, #00000000 0%, #00000000 100%);--bs-btn-border-radius:0px;--bs-btn-border-width:0px;--bs-btn-border-color:#00000000;--bs-btn-border-hover-color:#00000000;padding:0px 0px 0px 0px;"> 1087 1088 1089 1090 1091 <i class="bi bi-instagram rz-btn-icon flex-shrink-0" style="font-size:32px;width:32px;height:32px;line-height:32px;border-radius:0px;color:#ffffff;background:#00000000;" aria-hidden="true"></i> 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 </a> 1102</div> 1103 1104<div class="d-flex align-items-stretch" data-aos-duration="600"> 1105 <a href="https://www.linkedin.com/company/west-valley-city" target="_blank" 1106 class="rz-btn-element d-flex align-items-center justify-content-center btn btn-primary no-rz-text-reveal-btn " 1107 style="background:linear-gradient(90deg, #00000000 0%, #00000000 100%);--bs-btn-border-radius:0px;--bs-btn-border-width:0px;--bs-btn-border-color:#00000000;--bs-btn-border-hover-color:#00000000;padding:0px 0px 0px 0px;"> 1108 1109 1110 1111 1112 <i class="bi bi-linkedin rz-btn-icon flex-shrink-0" style="font-size:32px;width:32px;height:32px;line-height:32px;border-radius:0px;color:#ffffff;background:#00000000;" aria-hidden="true"></i> 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 </a> 1123</div> 1124 1125<div class="d-flex align-items-stretch" data-aos-duration="600"> 1126 <a href="https://www.youtube.com/@wvctv2290" target="_blank" 1127 class="rz-btn-element d-flex align-items-center justify-content-center btn btn-primary no-rz-text-reveal-btn " 1128 style="background:linear-gradient(90deg, #00000000 0%, #00000000 100%);--bs-btn-border-radius:0px;--bs-btn-border-width:0px;--bs-btn-border-color:#00000000;--bs-btn-border-hover-color:#00000000;padding:0px 0px 0px 0px;"> 1129 1130 1131 1132 1133 <i class="fab fa-youtube rz-btn-icon flex-shrink-0" style="font-size:32px;width:32px;height:32px;line-height:32px;border-radius:0px;color:#ffffff;background:#00000000;" aria-hidden="true"></i> 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 </a> 1144</div> 1145 1146<div class="d-flex align-items-stretch" data-aos-duration="600"> 1147 <a href="https://x.com/WVCUT" target="_blank" 1148 class="rz-btn-element d-flex align-items-center justify-content-center btn btn-primary no-rz-text-reveal-btn " 1149 style="background:linear-gradient(90deg, #00000000 0%, #00000000 100%);--bs-btn-border-radius:0px;--bs-btn-border-width:0px;--bs-btn-border-color:#00000000;--bs-btn-border-hover-color:#00000000;padding:0px 0px 0px 0px;"> 1150 1151 1152 1153 1154 <i class="bi bi-twitter-x rz-btn-icon flex-shrink-0" style="font-size:32px;width:32px;height:32px;line-height:32px;border-radius:0px;color:#ffffff;background:#00000000;" aria-hidden="true"></i> 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 </a> 1165</div> 1166 1167 </div> 1168</div> 1169 1170 1171 1172</div> 1173 1174 1175 1176</div><!-- /.rz-row-block --> 1177 1178 1179 1180 1181 </div><!-- /.rz-section-block --> 1182</div><!-- /.rz-section-block-wrap --> 1183 1184 1185 </div><!-- /.site-footer --> 1186</footer><!-- /.site-footer-wrap --> 1187<div class="offcanvas-lg offcanvas-bottom" 1188 tabindex="-1" 1189 id="offcanvasHeaderItems"> 1190 <div class="offcanvas-header"> 1191 <button type="button" 1192 class="btn-close" 1193 data-bs-dismiss="offcanvas" 1194 aria-label="Close" 1195 data-bs-target="#offcanvasHeaderItems"></button> 1196 </div> 1197 <div class="offcanvas-body offcanvasHeaderItems-offcanvas-body pt-0"></div> 1198</div><!-- #offcanvasHeaderItems --> <div class="modal modal-lg fade" id="searchModal" tabindex="-1" role="dialog" style="--bs-modal-width:640px;"> 1199 <div class="modal-dialog modal-dialog-centered" role="Site Search"> 1200 <div class="modal-content px-0"> 1201 <div class="modal-header border-0 pb-0 px-lg-3 pt-4"> 1202 <h2 class="h5">Search West Valley City, UT</h2> 1203 <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> 1204 </div> 1205 <div class="modal-body p-0"> 1206 <form class="form-inline overflow-hidden" method="GET" action="search.php" role="search" aria-label="sitewide"> 1207 <div class="d-flex relative bg-white p-2 px-3"> 1208 <div class="position-relative w-100"> 1209 <div class="form-floating w-100"> 1210 <input id="autocompleteme" autocomplete="off" class="form-control form-control-lg m-0 w-100" name="q" type="search" placeholder="How can we help?"> 1211 <label for="autocompleteme" class="bg-transparent">How can we help?</label> 1212 </div> 1213 <div id="autocomplete-spinner" class="spinner-border text-success position-absolute" role="status" 1214 style="top: 50%; right: 4rem; width: 1rem; height: 1rem; margin-top: -9px; display: none; z-index: 10;--bs-spinner-border-width:0.15em" > 1215 <span class="visually-hidden">Loading...</span> 1216 </div> 1217 </div> 1218 1219 <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> 1220 <span><svg width="20" height="20" viewBox="0 0 20 20" aria-hidden="true" class="insta-search-icon"> 1221 <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> 1222 </svg><span class="sr-only">Search</span></span> 1223 </button> 1224 </div> 1225 </form> 1226 <div class="all-search-buttons-wrap w-100 lh-1 position-relative" style="display:none"> 1227 <div class="all-search-buttons py-3 p-3 d-md-flex flex-column flex-md-row gap-2 border-top"> 1228 <div class="searchPopover p-3 bg-white d-none d-xl-block popover"> 1229 <div class="searchPopover-arrow"></div><span class="searchPopover-text">Try searching... </span> 1230 </div> 1231 <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> 1232 <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> 1233 </div><!-- /.search-buttons --> 1234 </div><!-- /.all-search-buttons-wrap --> 1235 <div class="popular-pages-search p-2"></div> 1236 </div><!-- /.modal-body --> 1237 </div><!-- /.modal-content --> 1238 </div><!-- /.modal-dialog --> 1239</div><!-- /.modal --> 1240 1241 1242<link href="https://cdn.jsdelivr.net/gh/lipis/[email protected]/css/flag-icons.min.css" rel="stylesheet" type="text/css" /> 1243<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"> 1244 <!-- Accessibility Button --> 1245 <div class="rz-element-wrapper rz-ada-floaty-btn-element-combo rz-ada-btn-element d-none d-lg-flex position-relative"> 1246 <button 1247 type="button" 1248 class="d-flex align-items-center lh-1 w-100 d-flex align-items-center justify-content-center" 1249 aria-label="Open accessibility options" 1250 title="Accessibility features"> 1251 <i class="bi bi-universal-access" aria-hidden="true"></i> 1252 <span class="visually-hidden">Accessibility features</span> 1253 <span class="ada-text">Accessibility</span> 1254 </button> 1255 </div><!-- /.rz-element-wrapper --> 1256 1257 <!-- Share Button --> 1258 <div class="rz-element-wrapper rz-share-floaty-btn-element-combo d-none d-lg-flex"> 1259 <button 1260 type="button" 1261 class="d-flex align-items-center lh-1 w-100 d-flex align-items-center justify-content-center" 1262 data-bs-toggle="modal" 1263 data-bs-target="#shareModal" 1264 aria-label="Share this page" 1265 title="Share this page"> 1266 <i class="bi bi-share-fill" aria-hidden="true"></i> 1267 <span class="visually-hidden">Share this page</span> 1268 <span class="share-text">Share</span> 1269 </button> 1270 </div><!-- /.rz-element-wrapper --> 1271 1272 <!-- Translate Dropdown --> 1273 <div class="rz-element-wrapper header-translate-wrap-combo relative d-none d-lg-flex align-items-stretch gap-0"> 1274 <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"> 1275 <div class="fi fi-us selected-flag"></div> 1276 <i class="bi bi-translate me-2"></i> 1277 <span class="visually-hidden">Translate</span> 1278 <span class="translate-text">Translate</span> 1279 </button> 1280 <button class="btn text-start translate-reset px-2" translate="no"> 1281 <i class="fa-solid fa-power-off" aria-hidden="true"></i> 1282 <span class="visually-hidden">Reset Translation</span> 1283 </button> 1284 </div> 1285</div><!-- /.rz-element-wrapper-combo --> 1286 1287 1288<div class="modal fade confirmation-popup" style="--bs-modal-width:420px;z-index:1100" tabindex="-1" data-bs-backdrop="static"> 1289 <div class="modal-dialog modal-dialog-centered"> 1290 <div class="modal-content"> 1291 <div class="modal-body p-4 text-center"> 1292 <div class="d-flex justify-content-center"> 1293 <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> 1294 </div> 1295 <div class="d-flex"></div> 1296 <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>West Valley City, UT</strong> and visit an external site, do you wish to continue?</p> 1297 </div> 1298 <div class="modal-footer flex-nowrap p-0"> 1299 <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> 1300 <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> 1301 </div> 1302 </div> 1303 </div> 1304</div> 1305
1306<script> 1307$(document).ready(function () { 1308 let externalLink = ''; // Store the external link URL 1309 1310 $('a') 1311 .not('[href^="javascript:"]') 1312 .not('[href^="mailto:"]') 1313 .not('[href^="tel:"]') 1314 .not('[href="http://cms4.revize.com/revize/supportrevize/revize_faq.php"]') 1315 .not('[href="https://intercom.help/revizefaqs/en/"]') 1316 .not('.rz-brand-footer a') 1317 .not('#revize-login') 1318 .not('.copy-live-link') 1319 .on('click', function (event) { 1320 // Ignore links with .rzBtn children 1321 if ($(this).find('span.rzBtn').length === 0) { 1322 const linkUrl = $(this).prop('href'); 1323 const linkHost = new URL(linkUrl).hostname; 1324 const currentHost = window.location.hostname; 1325 1326 // Treat current domain and all revize.com domains/subdomains as internal 1327 const isRevizeDomain = 1328 linkHost === 'revize.com' || 1329 linkHost.endsWith('.revize.com'); 1330 1331 // If different domain and NOT a Revize domain, show confirmation popup 1332 if (linkHost !== currentHost && !isRevizeDomain) { 1333 event.preventDefault(); 1334 externalLink = linkUrl; 1335 $('.confirmation-popup').addClass('show').show(); 1336 } 1337 } 1338 }); 1339 1340 // Confirm external navigation 1341 $('#confirmLeave').on('click', function () { 1342 if (externalLink) { 1343 window.open(externalLink, '_blank'); 1344 } 1345 1346 $('.confirmation-popup').removeClass('show').hide(); 1347 externalLink = ''; 1348 }); 1349 1350 // Cancel external navigation 1351 $('#cancelLeave').on('click', function () { 1352 $('.confirmation-popup').removeClass('show').hide(); 1353 externalLink = ''; 1354 }); 1355}); 1356</script>
1356 1357 <div class="modal fade" 1358 id="event-modal" 1359 tabindex="-1" 1360 role="dialog" 1361 aria-labelledby="modal-event-title" 1362 aria-hidden="true"> 1363 <div id="event-modal-dialog" 1364 class="modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable" 1365 role="document" 1366 style="--bs-modal-width:1000px"> 1367 <div class="modal-content"> 1368 1369 <div class="modal-header align-items-center"> 1370 <div> 1371 <h2 class="h4 modal-subtitle m-0 fs-4 fw-bold">Event Details</h2> 1372 </div> 1373 <button type="button" 1374 class="btn-close mt-0" 1375 data-bs-dismiss="modal" 1376 aria-label="Close"></button> 1377 </div> 1378 1379 <div class="modal-body p-0" 1380 id="modal-event-body"> 1381 <div class="center-center"><div class="rz-btns-container"></div></div> 1382 <div class="row row-cols-lg-2 g-0 mx-0"> 1383 <div class="event-modal-header" 1384 style="min-height:200px"></div><!-- /.event-modal-header for image --> 1385 <div class="event-details d-flex flex-column has-edit-buttons"> 1386 <div class="d-flex align-items-start justify-content-between bg-light p-4"> 1387 <div class="w-100"> 1388 <div class="d-flex align-items-center gap-3"> 1389 <div class="event-border-color" 1390 style="margin-top:3px;width:12px;height:26px;border-radius:100px;align-self:start;"></div> 1391 <div class="w-100"> 1392 <div class="d-flex justify-content-between align-items-center"> 1393 <h3 class="fs-4 fw-bold" id="modal-event-title">City Council Meeting </h3> 1394 <a href="calendar" 1395 class="flex-shrink-0 btn btn-light bg-white border-0 btn-sm" 1396 data-bs-toggle="tooltip" 1397 data-bs-placement="left" 1398 data-bs-title="view Calendar" 1399 data-bs-offset="0,20"> 1400 <i class="bi bi-box-arrow-up-right"></i> 1401 <span class="sr-only">View Calendar</span> 1402 </a> 1403 </div> 1404 1405 <p class="text-muted row row-cols-1 g-2 my-0 p-0 fw-normal lh-sm small"> 1406 <span class="modal-event-date w-max-content"><i class="bi bi-calendar4-event me-2"></i></span> 1407 <span class="modal-event-time"><i class="bi bi-clock me-2"></i></span> 1408 <span class="modal-location w-100"><i class="bi bi-geo-alt me-2"></i></span> 1409 </p> 1410 </div> 1411 </div> 1412 </div> 1413 <button type="button" 1414 class="btn-close bg-white d-none" 1415 data-bs-dismiss="modal" 1416 aria-label="Close"></button> 1417 </div><!-- /.d-flex --> 1418 1419 <div class="d-flex flex-column p-4 my-auto row-gap-4"> 1420 <div class="modal-event-description small"> 1421 <h4 class="h6 fw-bold">Description</h4> 1422 <div id="modal-event-subtitle"></div> 1423 <div id="modal-event-description"> 1424 </div> 1425 </div> 1426 <div style="width: 100%" id="modal-event-location" class="ratio ratio-16x9"></div> 1427 </div><!-- /.d-flex --> 1428 1429 <div class="modal-action-buttons d-flex gap-2 mt-auto mb-4 px-4"> 1430 1431 <a href="#" 1432 class="btn btn-primary border-0" id="modal-event-readmore">Read More</a> 1433 </div><!-- /.modal-action-buttons --> 1434 1435 </div><!-- /.event-details --> 1436 </div><!-- /.row --> 1437 </div><!-- /.modal-body --> 1438 </div><!-- /.modal-content --> 1439 </div> 1440 </div> 1441 1442 <style> 1443 #modal-event-duration{display:none} 1444 .rz-business-inner-map{border:1px solid var(--bs-border-color)!important;border-radius:var(--bs-border-radius)} 1445 </style> 1446 1447<div id="share-modal-section"> 1448 <div class="modal fade" id="shareModal" tabindex="-1" role="dialog" aria-labelledby="shareModal"> 1449 <div class="modal-dialog modal-dialog-centered" role="document"> 1450 <div class="modal-content"> 1451 <div class="modal-header border-0 bg-transparent pb-0 px-lg-4 pt-4"> 1452 <div class="w-100 text-center"> 1453 <span class="d-block h5 mb-1 w-100">Share this page</span> 1454 <p class="mb-1">On your favorite social media platform</p> 1455 </div> 1456 <button type="button" class="btn-close position-absolute end-0 top-0 m-3" data-bs-dismiss="modal" aria-label="Close"></button> 1457 </div> 1458 <div class="modal-body p-lg-4"> 1459 <div class="share-btns row m-0 row-cols-md-3 gap-2"> 1460 <a href="#" class="btn btn-primary btn-facebook" target="_blank"> 1461 <i class="fa-brands fs-5 fa-square-facebook"></i> Facebook 1462 </a> 1463 1464 <a href="#" class="btn btn-primary btn-twitter" target="_blank"> 1465 <i class="fa-brands fs-5 fa-x-twitter"></i> x(twitter) 1466 </a> 1467 1468 <a href="#" class="btn btn-primary btn-linkedin" target="_blank"> 1469 <i class="fa-brands fs-5 fa-linkedin"></i> Linkedin 1470 </a> 1471 1472 <a href="#" class="btn btn-primary btn-reddit" target="_blank"> 1473 <i class="fa-brands fs-5 fa-square-reddit"></i> reddit 1474 </a> 1475 <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> 1476 1477 <a href="" class="btn btn-outline-dark w-100 border emailpage"><i class="fa-regular fs-5 fa-envelope"></i> Email Page Link</a> 1478 1479 <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> 1480 1481 </div><!-- /.share-btns --> 1482 1483
1483<script> 1484 $(document).ready(function () { 1485 // Build social share URLs from current page 1486 var pageUrl = window.location.href; 1487 var encodedUrl = encodeURIComponent(pageUrl); 1488 1489 $('.btn-facebook').attr( 1490 'href', 1491 'https://www.facebook.com/sharer/sharer.php?u=' + encodedUrl 1492 ); 1493 1494 $('.btn-twitter').attr( 1495 'href', 1496 'https://twitter.com/intent/tweet?url=' + encodedUrl 1497 ); 1498 1499 $('.btn-linkedin').attr( 1500 'href', 1501 'https://www.linkedin.com/sharing/share-offsite/?url=' + encodedUrl 1502 ); 1503 1504 $('.btn-reddit').attr( 1505 'href', 1506 'https://www.reddit.com/submit?url=' + encodedUrl 1507 ); 1508 1509 // Copy to clipboard 1510 $('.share-copy-link').on('click', function (e) { 1511 e.preventDefault(); 1512 1513 var urlToCopy = $(this).attr('href') || $(this).data('url') || window.location.href; 1514 1515 if (navigator.clipboard && navigator.clipboard.writeText) { 1516 navigator.clipboard 1517 .writeText(urlToCopy) 1518 .then(function () { 1519 new bootstrap.Toast(document.getElementById('coppiedToast')).show(); 1520 }) 1521 .catch(function () { 1522 fallbackCopy(urlToCopy); 1523 }); 1524 } else { 1525 fallbackCopy(urlToCopy); 1526 } 1527 }); 1528 1529 function fallbackCopy(text) { 1530 var $tempInput = $('<input style="position:absolute;left:-9999px;">'); 1531 $('body').append($tempInput); 1532 $tempInput.val(text).select(); 1533 document.execCommand('copy'); 1534 $tempInput.remove(); 1535 new bootstrap.Toast(document.getElementById('coppiedToast')).show(); 1536 } 1537 1538 // Email page link 1539 $('.emailpage').on('click', function (e) { 1540 e.preventDefault(); 1541 1542 var pageUrl = window.location.href; 1543 var subject = encodeURIComponent('Check out this page'); 1544 var body = encodeURIComponent('Hey,\n\nI thought you might find this interesting:\n' + pageUrl); 1545 window.location.href = 'mailto:?subject=' + subject + '&body=' + body; 1546 }); 1547 }); 1548 </script>
1548 1549 1550 <div class="toast-container position-fixed top-0 start-50 translate-middle-x"> 1551 <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"> 1552 <div class="d-flex"> 1553 <div class="toast-body"> 1554 URL copied to clipboard! 1555 </div> 1556 <button type="button" class="btn-close btn-close-white me-2 m-auto" data-bs-dismiss="toast" aria-label="Close"></button> 1557 </div> 1558 </div> 1559 </div> 1560 1561 </div><!-- /.modal-body --> 1562 </div><!-- /.modal-content --> 1563 </div><!-- /.modal-dialog --> 1564 </div><!-- /.modal --> 1565</div><!-- /#modal-section --><link href="https://cdn.jsdelivr.net/gh/lipis/[email protected]/css/flag-icons.min.css" rel="stylesheet" type="text/css" /> 1566<div class="modal fade" id="translateModal" tabindex="-1" aria-hidden="true"> 1567 <div class="modal-dialog modal-sm modal-dialog-centered modal-dialog-scrollable"> 1568 <div class="modal-content"> 1569 <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"> 1570 <input type="search" placeholder="Search languages..." autocomplete="off" class="form-control" id="translatesearch-input"> 1571 <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"> 1572 <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> 1573 </button>
1574 </form> 1575 <div class="modal-body" style="max-height:300px"> 1576 <div class="lang-no-results text-center d-none text-muted small">No matching languages.</div> 1577 <div class="translation-links row row-cols-lg-1"> 1578 <div> 1579 <button class="btn btn-link text-body p-2 text-start w-100 English" data-lang="English" translate="no"> 1580 <span class="fi fi-us me-2"></span><strong>English</strong> 1581 </button> 1582 </div> 1583 <div> 1584 <button class="btn btn-link text-body p-2 text-start w-100 Afrikaans" data-lang="Afrikaans"> 1585 <span class="fi fi-za me-2"></span>Afrikaans 1586 </button> 1587 </div> 1588 <div> 1589 <button class="btn btn-link text-body p-2 text-start w-100 Albanian" data-lang="Albanian"> 1590 <span class="fi fi-al me-2"></span>Albanian 1591 </button> 1592 </div> 1593 <div> 1594 <button class="btn btn-link text-body p-2 text-start w-100 Arabic" data-lang="Arabic"> 1595 <span class="fi fi-sa me-2"></span>Arabic 1596 </button> 1597 </div> 1598 <div> 1599 <button class="btn btn-link text-body p-2 text-start w-100 Armenian" data-lang="Armenian"> 1600 <span class="fi fi-am me-2"></span>Armenian 1601 </button> 1602 </div> 1603 <div> 1604 <button class="btn btn-link text-body p-2 text-start w-100 Azerbaijani" data-lang="Azerbaijani"> 1605 <span class="fi fi-az me-2"></span>Azerbaijani 1606 </button> 1607 </div> 1608 <div> 1609 <button class="btn btn-link text-body p-2 text-start w-100 Basque" data-lang="Basque"> 1610 <span class="fi fi-es me-2"></span>Basque 1611 </button> 1612 </div> 1613 <div> 1614 <button class="btn btn-link text-body p-2 text-start w-100 Belarusian" data-lang="Belarusian"> 1615 <span class="fi fi-by me-2"></span>Belarusian 1616 </button> 1617 </div> 1618 <div> 1619 <button class="btn btn-link text-body p-2 text-start w-100 Bengali" data-lang="Bengali"> 1620 <span class="fi fi-bd me-2"></span>Bengali 1621 </button> 1622 </div> 1623 <div> 1624 <button class="btn btn-link text-body p-2 text-start w-100 Bosnian" data-lang="Bosnian"> 1625 <span class="fi fi-ba me-2"></span>Bosnian 1626 </button> 1627 </div> 1628 <div> 1629 <button class="btn btn-link text-body p-2 text-start w-100 Bulgarian" data-lang="Bulgarian"> 1630 <span class="fi fi-bg me-2"></span>Bulgarian 1631 </button> 1632 </div> 1633 <div> 1634 <button class="btn btn-link text-body p-2 text-start w-100 Catalan" data-lang="Catalan"> 1635 <span class="fi fi-ad me-2"></span>Catalan 1636 </button> 1637 </div> 1638 <div> 1639 <button class="btn btn-link text-body p-2 text-start w-100 Cebuano" data-lang="Cebuano"> 1640 <span class="fi fi-ph me-2"></span>Cebuano 1641 </button> 1642 </div> 1643 <div> 1644 <button class="btn btn-link text-body p-2 text-start w-100 Chinese" data-lang="Chinese (Simplified)"> 1645 <span class="fi fi-cn me-2"></span>Chinese (Simplified) 1646 </button> 1647 </div> 1648 <div> 1649 <button class="btn btn-link text-body p-2 text-start w-100 Chinese" data-lang="Chinese (Traditional)"> 1650 <span class="fi fi-tw me-2"></span>Chinese (Traditional) 1651 </button> 1652 </div> 1653 <div> 1654 <button class="btn btn-link text-body p-2 text-start w-100 Croatian" data-lang="Croatian"> 1655 <span class="fi fi-hr me-2"></span>Croatian 1656 </button> 1657 </div> 1658 <div> 1659 <button class="btn btn-link text-body p-2 text-start w-100 Czech" data-lang="Czech"> 1660 <span class="fi fi-cz me-2"></span>Czech 1661 </button> 1662 </div> 1663 <div> 1664 <button class="btn btn-link text-body p-2 text-start w-100 Danish" data-lang="Danish"> 1665 <span class="fi fi-dk me-2"></span>Danish 1666 </button> 1667 </div> 1668 <div> 1669 <button class="btn btn-link text-body p-2 text-start w-100 Dutch" data-lang="Dutch"> 1670 <span class="fi fi-nl me-2"></span>Dutch 1671 </button> 1672 </div> 1673 <div> 1674 <button class="btn btn-link text-body p-2 text-start w-100 Esperanto" data-lang="Esperanto"> 1675 <span class="fi fi-un me-2"></span>Esperanto 1676 </button> 1677 </div> 1678 <div> 1679 <button class="btn btn-link text-body p-2 text-start w-100
1679Estonian" data-lang="Estonian"> 1680 <span class="fi fi-ee me-2"></span>Estonian 1681 </button> 1682 </div> 1683 <div> 1684 <button class="btn btn-link text-body p-2 text-start w-100 Filipino" data-lang="Filipino"> 1685 <span class="fi fi-ph me-2"></span>Filipino 1686 </button> 1687 </div> 1688 <div> 1689 <button class="btn btn-link text-body p-2 text-start w-100 Finnish" data-lang="Finnish"> 1690 <span class="fi fi-fi me-2"></span>Finnish 1691 </button> 1692 </div> 1693 <div> 1694 <button class="btn btn-link text-body p-2 text-start w-100 French" data-lang="French"> 1695 <span class="fi fi-fr me-2"></span>French 1696 </button> 1697 </div> 1698 <div> 1699 <button class="btn btn-link text-body p-2 text-start w-100 Galician" data-lang="Galician"> 1700 <span class="fi fi-es me-2"></span>Galician 1701 </button> 1702 </div> 1703 <div> 1704 <button class="btn btn-link text-body p-2 text-start w-100 Georgian" data-lang="Georgian"> 1705 <span class="fi fi-ge me-2"></span>Georgian 1706 </button> 1707 </div> 1708 <div> 1709 <button class="btn btn-link text-body p-2 text-start w-100 German" data-lang="German"> 1710 <span class="fi fi-de me-2"></span>German 1711 </button> 1712 </div> 1713 <div> 1714 <button class="btn btn-link text-body p-2 text-start w-100 Greek" data-lang="Greek"> 1715 <span class="fi fi-gr me-2"></span>Greek 1716 </button> 1717 </div> 1718 <div> 1719 <button class="btn btn-link text-body p-2 text-start w-100 Gujarati" data-lang="Gujarati"> 1720 <span class="fi fi-in me-2"></span>Gujarati 1721 </button> 1722 </div> 1723 <div> 1724 <button class="btn btn-link text-body p-2 text-start w-100 Haitian" data-lang="Haitian Creole"> 1725 <span class="fi fi-ht me-2"></span>Haitian Creole 1726 </button> 1727 </div> 1728 <div> 1729 <button class="btn btn-link text-body p-2 text-start w-100 Hausa" data-lang="Hausa"> 1730 <span class="fi fi-ng me-2"></span>Hausa 1731 </button> 1732 </div> 1733 <div> 1734 <button class="btn btn-link text-body p-2 text-start w-100 Hebrew" data-lang="Hebrew"> 1735 <span class="fi fi-il me-2"></span>Hebrew 1736 </button> 1737 </div> 1738 <div> 1739 <button class="btn btn-link text-body p-2 text-start w-100 Hindi" data-lang="Hindi"> 1740 <span class="fi fi-in me-2"></span>Hindi 1741 </button> 1742 </div> 1743 <div> 1744 <button class="btn btn-link text-body p-2 text-start w-100 Hmong" data-lang="Hmong"> 1745 <span class="fi fi-cn me-2"></span>Hmong 1746 </button> 1747 </div> 1748 <div> 1749 <button class="btn btn-link text-body p-2 text-start w-100 Hungarian" data-lang="Hungarian"> 1750 <span class="fi fi-hu me-2"></span>Hungarian 1751 </button> 1752 </div> 1753 <div> 1754 <button class="btn btn-link text-body p-2 text-start w-100 Icelandic" data-lang="Icelandic"> 1755 <span class="fi fi-is me-2"></span>Icelandic 1756 </button> 1757 </div> 1758 <div> 1759 <button class="btn btn-link text-body p-2 text-start w-100 Igbo" data-lang="Igbo"> 1760 <span class="fi fi-ng me-2"></span>Igbo 1761 </button> 1762 </div> 1763 <div> 1764 <button class="btn btn-link text-body p-2 text-start w-100 Indonesian" data-lang="Indonesian"> 1765 <span class="fi fi-id me-2"></span>Indonesian 1766 </button> 1767 </div> 1768 <div> 1769 <button class="btn btn-link text-body p-2 text-start w-100 Irish" data-lang="Irish"> 1770 <span class="fi fi-ie me-2"></span>Irish 1771 </button> 1772 </div> 1773 <div> 1774 <button class="btn btn-link text-body p-2 text-start w-100 Italian" data-lang="Italian"> 1775 <span class="fi fi-it me-2"></span>Italian 1776 </button> 1777 </div> 1778 <div> 1779 <button class="btn btn-link text-body p-2 text-start w-100 Japanese" data-lang="Japanese"> 1780 <span class="fi fi-jp me-2"></span>Japanese 1781 </button> 1782 </div> 1783 <div> 1784 <button class="btn btn-link text-body p-2 text-start w-100 Javanese" data-lang="Javanese"> 1785 <span class="fi fi-id me-2"></span>Javanese 1786 </button> 1787 </div> 1788 <div> 1789 <button class="btn btn-link text-body p-2 text-start w-100 K
1789annada" data-lang="Kannada"> 1790 <span class="fi fi-in me-2"></span>Kannada 1791 </button> 1792 </div> 1793 <div> 1794 <button class="btn btn-link text-body p-2 text-start w-100 Khmer" data-lang="Khmer"> 1795 <span class="fi fi-kh me-2"></span>Khmer 1796 </button> 1797 </div> 1798 <div> 1799 <button class="btn btn-link text-body p-2 text-start w-100 Korean" data-lang="Korean"> 1800 <span class="fi fi-kr me-2"></span>Korean 1801 </button> 1802 </div> 1803 <div> 1804 <button class="btn btn-link text-body p-2 text-start w-100 Lao" data-lang="Lao"> 1805 <span class="fi fi-la me-2"></span>Lao 1806 </button> 1807 </div> 1808 <div> 1809 <button class="btn btn-link text-body p-2 text-start w-100 Latin" data-lang="Latin"> 1810 <span class="fi fi-va me-2"></span>Latin 1811 </button> 1812 </div> 1813 <div> 1814 <button class="btn btn-link text-body p-2 text-start w-100 Latvian" data-lang="Latvian"> 1815 <span class="fi fi-lv me-2"></span>Latvian 1816 </button> 1817 </div> 1818 <div> 1819 <button class="btn btn-link text-body p-2 text-start w-100 Lithuanian" data-lang="Lithuanian"> 1820 <span class="fi fi-lt me-2"></span>Lithuanian 1821 </button> 1822 </div> 1823 <div> 1824 <button class="btn btn-link text-body p-2 text-start w-100 Macedonian" data-lang="Macedonian"> 1825 <span class="fi fi-mk me-2"></span>Macedonian 1826 </button> 1827 </div> 1828 <div> 1829 <button class="btn btn-link text-body p-2 text-start w-100 Malay" data-lang="Malay"> 1830 <span class="fi fi-my me-2"></span>Malay 1831 </button> 1832 </div> 1833 <div> 1834 <button class="btn btn-link text-body p-2 text-start w-100 Maltese" data-lang="Maltese"> 1835 <span class="fi fi-mt me-2"></span>Maltese 1836 </button> 1837 </div> 1838 <div> 1839 <button class="btn btn-link text-body p-2 text-start w-100 Maori" data-lang="Maori"> 1840 <span class="fi fi-nz me-2"></span>Maori 1841 </button> 1842 </div> 1843 <div> 1844 <button class="btn btn-link text-body p-2 text-start w-100 Marathi" data-lang="Marathi"> 1845 <span class="fi fi-in me-2"></span>Marathi 1846 </button> 1847 </div> 1848 <div> 1849 <button class="btn btn-link text-body p-2 text-start w-100 Mongolian" data-lang="Mongolian"> 1850 <span class="fi fi-mn me-2"></span>Mongolian 1851 </button> 1852 </div> 1853 <div> 1854 <button class="btn btn-link text-body p-2 text-start w-100 Nepali" data-lang="Nepali"> 1855 <span class="fi fi-np me-2"></span>Nepali 1856 </button> 1857 </div> 1858 <div> 1859 <button class="btn btn-link text-body p-2 text-start w-100 Norwegian" data-lang="Norwegian"> 1860 <span class="fi fi-no me-2"></span>Norwegian 1861 </button> 1862 </div> 1863 <div> 1864 <button class="btn btn-link text-body p-2 text-start w-100 Persian" data-lang="Persian"> 1865 <span class="fi fi-ir me-2"></span>Persian 1866 </button> 1867 </div> 1868 <div> 1869 <button class="btn btn-link text-body p-2 text-start w-100 Polish" data-lang="Polish"> 1870 <span class="fi fi-pl me-2"></span>Polish 1871 </button> 1872 </div> 1873 <div> 1874 <button class="btn btn-link text-body p-2 text-start w-100 Portuguese" data-lang="Portuguese"> 1875 <span class="fi fi-pt me-2"></span>Portuguese 1876 </button> 1877 </div> 1878 <div> 1879 <button class="btn btn-link text-body p-2 text-start w-100 Punjabi" data-lang="Punjabi"> 1880 <span class="fi fi-in me-2"></span>Punjabi 1881 </button> 1882 </div> 1883 <div> 1884 <button class="btn btn-link text-body p-2 text-start w-100 Romanian" data-lang="Romanian"> 1885 <span class="fi fi-ro me-2"></span>Romanian 1886 </button> 1887 </div> 1888 <div> 1889 <button class="btn btn-link text-body p-2 text-start w-100 Russian" data-lang="Russian"> 1890 <span class="fi fi-ru me-2"></span>Russian 1891 </button> 1892 </div> 1893 <div> 1894 <button class="btn btn-link text-body p-2 text-start w-100 Serbian" data-lang="Serbian"> 1895 <span class="fi fi-rs me-2"></span>Serbian 1896 </button> 1897 </div> 1898 <div> 1899 <button class="btn btn-link text-body p-2 text-start w-100 Slovak" data-lang="Slovak"> 1900 <span class="fi fi-sk me-2"></span>Slovak 1901 </button> 1902 </div> 1903 <div> 1904 <button class="btn btn-link text-body p-2 text-start w-100 Slovenian" data-lang="Slovenian"> 1905 <span class="fi fi-si me-2"></span>Slovenian 1906 </button> 1907 </div> 1908 <div> 1909 <button class="btn btn-link text-body p-2 text-start w-100 Somali" data-lang="Somali"> 1910 <span class="fi fi-so me-2"></span>Somali 1911 </button> 1912 </div> 1913 <div> 1914 <button class="btn btn-link text-body p-2 text-start w-100 Spanish" data-lang="Spanish"> 1915 <span class="fi fi-es me-2"></span>Spanish 1916 </button> 1917 </div> 1918 <div> 1919 <button class="btn btn-link text-body p-2 text-start w-100 Swahili" data-lang="Swahili"> 1920 <span class="fi fi-ke me-2"></span>Swahili 1921 </button> 1922 </div> 1923 <div> 1924 <button class="btn btn-link text-body p-2 text-start w-100 Swedish" data-lang="Swedish"> 1925 <span class="fi fi-se me-2"></span>Swedish 1926 </button> 1927 </div> 1928 <div> 1929 <button class="btn btn-link text-body p-2 text-start w-100 Tamil" data-lang="Tamil"> 1930 <span class="fi fi-in me-2"></span>Tamil 1931 </button> 1932 </div> 1933 <div> 1934 <button class="btn btn-link text-body p-2 text-start w-100 Telugu" data-lang="Telugu"> 1935 <span class="fi fi-in me-2"></span>Telugu 1936 </button> 1937 </div> 1938 <div> 1939 <button class="btn btn-link text-body p-2 text-start w-100 Thai" data-lang="Thai"> 1940 <span class="fi fi-th me-2"></span>Thai 1941 </button> 1942 </div> 1943 <div> 1944 <button class="btn btn-link text-body p-2 text-start w-100 Turkish" data-lang="Turkish"> 1945 <span class="fi fi-tr me-2"></span>Turkish 1946 </button> 1947 </div> 1948 <div> 1949 <button class="btn btn-link text-body p-2 text-start w-100 Ukrainian" data-lang="Ukrainian"> 1950 <span class="fi fi-ua me-2"></span>Ukrainian 1951 </button> 1952 </div> 1953 <div> 1954 <button class="btn btn-link text-body p-2 text-start w-100 Urdu" data-lang="Urdu"> 1955 <span class="fi fi-pk me-2"></span>Urdu 1956 </button> 1957 </div> 1958 <div> 1959 <button class="btn btn-link text-body p-2 text-start w-100 Vietnamese" data-lang="Vietnamese"> 1960 <span class="fi fi-vn me-2"></span>Vietnamese 1961 </button> 1962 </div> 1963 <div> 1964 <button class="btn btn-link text-body p-2 text-start w-100 Welsh" data-lang="Welsh"> 1965 <span class="fi fi-gb me-2"></span>Welsh 1966 </button> 1967 </div> 1968 <div> 1969 <button class="btn btn-link text-body p-2 text-start w-100 Yoruba" data-lang="Yoruba"> 1970 <span class="fi fi-ng me-2"></span>Yoruba 1971 </button> 1972 </div> 1973 <div> 1974 <button class="btn btn-link text-body p-2 text-start w-100 Zulu" data-lang="Zulu"> 1975 <span class="fi fi-za me-2"></span>Zulu 1976 </button> 1977 </div> 1978 </div> 1979 </div> 1980 <div class="modal-footer p-2"> 1981 <div class="lang-search-status text-center small text-muted" aria-l
1981ive="polite" aria-atomic="true"></div> 1982 <button type="button" class="btn btn-sm btn-primary ms-auto" data-bs-dismiss="modal">Close</button> 1983 <button class="btn btn-link text-body p-2 text-start translate-reset" translate="no"> 1984 <i class="fa-solid fa-power-off" aria-hidden="true"></i> 1985 <span class="visually-hidden">Reset Translation</span> 1986 </button> 1987 </div> 1988 </div> 1989 </div> 1990</div> 1991<div id="google-translate" class="d-none"></div>
1992<script> 1993function googleTranslateElementInit() { 1994 new google.translate.TranslateElement( 1995 { pageLanguage: 'en', autoDisplay: false, layout: google.translate.TranslateElement.InlineLayout.SIMPLE }, 1996 'google-translate' 1997 ); 1998} 1999</script>
vendor: 2 bytes, line 1999
1999
2000<script> 2001var translateURL = "//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"; 2002$.getScript(translateURL); 2003 2004function clickLanguage(langText, maxTries, intervalMs) { 2005 langText = (langText || '').trim(); 2006 maxTries = maxTries || 30; 2007 intervalMs = intervalMs || 200; 2008 var tries = 0; 2009 var timer = setInterval(function () { 2010 var $frame = $("iframe.skiptranslate"); 2011 if ($frame.length) { 2012 var doc = $frame.contents(); 2013 var $target = doc.find('span.text').filter(function () { 2014 return $(this).text().trim() === langText; 2015 }).closest('a'); 2016 if (!$target.length) { 2017 $target = doc.find('span.text').filter(function () { 2018 return $(this).text().trim() === 'English'; 2019 }).closest('a'); 2020 } 2021 if ($target.length) { 2022 $target.get(0).click(); 2023 clearInterval(timer); 2024 return; 2025 } 2026 } 2027 tries++; 2028 if (tries >= maxTries) clearInterval(timer); 2029 }, intervalMs); 2030} 2031 2032function getCookie(cname) { 2033 let name = cname + "="; 2034 let ca = document.cookie.split(';'); 2035 for(let i = 0; i < ca.length; i++) { 2036 let c = ca[i]; 2037 while (c.charAt(0) == ' ') c = c.substring(1); 2038 if (c.indexOf(name) == 0) return c.substring(name.length, c.length); 2039 } 2040 return ""; 2041} 2042 2043function sanitizeFlag(code) { 2044 var v = (code || "").toLowerCase().trim(); 2045 if (!v || v === "undefined" || v === "null") return ""; 2046 if (!/^[a-z]{2}$/.test(v)) return ""; 2047 return v; 2048} 2049 2050function applyActiveFromCookie() { 2051 var code = sanitizeFlag(getCookie('lang')) || sanitizeFlag(getCookie('code')) || 'us'; 2052 var $btn = $('.translation-links button').filter(function(){ 2053 var dataCode = ($(this).data('code') || '').toString().toLowerCase(); 2054 if (dataCode && dataCode === code) return true; 2055 var cls = ($(this).find('span[class*="fi-"]').attr('class') || ''); 2056 var m = cls.match(/\bfi-([a-z]{2})\b/i); 2057 return m && m[1].toLowerCase() === code; 2058 }).first(); 2059 if (!$btn.length && code === 'us') $btn = $('.translation-links button[data-lang="English"]').first(); 2060 $('.translation-links button').removeClass('active'); 2061 if ($btn.length) $btn.addClass('active'); 2062} 2063 2064(function initSelectedFlag(){ 2065 var initialCode = sanitizeFlag(getCookie('lang')) || sanitizeFlag(getCookie('code')) || "us"; 2066 $('.selected-flag').attr('class', 'fi fi-' + initialCode + ' selected-flag'); 2067 $('.c-code').text(initialCode); 2068 applyActiveFromCookie(); 2069})(); 2070 2071$(".translation-links button").on("click", function () { 2072 var lang = $(this).data("lang"); 2073 $('.translation-links button').removeClass('active'); 2074 $(this).addClass('active'); 2075 clickLanguage(lang); 2076 var cCode = $(this).data('code'); 2077 if (!cCode) { 2078 var cls = $(this).find('span[class*="fi-"]').attr('class') || ''; 2079 var m = cls.match(/\bfi-([a-z]{2})\b/i); 2080 if (m) cCode = m[1].toLowerCase(); 2081 } 2082 if (!cCode) cCode = 'us'; 2083 $('.selected-flag').attr('class', 'fi fi-' + cCode + ' selected-flag'); 2084 $('.c-code').text(cCode); 2085 document.cookie = 'lang=' + cCode + '; path=/'; 2086 document.cookie = 'code=' + cCode + '; path=/'; 2087 return false; 2088}); 2089 2090var $translateReset = $(".translate-reset");
2091$translateReset.on("keydown click", function (e) { 2092 if (e.keyCode === 13 || e.type === "click") { 2093 clickLanguage('English'); 2094 $('.translation-links button').removeClass('active'); 2095 $('.translation-links button[data-lang="English"]').addClass('active'); 2096 $('.selected-flag').attr('class','fi fi-us selected-flag'); 2097 $('.c-code').text('us'); 2098 document.cookie = 'lang=us; path=/'; 2099 document.cookie = 'code=us; path=/'; 2100 } 2101}); 2102 2103(function($){ 2104 var $form = $('.translate-search'); 2105 var $input = $form.find('input[type="search"]'); 2106 var $list = $('.translation-links'); 2107 var $btns = $list.find('div'); 2108 var $empty = $('.lang-no-results'); 2109 var $status = $('.lang-search-status'); 2110 $form.on('submit', function(e){ e.preventDefault(); }); 2111 function norm(s){ 2112 return (s||'').toString().toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g,''); 2113 } 2114 $btns.each(function(){ 2115 var $b = $(this); 2116 var txt = $b.text().trim(); 2117 var lang = ($b.data('lang')||'')+''; 2118 $b.attr('data-search', norm(txt + ' ' + lang)); 2119 }); 2120 function updateStatus(visible, total){ 2121 if ($status.length) $status.text(visible + ' of ' + total + ' languages'); 2122 if ($empty.length) $empty.toggleClass('d-none', visible > 0); 2123 } 2124 var total = $btns.length; 2125 updateStatus(total, total); 2126 function filter(){ 2127 var q = norm($input.val()); 2128 if (!q){ 2129 $btns.removeClass('d-none'); 2130 updateStatus(total, total); 2131 return; 2132 } 2133 var visible = 0; 2134 $btns.each(function(){ 2135 var $b = $(this); 2136 var hay = $b.attr('data-search') || ''; 2137 var match = hay.indexOf(q) !== -1; 2138 $b.toggleClass('d-none', !match); 2139 if (match) visible++; 2140 }); 2141 $btns.filter('.d-none').attr('tabindex', -1); 2142 $btns.not('.d-none'); 2143 updateStatus(visible, total); 2144 } 2145 $input.on('input keyup', filter); 2146})(jQuery); 2147// ADA, Fix Google Translate Inputs 2148function fixGoogleTranslateInputs() { 2149 const inputs = [ 2150 { id: "goog-gt-votingInputSrcLang", label: "Source Language Input" }, 2151 { id: "goog-gt-votingInputTrgLang", label: "Target Language Input" }, 2152 { id: "goog-gt-votingInputSrcText", label: "Source Text Input" }, 2153 { id: "goog-gt-votingInputTrgText", label: "Target Text Input" }, 2154 { id: "goog-gt-votingInputVote", label: "Vote Input" }, 2155 ]; 2156 2157 let allLabelsSet = true; 2158 inputs.forEach((item) => { 2159 const input = document.getElementById(item.id); 2160 if (input) { 2161 input.setAttribute("aria-label", item.label); 2162 } else { 2163 allLabelsSet = false; 2164 } 2165 }); 2166 2167 if (allLabelsSet) { 2168 googleObserver.disconnect(); 2169 } 2170 } 2171 const googleObserver = new MutationObserver((mutationsList, observer) => { 2172 for (let mutation of mutationsList) { 2173 if (mutation.type === "childList") { 2174 fixGoogleTranslateInputs(); 2175 } 2176 } 2177 }); 2178 googleObserver.observe(document.body, { childList: true, subtree: true }); 2179 fixGoogleTranslateInputs(); 2180</script>
vendor: 2 bytes, line 2180
2180
2181<script> 2182// === prevent translation on certain elements === 2183var NO_TRANSLATE_SELECTORS = [ 2184 '.material-icons', 2185 '.main-logo', 2186 '.nav-label', 2187 '.mini-calendar', 2188 '.rz-address-wrapper', 2189 '[data-no-translate]', 2190 'a[href^="mailto:"]' 2191]; 2192 2193function applyNoTranslate() { 2194 try { 2195 NO_TRANSLATE_SELECTORS.forEach(function (sel) { 2196 var $els = $(sel); 2197 if ($els.length) { 2198 $els 2199 .addClass('notranslate') 2200 .attr('translate', 'no') 2201 .attr('lang', $els.attr('lang') || 'en'); 2202 } 2203 }); 2204 } catch (e){ 2205 2206 } 2207} 2208 2209$(applyNoTranslate); 2210var noTranslateObserver = new MutationObserver(function () { 2211 applyNoTranslate(); 2212}); 2213noTranslateObserver.observe(document.documentElement, { childList: true, subtree: true }); 2214</script>
2214 2215<div class="offcanvas offcanvas-end offcanvas-business-item" tabindex="-1" id="catalogueDetails" aria-modal="true"> 2216 <div class="offcanvas-body p-0"> 2217 <div class="ratio ratio-16x9 mb-4 featured-image-wrap z-0" style="background-image: url('');"></div> 2218 <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> 2219 <h4 class="p-2 px-md-4 catalogue-title">Catalogue title</h4> 2220 <ul class="nav nav-underline justify-content-start border-bottom m-0 px-4" id="businessTabs" role="tablist"> 2221 <li class="nav-item m-0 " role="presentation"> 2222 <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> 2223 </li> 2224 <li class="nav-item m-0" role="presentation"> 2225 <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> 2226 </li> 2227 <li class="nav-item m-0 d-none" role="presentation"> 2228 <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> 2229 </li> 2230 </ul> 2231 <div id="business-details"> 2232 <div class="tab-content" id="businessTabContent"> 2233 <div class="tab-pane p-4 fade active show" id="overview-tab-pane" role="tabpanel" tabindex="0"> 2234 <div class="row row-cols-3 row-cols-md-3 py-lg-3 px-2 catalogue-helpful-links"> 2235 <p class="d-flex flex-column text-center m-0"> 2236 <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> 2237 </p> 2238 <p class="d-flex flex-column text-center m-0 catalogue-map-link"> 2239 <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> 2240 </p> 2241 <!-- <p class="d-flex flex-column text-center m-0"> 2242 <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> 2243 </p> --> 2244 <p class="d-flex flex-column text-center m-0"> 2245 <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> 2246 </p> 2247 </div><!-- /.d-flex --> 2248 <hr class="mt-0 mb-4"> 2249 <div class="row row-cols-1 row-cols-md-3 catalogue-contacts gap-md-3"> 2250 </div><!-- /.row --> 2251 <table class="table catalogue-hours"> 2252 <thead> 2253 <tr> 2254 <th scope="col" style="width:160px" class="ps-0 small text-muted">Days</th> 2255 <th scope="col" class="small text-muted">Hours</th> 2256 </tr> 2257 </thead> 2258 2259 <tbody class="table-group-divider"> 2260 <tr> 2261 <th scope="row" class="ps-0 text-nowrap">Sunday</th> 2262 <td></td> 2263 </tr> 2264 <tr> 2265 <th scope="row" class="ps-0 text-nowrap">Monday</th> 2266 <td></td> 2267 </tr> 2268 <tr> 2269 <th scope="row" class="ps-0 text-nowrap">Tuesday</th> 2270 <td></td> 2271 </tr> 2272 <tr> 2273 <th scope="row" class="ps-0 text-nowrap">Wednesday</th> 2274 <td></td> 2275 </tr> 2276 <tr> 2277 <th scope="row" class="ps-0 text-nowrap">Thursday</th> 2278 <td></td> 2279 </tr> 2280 <tr> 2281 <th scope="row" class="ps-0 text-nowrap">Friday</th> 2282 <td></td> 2283 </tr> 2284 <tr> 2285 <th scope="row" class="ps-0 text-nowrap">Saturday</th> 2286 <td></td> 2287 </tr> 2288 </tbody> 2289 </table> 2290 </div><!-- /.tab-pane --> 2291 <div class="tab-pane p-4 fade" id="about-tab-pane" role="tabpanel" tabindex="0"> 2292 </div><!-- /.tab-pane --> 2293 <div class="tab-pane p-4 fade" id="photos-tab-pane" role="tabpanel" tabindex="0"> 2294 <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> 2295 <div class="rz-gallery-wrap"> 2296
2297 <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;"> 2298 2299 <!-- <div data-src="_assets_/images/no-image-slider-2.jpg" class="rz-gallery-image" data-lg-size="3000-2000" style="position: absolute;"> 2300 <img src="_assets_/images/no-image-slider-2.jpg" class="w-100" alt=""> 2301 <span class="rz-zoom cursor-pointer z-index-1 bg-white fs-3 lh-1 p-4 rounded-circle"> 2302 <i class="bi bi-arrows-angle-expand lh-1"></i> 2303 </span> 2304 </div> 2305 2306 <div data-src="_assets_/images/no-image-slider.jpg" class="rz-gallery-image" data-lg-size="3000-2000" style="position: absolute;"> 2307 <img src="_assets_/images/no-image-slider.jpg" class="w-100" alt=""> 2308 <span class="rz-zoom cursor-pointer z-index-1 bg-white fs-3 lh-1 p-4 rounded-circle"> 2309 <i class="bi bi-arrows-angle-expand lh-1"></i> 2310 </span> 2311 </div> 2312 2313 <div data-src="_assets_/images/no-image-slider-2.jpg" class="rz-gallery-image" data-lg-size="3000-2000" style="position: absolute;"> 2314 <img src="_assets_/images/no-image-slider-2.jpg" class="w-100" alt=""> 2315 <span class="rz-zoom cursor-pointer z-index-1 bg-white fs-3 lh-1 p-4 rounded-circle"> 2316 <i class="bi bi-arrows-angle-expand lh-1"></i> 2317 </span> 2318 </div> 2319 2320 <div data-src="_assets_/images/no-image-slider-2.jpg" class="rz-gallery-image" data-lg-size="3000-2000" style="position: absolute;"> 2321 <img src="_assets_/images/no-image-slider-2.jpg" class="w-100" alt=""> 2322 <span class="rz-zoom cursor-pointer z-index-1 bg-white fs-3 lh-1 p-4 rounded-circle"> 2323 <i class="bi bi-arrows-angle-expand lh-1"></i> 2324 </span> 2325 </div> 2326 2327 <div data-src="_assets_/images/no-image-slider-2.jpg" class="rz-gallery-image" data-lg-size="3000-2000" style="position: absolute;"> 2328 <img src="_assets_/images/no-image-slider-2.jpg" class="w-100" alt=""> 2329 <span class="rz-zoom cursor-pointer z-index-1 bg-white fs-3 lh-1 p-4 rounded-circle"> 2330 <i class="bi bi-arrows-angle-expand lh-1"></i> 2331 </span> 2332 </div> --> 2333 2334 </div><!-- #lightgallery --> 2335 </div><!-- /.rz-gallery-wrap --> 2336 </div><!-- /.tab-pane --> 2337 </div><!-- /.tab-content --> 2338 </div><!-- /#business-details --> 2339 </div><!-- /.offcanvas-body --> 2340</div> 2341 2342
2343<script> 2344 2345var catalogueDetailsMap = { modal: null }; 2346var catalogueJSONData = null; 2347 2348if (typeof indexByIdOrRid !== 'function') { 2349 function indexByIdOrRid(data){ 2350 if (!data) return {}; 2351 if (!Array.isArray(data)) return data; 2352 return data.reduce((m, item) => { 2353 if (!item) return m; 2354 const key = item.rid ?? item.id; 2355 if (key != null) m[String(key)] = item; 2356 return m; 2357 }, {}); 2358 } 2359} 2360 2361function openCatalogueDetails(rid) { 2362 if (!catalogueDetailsMap.modal || !catalogueJSONData) return; 2363 2364 rid = String(rid); 2365 var cRecord = catalogueJSONData[rid]; 2366 if (!cRecord) return; 2367 2368 var m = catalogueDetailsMap; 2369 2370 var parsedOptions = cRecord.options; 2371 if (typeof parsedOptions === 'string') { 2372 try { parsedOptions = JSON.parse(parsedOptions); } catch(e){ parsedOptions = {}; } 2373 } 2374 parsedOptions = parsedOptions || {}; 2375 2376 var imgURL = (cRecord.image || '').trim(); 2377 if (imgURL && !imgURL.endsWith('/')) { 2378 m.img && m.img.classList.remove('d-none'); 2379 if (m.img) { 2380 m.img.style.backgroundImage = "url('" + imgURL + "')"; 2381 } 2382 } else { 2383 if (m.img) { 2384 m.img.style.backgroundImage = ''; 2385 m.img.classList.add('d-none'); 2386 } 2387 } 2388 2389 // Title 2390 if (m.title) { 2391 var rawTitle = cRecord.title || cRecord.name || ""; 2392 m.title.textContent = decodeHtmlEntities(rawTitle); 2393 } 2394 2395 if (m.helpful) { 2396 var links = m.helpful.querySelectorAll("a"); 2397 if (links.length) { 2398 var el = links[0]; 2399 var webUrl = (parsedOptions.website_url || "").trim(); 2400 var webText = (parsedOptions.website_text || "Visit Website").trim(); 2401 if (webUrl && webUrl !== "#") { 2402 el.href = webUrl; 2403 el.target = "_blank"; 2404 var span = el.querySelector("span"); 2405 if (span) span.innerText = webText; 2406 el.parentElement && el.parentElement.classList.remove("d-none"); 2407 } else { 2408 el.href = ""; 2409 el.parentElement && el.parentElement.classList.add("d-none"); 2410 } 2411 } 2412 } 2413 2414 if (m.maplink) { 2415 var mapAs = m.maplink.querySelectorAll("a"); 2416 if (mapAs.length) { 2417 var mapEl = mapAs[0]; 2418 var addr = (parsedOptions.val_address || "").trim(); 2419 if (addr) { 2420 var encoded = encodeURIComponent(addr).replace(/%20/g, "+"); 2421 mapEl.href = "https://www.google.com/maps/search/?api=1&query=" + encoded; 2422 mapEl.target = "_blank"; 2423 mapEl.parentElement && mapEl.parentElement.classList.remove('d-none'); 2424 } else { 2425 mapEl.href = ""; 2426 mapEl.parentElement && mapEl.parentElement.classList.add('d-none'); 2427 } 2428 } 2429 } 2430 2431 if (m.contacts) { 2432 m.contacts.innerHTML = ""; 2433 if (Array.isArray(parsedOptions.contacts)) {
2434 parsedOptions.contacts.forEach(function(contact) { 2435 var newAddress = document.createElement("address"); 2436 newAddress.innerHTML = '<strong class="small text-muted">' + (contact.val_header||'') + '</strong><br>'; 2437 2438 var inner = contact.val_text || ''; 2439 if (contact.val_href) { 2440 try { 2441 var href = contact.val_href; 2442 var isSelf = href.startsWith('tel:') || href.startsWith('mailto:') || href.startsWith(location.origin); 2443 inner = '<a href="'+href+'" target="'+(isSelf?'_self':'_blank')+'">'+ inner +'</a>'; 2444 } catch(e) { /* ignore bad href */ } 2445 } 2446 newAddress.innerHTML += inner; 2447 m.contacts.append(newAddress); 2448 }); 2449 } 2450 } 2451 2452 if (m.hours) { 2453 const table = m.hours; 2454 const dayKeys = [ 2455 'val_sunday','val_monday','val_tuesday','val_wednesday', 2456 'val_thursday','val_friday','val_saturday' 2457 ]; 2458 2459 const tds = Array.from(table.querySelectorAll('tbody td')); 2460 let hasAny = false; 2461 2462 tds.forEach((td, i) => { 2463 const val = parsedOptions.hours && parsedOptions.hours[dayKeys[i]]; 2464 const v = (val || '').trim(); 2465 td.textContent = v; 2466 if (v) hasAny = true; 2467 }); 2468 2469 table.classList.toggle('d-none', !hasAny); 2470 } 2471 2472 if (m.detail) { 2473 const pane = m.detail; 2474 const tabPane = pane.closest('.tab-pane'); 2475 const tabLink = tabPane ? document.querySelector(`[data-bs-target="#${tabPane.id}"]`) : null; 2476 2477 pane.innerHTML = "Loading..."; 2478 2479 fetch('catalogue/' + encodeURIComponent(rid) + '.php?display=json') 2480 .then(res => res.json()) 2481 .then(data => { 2482 const html = (data && data.details) ? data.details.trim() : ""; 2483 2484 pane.innerHTML = html || ""; 2485 2486 const isEmpty = !html; 2487 if (tabPane) tabPane.classList.toggle('d-none', isEmpty); 2488 if (tabLink) tabLink.classList.toggle('d-none', isEmpty); 2489 }) 2490 .catch(() => { 2491 pane.innerHTML = ""; 2492 if (tabPane) tabPane.classList.add('d-none'); 2493 if (tabLink) tabLink.classList.add('d-none'); 2494 }); 2495 } 2496 2497 // Gallery #TODO) 2498 if (m.gallery) m.gallery.innerHTML = ""; 2499 2500 try { 2501 bootstrap.Offcanvas.getOrCreateInstance(m.modal).show(); 2502 } catch(e) { 2503 console.error('Offcanvas show failed:', e); 2504 } 2505 2506 if (window.pushOcState) pushOcState('catalogueDetails', rid); 2507} 2508 2509document.addEventListener('DOMContentLoaded', function() { 2510 var modal = document.querySelector("#catalogueDetails"); 2511 if (!modal) return; 2512 2513 catalogueDetailsMap = { 2514 modal: modal, 2515 img: modal.querySelector(".featured-image-wrap"), 2516 title: modal.querySelector(".offcanvas-body .catalogue-title"), 2517 helpful: modal.querySelector(".catalogue-helpful-links"), 2518 maplink: modal.querySelector(".catalogue-map-link"), 2519 contacts: modal.querySelector(".catalogue-contacts"), 2520 hours: modal.querySelector(".catalogue-hours"), 2521 detail: modal.querySelector("#about-tab-pane"), 2522 gallery: modal.querySelector("#businessDetailslightgallery"), 2523 }; 2524 2525 fetch('_includes_/published/catalogue.json') 2526 .then(res => res.json()) 2527 .then(data => { catalogueJSONData = indexByIdOrRid(data); }) 2528 .then(() => { if (typeof tryDeepLinkNow === 'function') tryDeepLinkNow('catalogueDetails'); }) 2529 .catch((e) => { console.error('catalogue.json load failed', e); catalogueJSONData = {}; }); 2530}); 2531</script>
2531<div class="offcanvas offcanvas-bottom offcanvas-news-item mx-auto rounded-0 bg-body" tabindex="-1" id="newsDetails" style="--bs-offcanvas-height:95vh;"> 2532<div class="progress rounded-0" role="progressbar" aria-label="Scroll Progress" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100" style="height: 8px"> 2533 <div class="progress-bar bg-secondary"></div></div> 2534 2535 <div class="offcanvas-header border-bottom fw-bold"> 2536 Article Details 2537 <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button> 2538 </div> 2539 <div class="offcanvas-body pt-0"> 2540 <div class="container p-0"> 2541 <div class="col-lg-9 mx-auto"> 2542 2543 <div class="sticky-top"> 2544 <div class="d-flex small bg-body flex-wrap align-items-center py-3"> 2545 <div class="d-flex me-3"> 2546 <div class="d-flex post-info-wrap"> 2547 <p class="post-published m-0"> 2548 <span class="opacity-75">Published:</span> 2549 <time></time> <i class="bi bi-dot d-inline-block"></i> 2550 <span id="eta"></span> 2551 </p><!-- /.post-published --> 2552 </div><!-- /.post-info-wrap --> 2553 </div><!-- /.d-flex --> 2554 2555 <div class="post-btns-wrap ms-auto"> 2556 <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"> 2557 <i class="bi bi-share align-middle" aria-hidden="true"></i> 2558 <span class="visually-hidden">Share</span> 2559 </button> 2560 </div><!-- /.post-btns-wrap --> 2561 2562 </div><!-- /.d-flex --> 2563 </div><!-- /.sticky-top --> 2564 2565 <div class="featured-image-wrapper"></div> 2566 2567 <div class="p-lg-2 px-md-5"> 2568 <h3 class="mb-3 h3">Article Title</h3> 2569 <nav aria-label="breadcrumb" class="breadcrumb mb-3"> 2570 <ul> 2571 <li class="breadcrumb-item"><a href="./news">Articles</a> 2572 <li class="breadcrumb-item active text-truncate" aria-current="page"></li> 2573 </ul> 2574 </nav> 2575 <div id="news-full-details" class="article-full-details"></div><!-- /#post-details --> 2576 </div><!-- /.p-lg-2 --> 2577 </div><!-- /.col-lg-9 --> 2578 </div><!-- /.container --> 2579 </div><!-- /.offcanvas-body --> 2580</div><!-- /.offcanvas --> 2581
2582<script> 2583var newsDetailsMap = { modal: null }; 2584var newsJSONData = null; 2585 2586if (typeof indexByIdOrRid !== 'function') { 2587 function indexByIdOrRid(data){ 2588 if (!data) return {}; 2589 if (!Array.isArray(data)) return data; 2590 return data.reduce((m, item) => { 2591 if (!item) return m; 2592 const key = item.rid ?? item.id; 2593 if (key != null) m[String(key)] = item; 2594 return m; 2595 }, {}); 2596 } 2597} 2598 2599function hasImg(url) { 2600 if (!url) return false; 2601 var s = String(url).trim(); 2602 if (!s) return false; 2603 if (/^(null|undefined|none|n\/a)$/i.test(s)) return false; 2604 return true; 2605} 2606 2607/* global helper: decode ✨ & etc */ 2608window.decodeHtmlEntities = window.decodeHtmlEntities || function (str) { 2609 if (str == null) return ''; 2610 const ta = document.createElement('textarea'); 2611 ta.innerHTML = String(str); 2612 return ta.value; 2613}; 2614 2615function setFeaturedImage(url) { 2616 var m = newsDetailsMap; 2617 var modal = m.modal; 2618 if (!modal) return; 2619 2620 var wrap = modal.querySelector(".featured-image-wrapper"); 2621 if (!wrap) return; 2622 2623 if (hasImg(url)) { 2624 wrap.className = "featured-image-wrapper ratio ratio-16x9 mb-4 featured-image-wrap rounded"; 2625 wrap.style.backgroundImage = "url('" + url + "')"; 2626 m.img = wrap; 2627 } else { 2628 wrap.className = "featured-image-wrapper"; 2629 wrap.style.backgroundImage = ""; 2630 m.img = null; 2631 } 2632} 2633 2634function openNewsDetails(rid) {
2635 if (!newsDetailsMap.modal || !newsJSONData) return; 2636 2637 rid = String(rid); 2638 var cRecord = newsJSONData[rid]; 2639 if (!cRecord) return; 2640 2641 var m = newsDetailsMap; 2642 2643 setFeaturedImage(cRecord.image); 2644 2645 const titleDecoded = decodeHtmlEntities(cRecord.title || ""); 2646 2647 m.title.textContent = titleDecoded; 2648 m.date.textContent = cRecord.date || cRecord.posted || ""; 2649 m.breadcrumb.textContent = titleDecoded; 2650 2651 m.detail.innerHTML = "Loading..."; 2652 fetch('articles/' + encodeURIComponent(rid) + '.php?display=json') 2653 .then(res => res.json()) 2654 .then(newsData => { m.detail.innerHTML = newsData.details || ""; }) 2655 .catch(() => { m.detail.innerHTML = ""; }); 2656 2657 try { 2658 bootstrap.Offcanvas.getOrCreateInstance(m.modal).show(); 2659 } catch(e) { 2660 console.error('Offcanvas show failed:', e); 2661 } 2662 2663 if (window.pushOcState) pushOcState('newsDetails', rid); 2664} 2665 2666document.addEventListener('DOMContentLoaded', function() { 2667 var modal = document.querySelector("#newsDetails"); 2668 if (!modal) return; 2669 2670 newsDetailsMap = { 2671 modal: modal, 2672 img: modal.querySelector(".featured-image-wrapper"), 2673 title: modal.querySelector("h3.h3"), 2674 date: modal.querySelector(".post-published>time"), 2675 breadcrumb: modal.querySelector(".breadcrumb-item.active"), 2676 detail: modal.querySelector("#news-full-details") 2677 }; 2678 2679 // Scroll progress bar 2680 var scrollTarget = modal.querySelector('.offcanvas-body'); 2681 var progressBar = modal.querySelector('.progress-bar'); 2682 var progressOuter = modal.querySelector('.progress[role="progressbar"]'); 2683 2684 function updateScrollProgress() { 2685 if (!scrollTarget || !progressBar) return; 2686 2687 var maxScroll = scrollTarget.scrollHeight - scrollTarget.clientHeight; 2688 var current = scrollTarget.scrollTop || 0; 2689 2690 var pct = 0; 2691 if (maxScroll > 0) { 2692 pct = (current / maxScroll) * 100; 2693 } 2694 pct = Math.min(Math.max(pct, 0), 100); 2695 2696 progressBar.style.width = pct + '%'; 2697 if (progressOuter) { 2698 progressOuter.setAttribute('aria-valuenow', Math.round(pct)); 2699 } 2700 } 2701 2702 if (scrollTarget && progressBar) { 2703 scrollTarget.addEventListener('scroll', updateScrollProgress, { passive: true }); 2704 2705 modal.addEventListener('show.bs.offcanvas', function () { 2706 if (!scrollTarget) return; 2707 scrollTarget.scrollTop = 0; 2708 updateScrollProgress(); 2709 }); 2710 2711 updateScrollProgress(); 2712 } 2713 2714 fetch('_includes_/published/news_list.json') 2715 .then(res => res.json()) 2716 .then(data => { newsJSONData = indexByIdOrRid(data); }) 2717 .then(() => { if (typeof tryDeepLinkNow === 'function') tryDeepLinkNow('newsDetails'); }) 2718 .catch((e) => { console.error('news_list.json load failed', e); newsJSONData = {}; }); 2719}); 2720</script>
2720<div class="offcanvas offcanvas-end offcanvas-job-item" 2721 tabindex="-1" 2722 id="jobDetails"> 2723 <div class="offcanvas-header bg-light p-4 px-lg-5"> 2724 <h3 class="offcanvas-title fs-4">Job post</h3> 2725 <button type="button" 2726 class="btn-close" 2727 data-bs-dismiss="offcanvas" 2728 aria-label="Close"></button> 2729 </div> 2730 <div class="offcanvas-body p-0"> 2731 2732 <div class="p-4 p-lg-5"> 2733 <div class="d-flex align-items-center justify-content-between"> 2734 <div> 2735 <p class="h3 m-0 fs-3 d-flex flex-column"> 2736 <small class="fs-6 text-muted fw-bold">Position</small> 2737 </p> 2738 <h4 class="job-position">Job Position</h4> 2739 </div> 2740 <span class="btn btn-link btn-lg ms-auto d-none" 2741 id="saveItemBtn" 2742 tabindex="0"> 2743 <i class="bi bi-heart text-danger ms-auto cursor-pointer"></i> 2744 </span> 2745 <span class="btn btn-link btn-lg p-0" 2746 data-bs-toggle="modal" 2747 data-bs-target="#shareModal" 2748 tabindex="0"> 2749 <i class="bi bi-share text-body"></i> 2750 </span> 2751 </div> 2752 </div><!-- /.p-4 --> 2753 2754 <div class="job-details"> 2755 <div class="bg-light p-4 p-lg-5"> 2756 <div class="row row-cols-1 row-cols-sm-2 g-2 attribute-callouts"></div> 2757 2758 <a href="#" 2759 class="btn btn-primary mt-lg-4 apply-link"> 2760 Apply Now<i class="bi bi-box-arrow-up-right ms-2"></i> 2761 </a> 2762 </div><!-- /.bg-light --> 2763 2764 <div class="bg-white p-4 p-lg-5"> 2765 <!-- <p class="small bg-success-subtle text-success-emphasis p-1 px-2 mb-2 rounded-pill d-inline-flex"> 2766 <small><i class="bi bi-exclamation-circle"></i> Urgent Hire</small> 2767 </p> --> 2768 <p class="fs-4"></p> 2769 <div class="job-full-details"></div> 2770 </div><!-- /.bg-white --> 2771 </div><!-- /#job-details --> 2772 </div><!-- /.offcanvas-body --> 2773</div><!-- /.offcanvas --> 2774 2775<div class="toast align-items-center text-bg-success border-0 position-fixed bottom-0 end-0 m-4" 2776 id="savedItem" 2777 role="alert" 2778 aria-live="assertive" 2779 aria-atomic="true"> 2780 <div class="d-flex"> 2781 <div class="toast-body"> 2782 Added to your favorites! 2783 <a href="" class="text-light">See all here</a> 2784 </div> 2785 <button type="button" 2786 class="btn-close btn-close-white me-2 m-auto" 2787 data-bs-dismiss="toast" 2788 aria-label="Close"></button> 2789 </div> 2790</div><!-- /.toast --> 2791
2792<script> 2793var jobDetailsMap = { modal: null }; 2794var jobJSONData = null; 2795 2796if (typeof indexByIdOrRid !== 'function') { 2797 function indexByIdOrRid(data){ 2798 if (!data) return {}; 2799 if (!Array.isArray(data)) return data; 2800 return data.reduce((m, item) => { 2801 if (!item) return m; 2802 const key = item.rid ?? item.id; 2803 if (key != null) m[String(key)] = item; 2804 return m; 2805 }, {}); 2806 } 2807} 2808 2809function openJobDetails(rid) { 2810 if (!jobDetailsMap.modal || !jobJSONData) return; 2811 2812 rid = String(rid); 2813 var cRecord = jobJSONData[rid]; 2814 if (!cRecord) return; 2815 2816 var m = jobDetailsMap; 2817 var parsedOptions = cRecord.options || {}; 2818 2819 if (m.titleB) m.titleB.textContent = decodeHtmlEntities(cRecord.title || ""); 2820 2821 if (m.callouts) { 2822 m.callouts.innerHTML = ""; 2823 if (Array.isArray(parsedOptions.attributes)) { 2824 parsedOptions.attributes.forEach(function(attr) { 2825 var header = attr.val_header || ""; 2826 var text = attr.val_text || ""; 2827 var icon = parseIconClass(attr.val_icon) || { class: "bi bi-info-circle", ligature: "" }; 2828 var wrap = document.createElement("div"); 2829 wrap.innerHTML = ` 2830 <p class="d-flex gap-3 align-items-center my-2 my-lg-3"> 2831 <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> 2832 <span><strong class="small text-muted lh-1">${header}</strong><br>${text}</span> 2833 </p>`; 2834 m.callouts.append(wrap.firstElementChild); 2835 }); 2836 } 2837 2838 var posted = cRecord.posted || ""; 2839 if (posted) { 2840 var pWrap = document.createElement('div'); 2841 pWrap.innerHTML = ` 2842 <p class="d-flex gap-3 align-items-center"> 2843 <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> 2844 <span><strong class="small text-muted lh-1">Posted</strong><br>${posted}</span> 2845 </p>`; 2846 m.callouts.append(pWrap.firstElementChild); 2847 } 2848 } 2849 2850 if (m.apply) { 2851 var btnURL = (parsedOptions.website_url || "").trim(); 2852 var btnText = (parsedOptions.website_text || "Learn More").trim(); 2853 2854 if (btnURL && btnURL !== "#") { 2855 m.apply.classList.remove("d-none"); 2856 m.apply.setAttribute("href", btnURL); 2857 m.apply.setAttribute("target", "_blank"); 2858 m.apply.innerHTML = btnText + '<i class="bi bi-box-arrow-up-right ms-2"></i>'; 2859 } else { 2860 m.apply.classList.add("d-none"); 2861 m.apply.setAttribute("href", "#"); 2862 } 2863 } 2864 2865 if (m.detail) { 2866 const pane = m.detail; 2867 const tabPane = pane.closest('.tab-pane'); 2868 const tabLink = tabPane ? document.querySelector(`[data-bs-target="#${tabPane.id}"]`) : null; 2869 2870 pane.innerHTML = "Loading..."; 2871 2872 fetch('jobs/' + encodeURIComponent(rid) + '.php?display=json') 2873 .then(res => res.json()) 2874 .then(data => { 2875 const html = (data && data.details) ? data.details.trim() : ""; 2876 2877 pane.innerHTML = html || ""; 2878 2879 const isEmpty = !html; 2880 if (tabPane) tabPane.classList.toggle('d-none', isEmpty); 2881 if (tabLink) tabLink.classList.toggle('d-none', isEmpty); 2882 }) 2883 .catch(() => { 2884 pane.innerHTML = ""; 2885 if (tabPane) tabPane.classList.add('d-none'); 2886 if (tabLink) tabLink.classList.add('d-none'); 2887 }); 2888 } 2889 2890 try { 2891 bootstrap.Offcanvas.getOrCreateInstance(m.modal).show(); 2892 } catch(e) { 2893 console.error('Offcanvas show failed:', e); 2894 } 2895 2896 if (window.pushOcState) pushOcState('jobDetails', rid); 2897} 2898 2899document.addEventListener('DOMContentLoaded', function() { 2900 var modal = document.querySelector("#jobDetails"); 2901 if (!modal) return; 2902 2903 jobDetailsMap = { 2904 modal: modal, 2905 titleB: modal.querySelector(".job-position"), 2906 callouts: modal.querySelector(".attribute-callouts"), 2907 detail: modal.querySelector(".job-full-details"), 2908 apply: modal.querySelector(".apply-link") 2909 }; 2910 2911 fetch('_includes_/published/job_list.json') 2912 .then(res => res.json()) 2913 .then(data => { jobJSONData = indexByIdOrRid(data); }) 2914 .then(() => { if (typeof tryDeepLinkNow === 'function') tryDeepLinkNow('jobDetails'); }) 2915 .catch((e) => { console.error('job_list.json load failed', e); jobJSONData = {}; }); 2916}); 2917 2918</script>
2918 2919<div class="offcanvas offcanvas-end offcanvas-bid-item" 2920 tabindex="-1" 2921 id="bidDetails"> 2922 <div class="offcanvas-header bg-light p-4 px-lg-5"> 2923 <h3 class="offcanvas-title fs-4">Bid details</h3> 2924 <button type="button" 2925 class="btn-close" 2926 data-bs-dismiss="offcanvas" 2927 aria-label="Close"></button> 2928 </div> 2929 <div class="offcanvas-body p-0"> 2930 2931 <div class="p-4 p-lg-5"> 2932 <div class="d-flex align-items-center justify-content-between"> 2933 <div> 2934 <p class="mb-2"> 2935 <span class="small">Status:</span> <span class="badge bid-status d-none d-inline-flex"></span> 2936 </p> 2937 <h4 class="bid-title">Bid Title</h4> 2938 </div> 2939 <span class="btn btn-link btn-lg p-0" 2940 data-bs-toggle="modal" 2941 data-bs-target="#shareModal" 2942 tabindex="0"> 2943 <i class="bi bi-share text-body"></i> 2944 </span> 2945 </div> 2946 </div> 2947 2948 <div class="bid-details"> 2949 <div class="bg-light p-4 p-lg-5"> 2950 <div class="row row-cols-1 row-cols-sm-2 g-2 start-end-dates"> 2951 <p class="d-flex gap-3 align-items-center my-2 my-lg-3 bid-start-wrap"> 2952 <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> 2953 <span> 2954 <strong class="small text-muted lh-1">Start date</strong><br> 2955 Start: <span class="bid-start-date"></span> 2956 </span> 2957 </p> 2958 2959 <p class="d-flex gap-3 align-items-center my-2 my-lg-3 bid-end-wrap"> 2960 <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> 2961 <span> 2962 <strong class="small text-muted lh-1">End date</strong><br> 2963 End: <span class="bid-end-date"></span> 2964 </span> 2965 </p> 2966 </div> 2967 <a href="#" 2968 class="btn btn-primary mt-3 mt-lg-4 apply-link"> 2969 Apply Now<i class="bi bi-box-arrow-up-right ms-2"></i> 2970 </a> 2971 </div> 2972 2973 <div class="bg-white p-4 p-lg-5"> 2974 <p class="fs-4"></p> 2975 <div class="bid-full-details"></div> 2976 </div> 2977 </div> 2978 </div> 2979</div> 2980
2981<script> 2982var bidDetailsMap = { modal: null }; 2983var bidJSONData = null; 2984 2985if (typeof indexByIdOrRid !== 'function') { 2986 function indexByIdOrRid(data){ 2987 if (!data) return {}; 2988 if (!Array.isArray(data)) return data; 2989 return data.reduce((m, item) => { 2990 if (!item) return m; 2991 const key = item.rid ?? item.id; 2992 if (key != null) m[String(key)] = item; 2993 return m; 2994 }, {}); 2995 } 2996} 2997 2998function fmtDate(iso) { 2999 if (!iso) return ""; 3000 var s = String(iso).trim(); 3001 if (!s) return ""; 3002 var d = new Date(s.slice(0, 10) + "T00:00:00"); 3003 if (Number.isNaN(d.getTime())) return s; 3004 return d.toLocaleDateString(undefined, { year: "numeric", month: "short", day: "numeric" }); 3005} 3006 3007function statusClass(status) { 3008 var s = String(status || "").trim().toLowerCase(); 3009 if (s === "open") return "text-bg-success"; 3010 if (s === "closed") return "text-bg-danger"; 3011 if (s === "awarded") return "text-bg-primary"; 3012 if (s === "canceled" || s === "cancelled") return "text-bg-dark"; 3013 if (s === "pending") return "text-bg-secondary"; 3014 return "text-bg-secondary"; 3015} 3016 3017function openBidDetails(rid) { 3018 if (!bidDetailsMap.modal || !bidJSONData) return false; 3019 3020 rid = String(rid); 3021 var cRecord = bidJSONData[rid]; 3022 if (!cRecord) return false; 3023 3024 var m = bidDetailsMap; 3025 var parsedOptions = cRecord.options || {}; 3026 3027 if (m.titleB) m.titleB.textContent = cRecord.title || ""; 3028 3029 // STATUS 3030 if (m.statusEl) { 3031 var status = (parsedOptions.val_status || "").trim(); 3032 if (status) { 3033 m.statusEl.className = "small px-2 py-1 rounded-1 bid-status " + statusClass(status); 3034 m.statusEl.textContent = status; 3035 m.statusEl.classList.remove("d-none"); 3036 } else { 3037 m.statusEl.classList.add("d-none"); 3038 m.statusEl.textContent = ""; 3039 } 3040 } 3041 3042 // DATES (Start/End) 3043 var sd = fmtDate(parsedOptions.start_date || parsedOptions.startDate); 3044 var ed = fmtDate(parsedOptions.end_date || parsedOptions.endDate); 3045 3046 if (m.startWrap && m.startEl) { 3047 if (sd) { 3048 m.startEl.textContent = sd; 3049 m.startWrap.classList.remove("d-none"); 3050 } else { 3051 m.startEl.textContent = ""; 3052 m.startWrap.classList.add("d-none"); 3053 } 3054 } 3055 3056 if (m.endWrap && m.endEl) { 3057 if (ed) { 3058 m.endEl.textContent = ed; 3059 m.endWrap.classList.remove("d-none"); 3060 } else { 3061 m.endEl.textContent = ""; 3062 m.endWrap.classList.add("d-none"); 3063 } 3064 } 3065 3066 if (m.apply) { 3067 var btnURL = (parsedOptions.website_url || "").trim(); 3068 var btnText = (parsedOptions.website_text || "Learn More").trim(); 3069 3070 if (btnURL && btnURL !== "#") { 3071 m.apply.classList.remove("d-none"); 3072 m.apply.setAttribute("href", btnURL); 3073 m.apply.setAttribute("target", "_blank"); 3074 m.apply.innerHTML = btnText + '<i class="bi bi-box-arrow-up-right ms-2"></i>'; 3075 } else { 3076 m.apply.classList.add("d-none"); 3077 m.apply.setAttribute("href", "#"); 3078 } 3079 } 3080 3081 if (m.detail) { 3082 var pane = m.detail; 3083 pane.innerHTML = "Loading..."; 3084 3085 fetch('bids/' + encodeURIComponent(rid) + '.php?display=json') 3086 .then(function(res){ return res.json(); }) 3087 .then(function(data){ 3088 var html = (data && data.details) ? String(data.details).trim() : ""; 3089 pane.innerHTML = html || ""; 3090 }) 3091 .catch(function(){ 3092 pane.innerHTML = ""; 3093 }); 3094 } 3095 3096 try { 3097 bootstrap.Offcanvas.getOrCreateInstance(m.modal).show(); 3098 } catch(e) { 3099 console.error('Offcanvas show failed:', e); 3100 } 3101 3102 if (window.pushOcState) pushOcState('bidDetails', rid); 3103 3104 return false; 3105} 3106 3107document.addEventListener('DOMContentLoaded', function() { 3108 var modal = document.querySelector("#bidDetails"); 3109 if (!modal) return; 3110 3111 bidDetailsMap = { 3112 modal: modal, 3113 titleB: modal.querySelector(".bid-title"), 3114 statusEl: modal.querySelector(".bid-status"), 3115 startWrap: modal.querySelector(".bid-start-wrap"), 3116 endWrap: modal.querySelector(".bid-end-wrap"), 3117 startEl: modal.querySelector(".bid-start-date"), 3118 endEl: modal.querySelector(".bid-end-date"), 3119 detail: modal.querySelector(".bid-full-details"), 3120 apply: modal.querySelector(".apply-link") 3121 }; 3122 3123 fetch('_includes_/published/bids_list.json') 3124 .then(function(res){ return res.json(); }) 3125 .then(function(data){ bidJSONData = indexByIdOrRid(data); }) 3126 .then(function(){ if (typeof tryDeepLinkNow === 'function') tryDeepLinkNow('bidDetails'); }) 3127 .catch(function(e){
3128 console.error('bids_list.json load failed', e); 3129 bidJSONData = {}; 3130 }); 3131}); 3132</script>
3132 3133 <div class="rz-brand-footer bg-black small text-white py-3 py-lg-2"> 3134 <div class="container-fluid small"> 3135 <div class="d-lg-flex align-items-center"> 3136 <div class="col w-100 d-flex flex-lg-row flex-column gap-2 mb-lg-0 mb-3 p-0"> 3137 <span class="footer-copyright">© 2026 West Valley City, UT</span> 3138 <a class="text-white f-accessibility_statement" href="accessibility_statement/index.php">Accessibility Statement</a> 3139 <a class="text-white f-privacy_policy" href="privacy_policy/index.php">Privacy Policy</a> 3140 <a class="text-white f-terms_and_conditions" href="terms_and_conditions/index.php">Terms and Conditions</a> 3141 <a class="text-white f-cookie_policy" href="cookie_policy/index.php">Cookie Policy</a> 3142 </div><!-- /.col --> 3143 <div class="text-lg-end align-items-center d-xl-flex gap-1 justify-content-start justify-content-lg-end f-powered-by"> 3144 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=westvalleycityutah&filename=/our_community/about_us/index.php" class="btn btn-primary btn-primary-rz btn-sm rounded-1">Staff Login</a> 3145 </div> 3146 </div><!-- /.d-lg-flex --> 3147 </div><!-- /.container-fluid --> 3148 </div> 3149
3149<script src="/revize/plugins/revize_calendar/index.v2.js"></script>
3149 3150
3150<script src="/revize/plugins/zbuilder/v1/website/_assets_/js/scripts.js"></script>
vendor: 81 bytes, lines 3150-3152
3150 3151 <script src="https://www.google.com/recaptcha/api.js" async defer></script> 3152
3152<script src="/revize/plugins/page_builder/formwizard.form_validation_include.js"></script>
3152 3153
3153<script> 3154 3155function RZRenderMini() { 3156 $('.cal-event-wrap').each(function () { 3157 const image = $(this).find('.cal-image-wrap'); 3158 const date = $(this).find('.cal-event-date'); 3159 const time = $(this).find('.cal-event-time'); 3160 const title = $(this).find('.cal-event-title'); 3161 3162 image.after(date); 3163 date.after(time); 3164 time.after(title); 3165 }); 3166 3167 $('.cal-event-time time').each(function () { 3168 const dt = $(this).attr('datetime'); 3169 3170 if (dt) { 3171 const date = new Date(dt); 3172 3173 let hours = date.getHours(); 3174 let minutes = date.getMinutes(); 3175 3176 const ampm = hours >= 12 ? 'pm' : 'am'; 3177 3178 hours = hours % 12; 3179 hours = hours ? hours : 12; 3180 3181 minutes = minutes.toString().padStart(2, '0'); 3182 3183 const formattedTime = minutes === '00' 3184 ? `${hours} ${ampm}` 3185 : `${hours}:${minutes} ${ampm}`; 3186 3187 $(this).text(formattedTime); 3188 } 3189 }); 3190} 3191 3192$(document).ready(function () { 3193 $('.col-side .staffmember-location-link').each(function () { 3194 $(this) 3195 .contents() 3196 .filter(function () { 3197 return this.nodeType === 3 && $.trim(this.nodeValue) !== ''; 3198 }) 3199 .wrap('<span></span>'); 3200 }); 3201}); 3202 3203$('.col-side .staffmember-bio').appendTo('.staffmember-contact'); 3204 3205</script>
3205 3206 3207 3208
3209<script> 3210(function () { 3211 if (!window.revizeCalendar || !window.revizeCalendar.fns) return; 3212 3213 var originalPrepareImportData = window.revizeCalendar.fns.prepareImportData; 3214 3215 function fixUrls(ev, baseUrl) { 3216 if (!ev) return ev; 3217 if (ev.image) ev.image = ev.image.replace(/\.\//g, baseUrl); 3218 if (ev.image_url) ev.image_url = ev.image_url.replace(/\.\//g, baseUrl); 3219 if (ev.desc) { 3220 ev.desc = ev.desc.replace(/src="\.\//g, 'src="' + baseUrl); 3221 ev.desc = ev.desc.replace(/src='\.\//g, "src='" + baseUrl); 3222 ev.desc = ev.desc.replace(/href="\.\//g, 'href="' + baseUrl); 3223 ev.desc = ev.desc.replace(/href='\.\//g, "href='" + baseUrl); 3224 } 3225 return ev; 3226 } 3227 3228 function fetchSubSiteEvents() { 3229 var allSubEvents = []; 3230 var sources = [ 3231 { name: 'Parks', webspace: 'westvalleycityutahparksandrec', prefix: 'parks_', base: 'https://builder1.revize.com/revize/westvalleycityutahparksandrec/' }, 3232 { name: 'Fire', webspace: 'westvalleycityutahfire', prefix: 'fire_', base: 'https://builder1.revize.com/revize/westvalleycityutahfire/' }, 3233 { name: 'Police', webspace: 'westvalleycityutahpolice', prefix: 'police_', base: 'https://builder1.revize.com/revize/westvalleycityutahpolice/' } 3234 ]; 3235 3236 sources.forEach(function(src) { 3237 try { 3238 $.ajax({ 3239 url: 'https://builder1.revize.com/revize/util/endpoints/fetch_calendar_events.php?webspace=' + src.webspace + '&time_updated=NULL', 3240 async: false, 3241 dataType: 'json', 3242 success: function(response) { 3243 if (response && response.events) { 3244 response.events.forEach(function(ev) { 3245 if (ev.calendar_displays && ev.calendar_displays.length) { 3246 ev.calendar_displays = [src.prefix + ev.calendar_displays[0]]; 3247 } 3248 ev = fixUrls(ev, src.base); 3249 ev._source = src.name; 3250 allSubEvents.push(ev); 3251 }); 3252 } 3253 }, 3254 error: function() { 3255 console.warn('Failed to fetch events from ' + src.name); 3256 } 3257 }); 3258 } catch(e) { 3259 console.warn('Error fetching events from ' + src.name, e); 3260 } 3261 }); 3262 3263 return allSubEvents; 3264 } 3265 3266 function getHardcodedParksCalendars() { 3267 return { 3268 'parks_1': { name: 'Master', color: '', source: 'Parks' }, 3269 'parks_2': { name: 'Harman Senior Recreation Center', color: '', source: 'Parks' }, 3270 'parks_3': { name: 'Family Fitness Center', color: '', source: 'Parks' }, 3271 'parks_4': { name: 'Parks Events and Activities', color: '', source: 'Parks' }, 3272 'parks_5': { name: 'Parks & Recreation', color: '', source: 'Parks' } 3273 }; 3274 } 3275 3276 function appendAllFilters(calendarList) {
3277 if (!calendarList || Object.keys(calendarList).length === 0) { 3278 console.warn('[Filters] List empty, skipping.'); 3279 return; 3280 } 3281 3282 if (!$('#calendar-filters').length) { 3283 setTimeout(function() { appendAllFilters(calendarList); }, 500); 3284 return; 3285 } 3286 3287 var html = ''; 3288 var addedCount = 0; 3289 Object.keys(calendarList).sort().forEach(function(id) { 3290 var cal = calendarList[id]; 3291 if ($('#calendar-filters').find('a[data-calendar-id="' + id + '"]').length) { 3292 return; 3293 } 3294 3295 var style = cal.color ? 'background-color:' + cal.color + ';border:1px solid ' + cal.color + ';' : ''; 3296 var tag = cal.source.charAt(0).toUpperCase() + cal.source.slice(1); 3297 3298 html += '<li style="' + style + '">' + 3299 '<a class="calendar-name-filter multi-filter" href="#" data-calendar-id="' + id + '">' + 3300 '<span style="font-size:9px;opacity:0.6;">[' + tag + ']</span> ' + cal.name + 3301 '</a>' + 3302 '</li>'; 3303 addedCount++; 3304 }); 3305 3306 if (html) { 3307 $('#calendar-filters').append(html); 3308 console.log('[Filters] Added ' + addedCount + ' new filters.'); 3309 } 3310 3311 $('.calendar-name-filter.multi-filter').off('click').on('click', function(e) { 3312 e.preventDefault(); 3313 var $this = $(this); 3314 var $parent = $this.parent(); 3315 3316 if (!$parent.hasClass('calendar-active')) { 3317 $('.calendar-active').removeClass('calendar-active'); 3318 $parent.addClass('calendar-active'); 3319 window.revizeCalendar.fns.changeUrlQuery([{ 3320 prop: 'calendar', 3321 val: $this.data('calendar-id').toString() 3322 }]); 3323 } else { 3324 $('.calendar-active').removeClass('calendar-active'); 3325 window.revizeCalendar.fns.changeUrlQuery('calendar'); 3326 } 3327 window.revizeCalendar.fns.refreshCalendars(); 3328 }); 3329 } 3330 3331 window.revizeCalendar.fns.prepareImportData = function () { 3332 var subEvents = fetchSubSiteEvents(); 3333 3334 var mainEvents = []; 3335 try { 3336 $.ajax({ 3337 url: 'https://builder1.revize.com/revize/util/endpoints/fetch_calendar_events.php?webspace=westvalleycityutah&time_updated=NULL', 3338 async: false, 3339 dataType: 'json', 3340 success: function(response) { 3341 if (response && response.events) mainEvents = response.events; 3342 }, 3343 error: function() { mainEvents = []; } 3344 }); 3345 } catch(e) { mainEvents = []; } 3346 3347 var allEvents = mainEvents.concat(subEvents); 3348 3349 var calendarList = {}; 3350 allEvents.forEach(function(ev) { 3351 if (!ev.calendar_displays || !ev.calendar_displays.length) return; 3352 var id = ev.calendar_displays[0]; 3353 if (!calendarList[id]) { 3354 calendarList[id] = { 3355 name: ev.primary_calendar_name || ev._source + ' Calendar', 3356 color: ev.color || '', 3357 source: ev._source || 'Unknown' 3358 }; 3359 } 3360 }); 3361 3362 var hardcodedParks = getHardcodedParksCalendars(); 3363 Object.keys(hardcodedParks).forEach(function(id) { 3364 if (!calendarList[id]) { 3365 calendarList[id] = hardcodedParks[id]; 3366 } 3367 }); 3368 3369 console.log('[Filters] Total calendars ready:', Object.keys(calendarList).length); 3370 3371 window.revizeCalendar.importData = [{ 3372 url: 'https://builder1.revize.com/revize/util/endpoints/fetch_calendar_events.php?webspace=westvalleycityutah&time_updated=NULL', 3373 parser: function (mainData) { 3374 setTimeout(function() { appendAllFilters(calendarList); }, 300); 3375 setTimeout(function() { appendAllFilters(calendarList); }, 1000); 3376 setTimeout(function() { appendAllFilters(calendarList); }, 2000); 3377 3378 return window.revizeCalendar.fns.defaultRevizeParser(allEvents); 3379 } 3380 }]; 3381 3382 return originalPrepareImportData.apply(this, arguments); 3383 }; 3384 3385 window.revizeCalendar.fns.full.eventsFilter = function (events) { 3386 var activeCalendar = $.query.get('calendar'); 3387 var activeSearch = $.query.get('query'); 3388 3389 if (!activeCalendar || activeCalendar === 'clear') { 3390 activeCalendar = null; 3391 } else { 3392 activeCalendar = activeCalendar.toString(); 3393 } 3394 3395 var searchString = activeSearch ? activeSearch.toString().toLowerCase() : ''; 3396 3397 return events.filter(function (ev) { 3398 if (activeCalendar) { 3399 var evId = (ev.calendar_displays && ev.calendar_displays.length) ? ev.calendar_displays[0] : ''; 3400 if (evId.toString() !== activeCalendar) { 3401 return false;
3402 } 3403 } 3404 if (searchString && ev.title && ev.title.toLowerCase().indexOf(searchString) === -1) { 3405 return false; 3406 } 3407 return true; 3408 }); 3409 }; 3410 3411})(); 3412</script>
3412 3413</div><!-- /.rz-site-wrap --> 3414</body> 3415</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.