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