1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="UTF-8" /> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 6 <title>Alerts - Keystone, CO</title> 7 <meta content="Alerts" property="og:title" /> 8<meta content="https://www.keystoneco.gov/alerts" property="og:url" /> 9<meta content="Keystone, CO" property="og:site_name" /> 10<meta content="en-US" property="og:locale" /> 11<meta content="Alerts" name="twitter:title" /> 12<meta content="https://www.keystoneco.gov/alerts" name="twitter:url" /> 13 <!-- Fav-icon --> 14 15 16 17 18 <link rel="icon" type="image/x-icon" href="/media/Favicon/favicon.ico?v=wu_aFMFKHCOGL_B4XU248dshe30fvUCOh7teqyoXITw" /> 19 20 21 22 23 24 <!-- Bootstrap core CSS and Javascripts --> 25 26 27
27<script crossorigin="anonymous" integrity="sha384-1H217gwSVyLSIfaLxHbE7dRb3v4mYCKbpQvzx0cegeju1MVsGrX5xXxAvs/HgeFs" src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
vendor: 2 bytes, line 27
27
28<script crossorigin="anonymous" integrity="sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
28 29 30 <!-- Theme CSS and Js--> 31 32 33 34 35 36 <!-- Froala Editor Css and JS --> 37 38 39 <!-- Slick CSS and JS --> 40 41 42 43 44 <style> 45 :root { 46 --site-color: #b50000; 47 --fore-color: #0e131d; 48 --menu-background-color: #ffffff; 49 --menu-link-color: #0e131d; 50 --menu-link-hover-color: #b50000; 51 --site-link-colour: #0056b3; 52 --site-link-colour-hover: #0056b3; 53 --footer-color: #0e131d; 54 --footer-link-color: #858f99; 55 --footer-link-hover-color: #ffffff; 56 --white-color:#ffffff; 57 --text-color:#555555; 58 --radius:8px; 59 } 60 </style> 61 62 <!-- Theme/FE resources --> 63 64<style> 65 .tooltip-inner:has(.dynamic-tooltip-inner) { 66 width: auto !important; 67 max-width: none !important; 68 text-align: left !important; 69 } 70 71 .dynamic-tooltip { 72 margin-left: .5rem; 73 display: none; 74 } 75 76</style> 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 <template id="confirmRemoveModalMetadata" data-title="Delete" data-message="Are you sure you want to delete this element?" data-ok-text="Ok" data-cancel-text="Cancel" data-ok-class="btn-danger" data-cancel-class="btn-secondary"></template> 96 97 98 99 100 101 102 103 104 105 <!-- Optional head resources --> 106
106<script crossorigin="anonymous" integrity="sha384-1H217gwSVyLSIfaLxHbE7dRb3v4mYCKbpQvzx0cegeju1MVsGrX5xXxAvs/HgeFs" src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
106 107<!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 64 bytes, lines 107-108
107 108<script async src="https://www.googletagmanager.com/gtag/js?id=
108G-W0L9XM4ZV5
vendor: 12 bytes, line 108
108"></script>
109<script>
vendor: 127 bytes, line 109
109window.dataLayer = window.dataLayer || [];function gtag() { dataLayer.push(arguments); }gtag('js', new Date());gtag('config', '
109G-W0L9XM4ZV5
vendor: 2 bytes, line 109
109')
109</script>
109 110<!-- End Global site tag (gtag.js) - Google Analytics --> 111 <link href="https://www.keystoneco.gov/alerts" rel="canonical" /> 112 <link href="/PublicTheme/css/theme-button.css?v=LdmoX78YTFePT5Y4_5R7KPMwXVwdS3BmCqZGjCLAPUI" rel="stylesheet" type="text/css" /> 113<link href="/GovBuilt.Resource/css/CommonButton.css?v=8y5MfKf91-UAaUTutDGS1AgkmjGpgl7r-AXVaMpoZ5I" rel="stylesheet" type="text/css" /> 114<link crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" integrity="sha384-sRIl4kxILFvY47J16cr9ZwB07vP4J8+LH7qKQnuqkuIAvNWLzeN8tE5YBujZqJLB" rel="stylesheet" type="text/css" /> 115<link href="/GovBuilt.Theme.RedSnow/css/style.min.css?v=j9PdXdUI0n34nb5OrX8WXU-Sx7GvXZW56mKFroCkXE8" rel="stylesheet" type="text/css" /> 116<link href="/GovBuilt.Theme.RedSnow/css/swiper-bundle.min.css?v=o7hkOMl0vcM4e_CGMjPxzELdw9musYiR2NGSwZm7EPI" rel="stylesheet" type="text/css" /> 117<link href="https://cdn.govbuilt.com/contents/froala-editor/5.4.0/froala-editor/css/froala_editor.pkgd.css" rel="stylesheet" type="text/css" /> 118<link href="https://cdn.govbuilt.com/contents/froala-editor/5.4.0/froala-editor/css/plugins.pkgd.css" rel="stylesheet" type="text/css" /> 119<link href="https://cdn.govbuilt.com/contents/froala-editor/5.4.0/tui-image-editor/tui-image-editor.min.css" rel="stylesheet" type="text/css" /> 120<link href="https://cdn.govbuilt.com/contents/froala-editor/5.4.0/tui-color-picker/tui-color-picker.min.css" rel="stylesheet" type="text/css" /> 121<link href="https://cdn.govbuilt.com/contents/froala-editor/5.4.0/froala-editor/css/third_party/image_tui.min.css" rel="stylesheet" type="text/css" /> 122<link href="https://cdn.govbuilt.com/contents/froala-editor/5.4.0/prism/prism.min.css" rel="stylesheet" type="text/css" /> 123<link href="/GovBuilt.FroalaEditor/css/orchard-core-froala-editor.min.css?v=j1rQ1-3WGDUAu8dOrP5Kpz2C2OPClcJTUFlHFY6HqOQ" rel="stylesheet" type="text/css" /> 124<link href="/GovBuilt.Resource/css/slick/slick.css?v=vu28xouMTg_ecH6oquM4_AUp8P3Vu01p3jllD9h6UGA" rel="stylesheet" type="text/css" /> 125<link href="/GovBuilt.Resource/css/slick/slick-theme.css?v=0Yc10Vki7NxEDBidadTZbE0XcmbVZit14K5MMRo6zqU" rel="stylesheet" type="text/css" /> 126<link href="https://cdn.govbuilt.com/contents/fontawesome/7.2.0/css/fontawesome.min.css" rel="stylesheet" type="text/css" /> 127<link href="https://cdn.govbuilt.com/contents/fontawesome/7.2.0/css/solid.min.css" rel="stylesheet" type="text/css" /> 128<link href="https://cdn.govbuilt.com/contents/fontawesome/7.2.0/css/light.min.css" rel="stylesheet" type="text/css" /> 129<link href="https://cdn.govbuilt.com/contents/fontawesome/7.2.0/css/regular.min.css" rel="stylesheet" type="text/css" /> 130<link href="https://cdn.govbuilt.com/contents/fontawesome/7.2.0/css/brands.min.css" rel="stylesheet" type="text/css" /> 131<link href="https://cdn.govbuilt.com/contents/fontawesome/7.2.0/css/v4-shims.min.css" rel="stylesheet" type="text/css" /> 132<link href="/GovBuilt.Resource/css/StandardDialogs.css?v=QmzyEZr6iWwMe3iXEgRmmbEhEbYI8G83yx8QF-wEmLY" rel="stylesheet" type="text/css" /> 133 <!-- Custom scripts for this template --> 134
134<script src="/GovBuilt.Resource/js/govbuilt-validations.min.js?v=2zyN04350Wkkyb6dnhqc-Yy8fechV_G72CTnrhyZOqw"></script>
134 135
135<script type="text/javascript"> 136 window.FontAwesomeConfig = window.FontAwesomeConfig || {}; 137 window.FontAwesomeConfig.autoReplaceSvg = false; 138 </script>
138 139 140 <meta name="google-site-verification" content="4XLYe-ybd4S7teZ7WrF8v89bVFP73RW265Mt8vAJPs4" /> 141<meta name="msvalidate.01" content="FAE3A1DD3C085351180499A219D161CC" />
142<script type="application/ld+json"> 143{ 144 "@context": "http://schema.org", 145 "@type": "GovernmentOffice", 146 "name": "Keystone, CO", 147 "image": "https://www.keystoneco.gov/media/images/keystone%20logo%20%281%29.png", 148 "telephone": "970-450-3500", 149 "email": "[email protected]", 150 "address": { 151 "@type": "PostalAddress", 152 "streetAddress": "1628 Saints John Rd", 153 "addressLocality": "Keystone", 154 "addressRegion": "CO", 155 "addressCountry": "USA", 156 "postalCode": "80435" 157 }, 158 "url": "https://www.keystoneco.gov/" 159} 160</script>
160 161<style> 162p { 163 text-align: left !important; 164} 165</style> 166 167 </head> 168<body class="fr-view"> 169 <a href="#main-div" class="skip-link" tabindex="0">Skip to Main Content</a> 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186<div class="alertbar-wrapper" role="region" aria-label="Alert notification" aria-live="polite" style="background-color:#000087;border-color:#000087;z-index: 1030;"> 187 <div class="container-size container"> 188 <div class="d-flex alertbar-flex-wrapper"> 189 <div class="alertbar-icon-wrapper"> 190 <i class="fa-solid fa-triangle-exclamation" aria-hidden="true"></i> 191 </div> 192 <a href="/the-town-of-keystone-accepts-payments-only-through-our-official-lodging-tax-portal-and-payport-beware-of-fraudulent-invoices-verify-all-payment-requests-before-submitting-any-payment" style="color:#ffffff;" class="alertbar-content-wrapper" aria-label="Read more about this alert"> 193 <h2>Alert: </h2> 194 <p>The Town of Keystone accepts payments only through our official Lodging Tax Collection Portal and PayPort, our secure online payment system.If you receive an invoice, payment request, or email claiming...</p> 195 </a> 196 <a href="/alerts" class="alertbar-view-btn" aria-label="View all alerts"> 197 View All 198 </a> 199 <div class="alertbar-close-wrapper"> 200 <button type="button" class="alertbar-close-btn border-0 bg-transparent" aria-label="Dismiss this alert"> 201 <i class="fa fa-regular fa-xmark" aria-hidden="true"></i> 202 </button> 203 </div> 204 </div> 205 </div> 206</div> 207 208 209 210 211 <!-- Header section start --> 212 213 <!-- Header section end --> 214 <!-- Navigation --> 215<header class="header main-header"> 216 <nav class="navbar navbar-expand-lg website-navbar p-0 d-block f-14" id="navbar"> 217 218 219<!-- Navigation --> 220 221<section class="bg-blue"> 222 <div class="container-size container"> 223 <div class="d-flex align-items-center justify-content-between w-100"> 224 225 <a class="navbar-brand navbar-logo p-0 m-0" href="/"> 226 <img src="/media/images/keystone%20logo%20%281%29.png" alt="Go to Homepage" class="img-fluid website-logo" /> 227 </a> 228 <div 229 class="collapse navbar-collapse justify-content-between" 230 id="navbarSupportedContent" 231 role="dialog" 232 aria-modal="true" 233 aria-label="Navigation menu dialog" 234 > 235 <div class="close-menu d-lg-none text-end position-sticky text-right text-end"> 236 <button 237 class="bg-transparent border-0 p-0 f-24 text-white" 238 type="button" 239 aria-label="close menu" 240 > 241 <i class="fa-light fa-xmark" aria-hidden="true"></i> 242 </button> 243 </div> 244 <ul class="navbar-nav m-auto"> 245 246 <li class="nav-item"> 247 <a 248 class="nav-link" 249 href="/" 250 target="" 251 ><span class="nav-span">Home</span></a 252 > 253 </li> 254 255 256 <li class="nav-item dropdown"> 257 <!-- FIXED: Removed aria-expanded and aria-controls --> 258 <a 259 class="nav-link dropdown-toggle dropdown-toggle-none d-flex gap-1 align-items-center" 260 href="/government" 261 target="" 262 role="button" 263 data-bs-toggle="dropdown" 264 data-bs-auto-close="outside" 265 aria-label="Government menu, expand to view options" 266 > 267 Government <i class="fa-solid fa-chevron-down f-12"></i> 268 </a> 269 270 <ul class="dropdown-menu" id="menu-4xh64sbhczfdgvcme03pbgcq42"> 271 272 <li class="dropend dropdown"> 273 <a 274 class="dropdown-item text-white d-inline-block" 275 href="/mayor-council" 276 target="" 277 > 278 Mayor and Council 279 </a> 280 <!-- FIXED: Removed aria-expanded and aria-controls --> 281 <button 282 class="dropdown-toggle dropdown-toggle-split text-white bg-transparent border-0" 283 type="button" 284 data-bs-toggle="dropdown" 285 aria-label="Mayor and Council menu, expand to view options" 286 > 287 <i class="fa-solid fa-chevron-down f-12" aria-hidden="true"></i> 288 </button> 289 290 <ul class="dropdown-menu" id="menu-49csh2njbffpgs56xd4xr9xb4p"> 291 292 <li> 293 <a 294 class="dropdown-item" 295 href="/council-meetings" 296 target="" 297 > 298 Council Meetings 299 </a> 300 </li> 301 302 </ul> 303 </li> 304 305 306 <li class="dropend dropdown"> 307 <a 308 class="dropdown-item text-white d-inline-block" 309 href="/boards-and-commissions" 310 target="" 311 > 312 Boards and Commissions 313 </a> 314 <!-- FIXED: Removed aria-expanded and aria-controls --> 315 <button 316 class="dropdown-toggle dropdown-toggle-split text-white bg-transparent border-0" 317 type="button" 318 data-bs-toggle="dropdown" 319 aria-label="Boards and Commissions menu, expand to view options" 320 > 321 <i class="fa-solid fa-chevron-down f-12" aria-hidden="true"></i> 322 </button> 323 324 <ul class="dropdown-menu" id="menu-4dvk6jg708a54wwzgzvpqmys5z"> 325 326 <li> 327 <a 328 class="dropdown-item" 329 href="/pz-meetings" 330 target="" 331 > 332 Planning and Zoning Commission 333 </a> 334 </li> 335 336 <li> 337 <a 338 class="dropdown-item" 339 href="/trails-and-open-space-advisory-board" 340 target="" 341 >
342 Trails and Open Space Advisory Board 343 </a> 344 </li> 345 346 <li> 347 <a 348 class="dropdown-item" 349 href="/business-advisory-board" 350 target="" 351 > 352 Business Advisory Board 353 </a> 354 </li> 355 356 </ul> 357 </li> 358 359 360 <li> 361 <a 362 class="dropdown-item" 363 href="/ordinances-and-resolutions" 364 target="" 365 >Resolutions and Ordinances</a 366 > 367 </li> 368 369 <li> 370 <a 371 class="dropdown-item" 372 href="/media/Town%20Charter/KeystoneCharter.pdf" 373 target="_blank" 374 >Town Charter</a 375 > 376 </li> 377 378 <li> 379 <a 380 class="dropdown-item" 381 href="/council-meetings" 382 target="" 383 >Council Meetings</a 384 > 385 </li> 386 387 <li> 388 <a 389 class="dropdown-item" 390 href="/public-notices" 391 target="_self" 392 >Public Notices</a 393 > 394 </li> 395 396 </ul> 397 </li> 398 399 400 <li class="nav-item dropdown"> 401 <!-- FIXED: Removed aria-expanded and aria-controls --> 402 <a 403 class="nav-link dropdown-toggle dropdown-toggle-none d-flex gap-1 align-items-center" 404 href="/department" 405 target="" 406 role="button" 407 data-bs-toggle="dropdown" 408 data-bs-auto-close="outside" 409 aria-label="Department menu, expand to view options" 410 > 411 Department <i class="fa-solid fa-chevron-down f-12"></i> 412 </a> 413 414 <ul class="dropdown-menu" id="menu-4d8pm54sfr7tk6z0xaz6jb04c3"> 415 416 <li> 417 <a 418 class="dropdown-item" 419 href="/staff-directory" 420 target="" 421 >Staff Directory</a 422 > 423 </li> 424 425 <li class="dropend dropdown"> 426 <a 427 class="dropdown-item text-white d-inline-block" 428 href="/town-manager" 429 target="" 430 > 431 Town Manager 432 </a> 433 <!-- FIXED: Removed aria-expanded and aria-controls --> 434 <button 435 class="dropdown-toggle dropdown-toggle-split text-white bg-transparent border-0" 436 type="button" 437 data-bs-toggle="dropdown" 438 aria-label="Town Manager menu, expand to view options" 439 > 440 <i class="fa-solid fa-chevron-down f-12" aria-hidden="true"></i> 441 </button> 442 443 <ul class="dropdown-menu" id="menu-4fxexxf9qamkm1f68wkesvsgx9"> 444 445 <li> 446 <a 447 class="dropdown-item" 448 href="/bear-safe-keystone" 449 target="_self" 450 > 451 Bear Safe Keystone 452 </a> 453 </li> 454 455 </ul> 456 </li> 457 458 459 <li class="dropend dropdown"> 460 <a 461 class="dropdown-item text-white d-inline-block" 462 href="/finance" 463 target="" 464 > 465 Finance 466 </a> 467 <!-- FIXED: Removed aria-expanded and aria-controls --> 468 <button 469 class="dropdown-toggle dropdown-toggle-split text-white bg-transparent border-0" 470 type="button" 471 data-bs-toggle="dropdown" 472 aria-label="Finance menu, expand to view options" 473 > 474 <i class="fa-solid fa-chevron-down f-12" aria-hidden="true"></i> 475 </button> 476 477 <ul class="dropdown-menu" id="menu-4fdbz0r2gdh8jybwa292pzjtn1"> 478 479 <li> 480 <a 481 class="dropdown-item" 482 href="/budget" 483 target="" 484 > 485 Budget 486 </a> 487 </li> 488 489 <li> 490 <a 491 class="dropdown-item" 492 href="/financials" 493 target="" 494 > 495 Financials 496 </a> 497 </li> 498 499 <li> 500 <a 501 class="dropdown-item" 502 href="/audit" 503 target="" 504 > 505 Audit 506 </a> 507 </li> 508 509 <li> 510 <a 511 class="dropdown-item" 512 href="/tax-information" 513 target="_self" 514 > 515 Sales and Lodging Tax Information 516 </a> 517 </li> 518 519 <li> 520 <a 521 class="dropdown-item" 522 href="/lodging-tax-information" 523 target="" 524 > 525 Lodging Tax 526 </a> 527 </li> 528 529 <li> 530 <a 531 class="dropdown-item" 532 href="/short-term-rentals" 533 target="" 534 >
535 Short-Term Rentals 536 </a> 537 </li> 538 539 </ul> 540 </li> 541 542 543 <li class="dropend dropdown"> 544 <a 545 class="dropdown-item text-white d-inline-block" 546 href="/clerk-office" 547 target="" 548 > 549 Clerk's Office 550 </a> 551 <!-- FIXED: Removed aria-expanded and aria-controls --> 552 <button 553 class="dropdown-toggle dropdown-toggle-split text-white bg-transparent border-0" 554 type="button" 555 data-bs-toggle="dropdown" 556 aria-label="Clerk's Office menu, expand to view options" 557 > 558 <i class="fa-solid fa-chevron-down f-12" aria-hidden="true"></i> 559 </button> 560 561 <ul class="dropdown-menu" id="menu-4hjp85vgk66cx6w3cc3hk2dwxs"> 562 563 <li> 564 <a 565 class="dropdown-item" 566 href="/public-records" 567 target="" 568 > 569 Accessing Public Records 570 </a> 571 </li> 572 573 <li> 574 <a 575 class="dropdown-item" 576 href="/liquor-licensing" 577 target="" 578 > 579 Liquor Licensing 580 </a> 581 </li> 582 583 <li> 584 <a 585 class="dropdown-item" 586 href="/tobacco-licensing" 587 target="" 588 > 589 Tobacco Licensing 590 </a> 591 </li> 592 593 <li> 594 <a 595 class="dropdown-item" 596 href="/vote" 597 target="" 598 > 599 Elections 600 </a> 601 </li> 602 603 <li> 604 <a 605 class="dropdown-item" 606 href="/council-meetings" 607 target="" 608 > 609 Council Meeting Materials 610 </a> 611 </li> 612 613 <li> 614 <a 615 class="dropdown-item" 616 href="/short-term-rentals" 617 target="" 618 >
619 Short-Term Rentals 620 </a> 621 </li> 622 623 <li> 624 <a 625 class="dropdown-item" 626 href="/business-license" 627 target="" 628 > 629 Business Licenses 630 </a> 631 </li> 632 633 <li> 634 <a 635 class="dropdown-item" 636 href="/public-notices" 637 target="_self" 638 > 639 Public Notices 640 </a> 641 </li> 642 643 </ul> 644 </li> 645 646 647 <li class="dropend dropdown"> 648 <a 649 class="dropdown-item text-white d-inline-block" 650 href="/community-development" 651 target="" 652 > 653 Community Development 654 </a> 655 <!-- FIXED: Removed aria-expanded and aria-controls --> 656 <button 657 class="dropdown-toggle dropdown-toggle-split text-white bg-transparent border-0" 658 type="button" 659 data-bs-toggle="dropdown" 660 aria-label="Community Development menu, expand to view options" 661 > 662 <i class="fa-solid fa-chevron-down f-12" aria-hidden="true"></i> 663 </button> 664 665 <ul class="dropdown-menu" id="menu-407cm2ttdeca5xabgyrvfk89np"> 666 667 <li> 668 <a 669 class="dropdown-item" 670 href="/pz-notices" 671 target="" 672 > 673 Active Land Use Application Notices 674 </a> 675 </li> 676 677 <li> 678 <a 679 class="dropdown-item" 680 href="https://www.keystoneco.gov/media/Community%20Development/KeystoneCompPlan_05012026%20%281%29.pdf" 681 target="_blank" 682 > 683 Comprehensive Plan 684 </a> 685 </li> 686 687 <li> 688 <a 689 class="dropdown-item" 690 href="/development-code" 691 target="" 692 > 693 Development Code 694 </a> 695 </li> 696 697 <li> 698 <a 699 class="dropdown-item" 700 href="/pz-meetings" 701 target="" 702 > 703 Planning and Zoning Commission 704 </a> 705 </li> 706 707 <li> 708 <a 709 class="dropdown-item" 710 href="/building-permit" 711 target="" 712 > 713 Apply for a Building Permit 714 </a> 715 </li> 716 717 <li> 718 <a 719 class="dropdown-item" 720 href="/trails-and-open-space-advisory-board" 721 target="_self" 722 >
723 Trails and Open Space Advisory Board 724 </a> 725 </li> 726 727 <li> 728 <a 729 class="dropdown-item" 730 href="/development-applications" 731 target="" 732 > 733 Development Review Permit Applications 734 </a> 735 </li> 736 737 </ul> 738 </li> 739 740 741 <li> 742 <a 743 class="dropdown-item" 744 href="https://www.dillonco.gov/departments/police" 745 target="_blank" 746 >Police/Public Safety</a 747 > 748 </li> 749 750 <li class="dropend dropdown"> 751 <a 752 class="dropdown-item text-white d-inline-block" 753 href="/public-works" 754 target="" 755 > 756 Public Works 757 </a> 758 <!-- FIXED: Removed aria-expanded and aria-controls --> 759 <button 760 class="dropdown-toggle dropdown-toggle-split text-white bg-transparent border-0" 761 type="button" 762 data-bs-toggle="dropdown" 763 aria-label="Public Works menu, expand to view options" 764 > 765 <i class="fa-solid fa-chevron-down f-12" aria-hidden="true"></i> 766 </button> 767 768 <ul class="dropdown-menu" id="menu-4gmykkpawaa9jybk9ftmvr1sm4"> 769 770 <li> 771 <a 772 class="dropdown-item" 773 href="/requests-for-proposals" 774 target="" 775 > 776 Requests for Proposals 777 </a> 778 </li> 779 780 <li> 781 <a 782 class="dropdown-item" 783 href="/utilities-and-services" 784 target="" 785 > 786 Utilities/Services 787 </a> 788 </li> 789 790 </ul> 791 </li> 792 793 794 <li> 795 <a 796 class="dropdown-item" 797 href="/external-services" 798 target="_self" 799 >External Services</a 800 > 801 </li> 802 803 </ul> 804 </li> 805 806 807 <li class="nav-item dropdown"> 808 <!-- FIXED: Removed aria-expanded and aria-controls --> 809 <a 810 class="nav-link dropdown-toggle dropdown-toggle-none d-flex gap-1 align-items-center" 811 href="/services" 812 target="" 813 role="button" 814 data-bs-toggle="dropdown"
815 data-bs-auto-close="outside" 816 aria-label="Services menu, expand to view options" 817 > 818 Services <i class="fa-solid fa-chevron-down f-12"></i> 819 </a> 820 821 <ul class="dropdown-menu" id="menu-4kkwhc38g7pe8zsrxdw1dw0dct"> 822 823 <li> 824 <a 825 class="dropdown-item" 826 href="/short-term-rentals" 827 target="" 828 >Short-Term Rentals</a 829 > 830 </li> 831 832 <li> 833 <a 834 class="dropdown-item" 835 href="/development-applications" 836 target="" 837 >Development Review Permit Applications</a 838 > 839 </li> 840 841 <li> 842 <a 843 class="dropdown-item" 844 href="/public-records" 845 target="" 846 >Records Requests</a 847 > 848 </li> 849 850 <li> 851 <a 852 class="dropdown-item" 853 href="/lodging-tax-information" 854 target="" 855 >Lodging Tax Collection</a 856 > 857 </li> 858 859 <li> 860 <a 861 class="dropdown-item" 862 href="/business-license" 863 target="" 864 >Business Licenses</a 865 > 866 </li> 867 868 <li> 869 <a 870 class="dropdown-item" 871 href="/building-permit" 872 target="_self" 873 >Building and Development Permit</a 874 > 875 </li> 876 877 <li> 878 <a 879 class="dropdown-item" 880 href="/requests-for-proposals" 881 target="" 882 >Requests for Proposals (RFPs)</a 883 > 884 </li> 885 886 </ul> 887 </li> 888 889 890 <li class="nav-item"> 891 <a 892 class="nav-link" 893 href="/contact-us" 894 target="" 895 ><span class="nav-span">Contact Us</span></a 896 > 897 </li> 898 899 900 <li class="nav-item"> 901 <a class="nav-link" href="/Profile"> 902 <span class="nav-span">My Profile</span> 903 </a> 904 </li> 905 906 </ul> 907 </div> 908 909 <div class="navbar-actions d-flex align-items-center"> 910 <button 911 type="button" 912 class="search-btn border-0" 913 aria-label="open search input" 914 data-bs-toggle="modal" 915 data-bs-target="#searchModal" 916 data-toggle="modal" 917 data-target="#searchModal" 918 > 919 <i class="fa-regular fa-magnifying-glass"></i> 920 </button> 921 922 <button 923 type="button" 924 aria-label="open menu" 925 class="collapse-navbar-btn d-lg-none d-md-block border-0 text-center" 926 data-bs-toggle="collapse" 927 data-bs-target="#navbarSupportedContent" 928 >
929 <span class="bar1"></span> 930 <span class="bar2"></span> 931 <span class="bar3"></span> 932 </button> 933 934 935 <div class="website-btn d-lg-block d-none"> 936 <a 937 href="/videos" 938 class="custom-btn d-inline-flex" 939 aria-label="Watch Town Videos" 940 > 941 <span class="btn-content d-inline-block"> 942 Town Videos 943 </span> 944 <span class="btn-arrow bg-transparent text-white"> 945 <i class="fa-solid fa-circle-play play-btn" aria-hidden="true"></i> 946 </span> 947 </a> 948 </div> 949 950 </div> 951 </div> 952 </div> 953</section> 954 955<!-- Navigation --> 956 957 958 959 </nav> 960</header> 961<!-- Navigation --> 962 <!--Searchh Modal --> 963 <div class="modal fade" id="searchModal" tabindex="-1" aria-labelledby="searchModalLabel" aria-hidden="true"> 964 <div class="modal-dialog"> 965 <div class="modal-content"> 966 <div class="modal-header p-0 border-0"> 967 <h2 id="searchModalLabel" class="visually-hidden">Search</h2> 968<form autocomplete="off" action="/search" method="get" class="header-searchbox searchbar-form"> 969 <div class="input-wrapper"> 970 <i class="fa-light fa-magnifying-glass search-icon" aria-hidden="true"></i> 971 972 <input class="searchbox search-input form-control" 973 type="text" 974 name="Terms" 975 id="searchInput" 976 placeholder="Search..." 977 aria-label="Search" 978 aria-describedby="search-instructions" 979 aria-autocomplete="list" 980 aria-controls="autocomplete-list" 981 aria-haspopup="listbox" 982 aria-expanded="false" 983 autocomplete="off" 984 /> 985 986 <!-- Instructions for screen readers --> 987 <span id="search-instructions" class="visually-hidden"> 988 Type at least 3 characters to search. Use down and up arrow keys to navigate results. Press Enter to select an option. Press Escape to close. 989 </span> 990 991 <button type="button" class="remove-input-content" data-bs-dismiss="modal" data-dismiss="modal" aria-label="Close"> 992 <i class="fa-light fa-xmark" aria-hidden="true"></i> 993 </button> 994 </div> 995</form> 996 997<!-- Screen reader status --> 998<div id="search-status" class="visually-hidden" aria-live="polite" aria-atomic="true"></div> 999 1000 </div> 1001 </div> 1002 </div> 1003 </div> 1004 <!--Searchh Modal --> 1005 <main> 1006 <div class="container" id="main-div" tabindex="-1"> 1007 <style> 1008 #main-div { 1009 padding: 0px !important; 1010 max-width:100% !important; 1011 } 1012 .field.field-type-htmlfield.field-name-page-summary { 1013 display: none; 1014 } 1015 .services-section,.faq-section { 1016 width: 100vw !important; 1017 margin-left: calc(-50vw + 50%); 1018 margin-right: calc(-50vw + 50%); 1019 max-width: 100vw; 1020 } 1021 body{ 1022 overflow-x: hidden; 1023 } 1024</style> 1025 1026<section class="interior-body-section interior-page-section"> 1027 <div class="container container-size"> 1028 <div class="row"> 1029 <div class="col-12"> 1030 <nav aria-label="breadcrumbs"> 1031 <ul id="breadcrumb-container" class="breadcrumb-banner-links sb" aria-label="Breadcrumb"> 1032 </ul> 1033 </nav> 1034 <h1>Alerts</h1> 1035 1036 1037 1038 1039 1040 1041<div class="field field-type-htmlfield field-name-page-summary"> 1042 1043</div> 1044 1045 1046<section class="flow"> 1047<div class="widget widget-liquid-widget widget-align-justify widget-size-100"> 1048 <div class="widget-body"> 1049 1050<div class="row" style="min-height: 21.8rem !important;text-align:left;"> 1051 <div class="col-md-12"> 1052<h2>Alerts List</h2> 1053<table class="table"> 1054 <thead> 1055 <th>Title</th> 1056 <th>Description</th> 1057 <th>Start Date</th> 1058 <th>End Date</th> 1059 </thead> 1060 <tbody> 1061 1062 <tr> 1063 <td>The Town of Keystone accepts payments only through our official Lodging Tax Portal and PayPort. Beware of fraudulent invoices. Verify all payment requests before submitting any payment.</td> 1064 <td>The Town of Keystone accepts payments only through our official Lodging Tax Collection Portal and PayPort, our secure online payment system.If you receive an invoice, payment request, or email claiming to be from the Town of Keystone, please verify that it was sent by an authorized Town representative before submitting any payment.For your security, do not make payments through any links, websites, or methods other than those listed on the Town&rsquo;s official website.If you are unsure about the authenticity of an invoice, please contact the Town of Keystone directly for confirmation.</td> 1065 <td>Mon, Apr 06, 2026</td> 1066 <td>Sat, Oct 31, 2026</td> 1067 </tr> 1068 1069 </tbody> 1070 </table> 1071 </div> 1072</div> 1073 1074 </div> 1075</div> 1076</section> 1077 1078<style> 1079 .breadcrumbItem{ 1080 list-style:none; 1081 } 1082 1083 #breadcrumb-container{ 1084 display: inline-flex; 1085 white-space: nowrap; 1086 flex-wrap: wrap; 1087 } 1088 1089 .field-name-navigation-part-navigation-item-id{ 1090 display:none; 1091 } 1092 1093 .field-name-navigation-part-is-show-current-page { 1094 display:none; 1095 } 1096</style> 1097<input type="hidden" id="contentItemId" value="46xep1qd299m06dy22q1yfsf41" />
1098<script> 1099$(document).ready(function () { 1100const contentItemId = document.getElementById("contentItemId").value; 1101fetch(`/api/breadcrumbs?contentItemId=${contentItemId}&level=5`) 1102 .then(response => response.json()) 1103 .then(data => { 1104 const breadcrumbContainer = document.getElementById("breadcrumb-container"); 1105 data.sort((a, b) => b.level - a.level); 1106 data.forEach((item, index) => { 1107 const isLastItem = index === data.length - 1; 1108 if (isLastItem && item.isShowCurrentPage === false) return; 1109 if (item.displayText && item.autoroutePath) { 1110 const li = document.createElement("li"); 1111 li.classList.add("breadcrumbItem"); 1112 const a = document.createElement("a"); 1113 li.innerHTML = index === 0 1114 ? `<a href="/${item.autoroutePath}">${item.displayText}</a>` 1115 : ` / <a href="/${item.autoroutePath}">${item.displayText}</a>`; 1116 breadcrumbContainer.appendChild(li); 1117 } 1118 }); 1119 }) 1120 .catch(error => { 1121 console.error("Error fetching breadcrumbs:", error); 1122 }); 1123 }); 1124</script>
1124 1125 1126 1127 1128<div class="field field-type-contentpickerfield field-name-navigation-part-navigation-item-id"> 1129 <span class="name">Navigation</span> 1130 <span class="value">No content items.</span> 1131</div> 1132 1133 1134<div class="field field-type-booleanfield field-name-navigation-part-is-show-current-page"> 1135 False 1136</div> 1137 1138 </div> 1139 </div> 1140 </div> 1141 1142</section> 1143 1144
1145<script type="text/javascript"> 1146 // Ensure FontAwesomeConfig exists before modifying 1147 window.FontAwesomeConfig = window.FontAwesomeConfig || {}; 1148 window.FontAwesomeConfig.autoReplaceSvg = false; 1149</script>
1149 1150 1151 1152 </div> 1153 </main> 1154 1155<!-- Footer Section Start --> 1156 <style> 1157.quick-links-heading { 1158 margin-bottom: .5rem !important; 1159} 1160@media screen and (max-width: 767px) { 1161 .footer-bottom-links { 1162 justify-content: center; 1163 } 1164} 1165</style> 1166<footer class="footer-section text-white f-14 position-relative"> 1167 <!-- Background Image --> 1168 <img 1169 src="/GovBuilt.Theme.RedSnow/images/footer-bg-shape-img.png" 1170 class="img-fluid bg-shape-img position-absolute z-0 start-0 bottom-0 top-0 end-0 m-auto" 1171 alt="" 1172 /> 1173 1174 <div class="container body-container-size p-60 z-1 position-relative"> 1175 <div class="row"> 1176 <!-- Footer Logo --> 1177 <div class="col-12 col-sm-12 col-md-12 col-lg-4"> 1178 <div class="footer-logo-wrapper"> 1179 <a href="/home-page" class="d-block"> 1180 <img 1181 src="/media/images/footer-white-logo.png" 1182 class="img-fluid footer-logo" 1183 alt="Go to Homepage" 1184 /> 1185 </a> 1186 </div> 1187 </div> 1188 1189 <!-- Footer Links --> 1190 <div class="col-12 col-sm-12 col-md-12 col-lg-8"> 1191 <div class="d-flex footer-flex-wrapper flex-wrap justify-content-end"> 1192 <!-- Follow Us --> 1193 <div class="footer-links-wrapper"> 1194 <div class="m-auto"> 1195 <h2 class="quick-links-heading medium f-16">Follow Us</h2> 1196 <ul class="footer-links-list no-list-style list-unstyled"> 1197 <li class="footer-links"> 1198 <a 1199 href="https://www.facebook.com/TownofKeystone" 1200 aria-label="Visit our Facebook page" 1201 target="_blank" 1202 > 1203 <i class="fa-brands fa-facebook" aria-hidden="true"></i> 1204 <span class="footer-content">Facebook</span> 1205 </a> 1206 </li> 1207 <li class="footer-links"> 1208 <a 1209 href="https://www.instagram.com/townofkeystone/" 1210 aria-label="Visit our Instagram profile" 1211 target="_blank" 1212 > 1213 <i class="fa-brands fa-instagram" aria-hidden="true"></i> 1214 <span class="footer-content">Instagram</span> 1215 </a> 1216 </li> 1217 <li class="footer-links"> 1218 <a 1219 href="https://www.youtube.com/@keystonecogov" 1220 aria-label="Visit our YouTube profile" 1221 target="_blank" 1222 > 1223 <i class="fa-brands fa-youtube" aria-hidden="true"></i> 1224 <span class="footer-content">YouTube</span> 1225 </a> 1226 </li> 1227 <li class="footer-links"> 1228 <a 1229 href="https://www.linkedin.com/company/town-of-keystone-colorado/" 1230 aria-label="Visit our LinkedIn profile" 1231 target="_blank" 1232 > 1233 <i class="fa-brands fa-linkedin-in" aria-hidden="true"></i>
1234 <span class="footer-content">LinkedIn</span> 1235 </a> 1236 </li> 1237 </ul> 1238 </div> 1239 </div> 1240 1241 <!-- Connect With Us --> 1242 <div class="footer-links-wrapper"> 1243 <div class="m-auto"> 1244 <h2 class="quick-links-heading medium f-16">Connect With Us</h2> 1245 <ul class="footer-links-list no-list-style list-unstyled"> 1246 <li class="footer-links"> 1247 <a href="/contact-us" aria-label="Contact us"> 1248 <span class="footer-content">Contact Us</span> 1249 </a> 1250 </li> 1251 <li class="footer-links"> 1252 <a href="https://recruiting.paylocity.com/recruiting/jobs/All/4023e154-2b49-4f59-8f23-f93d9d4
12520e08a/Town-of-Keystone" aria-label="Careers"> 1253 <span class="footer-content">Careers</span> 1254 </a> 1255 </li> 1256 <li class="footer-links"> 1257 <a 1258 href="https://cdn.forms-content-1.sg-form.com/0f383a8b-ddd9-11ef-b6d0-3e2ad497ca02" 1259 aria-label="Join our email list" 1260 target="_blank" 1261 > 1262 <span class="footer-content">Join Our Email List</span> 1263 </a> 1264 </li> 1265 </ul> 1266 </div> 1267 </div> 1268 1269 <!-- Contact Information --> 1270 <div class="footer-links-wrapper"> 1271 <div class="m-auto"> 1272 <h2 class="quick-links-heading medium f-16">Contact Information</h2> 1273 <ul class="footer-links-list no-list-style list-unstyled"> 1274 <li class="footer-links"> 1275 <a href="tel:9704503500" aria-label="Call 970-450-3500"> 1276 <i class="fa-light fa-phone" aria-hidden="true"></i> 1277 <span class="footer-content">970-450-3500</span> 1278 </a> 1279 </li> 1280 <li class="footer-links"> 1281 <a href="/cdn-cgi/l/email-protection#ff96919990bf949a868c8b90919a9c90d1989089" aria-label="Email [email protected]"> 1282 <i class="fa-light fa-envelope" aria-hidden="true"></i> 1283 <span class="footer-content"><span class="__cf_email__" data-cfemail="422b2c242d0229273b31362d2c27212d6c252d34">[email protected]</span></span> 1284 </a> 1285 </li> 1286 <li class="footer-links"> 1287 <a 1288 href="https://www.google.com/maps/search/1628+Saints+John+Rd+Keystone,+CO+80435" 1289 aria-label="Open location in Google Maps: 1628 Saints John Road, Keystone, Colorado 80435" 1290 target="_blank" 1291 > 1292 <i class="fa-light fa-location-dot" aria-hidden="true"></i> 1293 <span class="footer-content">1628 Saints John Rd Keystone, CO 80435</span> 1294 </a> 1295 </li> 1296 </ul> 1297 </div> 1298 </div> 1299 </div> 1300 </div> 1301 </div> 1302 1303 <!-- Footer Bottom Links --> 1304 <div class="d-flex flex-wrap justify-content-between footer-links-color"> 1305 <div class="copyright-content"> 1306 <span>© 2025 State of Colorado</span> 1307 <span class="link-divider"> | </span> 1308 <a href="https://mccinnovations.com/solution/government-websites/" target="_blank" 1309 >Powered by MCCi Government Websites</a 1310 > 1311 </div> 1312 <div class="footer-term-links"> 1313 <ul class="footer-bottom-links no-list-style d-flex flex-wrap gap-2 list-unstyled"> 1314 <li class="d-flex gap-2 flex-nowrap"><a href="/privacypolicy">Privacy Policy</a> |</li> 1315 <li class="d-flex gap-2 flex-nowrap"><a href="/termsofuse">Terms & Conditions</a> |</li> 1316 <li class="d-flex gap-2 flex-nowrap"> 1317 <a href="/digital-accessibility-statement">Digital Accessibility Statement</a> | 1318 </li> 1319 <li class="d-flex gap-2 flex-nowrap"> 1320 <a href="https://data.colorado.gov/stories/s/fjyf-bdat" target="_blank">Transparency Online</a> 1321 | 1322 </li> 1323 <li class="d-flex gap-2 flex-nowrap"> 1324 <a href="https://www.colorado.gov/general-notices" target="_blank">General Notices</a> | 1325 </li> 1326 <li class="d-flex gap-2 flex-nowrap"><a href="/sitemap.xml">Sitemap</a> |</li> 1327 <li class="d-flex gap-2 flex-nowrap"> 1328 <a 1329 class="logo-cogov" 1330 aria-label="Colorado Official State Web Portal" 1331 href="https://www.colorado.gov" 1332 target="_blank" 1333 >Colorado Official State Web Portal</a 1334 > 1335 </li> 1336 </ul> 1337 </div> 1338 </div> 1339 </div> 1340</footer> 1341<!-- Footer Section End -->
vendor: 111 bytes, lines 1341-1344
1341 1342 1343 1344<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
1344<script src="/GovBuilt.Theme.RedSnow/js/app.min.js?v=GCZ9pwN85Q7CMxnvfku_tBC_GH3bdE4m6H_-p5XfQjo"></script>
vendor: 2 bytes, line 1344
1344
1345<script src="/GovBuilt.Theme.RedSnow/js/swiper-bundle.min.js?v=eNvDLFmLlOkuJBRYmOyrqcrpW1JXEt4ZjWqtel88c1s"></script>
vendor: 2 bytes, line 1345
1345
1346<script src="https://cdn.govbuilt.com/contents/froala-editor/5.4.0/froala-editor/js/froala_editor.pkgd.min.js"></script>
vendor: 2 bytes, line 1346
1346
1347<script src="https://cdn.govbuilt.com/contents/froala-editor/5.4.0/froala-editor/js/plugins.pkgd.min.js"></script>
vendor: 2 bytes, line 1347
1347
1348<script src="https://cdn.govbuilt.com/contents/froala-editor/5.4.0/fabric/fabric.min.js"></script>
vendor: 2 bytes, line 1348
1348
1349<script src="https://cdn.govbuilt.com/contents/froala-editor/5.4.0/tui-code-snippet/tui-code-snippet.js"></script>
vendor: 2 bytes, line 1349
1349
1350<script src="https://cdn.govbuilt.com/contents/froala-editor/5.4.0/tui-color-picker/tui-color-picker.min.js"></script>
vendor: 2 bytes, line 1350
1350
1351<script src="https://cdn.govbuilt.com/contents/froala-editor/5.4.0/tui-image-editor/tui-image-editor.min.js"></script>
vendor: 2 bytes, line 1351
1351
1352<script src="https://cdn.govbuilt.com/contents/froala-editor/5.4.0/froala-editor/js/third_party/image_tui.min.js"></script>
vendor: 2 bytes, line 1352
1352
1353<script src="https://cdn.govbuilt.com/contents/froala-editor/5.4.0/prism/prism-core.min.js"></script>
vendor: 2 bytes, line 1353
1353
1354<script src="https://cdn.govbuilt.com/contents/froala-editor/5.4.0/prism/prism-autoloader.min.js"></script>
vendor: 2 bytes, line 1354
1354
1355<script src="https://cdn.govbuilt.com/contents/froala-editor/5.4.0/mammoth-browser/mammoth_browser.min.js"></script>
vendor: 2 bytes, line 1355
1355
1356<script src="/GovBuilt.FroalaEditor/js/orchard-core-froala-editor.min.js?v=esZrhAfuznKgBJzhGxz3wfAErzcFOLZoaHV2TLsAidA"></script>
vendor: 2 bytes, line 1356
1356
1357<script src="/GovBuilt.Resource/Scripts/slick/slick.js?v=w5pICtpS1Y3Vp_1pn7CNpIt4WF0t9c4RxX-981vdJCY"></script>
vendor: 2 bytes, line 1357
1357
1358<script src="https://cdn.govbuilt.com/contents/fontawesome/7.2.0/js/fontawesome.min.js"></script>
vendor: 2 bytes, line 1358
1358
1359<script src="https://cdn.govbuilt.com/contents/fontawesome/7.2.0/js/solid.min.js"></script>
vendor: 2 bytes, line 1359
1359
1360<script src="https://cdn.govbuilt.com/contents/fontawesome/7.2.0/js/regular.min.js"></script>
vendor: 2 bytes, line 1360
1360
1361<script src="https://cdn.govbuilt.com/contents/fontawesome/7.2.0/js/light.min.js"></script>
vendor: 2 bytes, line 1361
1361
1362<script src="https://cdn.govbuilt.com/contents/fontawesome/7.2.0/js/brands.min.js"></script>
vendor: 2 bytes, line 1362
1362
1363<script src="https://cdn.govbuilt.com/contents/fontawesome/7.2.0/js/v4-shims.min.js"></script>
vendor: 2 bytes, line 1363
1363
1364<script src="/GovBuilt.Resource/js/StandardDialogs.min.js?v=_qBoYEN-Xu419TaJ_lO3pFVxrP7LnfIxNX82uUTKmQA"></script>
vendor: 2 bytes, line 1364
1364
1365<script src="/GovBuilt.Resource/js/FECommon.min.js?v=BBOumJEKZYxR96WiPBwdPakzWrMXypwNzBLzyxJXUXE"></script>
vendor: 2 bytes, line 1365
1365
1366<script> 1367 // Define a custom jQuery event 1368 $.event.special.DOMSubtreeModified = { 1369 setup: function () { 1370 var targetNode = this; 1371 var config = { childList: true, subtree: true }; 1372 1373 var observer = new MutationObserver(function (mutations) { 1374 $(targetNode).trigger('DOMSubtreeModified'); 1375 }); 1376 1377 observer.observe(this, config); 1378 1379 // Store observer instance so it can be later disconnected if needed 1380 $(this).data('DOMSubtreeModifiedObserver', observer); 1381 }, 1382 teardown: function () { 1383 var observer = $(this).data('DOMSubtreeModifiedObserver'); 1384 if (observer) { 1385 observer.disconnect(); 1386 } 1387 } 1388 }; 1389</script>
vendor: 2 bytes, line 1389
1389
1390<script> 1391 $(document).ready(function () { 1392 var pagerLabelMap = { 1393 '«': 'Go to first page', '<<': 'Go to first page', 1394 'â¹': 'Go to previous page', '<': 'Go to previous page', 1395 'âº': 'Go to next page', '>': 'Go to next page', 1396 '»': 'Go to last page', '>>': 'Go to last page', 1397 'â¦': 'More pages', '...': 'More pages' 1398 }; 1399 $('ul.pager a, ul.pagination a, nav[aria-label] a').each(function () { 1400 var text = $(this).text().trim(); 1401 if (pagerLabelMap[text] && !$(this).attr('aria-label')) { 1402 $(this).attr('aria-label', pagerLabelMap[text]); 1403 } 1404 }); 1405 }); 1406</script>
1406 1407<button class="back-to-top bg-transparent border-0" aria-label="Back to top"><i class="fa-solid fa-chevron-up"></i></button>
1408<script> 1409$(document).ready(function () { 1410 let debounceTimer; 1411 let activeIndex = -1; 1412 const $searchInput = $(".search-input"); 1413 if (!$searchInput.length) return; 1414 $("#searchModal").on("shown.bs.modal", function () { 1415 $(".search-input").focus(); 1416 }); 1417 $(document).on("keyup", ".search-input", function (e) { 1418 if (e.key === 'ArrowUp' || e.key === 'ArrowDown' || e.key === 'Enter' || e.key === 'Escape') { 1419 return; 1420 } 1421 clearTimeout(debounceTimer); 1422 debounceTimer = setTimeout(fetchResults, 500); 1423 }); 1424 $(document).on("keydown", ".search-input", handleKeyboardNavigation); 1425 $(document).on("focus", ".search-input", showInstructions); 1426 $(document).on("blur", ".search-input", hideInstructions); 1427 $("#searchModal").on("hidden.bs.modal", function () { 1428 closeAutocomplete(); 1429 }); 1430 $("button.close-searchbox").click(function () { 1431 $(".autocomplete-items").remove(); 1432 }); 1433}); 1434 1435window.hostUrl = window.location.origin + "/"; 1436 1437function escapeHtml(str) { 1438 if (!str) return ''; 1439 return String(str) 1440 .replace(/&/g, '&') 1441 .replace(/</g, '<') 1442 .replace(/>/g, '>') 1443 .replace(/"/g, '"') 1444 .replace(/'/g, '''); 1445} 1446 1447function escapeAttr(str) { 1448 if (!str) return ''; 1449 return String(str) 1450 .replace(/&/g, '&') 1451 .replace(/"/g, '"') 1452 .replace(/'/g, '''); 1453} 1454 1455function safeUrl(url) { 1456 if (!url) return '#'; 1457 const allowedSchemes = ['http:', 'https:', 'mailto:', 'tel:']; 1458 try { 1459 const parsedUrl = new URL(url, window.location.origin); 1460 if (allowedSchemes.includes(parsedUrl.protocol)) { 1461 return escapeAttr(url); 1462 } 1463 } catch (e) { 1464 if (url.startsWith('/') || (!url.includes(':') && !url.startsWith('#'))) { 1465 return escapeAttr(url); 1466 } 1467 } 1468 return '#'; 1469} 1470 1471function showInstructions() {} 1472function hideInstructions() {} 1473 1474function fetchResults() { 1475 const $searchInput = $(".search-input"); 1476 if (!$searchInput.length) return; 1477 const searchStr = $searchInput.val().trim(); 1478 closeAutocomplete(); 1479 if (searchStr.length < 3) return; 1480 1481 const $list = $('<ul id="autocomplete-list" role="listbox" class="autocomplete-items list-unstyled" aria-labelledby="searchInput"></ul>'); 1482 $searchInput.after($list); 1483 $searchInput.attr({ 1484 'aria-autocomplete': 'list', 1485 'aria-controls': 'autocomplete-list', 1486 'aria-haspopup': 'listbox', 1487 'aria-expanded': 'true' 1488 }); 1489 1490 $list.append(` 1491 <li id="divResultLoader"> 1492 <img src="${window.hostUrl}OrchardCore.Case/Images/indicator.gif" alt="" aria-hidden="true"> 1493 </li> 1494 `); 1495 1496 $("#search-status").text("Loading search results"); 1497 1498 $.ajax({ 1499 url: window.hostUrl + "SearchRecommendations?Terms=" + encodeURIComponent(searchStr), 1500 method: "GET", 1501 success: function (data) { 1502 renderResults(data, searchStr); 1503 }, 1504 error: function () { 1505 $("#divResultLoader").remove(); 1506 $("#search-status").text("Error loading search results"); 1507 } 1508 }); 1509} 1510 1511function decodeHtmlEntities(html) { 1512 if (!html) return ''; 1513 var txt = document.createElement('textarea'); 1514 txt.innerHTML = html; 1515 return txt.value; 1516} 1517 1518function renderResults(data, searchStr) { 1519 const $list = $("#autocomplete-list"); 1520 if (!$list.length) return; 1521 1522 $("#divResultLoader").remove(); 1523 $list.empty(); 1524 activeIndex = -1; 1525 1526 if (!data || data.statusCode !== 200 || !Array.isArray(data.searchResult) || data.searchResult.length === 0) { 1527 $("#search-status").text("No results found"); 1528 $(".search-input").attr("aria-expanded", "false"); 1529 $list.append('<li role="option"><span class="hint">No result found</span></li>'); 1530 hideInstructions(); 1531 return; 1532 } 1533 1534 $("#search-status").text(`${data.searchResult.length} results available. Use up and down arrow keys to navigate.`); 1535 $(".search-input").attr("aria-expanded", "true"); 1536 1537 data.searchResult.forEach((item, index) => { 1538 const rawTitle = decodeHtmlEntities(item.title); 1539 const rawSummary = decodeHtmlEntities(item.summary); 1540 const plainTitle = rawTitle.replace(/<[^>]*>/g, ''); 1541 const plainSummary = rawSummary ? rawSummary.replace(/<[^>]*>
1541/g, '') : ''; 1542 const safeUrlValue = safeUrl(item.url || '#'); 1543 1544 const $li = $('<li>', { 1545 id: 'autocomplete-option-' + index, 1546 role: 'option', 1547 'aria-selected': 'false', 1548 class: 'autocomplete-option', 1549 tabindex: '-1', 1550 'data-url': safeUrlValue 1551 }); 1552 1553 const $a = $('<a>', { 1554 href: safeUrlValue 1555 }).text(plainTitle); 1556 1557 $li.append($a); 1558 1559 if (plainSummary) { 1560 const $span = $('<span>', { 1561 class: 'hint d-block' 1562 }).text(plainSummary); 1563 $li.append($span); 1564 } 1565 1566 $list.append($li); 1567 }); 1568 1569 const safeViewMoreUrl = safeUrl(window.hostUrl + "Search?Terms=" + encodeURIComponent(searchStr)); 1570 const $viewMoreLi = $('<li>', { 1571 role: 'option', 1572 tabindex: '-1', 1573 'data-url': safeViewMoreUrl 1574 }); 1575 1576 const $viewMoreA = $('<a>', { 1577 class: 'searchResultMoreBtn', 1578 href: safeViewMoreUrl 1579 }).text('View more results'); 1580 1581 $viewMoreLi.append($viewMoreA); 1582 $list.append($viewMoreLi); 1583} 1584 1585function handleKeyboardNavigation(e) { 1586 const $options = $("#autocomplete-list [role='option']"); 1587 if (!$options.length) return; 1588 1589 switch (e.key) { 1590 case "ArrowDown": 1591 e.preventDefault(); 1592 activeIndex = (activeIndex + 1) % $options.length; 1593 updateActiveOption($options); 1594 break; 1595 case "ArrowUp": 1596 e.preventDefault(); 1597 activeIndex = (activeIndex - 1 + $options.length) % $options.length; 1598 updateActiveOption($options); 1599 break; 1600 case "Enter": 1601 if (activeIndex >= 0) { 1602 e.preventDefault(); 1603 const $active = $options.eq(activeIndex); 1604 const url = $active.data("url"); 1605 if (url && url !== '#') window.location.href = url; 1606 closeAutocomplete(); 1607 } 1608 break; 1609 case "Escape": 1610 e.preventDefault(); 1611 closeAutocomplete(); 1612 break; 1613 } 1614} 1615 1616function updateActiveOption($options) { 1617 $options.removeClass("active").attr("aria-selected", "false"); 1618 $options.css("background-color", ""); 1619 const $active = $options.eq(activeIndex); 1620 if (!$active.length) return; 1621 $active.addClass("active").attr("aria-selected", "true"); 1622 $active.css("background-color", "#e9ecef"); 1623 $(".search-input").attr("aria-activedescendant", $active.attr("id")); 1624 $("#search-status").text($active.find('a').first().text().trim()); 1625} 1626 1627function closeAutocomplete() { 1628 $("#autocomplete-list").remove(); 1629 $(".search-input").attr("aria-expanded", "false").removeAttr("aria-activedescendant"); 1630} 1631</script>
vendor: 1 bytes, line 1631
1631
1632<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"6b7c08268ae1439dbc203949bb67aa6b","r":1,"spa":2}' crossorigin="anonymous"></script>
1632 1633</body> 1634</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.