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