Uri: https%3A%2F%2Fchancentre.com%2Fevents%2Fubc-opera-holiday-concert%2F
Page name: POST call https://chancentre.com/events/ubc-opera-holiday-concert/
Edit | BackDate Scraped: 2026-03-09 05:00:33 -0400
Last Successful Refresh: 2026-03-09 05:00:33 -0400
Created: 2024-07-17 19:11:09 -0400
Updated: 2026-03-09 05:00:33 -0400
HTTP Response Code: 200
Html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<title>UBC Opera</title>
<meta name="description" content="UBC Opera Main Page" />
<meta name="keywords" content="Opera" >
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta http-equiv="Imagetoolbar" content="no">
<link rel="shortcut icon" href="../content/images/ubc_favicon.ico?_7.87.1" />
<link rel="apple-touch-icon" href="branding/home-screen-icon.png?_7.87.1" />
<!-- inclusion of bootstrap specific CSS -->
<!-- http://twitter.github.com for documentation on bootstrap -->
<link rel="Stylesheet" href="/lib/bootstrap/css/bootstrap.min.css?_7.87.1" />
<!-- end of bootstrap specific CSS -->
<!-- include the font awesome css for font icons-->
<link rel="Stylesheet" href="/lib/fontawesome-free/css/all.min.css" />
<!-- include material design icons-->
<link rel="Stylesheet" href="/lib/material-design-icons/material-icons.css" />
<link rel="stylesheet" href="../../content/images/branding/global.css?_=7.87.1" type="text/css"/>
<!--[if lt IE 9]>
<link rel="stylesheet" href="../../content/images/branding/global_IE.css?_7.87.1" type="text/css">
<![endif]-->
<script src="/lib/jquery/jquery.min.js?_=7.87.1" type="text/javascript"></script>
<script language="Javascript"></script>
<link rel="stylesheet" href="/content/Files/CSS/UBC_20250925-1.css?_=7.87.1" type="text/css" />
<script type="text/javascript" ></script>
<script type="text/javascript">
// Check whether cookies are enabled.
document.cookie = "TestCookie=1";
var testCookie = document.cookie;
// Try to retrieve the value we just set.
if (testCookie.indexOf("TestCookie=1") == -1)
{
document.location = "error.asp?nocookie=";
}
else
document.cookie = "TestCookie=;expires=Thu, 01-Jan-1970 00:00:00 GMT";
</script>
<script type="text/javascript">
function setRSVPButtons(response, eventCode)
{
var url = '/' + eventCode + '/invited?user=' + response.authResponse.userID + '&access_token=' + response.authResponse.accessToken;
FB.api(url, 'get',
function (response) {
if (!response || response.error) {
new showAlertPopup("Error occurred:" + response.error.message, "", "", "", "", "");
}
else
{
if (response.data[0].rsvp_status == "attending")
{
var buttons = document.getElementsByName("attendingButton" + eventCode);
for (var x = 0; x < buttons.length; x++)
{
buttons.item(x).disabled = true;
buttons.item(x).style.display = "inline";
}
buttons = document.getElementsByName("maybeButton" + eventCode);
for (var x = 0; x < buttons.length; x++)
{
buttons.item(x).style.display = "inline";
}
}
else if (response.data[0].rsvp_status == "unsure")
{
var buttons = document.getElementsByName("attendingButton" + eventCode);
for (var x = 0; x < buttons.length; x++)
{
buttons.item(x).style.display = "inline";
}
buttons = document.getElementsByName("maybeButton" + eventCode);
for (var x = 0; x < buttons.length; x++)
{
buttons.item(x).disabled = true;
buttons.item(x).style.display = "inline";
}
}
else
{
var buttons = document.getElementsByName("attendingButton" + eventCode);
for (var x = 0; x < buttons.length; x++)
{
buttons.item(x).style.display = "inline";
}
buttons = document.getElementsByName("maybeButton" + eventCode);
for (var x = 0; x < buttons.length; x++)
{
buttons.item(x).style.display = "inline";
}
}
}
});
}
function setRSVPButtonsLogin(eventCode)
{
FB.getLoginStatus(function (response) {
if (response.status == 'connected') {
setRSVPButtons(response, eventCode);
}
else {
FB.login(function (response) {
if (response.authResponse) {
setRSVPButtons(response, eventCode);
} else {
}
}, { scope: 'rsvp_event,email,user_groups,publish_stream' });
}
});
return true;
}
function rsvpToFBEvent(status, response, eventCode)
{
var url = '/' + eventCode + '/' + status + '?access_token=' + response.authResponse.accessToken;
FB.api(url, 'post',
function (response) {
if (!response || response.error) {
new showAlertPopup("Error occurred:" + response.error.message, "", "", "", "", "");
}
else
{
gaTrackEvent('Facebook', 'RSVP to Event Success');
if (status == "attending")
{
var buttons = document.getElementsByName("attendingButton" + eventCode);
for (var x = 0; x < buttons.length; x++)
{
buttons.item(x).disabled = true;
}
buttons = document.getElementsByName("maybeButton" + eventCode);
for (var x = 0; x < buttons.length; x++)
{
buttons.item(x).disabled = false;
}
}
else if (status == "maybe")
{
var buttons = document.getElementsByName("maybeButton" + eventCode);
for (var x = 0; x < buttons.length; x++)
{
buttons.item(x).disabled = true;
}
buttons = document.getElementsByName("attendingButton" + eventCode);
for (var x = 0; x < buttons.length; x++)
{
buttons.item(x).disabled = false;
}
}
}
});
}
function rsvpToFBEventLogin(status, eventCode) {
FB.getLoginStatus(function (response) {
if (response.status == 'connected') {
rsvpToFBEvent(status, response, eventCode);
}
else {
FB.login(function (response) {
if (response.authResponse) {
rsvpToFBEvent(status, response, eventCode);
} else {
}
}, { scope: 'rsvp_event,email,user_groups,publish_stream' });
}
});
return true;
}
</script>
<script type="text/javascript" src="../Common/browser_detect.js?_=7.87.1"></script>
<script type="text/javascript">
var genericConfirmationMessage = "Are you sure? Press OK to continue.";
var offerExpired = "Your order has expired.";
var admissionsExpired = "An offer on one of your tickets has expired.";
var alertHeaderText = "Attention";
var termsHeaderText = "Terms and Conditions";
var helpHeaderText = "Help";
var sectionHeaderText = "More Information";
var okayButtonText = "OK";
var cancelButtonText = "Cancel";
var acceptButtonText = "Accept";
var declineButtonText = "Decline";
var closeButtonText = "Close";
var sTokenName = 'sToken';
var sToken = '1,c7f5027b,69ae8c30,EE6DE72B-2B41-49D3-B5BE-77E876F82F69,fLVxGbt6T22xWbax2PFRrbAmkAM=';
</script>
<script type="text/javascript" src="../Common/online-jscript.js?_=7.87.1"></script>
<script type="text/javascript" src="../Common/online-navigation-jscript.js?_=7.87.1"></script>
<script type="text/javascript" src="../Common/Widgets/widgetParent.js?_=7.87.1"></script>
<script type="text/javascript">
/*
*/
function displayMessage(onClickEvent)
{
}
function tsOrderChanged( url )
{
new showConfirmPopup( '', 'The current order has unsaved changes that may be lost. Continue anyway?', function () { document.location = url }, '' );
}
// Used for drop-down menu in IE 6
<!--//--><![CDATA[//><!--
function startList() {
if (document.all&&document.getElementById) {
navRoot = document.getElementById("menuTop");
for (i=0; i<navRoot.childNodes.length; i++) {
node = navRoot.childNodes[i];
if (node.id=="menuTopItem") {
node.onmouseover=function() {
this.className+=" over";
}
node.onfocus=function(){
this.className+=" over";
}
node.onmouseout=function() {
this.className=this.className.replace(" over", "");
}
node.onblur=function() {
this.className=this.className.replace(" over", "");
}
}
}
}
}
//--><!]]>
var plusApi_loaded = false;
var twitterApi_loaded = false;
var fbApi_loaded = false;
</script>
<noscript>
<meta http-equiv="refresh" content="0; URL=error.asp">
</noscript>
<script type="text/javascript" >
var longMonthsOfYear = new Array();
longMonthsOfYear[ 0 ] = "January";
longMonthsOfYear[ 1 ] = "February";
longMonthsOfYear[ 2 ] = "March";
longMonthsOfYear[ 3 ] = "April";
longMonthsOfYear[ 4 ] = "May";
longMonthsOfYear[ 5 ] = "June";
longMonthsOfYear[ 6 ] = "July";
longMonthsOfYear[ 7 ] = "August";
longMonthsOfYear[ 8 ] = "September";
longMonthsOfYear[ 9 ] = "October";
longMonthsOfYear[ 10 ] = "November";
longMonthsOfYear[ 11 ] = "December";
</script>
<script type="text/javascript" src="../Common/Widgets/articleWidgets.js?_=7.87.1"></script>
<script type="text/javascript" src="../Common/Widgets/TabularSearchResultsWidget.js?_=7.87.1"></script>
<script type="text/javascript" src="../Common/Widgets/SearchFilterWidget.js?_=7.87.1"></script>
<script type="text/javascript" src="../Common/Widgets/LoginWidget.js?_=7.87.1"></script>
<script type="text/javascript" src="../Common/Widgets/VideoWidget.js?_=7.87.1"></script>
<script type="text/javascript" src="../Common/Widgets/Tk3DDVWidget.js?_=7.87.1"></script>
<script type="text/javascript" src="../Common/Widgets/CalendarWidget.js?_=7.87.1"></script>
<script type="text/javascript" src="../Common/Widgets/twitterWidgets.js?_=7.87.1"></script>
<script type="text/javascript" src="../Common/Widgets/googleMapsWidget.js?_=7.87.1"></script>
<script type="text/javascript" src="../Common/Widgets/facebookSocialWidgets.js?_=7.87.1"></script>
<script type="text/javascript" src="../Common/Widgets/facebookEvent.js?_=7.87.1"></script>
<script type="text/javascript" src="../Common/Widgets/instagramFeedWebWidget.js?_=7.87.1"></script>
<script type="text/javascript">
function loadLocalPage()
{
}
var monthsOfYear = new Array();
monthsOfYear[ 0 ] = "Jan";
monthsOfYear[ 1 ] = "Feb";
monthsOfYear[ 2 ] = "Mar";
monthsOfYear[ 3 ] = "Apr";
monthsOfYear[ 4 ] = "May";
monthsOfYear[ 5 ] = "Jun";
monthsOfYear[ 6 ] = "Jul";
monthsOfYear[ 7 ] = "Aug";
monthsOfYear[ 8 ] = "Sep";
monthsOfYear[ 9 ] = "Oct";
monthsOfYear[ 10 ] = "Nov";
monthsOfYear[ 11 ] = "Dec";
var longMonthsOfYear = new Array();
longMonthsOfYear[ 0 ] = "January";
longMonthsOfYear[ 1 ] = "February";
longMonthsOfYear[ 2 ] = "March";
longMonthsOfYear[ 3 ] = "April";
longMonthsOfYear[ 4 ] = "May";
longMonthsOfYear[ 5 ] = "June";
longMonthsOfYear[ 6 ] = "July";
longMonthsOfYear[ 7 ] = "August";
longMonthsOfYear[ 8 ] = "September";
longMonthsOfYear[ 9 ] = "October";
longMonthsOfYear[ 10 ] = "November";
longMonthsOfYear[ 11 ] = "December";
var daysOfWeek = new Array();
daysOfWeek[ 0 ] = "Sun";
daysOfWeek[ 1 ] = "Mon";
daysOfWeek[ 2 ] = "Tue";
daysOfWeek[ 3 ] = "Wed";
daysOfWeek[ 4 ] = "Thu";
daysOfWeek[ 5 ] = "Fri";
daysOfWeek[ 6 ] = "Sat";
var longDaysOfWeek = new Array();
longDaysOfWeek[ 0 ] = "Sunday";
longDaysOfWeek[ 1 ] = "Monday";
longDaysOfWeek[ 2 ] = "Tuesday";
longDaysOfWeek[ 3 ] = "Wednesday";
longDaysOfWeek[ 4 ] = "Thursday";
longDaysOfWeek[ 5 ] = "Friday";
longDaysOfWeek[ 6 ] = "Saturday";
var timeIndicator = new Array();
timeIndicator[ 0 ] = "AM";
timeIndicator[ 1 ] = "PM";
var articleContext = { searchHeaders : [ "Id", "Object Type", "Type", "Category", "Name", "Description", "Short Description", "Start Date", "Start Date time", "Start Date date", "Start Date month", "Start Date year", "End Time", "On Sale Date", "Sales Status", "Availability", "Available Number", "Keywords", "Additional Info", "Group", "Image 1", "Image 2", "image1_alt_text", "image2_alt_text", "thumbnail", "Spotlight Image", "Data 1", "Data 2", "Data 3", "Data 4", "Data 5", "Data 6", "Data 7", "Data 8", "Data 9", "Data 10", "Data 11", "Data 12", "Data 13", "Data 14", "Data 15", "Data 16", "filter1", "filter2", "filter3", "filter4", "filter_parent1", "filter_child2", "filter_parent2", "filter_child1", "multifilter1", "multifilter2", "Organization Short Description", "Sales Type", "Options", "Street", "City", "Province / State", "Postal Code", "Country", "Longitude", "Latitude", "Venue ID", "Venue Name", "Venue Description", "Venue Short Description", "Venue Group", "Venue Data 1", "Venue Data 2", "Venue Data 3", "Venue Data 4", "Venue Data 5", "Venue Data 6", "Venue Data 7", "Venue Data 8", "Venue Data 9", "Venue Data 10", "Venue Data 11", "Venue Data 12", "Venue Type", "Series Name", "Minimum Price", "Maximum Price", "Upsell Article", "Add-on Article", "email", "e_address1", "e_address2", "e_address3", "customer_id", "tracking_code", "twitter_search_term", "external_reference_code", "access", "Venue Organization Id", "Meta Description", "" ],
searchNames : [ "id", "object_type", "type", "category", "name", "description", "short_description", "start_date", "start_date_time", "start_date_date", "start_date_month", "start_date_year", "end_date", "on_sale_date", "sales_status", "availability_status", "availability_num", "keywords", "additional_info", "group", "image1", "image2", "image1_alt_text", "image2_alt_text", "thumbnail", "app_image", "data1", "data2", "data3", "data4", "data5", "data6", "data7", "data8", "data9", "data10", "data11", "data12", "data13", "data14", "data15", "data16", "filter1", "filter2", "filter3", "filter4", "filter_parent1", "filter_child2", "filter_parent2", "filter_child1", "multifilter1", "multifilter2", "organization_short_description", "sales_type", "options", "street", "city", "state", "zip", "country", "longitude", "latitude", "venue_id", "venue_name", "venue_description", "venue_short_description", "venue_group", "venue_data1", "venue_data2", "venue_data3", "venue_data4", "venue_data5", "venue_data6", "venue_data7", "venue_data8", "venue_data9", "venue_data10", "venue_data11", "venue_data12", "venue_type", "series_name", "min_price", "max_price", "upsell_article_id", "addon_article_id", "email", "e_address1", "e_address2", "e_address3", "customer_id", "tracking_code", "twitter_search_term", "external_reference_code", "access", "organization_id", "meta_description", "" ],
searchResults : [
[ "E6C2C1D6-9F4A-4606-AD39-C6E63BAB9FD4", "P", "Main", "Opera", "UOA040926", "Rome and Egypt meet! The fatal attraction between two passionate and powerful human beings, Giulio Cesare and Cleopatra, determine the destiny of both them and their nations. Murder, grief, revenge, lust, loyalty, deception, passion and true love make this story based on two real people something you will not want to miss.<br />\n<br />\n<br />\n ", "Giulio Cesare – George Frideric Handel", "09 April 2026 7:30 p.m.", "19:30", "9", "3", "2026", "", "", "S", "E", "284", "cesare,handel,OPERA", "", "", "/content/Images/ShowImages/Opera/2526_opera_giulio_cesare.jpeg", "", "", "", "", "", "UBC Opera Presents", "Giulio Cesare", "George Frideric Handel", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ["1"], ["2","3","4","5","6"], "6344 Memorial Road", "Vancouver", "BC", "V6T 1Z2", "CA", "", "", "C2F0E751-D6E3-4BBF-8486-CA657F676208", "Old Auditorium UBC - Reserved", "Old Auditorium at UBC", "UBC Old Auditorium", "", "", "", "", "", "1", "", "", "", "", "", "", "", "reserved", "OP2526-cesare", "$15.00", "$50.00", "600B6C23-F640-426E-A565-D4FB08E57C26", "", "", "", "", "", "", "", "", "", "Public", "", "", "" ],
[ "F9D7CC58-73E2-472F-ADE1-25D9FD3A6161", "P", "Main", "Opera", "UOA041026", "Rome and Egypt meet! The fatal attraction between two passionate and powerful human beings, Giulio Cesare and Cleopatra, determine the destiny of both them and their nations. Murder, grief, revenge, lust, loyalty, deception, passion and true love make this story based on two real people something you will not want to miss.<br />\n<br />\n<br />\n ", "Giulio Cesare – George Frideric Handel", "10 April 2026 7:30 p.m.", "19:30", "10", "3", "2026", "", "", "S", "E", "282", "cesare,handel,OPERA", "", "", "/content/Images/ShowImages/Opera/2526_opera_giulio_cesare.jpeg", "", "", "", "", "", "UBC Opera Presents", "Giulio Cesare", "George Frideric Handel", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ["1"], ["2","3","4","5","6"], "6344 Memorial Road", "Vancouver", "BC", "V6T 1Z2", "CA", "", "", "C2F0E751-D6E3-4BBF-8486-CA657F676208", "Old Auditorium UBC - Reserved", "Old Auditorium at UBC", "UBC Old Auditorium", "", "", "", "", "", "1", "", "", "", "", "", "", "", "reserved", "OP2526-cesare", "$15.00", "$50.00", "600B6C23-F640-426E-A565-D4FB08E57C26", "", "", "", "", "", "", "", "", "", "Public", "", "", "" ],
[ "83CB7CA5-A76D-430A-A5AA-3DED208217D9", "P", "Main", "Opera", "UOA041126", "Rome and Egypt meet! The fatal attraction between two passionate and powerful human beings, Giulio Cesare and Cleopatra, determine the destiny of both them and their nations. Murder, grief, revenge, lust, loyalty, deception, passion and true love make this story based on two real people something you will not want to miss.<br />\n<br />\n<br />\n ", "Giulio Cesare – George Frideric Handel", "11 April 2026 7:30 p.m.", "19:30", "11", "3", "2026", "", "", "S", "G", "236", "cesare,handel,OPERA", "", "", "/content/Images/ShowImages/Opera/2526_opera_giulio_cesare.jpeg", "", "", "", "", "", "UBC Opera Presents", "Giulio Cesare", "George Frideric Handel", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ["1"], ["2","3","4","5","6"], "6344 Memorial Road", "Vancouver", "BC", "V6T 1Z2", "CA", "", "", "C2F0E751-D6E3-4BBF-8486-CA657F676208", "Old Auditorium UBC - Reserved", "Old Auditorium at UBC", "UBC Old Auditorium", "", "", "", "", "", "1", "", "", "", "", "", "", "", "reserved", "OP2526-cesare", "$15.00", "$50.00", "600B6C23-F640-426E-A565-D4FB08E57C26", "", "", "", "", "", "", "", "", "", "Public", "", "", "" ],
[ "83460480-40F5-4FF6-856C-764F378EDB7B", "P", "Main", "Opera", "UOA041226", "Rome and Egypt meet! The fatal attraction between two passionate and powerful human beings, Giulio Cesare and Cleopatra, determine the destiny of both them and their nations. Murder, grief, revenge, lust, loyalty, deception, passion and true love make this story based on two real people something you will not want to miss.<br />\n<br />\n<br />\n ", "Giulio Cesare – George Frideric Handel", "12 April 2026 2:00 p.m.", "14:00", "12", "3", "2026", "", "", "S", "G", "152", "cesare,handel,OPERA", "", "", "/content/Images/ShowImages/Opera/2526_opera_giulio_cesare.jpeg", "", "", "", "", "", "UBC Opera Presents", "Giulio Cesare", "George Frideric Handel", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ["1"], ["2","3","4","5","6"], "6344 Memorial Road", "Vancouver", "BC", "V6T 1Z2", "CA", "", "", "C2F0E751-D6E3-4BBF-8486-CA657F676208", "Old Auditorium UBC - Reserved", "Old Auditorium at UBC", "UBC Old Auditorium", "", "", "", "", "", "1", "", "", "", "", "", "", "", "reserved", "OP2526-cesare", "$15.00", "$50.00", "600B6C23-F640-426E-A565-D4FB08E57C26", "", "", "", "", "", "", "", "", "", "Public", "", "", "" ],
[ "04B9722E-97BA-4811-9C4E-ED9337F149EB", "P", "Main", "Opera", "UOA053026", "Opera West and UBC Opera present two internationally acclaimed Canadian singers in concert. UBC Alumna, Soprano, Simone Osborne and bass-baritone, Gordon Bintner. Canadian conductor, Gordon Gerrard and the Vancouver Opera Orchestra join them in an evening of opera, operetta and musical theatre. Your support and donations ensure UBC Opera and the Old Auditorium will continue to be a platform of excellence for the next 100 years!<br />\n ", "UBC Opera Presents: The Grand Finale of our 100th Anniversary Celebrations", "30 May 2026 7:30 p.m.", "19:30", "30", "4", "2026", "", "", "S", "G", "258", "100 Years,OPERA", "", "", "/content/Images/ShowImages/Opera/2526_opera_finale.jpeg", "", "", "", "", "", "UBC Opera Presents", "The Grand Finale of our 100th Anniversary Celebrations!", "", "", "", "2526 Subscriber Add-On", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ["1"], ["2","3","4","5","6"], "6344 Memorial Road", "Vancouver", "BC", "V6T 1Z2", "CA", "", "", "C2F0E751-D6E3-4BBF-8486-CA657F676208", "Old Auditorium UBC - Reserved", "Old Auditorium at UBC", "UBC Old Auditorium", "", "", "", "", "", "1", "", "", "", "", "", "", "", "reserved", "OP2526-100", "$35.00", "$100.00", "", "", "", "", "", "", "", "", "", "", "Public", "", "", "" ]
],
searchFilters : [
{ name : "object_type_filter", label : "Type Filter", className : "objectTypeFilterList", clearFilterLabel : "Clear Type Filter", selectedValue : "", values : [ ] },
{ name : "month_filter", label : "Month Filter", className : "monthFilterList", clearFilterLabel : "Clear Month Filter", selectedValue : "", values : [ ] },
{ name : "city_filter", label : "City Filter", className : "cityFilterList", clearFilterLabel : "Clear City Filter", selectedValue : "", values : [ ] },
{ name : "venue_filter", label : "Venue Filter", className : "venueFilterList", clearFilterLabel : "Clear Venue Filter", selectedValue : "", values : [ ] },
{ name : "category_filter", label : "Category Filter", className : "categoryFilterList", clearFilterLabel : "Clear Category Filter", selectedValue : "", values : [ ] },
{ name : "organization_short_description_filter", label : "Organization Filter", className : "organizationShortDescriptionFilterList", clearFilterLabel : "Clear Organization Filter", selectedValue : "", values : [ ] },
{ name : "filter1", label : "Filter 1", className : "customFilterList", clearFilterLabel : "Clear Filter", selectedValue : "", values : [ ] },
{ name : "filter2", label : "Filter 2", className : "customFilterList", clearFilterLabel : "Clear Filter", selectedValue : "", values : [ ] },
{ name : "filter3", label : "Filter 3", className : "customFilterList", clearFilterLabel : "Clear Filter", selectedValue : "", values : [ ] },
{ name : "filter4", label : "Filter 4", className : "customFilterList", clearFilterLabel : "Clear Filter", selectedValue : "", values : [ ] },
{ name : "filter_parent1", label : "Filter Parent 1", className : "customFilterParentList", clearFilterLabel : "Clear Filter", selectedValue : "", values : [ ] },
{ name : "filter_parent2", label : "Filter Parent 2", className : "customFilterParentList", clearFilterLabel : "Clear Filter", selectedValue : "", values : [ ] },
{ name : "multifilter1", label : "Multi Filter 1", className : "customFilterList", clearFilterLabel : "Clear Filter", selectedValue : "", values : [ ] },
{ name : "multifilter2", label : "Multi Filter 2", className : "customFilterList", clearFilterLabel : "Clear Filter", selectedValue : "", values : [ ] }
],
searchCalendarFilters : [
{ name : "calendar_days", label : "Calendar Days", className : "dayFilterList", clearFilterLabel : "Clear Day Filter", selectedValue : "", values : [ ["2026-04-09T00:00:00.000", "1"],["2026-04-10T00:00:00.000", "1"],["2026-04-11T00:00:00.000", "1"],["2026-04-12T00:00:00.000", "1"],["2026-05-30T00:00:00.000", "1"] ] },
],
performanceDays : [
{ name : "performance_days", label : "Performance Days", className : "dayFilterList", clearFilterLabel : "Clear Day Filter", selectedValue : "", values : [ ] },
],
searchLabels: { performances: "Events", date: "Date", unavailable_message: "Have you entered in your promo code?", sold_out_message: "Sold Out!", on_sale_message: "On sale", to_be_determined_message: "Please enter in your promo code to gain access to this event.", next: "»", previous: "«", next_month: "Next month", previous_month: "Previous month", avail_excellent: "Excellent", avail_good: "Good", avail_limited: "Limited", avail_sold_out: "Not Available", no_results_message: "We\'re sorry, there are no events matching your search.", promo_item: "This item is available with a promo code", buy_seats_message: "Buy", buy_bundle_message: "Buy", buy_item_message: "Buy", pageNext: "Next", pagePrev: "Previous", buy_gift_message: "Donate", buy_storedvalueitem_message: "Buy", upsell_seats_message: "Upgrade", upsell_bundle_message: "Upgrade", upsell_item_message: "Upgrade", upsell_gift_message: "Upgrade", upsell_storedvalueitem_message: "Upgrade", upsell_popup_title: "Buy More, Save More!", addon_seats_message: "Select", addon_bundle_message: "Select", addon_item_message: "Select", addon_gift_message: "Select", addon_storedvalueitem_message: "Select", exchange_seats_message: "Select", exchange_bundle_message: "Select", exchange_item_message: "Select", exchange_gift_message: "Select", exchange_storedvalueitem_message: "Select", describe_seats_message: "%action, %name, %datetime", describe_bundle_message: "%action, %name", describe_item_message: "%action, %name", describe_gift_message: "%action, %name", describe_storedvalueitem_message: "%action, %name", describe_article_message: "%action, %name", see_events_for_date: "See events for %m %d", select_your_time: "Please select your time", view_article_message: "View", price_title: "Price", pagination: "Pagination", availability_title: "Availability", active_promo_codes: "Active promotions:", promo_code_item_title: "This item is available with a promo code", has_promo_code: "false", brand_path: "../../content/images/branding/", clear_date_filter: "Clear Date Filter" },
searchSUMO: { availability_access: "true", mapSelect_access: "true" },
pagination: { current_page: "1", page_size: "20", total_pages: "1" },
loginLabels: { pageTarget: "maintainAccount.asp", loginBoxClass: "login-required", forgotPassword: "true", formLoginName: "", accountLogin: "true" },
contextId: "",
articleId: "E26C40C1-8C61-4EB6-AE34-E818CCED5BEC",
articleSearchId: "",
salesType: "P",
sToken: "1,c7f5027b,69ae8c30,EE6DE72B-2B41-49D3-B5BE-77E876F82F69,fLVxGbt6T22xWbax2PFRrbAmkAM="};
createSearchMapping(articleContext);
tsAddReadyEvent(function() {
setCalendarWidgetDisplayMonth();
drawWidgets(articleContext);
insertToken(articleContext);
});
function setCalendarWidgetDisplayMonth()
{
// If a date has been selected from the calendar widget, we will receive a 'search_from' parameter.
// Pass this back to the widget so that it redisplays the month that was previously visible
}
</script>
<script type="text/javascript">
function doGAClicks(selectedItem) {
_gaq.push(['_trackEvent', selectedItem, 'Clicked']);
};
function gaTrackEvent(category, action) {
_gaq.push(['_trackEvent', category, action]);
};
</script>
<script type="text/javascript">
var _gaq = _gaq || [];
</script>
<script type="text/javascript">
(function () {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.defer = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body lang="en" onLoad="startList();loadLocalPage(); displayMessage(""); displayOnOfferTimeout();" onUnload="closeChildren()">
<div id="spinner" class="spinner"></div>
<script>
var spinnerDelayTimeout;
var showSpinner = function(){};
var spinnerElement = document.querySelector("body")
function skipToMain() {
let mainSection = document.querySelector("[role=\"main\"]");
if (!mainSection) {
mainSection = document.getElementById("content");
}
mainSection.tabIndex = -1; // Required for focus to work on a div
mainSection.focus();
}
var spinnerDelay = 3;
function stopSpinner() {
spinnerElement.classList.remove('show-spinner');
cancelSpinnerTimeouts();
expandSpinner();
}
function startSpinner() {
expandSpinner();
spinnerElement.classList.add('show-spinner');
}
function cancelSpinnerTimeouts() {
clearTimeout(spinnerDelayTimeout);
}
function expandSpinner() {
spinnerElement.classList.remove('minimize-spinner');
}
function minimizeSpinner() {
spinnerElement.classList.add('minimize-spinner');
}
// stop spinner if a JS error occurred
window.addEventListener('error', stopSpinner);
// Mimimize spinner if clicked
spinnerElement.addEventListener('click', minimizeSpinner);
// Shows the spinner if page takes long to load
// pass true to allow spinner to show even with a popup open
(showSpinner = function() {
var overridePopupCheck = arguments[0] ? arguments[0] : false;
if (overridePopupCheck || !document.querySelector("#popupDiv")) {
spinnerDelayTimeout = setTimeout(startSpinner, spinnerDelay*1000);
}
return true;
})();
</script>
<script type="text/javascript">
/**
* Returns the unique values for a given property from an array of items.
* If there is only one unique value, returns that value directly.
* If there are multiple unique values, returns an array of those values.
*
* @param {Array} items - The array of objects to extract unique values from.
* @param {string} propertyToGet - The property name to extract unique values for.
* @returns {Array|any} An array of unique values if more than one exists, otherwise the single unique value.
*/
const getUniqueValues = (items, propertyToGet) => {
if (!items || !Array.isArray(items) || items.length === 0) {
return [];
}
const uniquesList = [...new Set(items.map(item => item[propertyToGet]))]
return uniquesList.length > 1 ? uniquesList : uniquesList[0];
};
/**
* Decodes a string containing numeric HTML entities (e.g., ó -> ó).
* @param {string} encodedText - The string to decode.
* @returns {string} The decoded (clean) string.
*/
function decodeHtmlEntities(encodedText) {
if (typeof encodedText !== 'string' || !encodedText) return "";
var textarea = document.createElement('textarea');
textarea.innerHTML = encodedText;
return textarea.value;
}
/**
* Normalizes a string for GTM: converts it to lowercase and replaces spaces with underscores.
* Example: "Palco/Platea VR" -> "palco/platea_vr"
* @param {string} str - The string to normalize.
* @returns {string} The normalized string.
*/
function tsNormalizeGtmString(value) {
if (value == null || typeof value === 'undefined' || value === "")
{
return "";
}
const str = value.toString();
const decodedStr = decodeHtmlEntities(str);
return decodedStr.toLowerCase().replace(/\s+/g, '_');
}
/**
* Normalizes a string/Array for GTM: converts it to lowercase and replaces spaces with underscores.
* Example: "Palco/Platea VR" -> "palco/platea_vr"
* Example: ["Palco","Platea VR"] -> ["palco","platea_vr"]
* @param {string|string[]}str - The string/array to normalize.
* @returns {string|string[]} The normalized data.
*/
function tsNormalizeGtmData(data) {
if (Array.isArray(data)) {
return data.map(item => tsNormalizeGtmString(item));
}
return tsNormalizeGtmString(data);
}
/**
* Takes an array of admission objects and performs the following steps:
* 1. Normalizes the string fields (price_type, section, promotion, price_zone) to lowercase and replaces spaces with underscores.
* 2. Groups admissions that share the same item_id, price, price_type, price_zone, promotion, and section.
* 3. Increments the quantity for grouped items.
* 4. Returns an array of unique admissions, each with a quantity and value (quantity * price).
*
* @param {Array<Object>} admissions - The array of admission objects to normalize and group.
* @returns {Array<Object>} An array of grouped and normalized admission objects, each with quantity and value.
*/
const normalizeAndGroupAdmissions = (admissions) => {
if (!admissions || !Array.isArray(admissions)) {
return [];
}
return admissions
.map(item => ({
...item,
item_name: tsNormalizeGtmData(item.item_name),
price_type: tsNormalizeGtmData(item.price_type),
section: tsNormalizeGtmData(item.section),
promotion: tsNormalizeGtmData(item.promotion),
price_zone: tsNormalizeGtmData(item.price_zone),
}))
.reduce((acc, item) => {
// Group items that have the same performance id, price, price_type, price_zone, promotion and section
const key = [item.item_id, item.price, item.price_type, item.price_zone, item.promotion, item.section].join('|');
const found = acc.find(i => i._groupKey === key);
if (found) found.quantity += 1
else acc.push({ ...item, quantity: item.quantity ?? 1, _groupKey: key });
return acc;
}, [])
.map(({ _groupKey, quantity, price, ...rest }) => ({
...rest,
quantity,
price,
value: quantity * price
})); // Remove the internal _groupKey property
}
/**
* Generates an object for the data layer representing a single performance for ecommerce tracking.
*
* @param {Object} performanceData - The performance data object. Should contain:
* - item_id: {string} Unique identifier for the performance.
* - show: {string} Name of the show.
* - performance_date: {string} Date of the performance.
* - availability: {string|number} Number of available seats.
* - availability_default: {string|number} Total number of seats.
* - booking_type_default: {string} Default booking type ("seatmap" or "bestseat").
* @param {string} booking_type - The booking type for the performance.
* @returns {Object} An object formatted for the data layer, including:
* - items: {Array<Object>} Array with a single item containing performance details.
* - show: {string} Name of the show.
* - performance_date: {string} Date of the performance.
* - availability: {string|number} Number of available seats.
* - availability_default: {string|number} Total number of seats.
* - booking_type: {string} Booking type.
* - booking_type_default: {string} Default booking type.
* - referrer_code: {string} Referrer code from the session.
* Returns an empty object if performanceData is invalid or an error occurs.
*/
function getPerformanceEcommerceObject(performanceData, booking_type) {
try {
let dataLayerObject = {};
if (performanceData && performanceData.item_id) {
const { item_id, show, performance_date, availability, availability_default, booking_type_default } = performanceData;
const session = getSessionObject()
dataLayerObject = {
items: [
{
item_id,
item_name: tsNormalizeGtmData(show),
performance_date,
availability,
availability_default,
booking_type,
booking_type_default
}
],
show: tsNormalizeGtmData(show),
performance_date,
availability,
availability_default,
booking_type,
booking_type_default,
referrer_code: session.av.session.referrer
}
}
return dataLayerObject;
} catch (error) {
console.error("There was an issue getting the view item object", error);
return {};
}
}
/**
* Returns a formatted and grouped list of admissions currently in the cart.
*
* @returns {Array<Object>} Array of grouped and formatted admission objects, each with a quantity.
*/
function getAdmissionsInCartList() {
const admissions = [];
return normalizeAndGroupAdmissions(admissions)
}
/**
* Returns a formatted and grouped list of admissions currently in the created order.
*
* @returns {Array<Object>} Array of grouped and formatted admission objects, each with a quantity.
*/
function getAdmissionsInOrderList() {
const admissions = [];
return normalizeAndGroupAdmissions(admissions)
}
/**
* Collects and formats information about the current session and the admissions (cart items)
* in the user's cart. It aggregates unique values for key properties (such as show, performance date, price zone, etc.)
* and includes session-specific data like timeout and referrer code.
*
* @returns {Object} An object with the following properties:
* - items: {Array<Object>} The list of admissions currently in the cart, grouped and formatted.
* - show: {string|Array<string>} Unique show names in the cart.
* - performance_date: {string|Array<string>} Unique performance dates in the cart.
* - price_zone: {string|Array<string>} Unique price zones in the cart.
* - promotion: {string|Array<string>} Unique promotions in the cart.
* - availability: {string|Array<string>} Unique availability statuses in the cart.
* - availability_default: {string|Array<string>} Unique default availability values.
* - booking_type_default: {string} The default booking type for the cart items.
* - price_type: {string|Array<string>} Unique price types in the cart.
* - section: {string|Array<string>} Unique sections in the cart.
* - timeout: {string} The offer timeout value from the session.
* - referrer_code: {string} The referrer code from the session.
*/
function getEcommerceObject(type = "cart") {
try {
// type can only be "cart" or "order"
if (!["cart", "order"].includes(type)) {
throw new Error("Invalid type provided. Expected 'cart' or 'order'.");
}
const typeMap = {
cart: getAdmissionsInCartList(),
order: getAdmissionsInOrderList()
}
const session = getSessionObject()
const admissions = typeMap[type]
const value = "0"
let dataLayerObj = {
items: admissions,
show: getUniqueValues(admissions, "item_name"),
performance_date: getUniqueValues(admissions, "performance_date"),
price_zone: getUniqueValues(admissions, "price_zone"),
promotion: getUniqueValues(admissions, "promotion"),
availability: getUniqueValues(admissions, "availability"),
availability_default: getUniqueValues(admissions, "availability_default"),
price_type: getUniqueValues(admissions, "price_type"),
section: getUniqueValues(admissions, "section"),
timeout: "+25m",
referrer_code: session.av.session.referrer,
currency: admissions.length > 0 ? admissions[0].currency : "",
quantity: admissions.reduce((total, item) => total + item.quantity, 0),
value: parseFloat(value.replace(",",".")),
}
// If the order has been placed, add additional order-related properties
return dataLayerObj
} catch (error) {
console.error("There was an issue getting the ecommerce object", error);
}
}
function testValue(value, pattern)
{
if(!value || !pattern)
return false;
if(pattern.constructor === RegExp)
return pattern.test(value.toString());
return value.toString() == pattern.toString();
}
function isGTM()
{
return true;
}
function getSessionObject()
{
return {av: {session: {language: "EN",
role: "Chan Internet",
referrer: null,
user_id: undefined,
promo_codes: []}}};
}
function getErrorObject()
{
return null;
}
function getPageObject()
{
return {av: {page: { page_script: "/online/default.asp",
search: { total_records: null,
total_pages: null,
page_size: null,
current_page: null,
criteria: { search_from :null,
search_to :null,
search_criteria :null,
category_filter :null,
city_filter :null,
venue_filter :null,
month_filter :null,
object_type_filter :null}},
articles: [{article_name: "UBC Opera main", article_title: "UBC Opera", article_type: "2", article_id: "E26C40C1-8C61-4EB6-AE34-E818CCED5BEC"},
{article_name: "", article_title: "UBC Opera Banner", article_type: "1", article_id: "DE8031D9-3A82-45C6-98E1-B37E49923E9E"},
{article_name: "", article_title: "Login", article_type: "1", article_id: "32A04E6F-C8AF-4C15-8213-3F596EF5E28F"},
{article_name: "", article_title: "default header", article_type: "1", article_id: "F8103D8C-7EA0-4B4B-A37E-9DE398B9313D"},
{article_name: "", article_title: "ubc footer", article_type: "1", article_id: "5428AFF6-5014-4401-BC4E-8F5547F96446"}],
articleExists: function (article_type, article_title)
{
if (article_type == null && article_title == null)
{
if(this.articles.length)
return true;
}
else if (article_type == null)
{
for(var i = 0; i < this.articles.length; i++) {
if(testValue(this.articles[i].article_title, article_title))
return true;
}
}
else if (article_title == null)
{
for(var i = 0; i < this.articles.length; i++) {
if (testValue(this.articles[i].article_type, article_type))
return true;
}
}
else
{
for(var i = 0; i < this.articles.length; i++) {
if (testValue(this.articles[i].article_title, article_title) && testValue(this.articles[i].article_type, article_type))
return true;
}
}
return false;
}
}}};
}
function getOrderEventObject()
{
return {event: {av: {event: {order: {action: "" }}}, toString: function () { return "av.event.order-" + this.av.event.order.action;}}};
}
function getCartEventObject()
{
return {event: {av: {event: {cart: {action: "" }}}, toString: function () { return "av.event.cart-" + this.av.event.cart.action;}}};
}
function admissionExists(object, product_name)
{
var ids = new Array();
for (var i = 0; i < object.performances.length; i++)
{
if (testValue(object.performances[i].name, product_name) ||
testValue(object.performances[i].description, product_name) ||
testValue(object.performances[i].short_description, product_name))
{
ids.push(object.performances[i].performance_id);
}
}
if (ids.length > 0)
{
for (var i = 0; i < object.order_admissions.length; i++)
{
if (ids.indexOf(object.order_admissions[i].performance_id) != -1)
{
return true;
}
}
}
return false;
}
function bundleExists(object, product_name)
{
var ids = new Array();
for (var i = 0; i < object.bundles.length; i++)
{
if (testValue(object.bundles[i].name, product_name) ||
testValue(object.bundles[i].description, product_name) ||
testValue(object.bundles[i].short_description, product_name))
{
ids.push(object.bundles[i].bundle_id);
}
}
if (ids.length > 0)
{
for (var i = 0; i < object.order_bundle.length; i++)
{
if (ids.indexOf(object.order_bundle[i].bundle_id) != -1)
{
return true;
}
}
}
return false;
}
function miscItemExists(object, product_name)
{
var ids = new Array();
for (var i = 0; i < object.misc_items.length; i++)
{
if (testValue(object.misc_items[i].name, product_name) ||
testValue(object.misc_items[i].description, product_name) ||
testValue(object.misc_items[i].short_description, product_name))
{
ids.push(object.misc_items[i].miscellaneous_item_id);
}
}
if (ids.length > 0)
{
for (var i = 0; i < object.order_misc_items.length; i++)
{
if (ids.indexOf(object.order_misc_items[i].item_id) != -1)
{
return true;
}
}
}
return false;
}
function giftExists(object, product_name)
{
var ids = new Array();
for (var i = 0; i < object.gifts.length; i++)
{
if (testValue(object.gifts[i].name, product_name) ||
testValue(object.gifts[i].description, product_name) ||
testValue(object.gifts[i].short_description, product_name))
{
ids.push(object.gifts[i].gift_id);
}
}
if (ids.length > 0)
{
for (var i = 0; i < object.order_gifts.length; i++)
{
if (ids.indexOf(object.order_gifts[i].gift_id) != -1)
{
return true;
}
}
}
return false;
}
function storeValueExists(object, product_name)
{
var ids = new Array();
for (var i = 0; i < object.stored_values.length; i++)
{
if (testValue(object.stored_values[i].name, product_name) ||
testValue(object.stored_values[i].description, product_name) ||
testValue(object.stored_values[i].short_description, product_name))
{
ids.push(object.stored_values[i].stored_value_id);
}
}
if (ids.length > 0)
{
for (var i = 0; i < object.order_stored_values.length; i++)
{
if (ids.indexOf(object.order_stored_values[i].stored_value_id) != -1)
{
return true;
}
}
}
return false;
}
function productExists(object, product_type, product_name)
{
var result = false;
if (product_name == null && product_type == null)
{
if (object.order_admissions.length || object.order_bundle.length || object.order_misc_items.length ||
object.order_gifts.length || object.order_stored_values.length)
result = true;
}
else if (product_name == null)
{
if (testValue(product_type, "admission") && object.order_admissions.length)
result = true;
if (testValue(product_type, "bundle") && object.order_bundle.length)
result = true;
if (testValue(product_type, "miscellaneous_item") && object.order_misc_items.length)
result = true;
if (testValue(product_type, "gift") && object.order_gifts.length)
result = true;
if (testValue(product_type, "stored_value") && object.order_stored_values.length)
result = true;
}
else if (product_type == null)
{
if (object.order_admissions.length)
{
result = admissionExists(object, product_name);
}
if (object.order_bundle.length)
{
result = bundleExists(object, product_name);
}
if (object.order_misc_items.length)
{
result = miscItemExists(object, product_name);
}
if (object.order_gifts.length)
{
result = giftExists(object, product_name);
}
if (object.order_stored_values.length)
{
result = storeValueExists(object, product_name);
}
}
else
{
if (testValue(product_type, "admission") && object.order_admissions.length)
{
result = admissionExists(object, product_name);
}
if (testValue(product_type, "bundle") && object.bundles.length)
{
result = bundleExists(object, product_name);
}
if (testValue(product_type, "miscellaneous_item") && object.misc_items.length)
{
result = miscItemExists(object, product_name);
}
if (testValue(product_type, "gift") && object.gifts.length)
{
result = giftExists(object, product_name);
}
if (testValue(product_type, "stored_value") && object.stored_values.length)
{
result = storeValueExists(object, product_name);
}
}
return result;
}
function admissionValue(object, product_name)
{
var id = new Array();
var result = 0;
for (var i = 0; i < object.performances.length; i++)
{
if (testValue(object.performances[i].name, product_name) ||
testValue(object.performances[i].description, product_name) ||
testValue(object.performances[i].short_description, product_name))
{
id.push(object.performances[i].performance_id);
}
}
if (id.length > 0)
{
for (var i = 0; i < object.order_admissions.length; i++)
{
if (id.indexOf(object.order_admissions[i].performance_id) != -1)
{
result += object.order_admissions[i].amount.amount;
}
}
}
return result;
}
function bundleValue(object, product_name)
{
var id = new Array();
var result = 0;
for (var i = 0; i < object.bundles.length; i++)
{
if (testValue(object.bundles[i].name, product_name) ||
testValue(object.bundles[i].description, product_name) ||
testValue(object.bundles[i].short_description, product_name))
{
id.push(object.bundles[i].bundle_id);
}
}
if (id.length > 0)
{
for (var i = 0; i < object.order_bundle_admissions.length; i++)
{
if (id.indexOf(object.order_bundle_admissions[i].bundle_id) != -1)
{
result += object.order_bundle_admissions[i].amount.amount;
}
}
}
return result;
}
function miscItemValue(object, product_name)
{
var id = new Array();
var result = 0;
for (var i = 0; i < object.misc_items.length; i++)
{
if (testValue(object.misc_items[i].name, product_name) ||
testValue(object.misc_items[i].description, product_name) ||
testValue(object.misc_items[i].short_description, product_name))
{
id.push(object.misc_items[i].miscellaneous_item_id);
}
}
if (id.length > 0)
{
for (var i = 0; i < object.order_misc_items.length; i++)
{
if (id.indexOf(object.order_misc_items[i].item_id) != -1)
{
result += object.order_misc_items[i].amount.amount;
}
}
}
return result;
}
function giftValue(object, product_name)
{
var id = new Array();
var result = 0;
for (var i = 0; i < object.gifts.length; i++)
{
if (testValue(object.gifts[i].name, product_name) ||
testValue(object.gifts[i].description, product_name) ||
testValue(object.gifts[i].short_description, product_name))
{
id.push(object.gifts[i].gift_id);
}
}
if (id.length > 0)
{
for (var i = 0; i < object.order_gifts.length; i++)
{
if (id.indexOf(object.order_gifts[i].gift_id) != -1)
{
result += object.order_gifts[i].pledge_amount.amount;
}
}
}
return result;
}
function storedValueValue(object, product_name)
{
var id = new Array();
var result = 0;
for (var i = 0; i < object.stored_values.length; i++)
{
if (testValue(object.stored_values[i].name, product_name) ||
testValue(object.stored_values[i].description, product_name) ||
testValue(object.stored_values[i].short_description, product_name))
{
id.push(object.stored_values[i].stored_value_id);
}
}
if (id.length > 0)
{
for (var i = 0; i < object.order_stored_values.length; i++)
{
if (id.indexOf(object.order_stored_values[i].stored_value_id) != -1)
{
result += object.order_stored_values[i].amount.amount;
}
}
}
return result;
}
function productValue(object, product_type, product_name)
{
var result = 0;
if (product_name == null && product_type == null)
{
if (object.order_admissions.length)
{
for (var i = 0; i < object.order_admissions.length; i++)
{
result += object.order_admissions[i].amount.amount;
}
}
if (object.order_bundle_admissions.length)
{
for (var i = 0; i < object.order_bundle_admissions.length; i++)
{
result += object.order_bundle_admissions[i].amount.amount;
}
}
if (object.order_misc_items.length)
{
for (var i = 0; i < object.order_misc_items.length; i++)
{
result += object.order_misc_items[i].amount.amount;
}
}
if (object.order_gifts.length)
{
for (var i = 0; i < object.order_gifts.length; i++)
{
result += object.order_gifts[i].pledge_amount.amount;
}
}
if (object.order_stored_values.length)
{
for (var i = 0; i < object.order_stored_values.length; i++)
{
result += object.order_stored_values[i].amount.amount;
}
}
}
else if (product_name == null)
{
if (testValue(product_type, "admission") && object.order_admissions.length)
{
for (var i = 0; i < object.order_admissions.length; i++)
{
result += object.order_admissions[i].amount.amount;
}
}
if (testValue(product_type, "bundle") && object.order_bundle_admissions.length)
{
for (var i = 0; i < object.order_bundle_admissions.length; i++)
{
result += object.order_bundle_admissions[i].amount.amount;
}
}
if (testValue(product_type, "miscellaneous_item") && object.order_misc_items.length)
{
for (var i = 0; i < object.order_misc_items.length; i++)
{
result += object.order_misc_items[i].amount.amount;
}
}
if (testValue(product_type, "gift") && object.order_gifts.length)
{
for (var i = 0; i < object.order_gifts.length; i++)
{
result += object.order_gifts[i].pledge_amount.amount;
}
}
if (testValue(product_type, "stored_value") && object.order_stored_values.length)
{
for (var i = 0; i < object.order_stored_values.length; i++)
{
result += object.order_stored_values[i].amount.amount;
}
}
}
else if (product_type == null)
{
if (object.order_admissions.length)
{
result += admissionValue(object, product_name);
}
if (object.order_bundle_admissions.length)
{
result += bundleValue(object, product_name);
}
if (object.order_misc_items.length)
{
result += miscItemValue(object, product_name);
}
if (object.order_gifts.length)
{
result += giftValue(object, product_name);
}
if (object.order_stored_values.length)
{
result += storedValueValue(object, product_name);
}
}
else
{
if (testValue(product_type, "admission") && object.order_admissions.length)
{
result += admissionValue(object, product_name);
}
else if (testValue(product_type, "bundle") && object.bundles.length)
{
result += bundleValue(object, product_name);
}
else if (testValue(product_type, "miscellaneous_item") && object.misc_items.length)
{
result += miscItemValue(object, product_name);
}
else if (testValue(product_type, "gift") && object.gifts.length)
{
result += giftValue(object, product_name);
}
else if (testValue(product_type, "stored_value") && object.stored_values.length)
{
result += storedValueValue(object, product_name);
}
}
return result;
}
function admissionCount(object, product_name)
{
var id = new Array();
var result = 0;
for (var i = 0; i < object.performances.length; i++)
{
if (testValue(object.performances[i].name, product_name) ||
testValue(object.performances[i].description, product_name) ||
testValue(object.performances[i].short_description, product_name))
{
id.push(object.performances[i].performance_id);
}
}
if (id.length > 0)
{
for (var i = 0; i < object.order_admissions.length; i++)
{
if (id.indexOf(object.order_admissions[i].performance_id) != -1)
{
result ++;
}
}
}
return result;
}
function bundleCount(object, product_name)
{
var id = new Array();
var result = 0;
for (var i = 0; i < object.bundles.length; i++)
{
if (testValue(object.bundles[i].name, product_name) ||
testValue(object.bundles[i].description, product_name) ||
testValue(object.bundles[i].short_description, product_name))
{
id.push(object.bundles[i].bundle_id);
}
}
if (id.length > 0 && object.order_bundle_admissions.length)
{
for (var i = 0; i < object.order_bundle_admissions.length; i++)
{
if (id.indexOf(object.order_bundle_admissions[i].bundle_id) != -1)
{
result ++;
}
}
}
return result;
}
function miscItemCount(object, product_name)
{
var id = new Array();
var result = 0;
for (var i = 0; i < object.misc_items.length; i++)
{
if (testValue(object.misc_items[i].name, product_name) ||
testValue(object.misc_items[i].description, product_name) ||
testValue(object.misc_items[i].short_description, product_name))
{
id.push(object.misc_items[i].miscellaneous_item_id);
}
}
if (id.length > 0 && object.order_misc_items.length)
{
for (var i = 0; i < object.order_misc_items.length; i++)
{
if (id.indexOf(object.order_misc_items[i].item_id) != -1)
{
result += parseFloat(object.order_misc_items[i].quantity);
}
}
}
return result;
}
function giftCount(object, product_name)
{
var id = new Array();
var result = 0;
for (var i = 0; i < object.gifts.length; i++)
{
if (testValue(object.gifts[i].name, product_name) ||
testValue(object.gifts[i].description, product_name) ||
testValue(object.gifts[i].short_description, product_name))
{
id.push(object.gifts[i].gift_id);
}
}
if (id.length > 0)
{
for (var i = 0; i < object.order_gifts.length; i++)
{
if (id.indexOf(object.order_gifts[i].gift_id) != -1)
{
result ++;
}
}
}
return result;
}
function storedValueCount(object, product_name)
{
var id = new Array();
var result = 0;
for (var i = 0; i < object.stored_values.length; i++)
{
if (testValue(object.stored_values[i].name, product_name) ||
testValue(object.stored_values[i].description, product_name) ||
testValue(object.stored_values[i].short_description, product_name))
{
id.push(object.stored_values[i].stored_value_id);
}
}
if (id.length > 0)
{
for (var i = 0; i < object.order_stored_values.length; i++)
{
if (id.indexOf(object.order_stored_values[i].stored_value_id) != -1)
{
result ++;
}
}
}
return result;
}
function productCount(object, product_type, product_name)
{
var result = 0;
if (product_name == null && product_type == null)
{
if (object.order_admissions.length)
{
result += object.order_admissions.length;
}
if (object.order_bundle_admissions.length)
{
result += object.order_bundle_admissions.length;
}
if (object.order_misc_items.length)
{
for (var i = 0; i < object.order_misc_items.length; i++)
result += parseFloat(object.order_misc_items[i].quantity);
}
if (object.order_gifts.length)
{
result += object.order_gifts.length;
}
if (object.order_stored_values.length)
{
result += object.order_stored_values.length;
}
}
else if (product_name == null)
{
if (testValue(product_type, "admission") && object.order_admissions.length)
{
result += object.order_admissions.length;
}
if (testValue(product_type, "bundle") && object.order_bundle_admissions.length)
{
result += object.order_bundle_admissions.length;
}
if (testValue(product_type, "miscellaneous_item") && object.order_misc_items.length)
{
for (var i = 0; i < object.order_misc_items.length; i++)
result += parseFloat(object.order_misc_items[i].quantity);
}
if (testValue(product_type, "gift") && object.order_gifts.length)
{
result += object.order_gifts.length;
}
if (testValue(product_type, "stored_value") && object.order_stored_values.length)
{
result += object.order_stored_values.length;
}
}
else if (product_type == null)
{
if (object.order_admissions.length)
{
result += admissionCount(object, product_name);
}
if (object.order_bundle_admissions.length)
{
result += bundleCount(object, product_name);
}
if (object.order_misc_items.length)
{
result += miscItemCount(object, product_name);
}
if (object.order_gifts.length)
{
result += giftCount(object, product_name);
}
if (object.stored_values.length)
{
result += storedValueCount(object, product_name);
}
}
else
{
if (testValue(product_type, "admission") && object.order_admissions.length)
{
result += admissionCount(object, product_name);
}
if (testValue(product_type, "bundle") && object.order_bundle_admissions.length)
{
result += bundleCount(object, product_name);
}
if (testValue(product_type, "miscellaneous_item") && object.order_misc_items.length)
{
result += miscItemCount(object, product_name);
}
if (testValue(product_type, "gift") && object.order_gifts.length)
{
result += giftCount(object, product_name);
}
if (testValue(product_type, "stored_value") && object.order_stored_values.length)
{
result += storedValueCount(object, product_name);
}
}
return result;
}
function getPerformance(object, performance_id)
{
var result = null;
if (performance_id != null && object.performances.length)
{
for (var i = 0; i < object.performances.length; i++)
{
if (testValue(object.performances[i].performance_id, performance_id))
{
result = object.performances[i];
break;
}
}
}
return result;
}
function getBundle(object, bundle_id)
{
var result = null;
if (bundle_id != null && object.bundles.length)
{
for (var i = 0; i < object.bundles.length; i++)
{
if (testValue(object.bundles[i].bundle_id, bundle_id))
{
result = object.bundles[i];
break;
}
}
}
return result;
}
function getMiscItem(object, miscitem_id)
{
var result = null;
if (miscitem_id != null && object.misc_items.length)
{
for (var i = 0; i < object.misc_items.length; i++)
{
if (testValue(object.misc_items[i].miscellaneous_item_id, miscitem_id))
{
result = object.misc_items[i];
break;
}
}
}
return result;
}
function getGift(object, gift_id)
{
var result = null;
if (gift_id != null && object.gifts.length)
{
for (var i = 0; i < object.gifts.length; i++)
{
if (testValue(object.gifts[i].gift_id, gift_id))
{
result = object.gifts[i];
break;
}
}
}
return result;
}
function getStoredValue(object, storedvalue_id)
{
var result = null;
if (storedvalue_id != null && object.stored_values.length)
{
for (var i = 0; i < object.stored_values.length; i++)
{
if (testValue(object.stored_values[i].stored_value_id, storedvalue_id))
{
result = object.stored_values[i];
break;
}
}
}
return result;
}
function createGAAdmissions(object, transactionProducts, GA4ecommerceItems)
{
if( object.order_admissions.length > 0 )
{
var admissionList = new Array();
var admissionPTList = new Array();
for (var i = 0; i < object.order_admissions.length; i++)
{
var perfID = object.order_admissions[i].performance_id;
if( admissionList[ perfID ] == undefined )
{
admissionList[ perfID ] = new Array();
}
admissionList[ perfID ].push( object.order_admissions[i] );
if( admissionPTList[ perfID ] == undefined )
{
admissionPTList[ perfID ] = new Array();
}
var curPTList = admissionPTList[ perfID ];
var admPTID = object.order_admissions[i].price_type;
if (curPTList[ admPTID ] == undefined )
{
curPTList[ admPTID ] = new Array();
}
curPTList[ admPTID ].push( object.order_admissions[i] );
}
for( var guid in admissionList )
{
var admNode = admissionList[ guid ][ 0 ];
var perfID = admNode.performance_id;
var perfNode;
for (var i = 0; i < object.performances.length; i++)
{
if (perfID == object.performances[i].performance_id)
{
perfNode = object.performances[i];
break;
}
}
var perfName = perfNode.name;
var perfDesc = perfNode.short_description;
if (perfDesc == "" || perfDesc == null) {
perfDesc = perfName;
}
var seriesName = perfNode.series_name;
var curPTList = admissionPTList[ perfID ];
for ( var guid in curPTList )
{
seatNode = curPTList[ guid ][ 0 ];
var admAmount = seatNode.amount.amount;
var priceTypeLabel = seatNode.price_type;
var priceZoneLabel = seatNode.price_zone;
var admissions = { "sku": perfName + " Admission " + priceTypeLabel + "-" + priceZoneLabel,
"name": perfDesc + " Admission",
"category": seriesName + " Admission",
"price": admAmount,
"quantity": curPTList[ guid ].length
};
var GA4admissions = {
"item_id": perfName,
"item_name": perfDesc,
"item_category": "Admission",
"item_category2": seriesName,
"item_category3": priceTypeLabel,
"item_category4": priceZoneLabel,
"price": admAmount,
"quantity": curPTList[ guid ].length
};
transactionProducts.push(admissions);
GA4ecommerceItems.push(GA4admissions);
}
}
}
}
function createGABundles(object, transactionProducts, GA4ecommerceItems)
{
// roll up bundles by id and price
// object.order_bundle - data about the bundle on the order: amount, total
// object.bundles - data about the bundle item: name & description
if( object.bundles.length > 0 )
{
var bundleList = {};
for (var i = 0; i < object.order_bundle.length; i++)
{
var bundleID = object.order_bundle[i].bundle_id;
var bundleAmount = object.order_bundle[i].amount.amount;
if( bundleList[ bundleID ] == undefined )
{
bundleList[ bundleID ] = {};
}
if( bundleList[ bundleID ][ bundleAmount ] == undefined )
{
bundleList[ bundleID ][ bundleAmount ] = 0;
}
bundleList[ bundleID ][ bundleAmount ]++;
}
for (var i = 0; i < object.bundles.length; i++)
{
var bundleID = object.bundles[i].bundle_id;
var sku = object.bundles[i].name;
var name = object.bundles[i].description;
var shortDesc = object.bundles[i].short_description;
if (shortDesc == null) {
shortDesc = sku;
}
for(var amount in bundleList[bundleID])
{
transactionProducts.push(
{
"sku": sku,
"name": name,
"price": amount,
"quantity": bundleList[bundleID][amount]
});
GA4ecommerceItems.push(
{
"item_id": sku,
"name": shortDesc,
"item_category": "Bundle",
"price": amount,
"quantity": bundleList[bundleID][amount]
});
}
}
}
}
function createGAMiscItems(object, transactionProducts, GA4ecommerceItems)
{
if( object.misc_items.length > 0 && object.order_misc_items.length > 0)
{
var itemList = new Array();
var itemAmountList = new Array();
for (var i = 0; i < object.order_misc_items.length; i++)
{
var itemID = object.order_misc_items[i].item_id;
if( itemList[ itemID ] == undefined )
{
itemList[ itemID ] = new Array();
}
itemList[ itemID ].push( object.order_misc_items[i] );
if( itemAmountList[ itemID ] == undefined )
itemAmountList[ itemID ] = parseFloat(object.order_misc_items[i].amount.amount);
}
for (var i = 0; i < object.misc_items.length; i++)
{
var miscItems = { "sku": object.misc_items[i].name,
"name": object.misc_items[i].description,
"category": object.misc_items[i].category,
"price": itemAmountList[object.misc_items[i].miscellaneous_item_id],
"quantity": itemList[object.misc_items[i].miscellaneous_item_id].length
};
var shortDesc = object.misc_items[i].short_description;
if (shortDesc == null) {
shortDesc = object.misc_items[i].name;
}
var GA4miscItems = {
"item_id": object.misc_items[i].name,
"item_name": shortDesc,
"item_category": "Miscellaneous Item",
"item_category2": object.misc_items[i].category,
"price": itemAmountList[object.misc_items[i].miscellaneous_item_id],
"quantity": itemList[object.misc_items[i].miscellaneous_item_id].length
};
transactionProducts.push(miscItems);
GA4ecommerceItems.push(GA4miscItems);
}
}
}
function createGAGifts(object, transactionProducts, GA4ecommerceItems)
{
if( object.gifts.length > 0 && object.order_gifts.length > 0)
{
var giftList = new Array();
for (var i = 0; i < object.gifts.length; i++)
{
var giftID = object.gifts[i].gift_id;
if( giftList[ giftID ] == undefined )
{
giftList[ giftID ] = new Array();
}
giftList[ giftID ] = object.gifts[i].name;
}
for (var i = 0; i < object.order_gifts.length; i++)
{
var gifts = { "sku": giftList[object.order_gifts[i].gift_id],
"name": object.order_gifts[i].appeal_id,
"category": object.order_gifts[i].fund,
"price": object.order_gifts[i].pledge_paid_amount.amount,
"quantity": 1
};
var GA4gifts = {
"item_id": giftList[object.order_gifts[i].gift_id],
"item_name": object.order_gifts[i].appeal_id,
"item_category": "Gift",
"item_category2": object.order_gifts[i].fund,
"price": object.order_gifts[i].pledge_paid_amount.amount,
"quantity": 1
};
transactionProducts.push(gifts);
GA4ecommerceItems.push(GA4gifts);
}
}
}
function createGAStoredValueItems(object, transactionProducts, GA4ecommerceItems)
{
if( object.stored_values.length > 0 )
{
var storedValueNameList = new Array();
var storedValueTypeList = new Array();
var storedValueDescList = new Array();
var storedValueShortDescList = new Array();
for (var i = 0; i < object.stored_values.length; i++)
{
var certID = object.stored_values[i].stored_value_id;
if( storedValueNameList[ certID ] == undefined )
{
storedValueNameList[ certID ] = new Array();
storedValueTypeList[ certID ] = new Array();
storedValueDescList[ certID ] = new Array();
storedValueShortDescList[ certID ] = new Array();
}
storedValueNameList[ certID ] = object.stored_values[i].name;
storedValueDescList[ certID ] = object.stored_values[i].description;
storedValueShortDescList[ certID ] = object.stored_values[i].short_description;
storedValueTypeList[ certID ] = object.stored_values[i].type;
}
for (var i = 0; i < object.order_stored_values.length; i++)
{
var storedValueItems = { "sku": storedValueNameList[object.order_stored_values[i].stored_value_id],
"name": storedValueDescList[object.order_stored_values[i].stored_value_id],
"category": storedValueTypeList[object.order_stored_values[i].stored_value_id],
"price": parseFloat(object.order_stored_values[i].amount.amount),
"quantity": 1
};
var shortDesc = storedValueShortDescList[object.order_stored_values[i].stored_value_id];
if (shortDesc == null) {
shortDesc = storedValueNameList[object.order_stored_values[i].stored_value_id];
}
var GA4storedValueItems = {
"item_id": storedValueNameList[object.order_stored_values[i].stored_value_id],
"item_name": shortDesc,
"item_category": "Stored Value Item",
"item_category2": storedValueTypeList[object.order_stored_values[i].stored_value_id],
"price": parseFloat(object.order_stored_values[i].amount.amount),
"quantity": 1
};
transactionProducts.push(storedValueItems);
GA4ecommerceItems.push(GA4storedValueItems);
}
}
}
function createGATransaction(object)
{
var output;
var transactionProducts = new Array;
var GA4ecommerceItems = new Array;
createGAAdmissions(object, transactionProducts, GA4ecommerceItems);
createGABundles(object, transactionProducts, GA4ecommerceItems);
createGAMiscItems(object, transactionProducts, GA4ecommerceItems);
createGAGifts(object, transactionProducts, GA4ecommerceItems);
createGAStoredValueItems(object, transactionProducts, GA4ecommerceItems);
output = { "transactionId": object.order_number.toString(),
"transactionAffiliation": object.affiliation == null ? "" : object.affiliation.toString(),
"transactionTotal": object.grand_total.amount,
"transactionTax": object.total_tax.amount,
"transactionShipping": object.delivery_charges.amount,
"transactionCity": object.customer_city == null ? "" : object.customer_city.toString(),
"transactionState": object.customer_state == null ? "" : object.customer_state.toString(),
"transactionCountry": object.customer_country == null ? "" : object.customer_country.toString(),
"transactionProducts": transactionProducts,
"ecommerce": {
"transaction_id": object.order_number.toString(),
"value": object.grand_total.amount,
"tax": object.total_tax.amount,
"shipping": object.delivery_charges.amount,
"currency": object.grand_total.currency,
"items": GA4ecommerceItems
}
};
return output;
}
</script>
<script type="text/javascript">
var dataLayer = new Array();
dataLayer.push(getSessionObject());
dataLayer.push(getPageObject());
var av_error = getErrorObject();
if (av_error != null)
dataLayer.push(av_error);
</script>
<!-- Google Tag Manager -->
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-5RPFLM"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<script>
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-5RPFLM');
</script>
<!-- End Google Tag Manager -->
<header class="online-timer"></header>
<div role="banner" id="header">
<button id="menuSkipToContent" onclick="skipToMain()" role="link">Skip to main content</button>
<!-- customer/order information -->
<div class="customer-options" id="customer-utilities">
<!--ORDER DETAILS BOX-->
<div id="orderInfo">
<!-- This is the same information that displays in the grey navigation bar at the top, showing and formatted for the mobile view, when that bar is hidden. -->
<!-- The order of the html elements is different between the two display cases, so we have some duplication of some of the elements. -->
<div id="customer-order-info">
<div class="hide-when-window-large">
<div class="form-group">
<span class="greeting-message">Order for</span>
<span class="greeting-name">Guest</span>
</div>
</div>
<div class="customer-greeting">
</div>
<div class="customer-order shopping-cart-details order-message ">
<span id="orderInfoEmptyMessage">Your shopping cart is empty.</span>
</div>
<div class="customer-buttons">
<div class="cart-callout">
<button title="Shopping Cart" onclick="submitNewForm("shoppingCart.asp?sToken=1,c7f5027b,69ae8c30,EE6DE72B-2B41-49D3-B5BE-77E876F82F69,fLVxGbt6T22xWbax2PFRrbAmkAM=")" id="orderInfoCartLink" class="shopping-cart-link btn btn-secondary">
Shopping Cart
</button>
</div>
</div>
<script>
var currentLanguage = "EN";
function setLanguage(dropdown, language) {
var form = dropdown.closest('form');
form.querySelector(".sessionlanguage").value = language;
form.submit();
}
function updateDropdownDisplay(dropdown) {
var selectedOption = dropdown.options[dropdown.selectedIndex];
var displayText = selectedOption.value;
selectedOption.textContent = displayText; // Ensure the selected option shows the abbreviated version
if (displayText !== currentLanguage) {
setLanguage(dropdown, displayText);
}
}
function expandDropdown(dropdown) {
for (var i = 0; i < dropdown.options.length; i++) {
var option = dropdown.options[i];
option.textContent = option.getAttribute("data-full");
}
}
function collapseDropdown(dropdown) {
for (var i = 0; i < dropdown.options.length; i++) {
var option = dropdown.options[i];
option.textContent = option.value;
}
updateDropdownDisplay(dropdown);
}
window.addEventListener("DOMContentLoaded", function () {
var dropdowns = document.querySelectorAll('.languageDropdown');
dropdowns.forEach(function(dropdown) {
updateDropdownDisplay(dropdown);
// Add event listeners to expand and collapse the dropdown
dropdown.addEventListener("focus", function() { expandDropdown(dropdown); });
dropdown.addEventListener("blur", function() { collapseDropdown(dropdown); });
});
});
</script>
</div>
</div>
<!-- This is the grey navigation bar at the top. Does not show when in mobile view. -->
<div id="orderInfoSecondBar" class="hide-when-window-small">
<div class="form-group">
<span class="greeting-message">Order for</span>
<span class="greeting-name">Guest</span>
</div>
</div>
<div class="menuContainer utility-nav">
<ul id="utility-menu" class="nav">
</ul>
</div>
</div>
<div class="header-content container">
<div class="ubc-header mobile" xmlns="http://www.w3.org/1999/xhtml" xmlns:av="http://www.audienceview.com/xml/email/"><a href="https://www.ubc.ca/" shape="rect"><img alt="UBC Logo" class="ubc-crest-logo" src="/content/Images/Branding/ubc-logo-2018-crest-blue-rgb72.png"/>
</a>
<p><a href="https://www.ubc.ca/" shape="rect">The University<br clear="none"/>
of British Columbia</a>
</p>
</div>
<div class="ubc-header desktop" xmlns="http://www.w3.org/1999/xhtml" xmlns:av="http://www.audienceview.com/xml/email/"><a href="https://www.ubc.ca/" shape="rect"><img alt="UBC Logo" class="ubc-crest-logo" src="/content/Images/Branding/ubc-logo-2018-crest-blue-rgb72.png"/>
</a>
<p><a href="https://www.ubc.ca/" shape="rect">The University of British Columbia</a>
</p>
</div>
<div class="ubc-tickets-header" xmlns="http://www.w3.org/1999/xhtml" xmlns:av="http://www.audienceview.com/xml/email/"><a href="https://tickets.ubc.ca/Online/default.asp" shape="rect"><img alt="UBC Tickets Logo" class="ubc-tickets-logo" src="/content/Images/Branding/ubc-logo-2020-tickets-short-white-rgb300.png"/>
</a>
</div>
</div>
<button type="button" id="menuButton" class="menu-toggle menu-button btn btn-secondary" aria-controls="menu" aria-label="Main Navigation" aria-expanded="false">
<span class="fas fa-align-justify"></span>
</button>
<button type="button" id="sidebarButton" class="menu-toggle sidebar-button btn btn-secondary" aria-controls="customer-utilities" aria-label="Shopping Cart" aria-expanded="false">
<span class="fas fa-shopping-cart"></span>
</button>
</div>
<div class="content-wrapper">
<div aria-label="Main" role="navigation" id="menu">
<div class="menuContainer main-nav">
<ul id="menuTop" class="nav clearfix">
<li class="menuTopItem has-sub-menu clearfix dropdown" id="menuTopItem0">
<a href="javascript:void(0);" class="menu_item empty-link-dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
<span class="menu-label">What's On</span>
<span class="fas fa-chevron-down"></span>
<span class="fas fa-chevron-up"></span>
</a>
<div class="menuSub dropdown-menu">
<a class="menuSubItem dropdown-item btn" href="javascript:void(0);" onclick="sTokenLink("default.asp?menu_id=5A16B5CC-1FF7-4875-921B-4EA7D913F6D5", "sToken", "1,c7f5027b,69ae8c30,EE6DE72B-2B41-49D3-B5BE-77E876F82F69,fLVxGbt6T22xWbax2PFRrbAmkAM=")">
All Upcoming Events
</a>
<a class="menuSubItem dropdown-item btn" href="javascript:void(0);" onclick="sTokenLink("default.asp?doWork::WScontent::loadArticle=Load&BOparam::WScontent::loadArticle::article_id=D6DC0533-1D71-4EAE-A4F6-2D3590DF4BD2&menu_id=5A16B5CC-1FF7-4875-921B-4EA7D913F6D5", "sToken", "1,c7f5027b,69ae8c30,EE6DE72B-2B41-49D3-B5BE-77E876F82F69,fLVxGbt6T22xWbax2PFRrbAmkAM=")">
Chan Centre EXP
</a>
<a class="menuSubItem dropdown-item btn" href="javascript:void(0);" onclick="sTokenLink("default.asp?doWork::WScontent::loadArticle=Load&BOparam::WScontent::loadArticle::article_id=22049894-8D19-4D19-BF86-BF9717A555AA&menu_id=5A16B5CC-1FF7-4875-921B-4EA7D913F6D5", "sToken", "1,c7f5027b,69ae8c30,EE6DE72B-2B41-49D3-B5BE-77E876F82F69,fLVxGbt6T22xWbax2PFRrbAmkAM=")">
Chan Centre Insights
</a>
<a class="menuSubItem dropdown-item btn" href="javascript:void(0);" onclick="sTokenLink("default.asp?doWork::WScontent::loadArticle=Load&BOparam::WScontent::loadArticle::article_id=E49B3AA7-B129-4D71-A12F-53EFF5D9B4E9&menu_id=5A16B5CC-1FF7-4875-921B-4EA7D913F6D5", "sToken", "1,c7f5027b,69ae8c30,EE6DE72B-2B41-49D3-B5BE-77E876F82F69,fLVxGbt6T22xWbax2PFRrbAmkAM=")">
Chan Centre Made in Canada
</a>
<a class="menuSubItem dropdown-item btn" href="javascript:void(0);" onclick="sTokenLink("default.asp?doWork::WScontent::loadArticle=Load&BOparam::WScontent::loadArticle::article_id=68B10353-7142-4519-87EA-57F2FD1417C3&menu_id=5A16B5CC-1FF7-4875-921B-4EA7D913F6D5", "sToken", "1,c7f5027b,69ae8c30,EE6DE72B-2B41-49D3-B5BE-77E876F82F69,fLVxGbt6T22xWbax2PFRrbAmkAM=")">
Chan Centre Presents
</a>
<a class="menuSubItem dropdown-item btn" href="javascript:void(0);" onclick="sTokenLink("default.asp?doWork::WScontent::loadArticle=Load&BOparam::WScontent::loadArticle::article_id=F8804175-2CB5-43EF-858D-15BD24E7AEB1&menu_id=5A16B5CC-1FF7-4875-921B-4EA7D913F6D5", "sToken", "1,c7f5027b,69ae8c30,EE6DE72B-2B41-49D3-B5BE-77E876F82F69,fLVxGbt6T22xWbax2PFRrbAmkAM=")">
Inspired at the Chan
</a>
<a class="menuSubItem dropdown-item btn" href="javascript:void(0);" onclick="sTokenLink("default.asp?doWork::WScontent::loadArticle=Load&BOparam::WScontent::loadArticle::article_id=04428BC9-E786-4D35-954F-1BD4F3B64567&menu_id=5A16B5CC-1FF7-4875-921B-4EA7D913F6D5", "sToken", "1,c7f5027b,69ae8c30,EE6DE72B-2B41-49D3-B5BE-77E876F82F69,fLVxGbt6T22xWbax2PFRrbAmkAM=")">
Lind Initiative
</a>
<a class="menuSubItem dropdown-item btn" href="javascript:void(0);" onclick="sTokenLink("login.asp?targetpage=default.asp%3FdoWork::WScontent::loadArticle=Load%26BOparam::WScontent::loadArticle::article_id=E26C40C1-8C61-4EB6-AE34-E818CCED5BEC&menu_id=5A16B5CC-1FF7-4875-921B-4EA7D913F6D5", "sToken", "1,c7f5027b,69ae8c30,EE6DE72B-2B41-49D3-B5BE-77E876F82F69,fLVxGbt6T22xWbax2PFRrbAmkAM=")">
UBC Opera
</a>
<a class="menuSubItem dropdown-item btn" href="javascript:void(0);" onclick="sTokenLink("default.asp?doWork::WScontent::loadArticle=Load&BOparam::WScontent::loadArticle::article_id=5FB5233C-FCAF-40B2-AE68-82A2776B4625&menu_id=5A16B5CC-1FF7-4875-921B-4EA7D913F6D5", "sToken", "1,c7f5027b,69ae8c30,EE6DE72B-2B41-49D3-B5BE-77E876F82F69,fLVxGbt6T22xWbax2PFRrbAmkAM=")">
UBC School of Music Large Ensembles
</a>
<a class="menuSubItem dropdown-item btn" href="javascript:void(0);" onclick="sTokenLink("default.asp?doWork::WScontent::loadArticle=Load&BOparam::WScontent::loadArticle::article_id=1E58513F-424C-46ED-AC2D-443DAA499F26&menu_id=5A16B5CC-1FF7-4875-921B-4EA7D913F6D5", "sToken", "1,c7f5027b,69ae8c30,EE6DE72B-2B41-49D3-B5BE-77E876F82F69,fLVxGbt6T22xWbax2PFRrbAmkAM=")">
UBC Theatre
</a>
<a class="menuSubItem dropdown-item btn" href="javascript:void(0);" onclick="sTokenLink("default.asp?doWork::WScontent::loadArticle=Load&BOparam::WScontent::loadArticle::article_id=1FFA097A-7B56-4897-ACEE-5BFFDF160F0C&menu_id=5A16B5CC-1FF7-4875-921B-4EA7D913F6D5", "sToken", "1,c7f5027b,69ae8c30,EE6DE72B-2B41-49D3-B5BE-77E876F82F69,fLVxGbt6T22xWbax2PFRrbAmkAM=")">
Vancouver Symphony Orchestra
</a>
</div>
</li>
<li class="menuTopItem has-sub-menu clearfix dropdown" id="menuTopItem1">
<a href="javascript:void(0);" class="menu_item empty-link-dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
<span class="menu-label">Memberships</span>
<span class="fas fa-chevron-down"></span>
<span class="fas fa-chevron-up"></span>
</a>
<div class="menuSub dropdown-menu">
<a class="menuSubItem dropdown-item btn" href="javascript:void(0);" onclick="sTokenLink("login.asp?targetpage=default.asp%3FdoWork::WScontent::loadArticle=Load%26BOparam::WScontent::loadArticle::article_id=43D58F5D-9A64-4F4D-9ADC-DE46BA0E4F9E&menu_id=B7CCE05A-9592-4E12-9B1B-561DBEFEBE48", "sToken", "1,c7f5027b,69ae8c30,EE6DE72B-2B41-49D3-B5BE-77E876F82F69,fLVxGbt6T22xWbax2PFRrbAmkAM=")">
Current Member Offerings
</a>
<a class="menuSubItem dropdown-item btn" href="javascript:void(0);" onclick="sTokenLink("default.asp?doWork::WScontent::loadArticle=Load&BOparam::WScontent::loadArticle::article_id=01A740B7-65A9-4CB2-B673-7CC51D7B0995&menu_id=B7CCE05A-9592-4E12-9B1B-561DBEFEBE48", "sToken", "1,c7f5027b,69ae8c30,EE6DE72B-2B41-49D3-B5BE-77E876F82F69,fLVxGbt6T22xWbax2PFRrbAmkAM=")">
Purchase a Membership
</a>
</div>
</li>
<li class="menuTopItem " id="menuTopItem2">
<a class="menu_item menu-link" href="javascript:void(0);" onclick="sTokenLink("default.asp?doWork::WScontent::loadArticle=Load&BOparam::WScontent::loadArticle::article_id=7A59BEE5-3523-4B20-9C1D-EFB4570BFE58&menu_id=BBCDD2AE-7CE8-4261-82E4-BBD5AF074468", "sToken", "1,c7f5027b,69ae8c30,EE6DE72B-2B41-49D3-B5BE-77E876F82F69,fLVxGbt6T22xWbax2PFRrbAmkAM=")">
<span class="menu-label">Venues</span>
</a>
</li>
<li class="menuTopItem has-sub-menu clearfix dropdown" id="menuTopItem3">
<a href="javascript:void(0);" class="menu_item empty-link-dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
<span class="menu-label">Visit Us</span>
<span class="fas fa-chevron-down"></span>
<span class="fas fa-chevron-up"></span>
</a>
<div class="menuSub dropdown-menu">
<a class="menuSubItem dropdown-item btn" href="https://chancentre.com/accessibility/" target="_blank">
Accessibility
</a>
<a class="menuSubItem dropdown-item btn" href="https://chancentre.com/directions/" target="_blank">
Getting Here
</a>
<a class="menuSubItem dropdown-item btn" href="javascript:void(0);" onclick="sTokenLink("default.asp?doWork::WScontent::loadArticle=Load&BOparam::WScontent::loadArticle::article_id=B17C724A-D4F2-4BB5-9998-69096BA0DDE2&menu_id=A335F5A2-69C6-45BE-A381-6EEF888809B0", "sToken", "1,c7f5027b,69ae8c30,EE6DE72B-2B41-49D3-B5BE-77E876F82F69,fLVxGbt6T22xWbax2PFRrbAmkAM=")">
FAQ
</a>
</div>
</li>
<li class="menuTopItem " id="menuTopItem4">
<a class="menu_item menu-link" href="javascript:void(0);" onclick="sTokenLink("maintainAccount.asp?menu_id=77E87883-30DD-49E0-A827-A639DF828E6C", "sToken", "1,c7f5027b,69ae8c30,EE6DE72B-2B41-49D3-B5BE-77E876F82F69,fLVxGbt6T22xWbax2PFRrbAmkAM=")">
<span class="menu-label">My Account</span>
</a>
</li>
<li class="menuTopItem" id="menuTopItem-languageDropdown">
<script>
var currentLanguage = "EN";
function setLanguage(dropdown, language) {
var form = dropdown.closest('form');
form.querySelector(".sessionlanguage").value = language;
form.submit();
}
function updateDropdownDisplay(dropdown) {
var selectedOption = dropdown.options[dropdown.selectedIndex];
var displayText = selectedOption.value;
selectedOption.textContent = displayText; // Ensure the selected option shows the abbreviated version
if (displayText !== currentLanguage) {
setLanguage(dropdown, displayText);
}
}
function expandDropdown(dropdown) {
for (var i = 0; i < dropdown.options.length; i++) {
var option = dropdown.options[i];
option.textContent = option.getAttribute("data-full");
}
}
function collapseDropdown(dropdown) {
for (var i = 0; i < dropdown.options.length; i++) {
var option = dropdown.options[i];
option.textContent = option.value;
}
updateDropdownDisplay(dropdown);
}
window.addEventListener("DOMContentLoaded", function () {
var dropdowns = document.querySelectorAll('.languageDropdown');
dropdowns.forEach(function(dropdown) {
updateDropdownDisplay(dropdown);
// Add event listeners to expand and collapse the dropdown
dropdown.addEventListener("focus", function() { expandDropdown(dropdown); });
dropdown.addEventListener("blur", function() { collapseDropdown(dropdown); });
});
});
</script>
</li>
</ul>
</div>
</div>
<!-- CONTENT START -->
<div id="content">
<div class="container">
<div class="bodyDetails article-UBCOperamain" id="default" >
<div id="searchBox" class="search-box">
<form role="search" id="searchItems" action="default.asp" method="post" class="form-inline">
<input type="hidden" name="sToken" value="1,c7f5027b,69ae8c30,EE6DE72B-2B41-49D3-B5BE-77E876F82F69,fLVxGbt6T22xWbax2PFRrbAmkAM=" class="form-inline">
<input type="hidden" name="BOset::WScontent::SearchCriteria::venue_filter" value="">
<input type="hidden" name="BOset::WScontent::SearchCriteria::city_filter" value="">
<input type="hidden" name="BOset::WScontent::SearchCriteria::month_filter" value="">
<input type="hidden" name="BOset::WScontent::SearchCriteria::object_type_filter" value="">
<input type="hidden" name="BOset::WScontent::SearchCriteria::category_filter" value="">
<input type="hidden" name="BOset::WScontent::SearchCriteria::search_from" value="">
<input type="hidden" name="BOset::WScontent::SearchCriteria::search_to" value="">
<input type="hidden" name="doWork::WScontent::search" value="1">
<input type="hidden" name="BOparam::WScontent::search::article_search_id" value="EE8716B4-0827-4B0D-9ACB-038A148DF966">
<ul class="list-unstyled">
<li class="item-search-keyword">
<span id="keyword-item-search" class="searchBoxLabel field-label">Search Events</span>
<input type="text" name="BOset::WScontent::SearchCriteria::search_criteria" class=" form-control" aria-labelledby="keyword-item-search" value="" title="Search Criteria" id="BOset::WScontent::SearchCriteria::search_criteria" class="form-control">
</li>
<li class="item-search-start-date">
<span id="event-dates-search" class="searchBoxLabel field-label">Event Dates</span>
<span id="event-dates-from" class="visually-hidden">from</span>
<div class="input-group"><input type="text" name="BOset::WScontent::SearchCriteria::search_from" class=" form-control" aria-labelledby="event-dates-search event-dates-from" value="" title="Search From" id="BOset::WScontent::SearchCriteria::search_from::0" class="form-control">
<div class="input-group-append"><button type="button" class="btn-unstyled calIcon" title="Show date picker" onClick="tsOpenCalendar( event, "BOset::WScontent::SearchCriteria::search_from::0", "0", "false", "sToken", "1,c7f5027b,69ae8c30,EE6DE72B-2B41-49D3-B5BE-77E876F82F69,fLVxGbt6T22xWbax2PFRrbAmkAM=");" id="cal::BOset::WScontent::SearchCriteria::search_from::0"></button>
</div>
</div>
</li>
<li class="item-search-end-date">
<span id="event-dates-to" class="searchBoxLabel field-label">to</span>
<div class="input-group"><input type="text" name="BOset::WScontent::SearchCriteria::search_to" class=" form-control" aria-labelledby="event-dates-to" value="" title="Search To" id="BOset::WScontent::SearchCriteria::search_to::0" class="form-control">
<div class="input-group-append"><button type="button" class="btn-unstyled calIcon" title="Show date picker" onClick="tsOpenCalendar( event, "BOset::WScontent::SearchCriteria::search_to::0", "0", "false", "sToken", "1,c7f5027b,69ae8c30,EE6DE72B-2B41-49D3-B5BE-77E876F82F69,fLVxGbt6T22xWbax2PFRrbAmkAM=");" id="cal::BOset::WScontent::SearchCriteria::search_to::0"></button>
</div>
</div>
</li>
<li class="item-search-submit">
<input type="submit" class="btn btn-secondary" value="Go" name="Go" onclick="performSearch(event)">
</li>
</ul>
<script type="text/javascript">
function performSearch(event){
event.preventDefault();
doGAClicks('Search');
let _form = document.getElementById("searchItems");
if (!!_form){
_form.method = "get";
_form.removeChild(_form.querySelector("input[name='sToken']"));
document.getElementById("searchItems").submit();
}
}
</script>
</form>
</div>
<div class="articles has-primary-features has-secondary-features">
<!-- top scrolling features included -->
<div role="complementary" aria-label="Primary" class="article-container primary-feature-wrapper">
<div id="feature-box" class="static-inner">
<div class='item item-0 static'><a href="https://tickets.ubc.ca/Online/default.asp?doWork::WScontent::loadArticle=Load&BOparam::WScontent::loadArticle::article_id=E26C40C1-8C61-4EB6-AE34-E818CCED5BEC" target="_blank" shape="rect" xmlns="http://www.w3.org/1999/xhtml" xmlns:av="http://www.audienceview.com/xml/email/"><img alt="" src="/content/Images/features/2526operabanner.jpeg"/>
</a>
</div>
</div>
</div>
<div class="article-body-container">
<div role="main" class="article-container main-article-body">
<h1 xmlns="http://www.w3.org/1999/xhtml" xmlns:av="http://www.audienceview.com/xml/email/">UBC Opera Upcoming Events</h1>
<h4 xmlns="http://www.w3.org/1999/xhtml" xmlns:av="http://www.audienceview.com/xml/email/">Join us for an exciting season featuring celebrated guests, our incredible production team, amazing conductors and orchestras, and most of all, our wonderful UBC Opera Ensemble!</h4>
<a href="default.asp?doWork::WScontent::loadArticle=Load&BOparam::WScontent::loadArticle::article_id=568EA029-CEFE-483E-858A-A0C3082ADFC2" shape="rect" xmlns="http://www.w3.org/1999/xhtml" xmlns:av="http://www.audienceview.com/xml/email/">Subscribe</a> today to unlock early access and savings! <br clear="none" xmlns="http://www.w3.org/1999/xhtml" xmlns:av="http://www.audienceview.com/xml/email/"/>
<br clear="none" xmlns="http://www.w3.org/1999/xhtml" xmlns:av="http://www.audienceview.com/xml/email/"/>
<div name="avWidget" id="avWidget_E26C40C1-8C61-4EB6-AE34-E818CCED5BEC_IDVB2SESCYEBXAL3JHZZZGGCEBGPAYDCOVVLX1SFK03PAD2JGGBQRG" xmlns:av="http://www.audienceview.com/xml/email/" xmlns:xhtml="http://www.w3.org/1999/xhtml">
<script type="text/javascript">
registerWidget( "SearchWebWidget3", "avWidget_E26C40C1-8C61-4EB6-AE34-E818CCED5BEC_IDVB2SESCYEBXAL3JHZZZGGCEBGPAYDCOVVLX1SFK03PAD2JGGBQRG", {
"SearchWebWidget3": "",
"css_class": "",
"css_id": "",
"css_style": "",
"showPrice": "",
"showLegend": "",
"showNoResults": "",
"title": "",
"1": "1"});
</script></div>
<p xmlns="http://www.w3.org/1999/xhtml" xmlns:av="http://www.audienceview.com/xml/email/"> </p>
</div>
<div role="complementary" aria-label="Secondary" class="article-container secondary-linked-features">
<div id="promoCodeBox" class="promotional-code-input">
<form role="form" aria-labelledby="promocode-title" method="POST" action="/online/default.asp">
<input type="hidden" name="sToken" value="1,c7f5027b,69ae8c30,EE6DE72B-2B41-49D3-B5BE-77E876F82F69,fLVxGbt6T22xWbax2PFRrbAmkAM=">
<input type="hidden" name="BOparam::WScontent::loadArticle::article_id" value="E26C40C1-8C61-4EB6-AE34-E818CCED5BEC">
<h4 id="promocode-title">
<span class="fas fa-tag promotag"></span> Promotional Code</h4>
<ul class="list-unstyled">
<li class="promotional-code-message">
If you have a promotion, please enter the Access Code here:
</li>
<li>
<div class="input-group">
<input id="promoCodeBoxInput" type="text" class="form-control" name="BOparam::WScontent::loadArticle::promocode_access_code" title="If you have a promotion, please enter the Access Code here:" >
<span class="input-group-append">
<input type="submit" class="btn btn-secondary" name="doWork::WScontent::loadArticle" value="Go" onclick="doGAClicks('Apply')" >
</span>
</div>
</li>
</ul>
</form>
</div>
<div class="secondary-linked-feature-div" id="secondary-linked-feature-0">
<h4 xmlns="http://www.w3.org/1999/xhtml" xmlns:av="http://www.audienceview.com/xml/email/">
Customer Login</h4>
<p xmlns="http://www.w3.org/1999/xhtml" xmlns:av="http://www.audienceview.com/xml/email/">
<div name="avWidget" id="avWidget_32A04E6F-C8AF-4C15-8213-3F596EF5E28F_ID5VEGPCOLEJFLIT5M4U4WS5LKWG0QMDTMOQ0LSHN3VYRG1H03GCGM" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns="">
<script type="text/javascript">
registerWidget( "LoginWebWidget", "avWidget_32A04E6F-C8AF-4C15-8213-3F596EF5E28F_ID5VEGPCOLEJFLIT5M4U4WS5LKWG0QMDTMOQ0LSHN3VYRG1H03GCGM", {
"LoginWebWidget": "",
"css_style": "",
"css_class": "",
"css_id": "",
"forgot_password": "Forgot your password?",
"title": "",
"password": "Password",
"submit": "Submit",
"username": "Email",
"1": "1"});
</script></div>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
<!--\\ .bodyDetails -->
</div>
<!--\\ .container -->
</div>
<!--\\ #content -->
<div role="contentinfo" id="footer">
<div class="footer-content container">
<div class="row-fluid expand" id="ubc7-global-footer" xmlns="http://www.w3.org/1999/xhtml" xmlns:av="http://www.audienceview.com/xml/email/">
<div class="logo"><a href="https://www.arts.ubc.ca" shape="rect"><img alt="UBC Faculty of Arts Logo" src="/content/Images/Branding/9_2016_2UnitPromo_Arts_ReverseRGB300.png"/>
</a>
</div>
<div class="span5" id="ubc7-signature">
<h1><a href="https://www.chancentre.com" shape="rect">Chan Centre for the Performing Arts</a>
</h1>
<p>6265 Crescent Road, UBC Vancouver, BC V6T 1Z1</p>
<p>Phone: 604-822-2697</p>
</div>
</div>
<div class="links" xmlns="http://www.w3.org/1999/xhtml" xmlns:av="http://www.audienceview.com/xml/email/">
<ul>
<li><a href="https://cdn.ubc.ca/clf/ref/emergency" shape="rect">Emergency Procedures</a>
</li>
<li><a href="https://cdn.ubc.ca/clf/ref/terms" shape="rect">Terms of Use</a>
</li>
<li><a href="https://cdn.ubc.ca/clf/ref/copyright" shape="rect">Copyright</a>
</li>
<li><a href="https://cdn.ubc.ca/clf/ref/accessibility" shape="rect">Accessibility</a>
</li>
</ul>
</div>
</div>
</div>
<!--\\ .content-wrapper -->
<div id="fade" class="black_overlay"></div>
<!-- inclusion of bootstrap.js -->
<!-- http://twitter.github.com for documentation on bootstrap -->
<script src="/lib/bootstrap/js/bootstrap.bundle.min.js?_=7.87.1" type="text/javascript"></script>
<!-- end of bootstrap.js -->
<!-- Font Awesome for icons -->
<script src="/lib/fontawesome-free/js/all.min.js"></script>
<!-- contains bootstrap specific function declarations -->
<script src="bootstrap-functions.js?_=7.87.1" type="text/javascript"></script>
<!-- Logout Handler -->
<script>
$(document).ready(function() {
var body = $("body");
body
.on("logged-out", function(e) {
var targetPage = "default.asp?doWork::WScontent::loadArticle=Load&BOparam::WScontent::loadArticle::article_id=E26C40C1-8C61-4EB6-AE34-E818CCED5BEC";
window.location.assign("login.asp?targetPage="+encodeURIComponent(targetPage));
});
// on pressing Enter key on an anchor trigger click
$("a").keypress(function(e){
if(e.keyCode == 13){
$(this).trigger("click");
}
});
// When page is loaded make sure the Page Load Spinner is not shown
if (spinnerDelayTimeout) {
cancelSpinnerTimeouts();
}
body.removeClass("show-spinner");
// Show spinner when form submitted or link clicked
var onSubmit;
$("form").each(
//Trigger the spinner after any other onsubmit functions for the form
function(index)
{
onSubmit = $(this).attr("onsubmit");
if ( onSubmit && onSubmit != "" ) {
onSubmit = onSubmit.trim();
// if the submit is "returning", we need to && showSpinner otherwise it won't be called
var returnIndex = onSubmit.indexOf("return");
if ( returnIndex != -1 ) {
// remove any trailing semi-colons
if ( onSubmit.indexOf(";") == onSubmit.length-1 )
onSubmit = onSubmit.substr(0, onSubmit.length-1);
// wrap the return in () in case it contains ||
// (add 6 to strip the original "return")
onSubmit = onSubmit.substr(0, returnIndex) + "return (" + onSubmit.substr(returnIndex + 6) + ")";
// and then append the call to the spinner
onSubmit += " && showSpinner()";
}
else {
onSubmit += ";showSpinner()";
}
}
else {
onSubmit = "showSpinner()";
}
$(this).attr("onsubmit", onSubmit);
}
);
// attach an event listener to each <a> tag to show the spinner if needed
// only do this if the <a> tag has an "href" attribute, so we don't show
// the spinner if staying on the page. If navigating away from the page
// via an onClick, we are assuming the onClick handles the display of the spinner
// (or submits the form with jQuery, so the spinner attached to the form.submit
// is fired)
$("a").click(function(e) {
var href = $(this).attr("href") || "";
var target = $(this).attr("target") || "";
if ((target == "" || /^(_self|_top|_parent)/.test(href)) && href != "" && !/^(#|javascript:|mailto:|file:)/.test(href))
showSpinner();
});
});
</script>
<!-- CONTENT END -->
<script type="text/javascript">
(function () {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.defer = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<script>
(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'9d98e3d17eb6a6c0',t:'MTc3MzA0NjgzMy4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();
</script></body>
</html>
<script>
$(function(){
// "Continue Shopping" and "Look for other events" buttons to redirect back to Brochure page user came from
$("a[name=continue-shopping], a[name=continueShopping], input[name=startOver], a[name=error-StartOver], input[name=error-StartOver]").on("click", function(e) {
var returnTo = getCookie('returnTo');
if(returnTo){
e.preventDefault();
deleteCookie('returnTo');
window.location.href = returnTo;
}
})
// "New Order" button to redirect to EIF home page
$("input.new-order,input[name=cancel-order]").on("click", function(e){
var returnTo = getCookie('returnTo');
if(returnTo){
e.preventDefault();
$("#popupDiv_okayButton").on("click", function(e){
$.ajax({
url: 'clearOrder.asp',
complete: function() {
deleteCookie('returnTo');
window.location.href = returnTo;
}
});
});
}
})
});
//adding the returnTo to the cookie
var returnTo = "undefined";
if (returnTo) {
var reffA = document.createElement('a');
reffA.href = returnTo;
if(reffA.host != window.location.host) {
setCookie("returnTo", returnTo, 1);
}
}
/*
*****************************************************
Cookie methods
*****************************************************
*/
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
var expires = "expires="+d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function deleteCookie(cname) {
setCookie(cname, "", -1);
}
</script>