1<!DOCTYPE html> 2<html dir="ltr" lang="en-US"> 3 4<head> 5 <title>Contact CU Presents Support | CU Presents</title> 6 <meta name="title" content="Contact CU Presents Support | CU Presents" /> 7 <meta property="og:title" content="Contact CU Presents Support | CU Presents" /> 8 <meta name="twitter:title" content="Contact CU Presents Support | CU Presents" /> 9 10 <meta name="description" content="Contact CU Presents for ticket assistance, event questions, accessibility requests, or general information about performances." /> 11 <meta name="keywords" content="contact CU Presents" /> 12 13 <meta property="og:url" content="https://cupresents.org/contact" /> 14 <meta property="og:description" content="Contact CU Presents for ticket assistance, event questions, accessibility requests, or general information about performances." /> 15 <meta property="og:site_name" content="CU Presents" /> 16 17 <meta name="twitter:card" content="summary" /> 18 <meta name="twitter:site" content="CU Presents" /> 19 <meta name="twitter:description" content="Contact CU Presents for ticket assistance, event questions, accessibility requests, or general information about performances." /> 20 21 22 23 24 <meta property="og:image" content="https://cupresents.org/storage/slider_galleries/cupresents/2b4f451948aa8bfc6c31a1d59ab7e8d086ca4ff6.webp" /> 25 <meta property="og:type" content="website" /> 26 <meta property="og:logo" content="https://cupresents.org/storage/setting_photo/cupresents/95273306f4515b7408eb9ce59ac25e78a62f0d3d.webp" /> 27 <meta name="twitter:image" content="https://cupresents.org/storage/slider_galleries/cupresents/2b4f451948aa8bfc6c31a1d59ab7e8d086ca4ff6.webp" /> 28 <meta name="twitter:image:alt" content="Aerial view of large college campus." /> 29 <meta charset="utf-8"> 30<meta name="csrf-token" content="F0lB9ZjEt4QIr9yolxhewsRuYScFMA9jVSBloPFj" /> 31 32<meta http-equiv="content-type" content="text/html; charset=utf-8" /> 33<meta name="viewport" content="width=device-width, initial-scale=1" /> 34<link rel="icon" href="https://cupresents.org/storage/favicon/cupresents/d50f1606fc70aed487af72e4a6bc8b45c93f3d06.png" type="image/x-icon" /> 35 36<link rel="preconnect" href="https://fonts.googleapis.com"> 37<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 38<link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet"> 39<link rel="stylesheet" href="https://cupresents.org/themes/global/presenting/css/styles.css?v=1" type="text/css" /> 40<link rel="stylesheet" href="https://cupresents.org/themes/global/presenting/css/theme.css?v=1" type="text/css" /> 41<link rel="stylesheet" href="https://cupresents.org/themes/custom/cupresents/presenting/css/style-custom.css?v=1" type="text/css" /> 42 43<link rel="canonical" href="https://cupresents.org/contact" /> 44
45<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js" integrity="sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
45 46 47 48 49
49<script src="https://app.termly.io/resource-blocker/a7f2364f-fbee-44f0-ac54-5a352e25d675?autoBlock=on"></script>
49 50<!-- Google Tag Manager --> 51
51<script>
vendor: 339 bytes, lines 51-55
51(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 52 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 53 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 54 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 55 })(window,document,'script','dataLayer','
55GTM-MW48BWK
vendor: 3 bytes, line 55
55');
55</script>
55 56 <!-- End Google Tag Manager --> 57 <!-- GA 4 - GTM --> 58 <!-- Google tag (gtag.js) -->
vendor: 67 bytes, lines 58-59
58 59 <script async src="https://www.googletagmanager.com/gtag/js?id=
59G-23EY3N8L3S
vendor: 15 bytes, lines 59-60
59"></script> 60
60<script> 61
vendor: 144 bytes, lines 61-65
61window.dataLayer = window.dataLayer || []; 62 function gtag(){dataLayer.push(arguments);} 63 gtag('js', new Date()); 64 65 gtag('config', '
65G-23EY3N8L3S
vendor: 7 bytes, lines 65-66
65'); 66
66</script>
66 67 <meta name="facebook-domain-verification" content="kxamti69rxxlwcx3n2mjxxkb8f19hz" /> 68 69 70
70<script type="text/javascript" src="https://platform-api.sharethis.com/js/sharethis.js#property=&product=inline-share-buttons" async="async"></script>
70 71
71<script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit" defer></script>
71 72
73<script type="text/javascript"> 74 function googleTranslateElementInit() { 75 new google.translate.TranslateElement({pageLanguage: 'en'}, 'google_translate_element'); 76 } 77 78 // Remove Google Translate voting infrastructure to prevent WAVE false positives 79 document.addEventListener('DOMContentLoaded', function () { 80 const gtPane = document.getElementById('goog-gt-votingHiddenPane'); 81 if (gtPane) { 82 gtPane.remove(); 83 } 84 }); 85</script>
85 86 87</head> 88 89<body class="include-header page-78 "> 90 91 <!-- ***** Header Area Start ***** --> 92 <a href="#main" class="skip-link">Skip to Main Content</a> 93<a href="#navmenu" class="skip-link">Skip to Navigation</a> 94<a href="#footer" class="skip-link">Skip to Footer</a> 95 96<style id="a11y-sticky-focus-offset"> 97 html { scroll-padding-top: 120px; } 98 :target { scroll-margin-top: 120px; } 99 a:focus, button:focus, input:focus, select:focus, textarea:focus, 100 [tabindex]:focus, [role="button"]:focus, [role="menuitem"]:focus { 101 scroll-margin-top: 120px; 102 } 103</style> 104 105<header class="sticky-header "> 106 <div class="container"> 107 <div class="header-main d-flex justify-content-between position-relative"> 108 <div class="header-left d-flex"> 109 <div class="adx-hamburger hamburger d-inline-flex d-xl-none" role="button" tabindex="0" aria-label="Toggle navigation menu" aria-expanded="false" aria-controls="navmenu"></div> 110 <a href="/" class="logo" aria-label="Home"> 111 <img src="https://cupresents.org/storage/setting_photo/cupresents/95273306f4515b7408eb9ce59ac25e78a62f0d3d.webp" alt="CU Presents" width="264" height="29.15"> 112 </a> 113 </div> 114 <div class="header-right d-block d-lg-flex"> 115 <div class="primary-menu"> 116 117 <nav id="navmenu" class="navmenu" aria-label="Main Navigation"> 118 <ul class="menu-container"> 119 120 <!-- parent --> 121 <li class="menu-item default-menu has-sub-menu"> 122 <a class="menu-link" href="/performances" > 123 Events 124 </a> 125 126 <span class="adx-caret-down menarrow" tabindex="0" role="button" 127 aria-label="Expand Events sub-menu" 128 aria-expanded="false"></span> 129 130 <ul class="sub-menu-container"> 131 <!-- children --> 132 <li class="menu-item has-sub-menu"> 133 134 <a class="menu-link" href="/performances#calendar" > 135 Calendar 136 </a> 137 138 </li> 139 <!-- children --> 140 <li class="menu-item has-sub-menu"> 141 142 <a class="menu-link" href="/classical-music" > 143 Classical Music 144 </a> 145 146 </li> 147 <!-- children --> 148 <li class="menu-item has-sub-menu"> 149 150 <a class="menu-link" href="/dance-events" > 151 Dance 152 </a> 153 154 </li> 155 <!-- children --> 156 <li class="menu-item has-sub-menu"> 157 158 <a class="menu-link" href="/holiday" > 159 Holiday 160 </a> 161 162 </li> 163 <!-- children --> 164 <li class="menu-item has-sub-menu"> 165 166 <a class="menu-link" href="/jazz" > 167 Jazz 168 </a> 169 170 </li> 171 <!-- children --> 172 <li class="menu-item has-sub-menu"> 173 174 <a class="menu-link" href="/musicals" > 175 Musicals 176 </a> 177 178 </li> 179 <!-- children --> 180 <li class="menu-item has-sub-menu"> 181 182 <a class="menu-link" href="/new-music" > 183 New Music 184 </a> 185 186 </li> 187 <!-- children --> 188 <li class="menu-item has-sub-menu"> 189 190 <a class="menu-link" href="/opera" > 191 Opera 192 </a> 193 194 </li> 195 <!-- children --> 196 <li class="menu-item has-sub-menu"> 197 198 <a class="menu-link" href="/shakespeare" > 199 Shakespeare 200 </a> 201 202 </li> 203 <!-- children --> 204 <li class="menu-item has-sub-menu"> 205 206 <a class="menu-link" href="/theatre-events" > 207 Theatre 208 </a> 209 210 </li> 211 <!-- children --> 212 <li class="menu-item has-sub-menu"> 213 214 <a class="menu-link" href="/world-music" > 215 World Music 216 </a> 217 218 </li> 219 </ul> 220 </li> 221 222 <!-- parent --> 223 <li class="menu-item default-menu has-sub-menu"> 224 <a class="menu-link" href="/ticket-info" > 225 Tickets 226 </a> 227
228 <span class="adx-caret-down menarrow" tabindex="0" role="button" 229 aria-label="Expand Tickets sub-menu" 230 aria-expanded="false"></span> 231 232 <ul class="sub-menu-container"> 233 <!-- children --> 234 <li class="menu-item has-sub-menu"> 235 236 <a class="menu-link" href="/season-tickets" > 237 Season Tickets 238 </a> 239 240 </li> 241 <!-- children --> 242 <li class="menu-item has-sub-menu"> 243 244 <a class="menu-link" href="/discounts" > 245 Discounts 246 </a> 247 248 </li> 249 <!-- children --> 250 <li class="menu-item has-sub-menu"> 251 252 <a class="menu-link" href="/group-sales" > 253 Groups (10+) 254 </a> 255 256 </li> 257 <!-- children --> 258 <li class="menu-item has-sub-menu"> 259 260 <a class="menu-link" href="/ticket-delivery" > 261 Using Your Tickets 262 </a> 263 264 <span class="adx-caret-down menarrow" tabindex="0" role="button" 265 aria-label="Expand Using Your Tickets sub-menu" 266 aria-expanded="false"></span> 267 268 <ul class="sub-menu-container" > 269 270 <!-- children - children --> 271 <li class="menu-item"> 272 <a class="menu-link" href="/digital-tickets" > 273 Digital Tickets 274 </a> 275 </li> 276 </ul> 277 </li> 278 <!-- children --> 279 <li class="menu-item has-sub-menu"> 280 281 <a class="menu-link" href="/gift-certificates" > 282 Gift Certificates 283 </a> 284 285 </li> 286 <!-- children --> 287 <li class="menu-item has-sub-menu"> 288 289 <a class="menu-link" href="/exchanges" > 290 Exchanges & Refunds 291 </a> 292 293 </li> 294 <!-- children --> 295 <li class="menu-item has-sub-menu"> 296 297 <a class="menu-link" href="/ticket-faqs" > 298 FAQs 299 </a> 300 301 </li> 302 </ul> 303 </li> 304 305 <!-- parent --> 306 <li class="menu-item default-menu has-sub-menu"> 307 <a class="menu-link" href="/your-visit" > 308 Visit 309 </a> 310
311 <span class="adx-caret-down menarrow" tabindex="0" role="button" 312 aria-label="Expand Visit sub-menu" 313 aria-expanded="false"></span> 314 315 <ul class="sub-menu-container"> 316 <!-- children --> 317 <li class="menu-item has-sub-menu"> 318 319 <a class="menu-link" href="/venues" > 320 Venues 321 </a> 322 323 </li> 324 <!-- children --> 325 <li class="menu-item has-sub-menu"> 326 327 <a class="menu-link" href="/getting-here-parking" > 328 Getting Here & Parking 329 </a> 330 331 </li> 332 <!-- children --> 333 <li class="menu-item has-sub-menu"> 334 335 <a class="menu-link" href="/programs" > 336 Event Programs 337 </a> 338 339 </li> 340 <!-- children --> 341 <li class="menu-item has-sub-menu"> 342 343 <a class="menu-link" href="/accessibility" > 344 Accessibility 345 </a> 346 347 </li> 348 <!-- children --> 349 <li class="menu-item has-sub-menu"> 350 351 <a class="menu-link" href="/livestreaming" > 352 Livestreaming 353 </a> 354 355 </li> 356 <!-- children --> 357 <li class="menu-item has-sub-menu"> 358 359 <a class="menu-link" href="/visiting-boulder" > 360 Visiting Boulder 361 </a> 362 363 </li> 364 <!-- children --> 365 <li class="menu-item has-sub-menu"> 366 367 <a class="menu-link" href="/visit-faqs" > 368 FAQs 369 </a> 370 371 </li> 372 </ul> 373 </li> 374 375 <!-- parent --> 376 <li class="menu-item default-menu has-sub-menu"> 377 <a class="menu-link" href="/cu-presents-organizations" > 378 Partner Series 379 </a> 380
381 <span class="adx-caret-down menarrow" tabindex="0" role="button" 382 aria-label="Expand Partner Series sub-menu" 383 aria-expanded="false"></span> 384 385 <ul class="sub-menu-container"> 386 <!-- children --> 387 <li class="menu-item has-sub-menu"> 388 389 <a class="menu-link" href="/artist-series" > 390 Artist Series 391 </a> 392 393 </li> 394 <!-- children --> 395 <li class="menu-item has-sub-menu"> 396 397 <a class="menu-link" href="/shakespeare-festival" > 398 Colorado Shakespeare Festival 399 </a> 400 401 <span class="adx-caret-down menarrow" tabindex="0" role="button" 402 aria-label="Expand Colorado Shakespeare Festival sub-menu" 403 aria-expanded="false"></span> 404 405 <ul class="sub-menu-container" > 406 407 <!-- children - children --> 408 <li class="menu-item"> 409 <a class="menu-link" href="/colorado-shakespeare-festival-events" > 410 Plays 411 </a> 412 </li> 413 414 <!-- children - children --> 415 <li class="menu-item"> 416 <a class="menu-link" href="/give-to-csf" > 417 Give 418 </a> 419 </li> 420 421 <!-- children - children --> 422 <li class="menu-item"> 423 <a class="menu-link" href="/csf-education" > 424 CSF Education 425 </a> 426 </li> 427 428 <!-- children - children --> 429 <li class="menu-item"> 430 <a class="menu-link" href="/csfemployment" > 431 Work with CSF 432 </a> 433 </li> 434 435 <!-- children - children --> 436 <li class="menu-item"> 437 <a class="menu-link" href="/about-csf" > 438 About CSF 439 </a> 440 </li> 441 </ul> 442 </li> 443 <!-- children --> 444 <li class="menu-item has-sub-menu"> 445 446 <a class="menu-link" href="/takacs-quartet" > 447 Takács Quartet 448 </a> 449 450 </li> 451 <!-- children --> 452 <li class="menu-item has-sub-menu"> 453 454 <a class="menu-link" href="/cu-music" > 455 College of Music 456 </a> 457 458 <sp
458an class="adx-caret-down menarrow" tabindex="0" role="button" 459 aria-label="Expand College of Music sub-menu" 460 aria-expanded="false"></span> 461 462 <ul class="sub-menu-container" > 463 464 <!-- children - children --> 465 <li class="menu-item"> 466 <a class="menu-link" href="/faculty-tuesdays" > 467 Faculty Tuesdays 468 </a> 469 </li> 470 471 <!-- children - children --> 472 <li class="menu-item"> 473 <a class="menu-link" href="/eklund-opera-program" > 474 Eklund Opera 475 </a> 476 </li> 477 478 <!-- children - children --> 479 <li class="menu-item"> 480 <a class="menu-link" href="/college-of-music-musical-theatre-events" > 481 Musical Theatre 482 </a> 483 </li> 484 485 <!-- children - children --> 486 <li class="menu-item"> 487 <a class="menu-link" href="/holiday-festival" > 488 Holiday Festival 489 </a> 490 </li> 491 492 <!-- children - children --> 493 <li class="menu-item"> 494 <a class="menu-link" href="/college-of-music-education-events" > 495 Education Events 496 </a> 497 </li> 498 499 <!-- children - children --> 500 <li class="menu-item"> 501 <a class="menu-link" href="https://www.colorado.edu/music/events/student-performances/student-recitals" target="_blank"> 502 Student Recitals 503 </a> 504 </li> 505 506 <!-- children - children --> 507 <li class="menu-item"> 508 <a class="menu-link" href="/guest-recitals" > 509 Guest Recitals 510 </a> 511 </li> 512 </ul> 513 </li> 514 <!-- children --> 515 <li class="menu-item has-sub-menu"> 516 517 <a class="menu-link" href="/cu-theatre-dance" > 518 Dept. of Theatre & Dance 519 </a> 520 521 <sp
521an class="adx-caret-down menarrow" tabindex="0" role="button" 522 aria-label="Expand Dept. of Theatre & Dance sub-menu" 523 aria-expanded="false"></span> 524 525 <ul class="sub-menu-container" > 526 527 <!-- children - children --> 528 <li class="menu-item"> 529 <a class="menu-link" href="/dance" > 530 CU Boulder Dance 531 </a> 532 </li> 533 534 <!-- children - children --> 535 <li class="menu-item"> 536 <a class="menu-link" href="/theatre" > 537 CU Boulder Theatre 538 </a> 539 </li> 540 </ul> 541 </li> 542 </ul> 543 </li> 544 545 <!-- parent --> 546 <li class="menu-item default-menu has-sub-menu"> 547 <a class="menu-link" href="https://cupresents.artdynamix.net/give" > 548 Give 549 </a> 550 551 <span class="adx-caret-down menarrow" tabindex="0" role="button" 552 aria-label="Expand Give sub-menu" 553 aria-expanded="false"></span> 554 555 <ul class="sub-menu-container"> 556 <!-- children --> 557 <li class="menu-item has-sub-menu"> 558 559 <a class="menu-link" href="/give-artist-series" > 560 Artist Series 561 </a> 562 563 </li> 564 <!-- children --> 565 <li class="menu-item has-sub-menu"> 566 567 <a class="menu-link" href="/give-to-csf" > 568 Colorado Shakespeare Festival 569 </a> 570 571 </li> 572 <!-- children --> 573 <li class="menu-item has-sub-menu"> 574 575 <a class="menu-link" href="/give-college-of-music" > 576 College of Music 577 </a> 578 579 </li> 580 <!-- children --> 581 <li class="menu-item has-sub-menu"> 582 583 <a class="menu-link" href="/give-takacs" > 584 Takács Quartet Program 585 </a> 586 587 </li> 588 <!-- children --> 589 <li class="menu-item has-sub-menu"> 590 591 <a class="menu-link" href="/give-to-the-college-of-music-musical-theatre" > 592 College of Music Musical Theatre 593 </a> 594 595 </li> 596 <!-- children --> 597 <li class="menu-item has-sub-menu"> 598 599 <a class="menu-link" href="/holiday-festival" > 600 Holiday Festival 601 </a> 602 603 </li> 604 <!-- children --> 605 <li class="menu-item has-sub-menu"> 606 607 <a class="menu-link" href="/give-eklund-opera" > 608 Eklund Opera 609 </a> 610 611 </li> 612 <!-- children --> 613 <li class="menu-item has-sub-menu"> 614 615 <a class="menu-link" href="/giving-department-theatre-dance" > 616 Dept. of Theatre & Dance 617 </a> 618 619 </li> 620 </ul> 621 </li> 622 623 <!-- parent --> 624 <li class="menu-item default-menu has-sub-menu"> 625 <a class="menu-link" href="/cu-education" > 626 Education 627 </a> 628
629 <span class="adx-caret-down menarrow" tabindex="0" role="button" 630 aria-label="Expand Education sub-menu" 631 aria-expanded="false"></span> 632 633 <ul class="sub-menu-container"> 634 <!-- children --> 635 <li class="menu-item has-sub-menu"> 636 637 <a class="menu-link" href="/education" > 638 Events 639 </a> 640 641 </li> 642 <!-- children --> 643 <li class="menu-item has-sub-menu"> 644 645 <a class="menu-link" href="/csf-education" > 646 CSF Education 647 </a> 648 649 <span class="adx-caret-down menarrow" tabindex="0" role="button" 650 aria-label="Expand CSF Education sub-menu" 651 aria-expanded="false"></span> 652 653 <ul class="sub-menu-container" > 654 655 <!-- children - children --> 656 <li class="menu-item"> 657 <a class="menu-link" href="/kids-teens" > 658 Kids & Teens 659 </a> 660 </li> 661 662 <!-- children - children --> 663 <li class="menu-item"> 664 <a class="menu-link" href="/adults" > 665 Adults 666 </a> 667 </li> 668 669 <!-- children - children --> 670 <li class="menu-item"> 671 <a class="menu-link" href="/csf-education-k12" > 672 K-12 Schools 673 </a> 674 </li> 675 </ul> 676 </li> 677 <!-- children --> 678 <li class="menu-item has-sub-menu"> 679 680 <a class="menu-link" href="/college-of-music-education-events" target="_blank"> 681 CU Boulder College of Music 682 </a> 683 684 </li> 685 <!-- children --> 686 <li class="menu-item has-sub-menu"> 687 688 <a class="menu-link" href="/cu-theatre-dance" > 689 Dept. of Theatre & Dance 690 </a> 691 692 </li> 693 <!-- children --> 694 <li class="menu-item has-sub-menu"> 695 696 <a class="menu-link" href="https://www.colorado.edu/" target="_blank"> 697 CU Boulder 698 </a> 699 700 </li> 701 </ul> 702 </li> 703 704 <!-- parent --> 705 <li class="menu-item default-menu has-sub-menu"> 706 <a class="menu-link" href="/about-cu-presents" > 707 About 708 </a> 709
710 <span class="adx-caret-down menarrow" tabindex="0" role="button" 711 aria-label="Expand About sub-menu" 712 aria-expanded="false"></span> 713 714 <ul class="sub-menu-container"> 715 <!-- children --> 716 <li class="menu-item has-sub-menu"> 717 718 <a class="menu-link" href="/cupnews" > 719 News 720 </a> 721 722 </li> 723 <!-- children --> 724 <li class="menu-item has-sub-menu"> 725 726 <a class="menu-link" href="/advisory-boards" > 727 Advisory Boards 728 </a> 729 730 </li> 731 <!-- children --> 732 <li class="menu-item has-sub-menu"> 733 734 <a class="menu-link" href="/our-team" > 735 Our Team 736 </a> 737 738 </li> 739 <!-- children --> 740 <li class="menu-item has-sub-menu"> 741 742 <a class="menu-link" href="/job-opportunities" > 743 Work With Us 744 </a> 745 746 <span class="adx-caret-down menarrow" tabindex="0" role="button" 747 aria-label="Expand Work With Us sub-menu" 748 aria-expanded="false"></span> 749 750 <ul class="sub-menu-container" > 751 752 <!-- children - children --> 753 <li class="menu-item"> 754 <a class="menu-link" href="/2027-colorado-shakespeare-festival-auditions" > 755 CSF Auditions 756 </a> 757 </li> 758 </ul> 759 </li> 760 <!-- children --> 761 <li class="menu-item has-sub-menu"> 762 763 <a class="menu-link" href="/contact" > 764 Contact Us 765 </a> 766 767 </li> 768 <!-- children --> 769 <li class="menu-item has-sub-menu"> 770 771 <a class="menu-link" href="/past-seasons" > 772 Past Events 773 </a> 774 775 </li> 776 <!-- children --> 777 <li class="menu-item has-sub-menu"> 778 779 <a class="menu-link" href="/press" > 780 Press 781 </a> 782 783 </li> 784 <!-- children --> 785 <li class="menu-item has-sub-menu"> 786 787 <a class="menu-link" href="/about-faqs" > 788 FAQs 789 </a> 790 791 </li> 792 <!-- children --> 793 <li class="menu-item has-sub-menu"> 794 795 <a class="menu-link" href="/terms-conditions" > 796 Terms and Conditions 797 </a> 798 799 </li> 800 </ul> 801 </li> 802 </ul> 803 804 </nav> 805 </div> 806 <div class="secondary-menu"> 807 <ul class="icons-menu d-flex"> 808 <li> 809 <a href="/performances#calendar" aria-label="Calendar"><i class='adx-calendar' aria-hidden='true'></i><span class='visually-hidden'>Calendar</span></a> 810 </li> 811 <li> 812 <a href="https://tickets.cupresents.org/account/update?theme=cupresents" aria-label="User Profile"><i class='adx-user' aria-hidden='true'></i><span class='visually-hidden'>User Profile</span></a> 813 </li> 814 <li> 815 <a href="https://tickets.cupresents.org/cart/detail
815s" aria-label="Cart"><i class='adx-cart' aria-hidden='true'></i><span class='visually-hidden'>Cart</span></a> 816 </li> 817 <li class="has-sub-menu" id="top-menu-item-translate"> 818 <div class="dropdown"> 819 <a class="btn btn-sm btn-link dropdown-toggle" href="#" id="dropdownMenuLink" data-bs-toggle="dropdown" aria-expanded="false"> 820 <span id="langAnchor">English</span> 821 </a> 822 823 <ul id="language_selector" class="dropdown-menu language_selector" aria-labelledby="dropdownMenuLink"> 824 <li><button type="button" class="dropdown-item" onclick="translateLanguage('en', 'English')">English</button></li> 825 <li><button type="button" class="dropdown-item" onclick="translateLanguage('es', 'Spanish')">Spanish</button></li> 826 <li><button type="button" class="dropdown-item" onclick="translateLanguage('zh-CN', 'Chinese')">Chinese</button></li> 827 <li><button type="button" class="dropdown-item" onclick="translateLanguage('fr', 'French')">French</button></li> 828 <li><button type="button" class="dropdown-item" onclick="translateLanguage('de', 'German')">German</button></li> 829 <li><button type="button" class="dropdown-item" onclick="translateLanguage('ru', 'Russian')">Russian</button></li> 830 <li><button type="button" class="dropdown-item" onclick="translateLanguage('it', 'Italian')">Italian</button></li> 831 <li><button type="button" class="dropdown-item" onclick="translateLanguage('ko', 'Korean')">Korean</button></li> 832 <li><button type="button" class="dropdown-item" onclick="translateLanguage('vi', 'Vietnamese')">Vietnamese</button></li> 833 <li><button type="button" class="dropdown-item" onclick="translateLanguage('lo', 'Lao')">Lao</button></li> 834 </ul> 835 <div id="google_translate_element" style="display:none;"></div> 836 </div> 837 </li> 838 839 <li id="search-li"> 840 <a data-bs-toggle="collapse" href="#header-search" aria-expanded="false" aria-controls="header-search" id="search-toggle" aria-label="Open Search"> 841 <i class='adx-search' aria-hidden='true'></i><span class='visually-hidden'>Search</span> 842 </a> 843 </li> 844</ul> 845 </div> 846 847 <div class="search-header collapse" id="header-search" role="search"> 848 <form action="/search" method="get"> 849 <div class="search-header-inner d-flex"> 850 <input type="text" name="search" class="form-control" placeholder="Type and hit enter" autocomplete="off" aria-label="Search site" aria-describedby="search-instructions"> 851 <span id="search-instructions" class="visually-hidden"> 852 Enter your search terms and press Enter to submit 853 </span> 854 <button class="btn btn-link text-warning" id="search-btn-top" title="click to open search" type="submit"> 855 <i class="adx-search" aria-hidden="true"></i> 856 <span class="visually-hidden">Search</span> 857 </button> 858 </div> 859 </form> 860 </div> 861 </div> 862 863 </div> 864 </div> 865</header> 866 <!-- ***** Header Area End ***** --> 867 868 <!-- Google Tag Manager (noscript) -->
vendor: 71 bytes, lines 868-869
868 869 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
869GTM-MW48BWK
vendor: 89 bytes, lines 869-871
869" 870 height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 871
871<!-- End Google Tag Manager (noscript) --> 872 873 <main id="main"> 874 <!-- ***** Main Banner Area Start ***** --> 875 876 <div class="IDMI4EKPGYN85FA1"> 877<div class="slider-wrapper vh-50"> 878 <div class="slider" role="group" data-autoplay="true" data-duration="4000" data-vduration="15000" data-loop="false" data-nav="false" data-controls="true" data-items="1"> 879 <div class="slide"> 880 881 882 <img class="slider-bg" 883 src="https://cupresents.org/storage/slider_galleries/cupresents/2b4f451948aa8bfc6c31a1d59ab7e8d086ca4ff6.webp" 884 alt="Aerial view of large college campus." loading="lazy" decoding="async"> 885 886 <div class="slider-caption light caption-center"> 887 <div class="slider-caption-inner"> 888 <div class="container"> 889 890 </div> 891 </div> 892 </div> 893 894 </div> 895 </div> 896 </div> 897 898 899 900<!-- make sure the iframe_api script is included -->
901<script src="https://player.vimeo.com/api/player.js"></script>
vendor: 1 bytes, line 901
901
902<script src="https://www.youtube.com/iframe_api"></script>
902 903
904<script> 905 // ============================================================ 906 // GLOBAL SCOPE â shared state 907 // ============================================================ 908 const players = new Map(); // iframe el â YT/Vimeo player 909 const iframeToSlider = new Map(); // iframe el â { slider, goNext } 910 let domReady = false; 911 let ytApiReady = false; 912 913 // ============================================================ 914 // YouTube API callback â global scope required 915 // ============================================================ 916 window.onYouTubeIframeAPIReady = function () { 917 ytApiReady = true; 918 // If DOM ready already ran, init players now 919 // Otherwise DOM ready will call initYoutubePlayers() itself 920 if (domReady) initYoutubePlayers(); 921 }; 922 923 function initYoutubePlayers() { 924 // Only real slides â never clones 925 document.querySelectorAll('.slider-item:not(.tns-slide-cloned) iframe[data-type="youtube"]').forEach(iframe => { 926 ensureYouTubeIframe(iframe); // strips loop/playlist, fixes ID 927 try { 928 new YT.Player(iframe.id, { 929 events: { 930 onReady(e) { 931 players.set(iframe, e.target); 932 933 // Request highest available quality. 934 // 'hd1080' is the target; YouTube silently falls back 935 // to the best quality the video/connection supports. 936 e.target.setPlaybackQuality('hd1080'); 937 938 // YT API fires async â if scheduleNext() already ran for 939 // this slide, the video started via postMessage with no 940 // onStateChange. Now the real player exists, restart so 941 // ENDED will fire correctly. 942 if (iframeToSlider.has(iframe)) { 943 seekTo(e.target, iframe, 0); 944 playVideo(e.target, iframe); 945 } 946 }, 947 onStateChange(e) { 948 // Re-apply quality on every new playback â YouTube can 949 // reset it internally between plays. 950 if (e.data === YT.PlayerState.PLAYING) { 951 e.target.setPlaybackQuality('hd1080'); 952 } 953 if (e.data === YT.PlayerState.ENDED) { 954 const entry = iframeToSlider.get(iframe); 955 if (entry) entry.goNext(); 956 } 957 } 958 } 959 }); 960 } catch (err) { 961 console.warn('YT.Player init failed:', err); 962 } 963 }); 964 } 965 966 // ============================================================ 967 // Helpers 968 // ============================================================ 969 function ensureYouTubeIframe(iframe) { 970 if (!iframe) return; 971 972 // Fix duplicate/missing IDs 973 if (!iframe.id || document.querySelectorAll('[id="' + iframe.id + '"]').length > 1) { 974 iframe.id = 'yt-' + Math.random().toString(36).slice(2, 9); 975 } 976 977 try { 978 const src = new URL(iframe.src, location.href); 979 src.searchParams.set('enablejsapi', '1'); 980 src.searchParams.set('origin', location.origin); 981 982 // *** Remove loop & playlist so the 'ended' event actually fires *** 983 src.searchParams.delete('loop'); 984 src.searchParams.delete('playlist'); 985 986 // Only update src if something changed (prevents unnecessary reload) 987 const newSrc = src.toString(); 988 if (iframe.src !== newSrc) iframe.src = newSrc; 989 } catch (e) { 990 console.warn('Could not normalize YouTube src:', e); 991 } 992 } 993 994 function ensureVimeoIframe(iframe) { 995 if (!iframe) return; 996 try { 997 const src = new URL(iframe.src, location.href); 998 999 // Remove loop so the 'ended' event fires 1000 src.searchParams.delete('loop'); 1001 src.searchParams.set('api', '1'); 1002 1003 const newSrc = src.toString();
1004 if (iframe.src !== newSrc) iframe.src = newSrc; 1005 } catch (e) { 1006 console.warn('Could not normalize Vimeo src:', e); 1007 } 1008 } 1009 1010 function bindVimeoPlayer(iframe) { 1011 try { 1012 const v = new Vimeo.Player(iframe); 1013 let duration = null; 1014 let triggered = false; // prevent firing twice 1015 1016 // Get duration once player is ready 1017 v.getDuration().then(d => { duration = d; }); 1018 1019 // Fallback: also grab it on first timeupdate if getDuration was too early 1020 v.on('timeupdate', (data) => { 1021 if (!duration && data.duration) duration = data.duration; 1022 if (!duration) return; 1023 1024 // Trigger when within 0.5s of the end 1025 if (!triggered && data.seconds >= duration - 0.5) { 1026 triggered = true; 1027 const entry = iframeToSlider.get(iframe); 1028 if (entry) entry.goNext(); 1029 } 1030 }); 1031 1032 // Reset trigger so the next replay can fire again 1033 v.on('seeked', (data) => { 1034 if (data.seconds < 1) triggered = false; 1035 }); 1036 1037 players.set(iframe, v); 1038 } catch (e) { 1039 console.warn('Vimeo player bind failed:', e); 1040 } 1041 } 1042 1043 function initVimeoPlayer(iframe) { 1044 if (players.has(iframe)) return players.get(iframe); 1045 1046 const oldSrc = iframe.src; 1047 ensureVimeoIframe(iframe); 1048 const srcChanged = iframe.src !== oldSrc; 1049 1050 if (srcChanged) { 1051 iframe.addEventListener('load', () => bindVimeoPlayer(iframe), { once: true }); 1052 } else { 1053 bindVimeoPlayer(iframe); 1054 } 1055 1056 return null; 1057 } 1058 1059 function getRealIframe(slide) { 1060 if (!slide || slide.classList.contains('tns-slide-cloned')) return null; 1061 return slide.querySelector('iframe') || null; 1062 } 1063 1064 // tiny-slider with loop:true inserts clone slides into slideItems. 1065 // slideItems[index] can be a clone â use displayIndex + filtered real 1066 // slides to always resolve the genuine visible DOM element. 1067 function getRealCurrentSlide(info) { 1068 const realSlides = Array.from(info.slideItems) 1069 .filter(s => !s.classList.contains('tns-slide-cloned')); 1070 if (!realSlides.length) return null; 1071 const idx = ((info.displayIndex - 1) % realSlides.length + realSlides.length) % realSlides.length; 1072 return realSlides[idx] || null; 1073 } 1074 1075 // ============================================================ 1076 // Video actions 1077 // ============================================================ 1078 function postMessageYT(iframe, func, args = []) { 1079 iframe?.contentWindow?.postMessage(JSON.stringify({ event: 'command', func, args }), '*'); 1080 } 1081 function playVideo(player, iframe) { 1082 if (player?.playVideo) return player.playVideo(); 1083 if (player?.play) return player.play(); 1084 postMessageYT(iframe, 'playVideo'); 1085 } 1086 function pauseVideo(player, iframe) { 1087 if (player?.pauseVideo) return player.pauseVideo(); 1088 if (player?.pause) return player.pause(); 1089 postMessageYT(iframe, 'pauseVideo'); 1090 } 1091 function seekTo(player, iframe, s = 0) { 1092 if (player?.seekTo) return player.seekTo(s, true); 1093 if (player?.setCurrentTime) return player.setCurrentTime(s); 1094 postMessageYT(iframe, 'seekTo', [s, true]); 1095 } 1096 function muteVideo(player, iframe) { 1097 if (player?.mute) return player.mute(); 1098 if (player?.setVolume) return player.setVolume(0); 1099 postMessageYT(iframe, 'mute'); 1100 } 1101 function unmuteVideo(player, iframe) { 1102 if (player?.unMute) return player.unMute(); 1103 if (player?.setVolume) return player.setVolume(1); 1104 postMessageYT(iframe, 'unMute'); 1105 } 1106 1107 function activateVideoSlide(slide) { 1108 const iframe = getRealIframe(slide); 1109 if (!iframe) return; 1110 const player = players.get(iframe) || null; 1111 seekTo(player, iframe, 0); // Req 2: restart from 0 1112 playVideo(player, iframe); // Req 1: only visible slide plays 1113 const playBtn = slide.querySelector('.play-btn'); 1114 const pauseBtn = slide.querySelector('.pause-btn'); 1115 if (playBtn) playBtn.style.display = 'none'; 1116 if (pauseBtn) pauseBtn.style.display = ''; 1117 } 1118 1119 function deactivateVideoSlide(slide) { 1120 const iframe = getRealIframe(slide); 1121 if (!iframe) return; 1122 pauseVideo(players.get(iframe) || null, iframe); 1123 } 1124 1125 // ============================================================ 1126 // DOM Ready 1127 // ============================================================ 1128 $(document).ready(function () { 1129 domReady = true; 1130 1131 function parseBool(val) { 1132 if (typeof val === 'string') return val.toLowerCase() === 'true'; 1133 return !!val; 1134 } 1135 1136 // Fix YouTube srcs first â before any YT.Player is created
1137 document.querySelectorAll('.slider-item:not(.tns-slide-cloned) iframe[data-type="youtube"]') 1138 .forEach(ensureYouTubeIframe); 1139 1140 // Init Vimeo players immediately 1141 document.querySelectorAll('.slider-item:not(.tns-slide-cloned) iframe[data-type="vimeo"]') 1142 .forEach(initVimeoPlayer); 1143 1144 // If YouTube API already fired before DOM ready, init players now 1145 if (ytApiReady) initYoutubePlayers(); 1146 1147 // ---- Slider init ---- 1148 $('.main-slider').each(function () { 1149 const $el = $(this); 1150 1151 const autoplay = parseBool($el.data('autoplay')); 1152 const duration = parseInt($el.data('duration')) || 3000; 1153 const loop = parseBool($el.data('loop')); 1154 const nav = parseBool($el.data('nav')); 1155 const controls = parseBool($el.data('controls')); 1156 const gutter = parseInt($el.data('gutter')) || 20; 1157 1158 const itemsXs = parseInt($el.data('items-xs')) || 1; 1159 const itemsSm = parseInt($el.data('items-sm')) || 1; 1160 const itemsMd = parseInt($el.data('items-md')) || 1; 1161 const itemsLg = parseInt($el.data('items-lg')) || 1; 1162 const itemsXl = parseInt($el.data('items-xl')) || 1; 1163 1164 const maxItems = Math.max(itemsXs, itemsSm, itemsMd, itemsLg, itemsXl); 1165 const isCarousel = maxItems > 1; 1166 1167 const slider = tns({ 1168 container: $el[0], 1169 items: isCarousel ? itemsXl : 1, 1170 gutter: isCarousel ? gutter : 0, 1171 autoplay: false, 1172 autoplayButtonOutput: false, 1173 autoplayHoverPause: isCarousel, 1174 mouseDrag: true, 1175 loop: loop, 1176 nav: nav, 1177 controls: controls, 1178 speed: 600, 1179 responsive: isCarousel ? { 1180 0: { items: itemsXs }, 1181 576: { items: itemsSm }, 1182 768: { items: itemsMd }, 1183 992: { items: itemsLg }, 1184 1200: { items: itemsXl } 1185 } : {} 1186 }); 1187 1188 if (!isCarousel && autoplay) { 1189 let timer; 1190 1191 function goNext() { 1192 clearTimeout(timer); 1193 1194 const info = slider.getInfo(); 1195 1196 // Single-slide case: tiny-slider won't fire indexChanged because 1197 // the index never changes. Call scheduleNext() directly â it 1198 // activates the video AND re-registers iframeToSlider so the 1199 // ENDEDâgoNextâscheduleNext chain stays intact every cycle. 1200 if (info.slideCount <= 1) { 1201 scheduleNext(); 1202 return; 1203 } 1204 1205 slider.goTo('next'); 1206 } 1207 1208 function scheduleNext() { 1209 clearTimeout(timer); 1210 const info = slider.getInfo(); 1211 1212 // Use getRealCurrentSlide() â with loop:true, slideItems[index] 1213 // can be a tns-slide-cloned element, which fails the video check. 1214 const currentSlide = getRealCurrentSlide(info); 1215 const isVideo = currentSlide && currentSlide.classList.contains('video-slide'); 1216 1217 if (isVideo) { 1218 activateVideoSlide(currentSlide); 1219 const iframe = getRealIframe(currentSlide); 1220 // Register goNext so the ENDED event triggers the next cycle 1221 if (iframe) iframeToSlider.set(iframe, { slider, goNext }); 1222 } else { 1223 timer = setTimeout(goNext, duration); 1224 } 1225 } 1226 1227 slider.events.on('indexChanged', function (info) { 1228 // Pause all real video slides â avoids relying on clone-contaminated 1229 // indexCached to find the previous slide. 1230 Array.from(info.slideItems) 1231 .filter(s => s.classList.contains('video-slide') && !s.classList.contains('tns-sli
1231de-cloned')) 1232 .forEach(deactivateVideoSlide); 1233 1234 scheduleNext(); 1235 }); 1236 1237 scheduleNext(); 1238 } 1239 }); 1240 1241 // ---- Button handlers ---- 1242 $(document).on('click', '.play-btn', function () { 1243 const slide = $(this).closest('.video-slide')[0]; 1244 const iframe = getRealIframe(slide); 1245 playVideo(players.get(iframe) || null, iframe); 1246 slide.querySelector('.play-btn').style.display = 'none'; 1247 slide.querySelector('.pause-btn').style.display = ''; 1248 }); 1249 1250 $(document).on('click', '.pause-btn', function () { 1251 const slide = $(this).closest('.video-slide')[0]; 1252 const iframe = getRealIframe(slide); 1253 pauseVideo(players.get(iframe) || null, iframe); 1254 slide.querySelector('.pause-btn').style.display = 'none'; 1255 slide.querySelector('.play-btn').style.display = ''; 1256 }); 1257 1258 $(document).on('click', '.mute-btn', function () { 1259 const slide = $(this).closest('.video-slide')[0]; 1260 const iframe = getRealIframe(slide); 1261 muteVideo(players.get(iframe) || null, iframe); 1262 slide.querySelector('.mute-btn').style.display = 'none'; 1263 slide.querySelector('.unmute-btn').style.display = ''; 1264 }); 1265 1266 $(document).on('click', '.unmute-btn', function () { 1267 const slide = $(this).closest('.video-slide')[0]; 1268 const iframe = getRealIframe(slide); 1269 unmuteVideo(players.get(iframe) || null, iframe); 1270 slide.querySelector('.unmute-btn').style.display = 'none'; 1271 slide.querySelector('.mute-btn').style.display = ''; 1272 }); 1273 }); 1274</script>
1274 1275</div><div phpb-blocks-container="" class="container IDMI4EOSOUWVNTS3 pr-3 py-md-5"><div class="IDMK5XSVRN5RIQ51"> 1276<nav aria-label="breadcrumb" class="breadcrumb-nav mt-3" style="--bs-breadcrumb-divider: '>';"> 1277 <ol class="breadcrumb"> 1278 <li class="breadcrumb-item"> 1279 <a href="/" class="text-decoration-none">Home</a> 1280 <span class="separator"></span> 1281 </li> 1282 <li class="breadcrumb-item"> 1283 <a href="/about-cu-presents" class="text-decoration-none">About</a> 1284 <span class="separator"></span> 1285 </li> 1286 <li class="breadcrumb-item active" aria-current="page"> 1287 Contact 1288 </li> 1289 </ol> 1290 </nav> 1291 1292</div><div phpb-blocks-container="" class="IDMI4EPFQOO25JB5"> 1293 <div phpb-editable="" data-raw-content="true"> 1294 <h1>Contact Us</h1> 1295 </div> 1296</div><div phpb-blocks-container="" class="IDMI4EQ6G7K11327"> 1297 <div phpb-editable="" data-raw-content="true"> 1298 <p><strong>Box Office Hours: Monday-Friday, 10 a.m. to 5 p.m.</strong></p> 1299 <p>To contact the box office about tickets or performance questions, please call during office hours or use the contact form below. The box office is open one hour before performances for will call and in-person sales only.</p> 1300 </div> 1301</div><div phpb-blocks-container="" class="IDMI4EVV0F71PWP14 IDMI65GX20U6T8H2"> 1302 <div phpb-editable="" data-raw-content="true"> 1303 <h3><span style="font-size:20px;">Call 303-492-8008<br><br>âââââââMailing address:</span></h3> 1304 <p>302 UCB<br>Boulder, CO 80309</p> 1305 <h3><span style="font-size:20px;">Daytime Box Office physical address:</span></h3> 1306 <p>972 Broadway<br>Boulder, CO 80309</p> 1307 </div> 1308</div><div class="IDMI65GX1Z6PCCJ0"><div style="padding:20px;"></div></div><div phpb-blocks-container="" class="IDMI4ETF3JX0UHK9"> 1309 <div phpb-editable="" data-raw-content="true"> 1310 <h3>Colorado Shakespeare Festival contact information</h3> 1311 </div><div phpb-blocks-container="" class="IDMI4F0X3S985EJ17 IDMI65GX24B42RM3"> 1312 <div phpb-editable="" data-raw-content="true"> 1313 <h3><span style="font-size:20px;">Administrative Mailing address:</span></h3> 1314 <p>Colorado Shakespeare Festival<br>277 UCB<br>Boulder, CO 80309-0277</p> 1315 <h3><span style="font-size:20px;">Delivery address:</span></h3> 1316 <p>1301 Grandview Ave<br>Boulder, CO 80302</p> 1317 </div><div phpb-blocks-container="" class="IDMJHIOQXWGTORM1"><div class="IDMJHIPUPQ57ETC3"><div style="padding:20px;"></div></div><div phpb-editable="" data-raw-content="true"> 1318 <h3>CU Presents Contact Form</h3> 1319 </div> 1320</div> 1321</div> 1322</div><div class="IDMJHIM8K0LVV8E1"><div class="embed"> 1323
1323<script src="https://www.cognitoforms.com/f/seamless.js" data-key="irxRdQapu0e4bCuMFMQZaA" data-form="5"></script>
1323 1324 </div> 1325 1326 1327</div><div class="IDMJHV35QWP8RVG1"><div style="padding:20px;"></div></div></div><style>* { box-sizing: border-box; } body {margin: 0;}.container{min-height:0px;}#wrapper{wrapperStyle:[object Object];}#google_translate_element{display:none;}[phpb-content-container]{min-width:100px;padding-bottom:50px;min-height:500px !important;}.layout_img .note_text{color:rgb(255, 0, 0) !important;}html{scroll-padding-top:120px;}:target{scroll-margin-top:120px;}a:focus, button:focus, input:focus, select:focus, textarea:focus, [tabindex]:focus, [role="button"]:focus, [role="menuitem"]:focus{scroll-margin-top:120px;}#ip1l45{--bs-breadcrumb-divider:'>';}#ink3hd{padding:20px;}#i4mr8f{padding:20px;}#idp1cs{padding:20px;}</style> 1328 1329 1330 </main> 1331 1332 1333 1334 <!-- ***** Footer Start ***** --> 1335 <footer id="footer"> 1336 <div class="container"> 1337 <div class="footer-inner"> 1338 <div class="row footer-row"> 1339 1340 1341 <div class="footer-right-col"> 1342 <div class="fw-mailing-wrapper"> 1343<div class="fw-mailing"> 1344 <h2>Join our mailing list to get the latest news & events reminders!</h2> 1345 <a href="https://tickets.cupresents.org/account/create/brief?usage=join-our-email-list&theme=cupresents" target="_blank" class="btn btn-secondary" role="button" aria-label="SIGN UP!">SIGN UP!</a> 1346 </div></div> 1347 </div> 1348 <div class="footer-right-col"> 1349 1350 <div class="footer-social" aria-label="Social Media Links"> 1351 <a href="https://www.facebook.com/cupresents/" aria-label="facebook" title="facebook" role="button"><i class="adx-fb" aria-hidden="true"></i></a> 1352 <a href="https://www.instagram.com/cupresents/" aria-label="instagram" title="instagram" role="button"><i class="adx-instagram" aria-hidden="true"></i></a> 1353 <a href="https://www.youtube.com/channel/UC-ZKAivZsWnp990-uy-VuTA" aria-label="youtube" title="youtube" role="button"><i class="adx-youtube" aria-hidden="true"></i></a> 1354 </div> 1355 1356 1357 <div class="text-center pt-2"> 1358<p class="text-secondary"><a class="text-secondary" href="tel:303.492.8008" target="_blank">303.492.8008</a><br> 1359<a class="text-secondary" href="mailto:[email protected]" target="_blank">[email protected]</a><br><font color="#ffffff"> 1360972 Broadway, Boulder, CO 80309</font></p> 1361 1362<h4>Box Office Hours</h4> 1363<p class="text-uppercase">Monday - Friday 10 a.m. to 5 p.m.</p> 1364</div> 1365 </div> 1366 1367 1368 1369 1370 <div class="footer-right-col"> 1371 <div class="fs-boulder-wrap"> 1372<div class="fs-boulder-inner"> 1373<a href="https://www.colorado.edu/"><img src="/storage/summernote_photo/cupresents/8084950a70daa1bd43151a8e3f147954419eefbb.webp" alt="Logo of University of Colorado Boulder" width="470" height="70.53"></a> 1374<p class="pt-4"><a href="https://www.colorado.edu/" target="_blank" class="text-secondary">University of Colorado Boulder</a><br> 1375© Regents of the University of Colorado</p> 1376 1377<div class="footer-links"> 1378 <a href="https://www.colorado.edu/compliance/policies/privacy-statement" target="_blank">Privacy Policy</a> 1379 <span>â¢</span> 1380 <a href="#" class="termly-display-preferences">Consent Preferences</a> 1381 <span>â¢</span> 1382 <a href="https://www.colorado.edu/about/legal-trademarks" target="_blank">Legal & Trademarks</a> 1383 <span>â¢</span> 1384 <a href="https://www.colorado.edu/map" target="_blank">Campus Map</a> 1385</div></div></div> 1386 </div> 1387 <div class="footer-copyrights"> 1388 <div class="d-flex align-items-center"> 1389 <div class="rights"> 1390 © 2025, CU Presents, all rights reserved. 1391 </div> 1392 1393 <div class="developer"> 1394 <a href="https://www.artdynamix.com" target="_blank" aria-label="ARTdynamix Website">ARTdynamixâ¢</a> by <a href="https://www.dreamwarrior.com" target="_blank" aria-label="Dream Warrior Group Website">Dream Warrior Group</a> 1395 </div> 1396 </div> 1397 </div> 1398 </div> 1399 </div> 1400 </div> 1401</footer> 1402 1403<div id="video-lightbox" role="dialog" aria-modal="true" aria-label="Video Lightbox"> 1404 <span class="close" role="button" tabindex="0" aria-label="Close video lightbox">×</span> 1405 <iframe id="video-lightbox-iframe" width="560" height="315" src="" frameborder="0" allowfullscreen title="Video"></iframe> 1406 <div id="video-lightbox-caption"></div> 1407 <a class="navigate" id="prevv" tabindex="0" aria-label="Previous video"><i class="adx-caret-left" aria-hidden="true"></i></a> 1408 <a class="navigate" id="nextv" tabindex="0" aria-label="Next video"><i class="adx-caret-right" aria-hidden="true"></i></a> 1409</div> 1410<div id="lightbox" role="dialog" aria-modal="true" aria-label="Image Lightbox"> 1411 <span class="close" role="button" tabindex="0" aria-label="Close image lightbox">×</span> 1412 <img id="lightbox-img" src="" alt=""> 1413 <div id="lightbox-caption"></div> 1414 <a class="navigate" id="prev" tabindex="0" aria-label="Previous image"><i class="adx-caret-left" aria-hidden="true"></i></a> 1415 <a class="navigate" id="next" tabindex="0" aria-label="Next image"><i class="adx-caret-right" aria-hidden="true"></i></a> 1416</div> 1417 1418 <!-- ***** Footer End ***** --> 1419 1420 <!-- ***** Script Start ***** --> 1421
1421<script src="https://cupresents.org/themes/global/presenting/js/scripts.min.js" defer></script>
vendor: 1 bytes, line 1421
1421
1422<script src="https://cupresents.org/themes/global/presenting/js/main.js" defer></script>
vendor: 1 bytes, line 1422
1422
1423<script src="https://cupresents.org/themes/global/presenting/js/jquery.calendario.js"></script>
vendor: 1 bytes, line 1423
1423
1424<script type="text/javascript" src="https://cupresents.org/themes/global/presenting/js/gallerys-ajax.js" defer></script>
vendor: 1 bytes, line 1424
1424
1425<script src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.js" defer></script>
1425 1426 1427 1428 1429
1429<script src="https://cupresents.org/themes/custom/cupresents/presenting/js/js-custom.js?v=1" defer></script>
1429 1430 1431
1431<script type="text/javascript"> 1432 1433 // Get domain string for cookie to be shared across sub-domains 1434 function getCookieDomainForSubdomains() { 1435 const host = window.location.hostname; 1436 const parts = host.split('.'); 1437 1438 if (parts.length > 1) { 1439 return ";domain=." + parts.slice(-2).join('.'); 1440 } 1441 1442 return ""; 1443 } 1444 1445 // Create cookie 1446 function setCookie(cname, cvalue, exdays, isSubDomain = false) { 1447 const d = new Date(); 1448 d.setTime(d.getTime() + (exdays*24*60*60*1000)); 1449 let expires = "expires="+ d.toUTCString(); 1450 1451 let cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; 1452 1453 if (isSubDomain) { 1454 cookie += getCookieDomainForSubdomains(); 1455 cookie += "; SameSite=Lax"; 1456 } 1457 1458 document.cookie = cookie; 1459 } 1460 1461 // Delete cookie 1462 function deleteCookie(cname, isSubDomain = false) { 1463 const d = new Date(); 1464 d.setTime(d.getTime() + (24*60*60*1000)); 1465 let expires = "expires="+ d.toUTCString(); 1466 1467 let cookie = cname + "=;" + expires + ";path=/"; 1468 1469 if (isSubDomain) { 1470 cookie += getCookieDomainForSubdomains(); 1471 } 1472 1473 document.cookie = cookie; 1474 } 1475 1476 // Read cookie 1477 function getCookie(cname) { 1478 let name = cname + "="; 1479 let decodedCookie = decodeURIComponent(document.cookie); 1480 let ca = decodedCookie.split(';'); 1481 for(let i = 0; i <ca.length; i++) { 1482 let c = ca[i]; 1483 while (c.charAt(0) == ' ') { 1484 c = c.substring(1); 1485 } 1486 if (c.indexOf(name) == 0) { 1487 return c.substring(name.length, c.length); 1488 } 1489 } 1490 return ""; 1491 } 1492 // Set cookie consent 1493 function acceptCookieConsent(){ 1494 deleteCookie('user_cookie_consent'); 1495 setCookie('user_cookie_consent', 1, 30); 1496 document.getElementById("cookieNotice").style.display = "none"; 1497 1498 // set non-secure consent cookie for sub-domain 1499 deleteCookie('cookieNotice', true); 1500 setCookie('cookieNotice', 1, 30, true); 1501 } 1502 let cookie_consent = getCookie("user_cookie_consent"); 1503 if(cookie_consent != ""){ 1504 document.getElementById("cookieNotice").style.display = "none"; 1505 }else{ 1506 document.getElementById("cookieNotice").style.display = "block"; 1507 } 1508 1509 1510 // Set infobar 1511 function acceptInfoBar(){ 1512 deleteCookie('alertDismissed', true); 1513 setCookie('alertDismissed', 1, 30, true); 1514 $('#infoBar').addClass('d-none'); 1515 $('header').removeClass('info-bar-active'); 1516 $('body').removeClass('info-bar-active'); 1517 } 1518 let infoBar_consent = getCookie("alertDismissed"); 1519 if(infoBar_consent != ""){ 1520 $('#infoBar').addClass('d-none'); 1521 $('header').removeClass('info-bar-active'); 1522 $('body').removeClass('info-bar-active'); 1523 }else{ 1524 $('#infoBar').removeClass('d-none'); 1525 } 1526 $(document).ready(function () { 1527 if ($('header').hasClass('info-bar-active')) { 1528 $('body').addClass('info-bar-active'); 1529 } 1530 }); 1531 1532 function updateCartCounter() 1533 { 1534 // Target the Cart menu link using visually-hidden text 1535 1536 const cartMenuLink = $('.icons-menu a').filter(function () 1537 { 1538 return $(this).find('.visually-hidden').text().trim().toLowerCase() === 'cart'; 1539 }); 1540 1541 $.ajax({ 1542 type:'GET', 1543 url: 'https://cupresents.org/tnew/ss/cart_count', 1544 success:function(data) 1545 { 1546 if (data.cart_count !== undefined && data.cart_count != '') 1547 { 1548 const cartCount = data.cart_count; 1549 const cartText = cartCount > 0 1550 ? `<i class="adx-cart" aria-hidden="true"></i><span class="visually-hidden">
1550Cart</span> (${cartCount})` 1551 : `<i class="adx-cart" aria-hidden="true"></i><span class="visually-hidden">Cart</span>`; 1552 1553 cartMenuLink.html(cartText); 1554 } 1555 }, 1556 error: function() 1557 { 1558 // 1559 } 1560 }); 1561 } 1562 1563 $(document).ready(function () 1564 { 1565 updateCartCounter(); // Call the function on page load 1566 }); 1567 1568 </script>
1568 1569 1570 1571
1571<script> 1572 var announcementData = {"exampleModalIds":"","page_url":"contact","show_model":0,"announcenmentIds":[]}; 1573 // let cookie = document.cookie.split(";").reduce( (ac, cv, i) => Object.assign(ac, {[cv.split('=')[0].trim() ]: cv.split('=')[1]}), {}); 1574 if (announcementData.announcenmentIds.length > 0) { 1575 announcementData.announcenmentIds.map((value, key) => { 1576 if (document.cookie.indexOf("Announcenment_" + value + "=" + "Announcenment_" + value) < 0 && announcementData.show_model == 1) { 1577 $('#' + announcementData.exampleModalIds[key]).modal("show"); 1578 //Modal has been shown, now set a cookie so it never comes back 1579 //Set the announcementData.page_url+value as cookie which will be unique per url and announcenment 1580 var today = new Date(); 1581 var expire = new Date(); 1582 expire.setTime(today.getTime() + 3600000 * 24 * 7); 1583 document.cookie = 'Announcenment_' + value + "=" + "Announcenment_" + value + ";expires=" + expire.toUTCString(); 1584 } 1585 }) 1586 } 1587 </script>
1587 1588 1589
1589<script type="text/javascript"> 1590 function translateLanguage(lang, text) { 1591 var translateElement = document.querySelector('.goog-te-combo'); 1592 if (translateElement) { 1593 translateElement.value = lang; // Select the language 1594 translateElement.dispatchEvent(new Event('change')); // Trigger the change event 1595 $('#langAnchor').text(text); 1596 } 1597 } 1598 </script>
1598 1599 1600 1601 1602 1603 <!-- ***** Script End ***** --> 1604 1605 1606 1607 1608 1609</body> 1610 1611</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.