{"id":20884,"date":"2026-07-07T14:33:42","date_gmt":"2026-07-07T14:33:42","guid":{"rendered":"https:\/\/challengesabroad.com\/nz\/?page_id=20884"},"modified":"2026-10-09T11:06:32","modified_gmt":"2026-10-09T00:06:32","slug":"make-a-booking","status":"publish","type":"page","link":"https:\/\/challengesabroad.com\/nz\/make-a-booking\/","title":{"rendered":"Make A Booking"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"20884\" class=\"elementor elementor-20884\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-14100791 elementor-hidden-tablet elementor-hidden-mobile e-flex e-con-boxed e-con e-parent\" data-id=\"14100791\" data-element_type=\"container\" data-e-type=\"container\" data-settings='{\"background_background\":\"classic\",\"jet_parallax_layout_list\":[]}'>\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-427d280 e-flex e-con-boxed e-con e-parent\" data-id=\"427d280\" data-element_type=\"container\" data-e-type=\"container\" data-settings='{\"background_background\":\"classic\",\"jet_parallax_layout_list\":[],\"animation\":\"none\"}'>\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-88cec43 e-con-full e-flex e-con e-child\" data-id=\"88cec43\" data-element_type=\"container\" data-e-type=\"container\" data-settings='{\"background_background\":\"classic\",\"jet_parallax_layout_list\":[],\"animation\":\"none\"}'>\n\t\t\t\t<div class=\"elementor-element elementor-element-225f8a8 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"225f8a8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>We\u2019re currently updating our booking system. <br>If you\u2019re having trouble accessing this page, <a href=\"https:\/\/challengesabroad.com\/nz\/our-challenges\/\" aria-label=\"view all our programs\">view all our programs<\/a> or <a href=\"#enquiry-form-popup\" aria-label=\"send us an enquiry\">send us an enquiry<\/a> and we\u2019ll get you booked in straight away.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7e808078 e-flex e-con-boxed e-con e-parent\" data-id=\"7e808078\" data-element_type=\"container\" data-e-type=\"container\" data-settings='{\"background_background\":\"classic\",\"jet_parallax_layout_list\":[],\"animation\":\"none\"}'>\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-4b5d2ca5 e-con-full e-flex e-con e-child\" data-id=\"4b5d2ca5\" data-element_type=\"container\" data-e-type=\"container\" data-settings='{\"background_background\":\"classic\",\"jet_parallax_layout_list\":[],\"animation\":\"none\"}'>\n\t\t\t\t<div class=\"elementor-element elementor-element-d56a223 make-a-booking elementor-widget elementor-widget-wp-widget-gform_widget\" data-id=\"d56a223\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings='{\"_animation\":\"none\"}' data-widget_type=\"wp-widget-gform_widget.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script id=\"wp-dom-ready-js\" src=\"https:\/\/challengesabroad.com\/nz\/wp-includes\/js\/dist\/dom-ready.min.js?ver=3fe927cab37bf38d6a23\"><\/script>\n<script id=\"wp-hooks-js\" src=\"https:\/\/challengesabroad.com\/nz\/wp-includes\/js\/dist\/hooks.min.js?ver=f0f188028580e8dc1255\"><\/script>\n<script id=\"wp-i18n-js\" src=\"https:\/\/challengesabroad.com\/nz\/wp-includes\/js\/dist\/i18n.min.js?ver=1dfe7db3940c23ea9216\"><\/script>\n<script id=\"wp-i18n-js-after\">\nwp.i18n.setLocaleData( { 'text direction\\u0004ltr': [ 'ltr' ] } );\n\/\/# sourceURL=wp-i18n-js-after\n<\/script>\n<script id=\"wp-a11y-js-translations\">\n( function( domain, translations ) {\n\tvar localeData = translations.locale_data[ domain ] || translations.locale_data.messages;\n\tlocaleData[\"\"].domain = domain;\n\twp.i18n.setLocaleData( localeData, domain );\n} )( \"default\", {\"translation-revision-date\":\"2026-09-22 22:51:52+0000\",\"generator\":\"GlotPress\\\/4.1.0\",\"domain\":\"messages\",\"locale_data\":{\"messages\":{\"\":{\"domain\":\"messages\",\"plural-forms\":\"nplurals=2; plural=n != 1;\",\"lang\":\"en_AU\"},\"Notifications\":[\"Notifications\"]}},\"comment\":{\"reference\":\"wp-includes\\\/js\\\/dist\\\/a11y.js\"}} );\n\/\/# sourceURL=wp-a11y-js-translations\n<\/script>\n<script id=\"wp-a11y-js\" src=\"https:\/\/challengesabroad.com\/nz\/wp-includes\/js\/dist\/a11y.min.js?ver=31c6cec5a4ff7aff483d\"><\/script>\n<script id=\"jquery-core-js\" src=\"https:\/\/challengesabroad.com\/nz\/wp-includes\/js\/jquery\/jquery.min.js?ver=3.7.1\"><\/script>\n<script id=\"jquery-migrate-js\" src=\"https:\/\/challengesabroad.com\/nz\/wp-includes\/js\/jquery\/jquery-migrate.min.js?ver=3.4.1\"><\/script>\n<script id=\"gform_json-js\" defer src=\"https:\/\/challengesabroad.com\/nz\/wp-content\/plugins\/gravityforms\/js\/jquery.json.min.js?ver=3.1.3\"><\/script>\n<script id=\"gform_gravityforms-js-extra\">\nvar gf_global = {\"gf_currency_config\":{\"name\":\"New Zealand Dollar\",\"symbol_left\":\"$\",\"symbol_right\":\"\",\"symbol_padding\":\" \",\"thousand_separator\":\",\",\"decimal_separator\":\".\",\"decimals\":2,\"code\":\"NZD\"},\"base_url\":\"https:\/\/challengesabroad.com\/nz\/wp-content\/plugins\/gravityforms\",\"number_formats\":[],\"version_hash\":\"e8b6d442ad78bb68cc39211fd5cdc855\",\"countries\":{\"AF\":\"Afghanistan\",\"AX\":\"\\u00c5land Islands\",\"AL\":\"Albania\",\"DZ\":\"Algeria\",\"AS\":\"American Samoa\",\"AD\":\"Andorra\",\"AO\":\"Angola\",\"AI\":\"Anguilla\",\"AQ\":\"Antarctica\",\"AG\":\"Antigua and Barbuda\",\"AR\":\"Argentina\",\"AM\":\"Armenia\",\"AW\":\"Aruba\",\"AU\":\"Australia\",\"AT\":\"Austria\",\"AZ\":\"Azerbaijan\",\"BS\":\"Bahamas\",\"BH\":\"Bahrain\",\"BD\":\"Bangladesh\",\"BB\":\"Barbados\",\"BY\":\"Belarus\",\"BE\":\"Belgium\",\"BZ\":\"Belize\",\"BJ\":\"Benin\",\"BM\":\"Bermuda\",\"BT\":\"Bhutan\",\"BO\":\"Bolivia\",\"BQ\":\"Bonaire, Sint Eustatius and Saba\",\"BA\":\"Bosnia and Herzegovina\",\"BW\":\"Botswana\",\"BV\":\"Bouvet Island\",\"BR\":\"Brazil\",\"IO\":\"British Indian Ocean Territory\",\"BN\":\"Brunei Darussalam\",\"BG\":\"Bulgaria\",\"BF\":\"Burkina Faso\",\"BI\":\"Burundi\",\"CV\":\"Cape Verde\",\"KH\":\"Cambodia\",\"CM\":\"Cameroon\",\"CA\":\"Canada\",\"KY\":\"Cayman Islands\",\"CF\":\"Central African Republic\",\"TD\":\"Chad\",\"CL\":\"Chile\",\"CN\":\"China\",\"CX\":\"Christmas Island\",\"CC\":\"Cocos Islands\",\"CO\":\"Colombia\",\"KM\":\"Comoros\",\"CD\":\"Congo, Democratic Republic of the\",\"CG\":\"Congo\",\"CK\":\"Cook Islands\",\"CR\":\"Costa Rica\",\"CI\":\"C\\u00f4te d'Ivoire\",\"HR\":\"Croatia\",\"CU\":\"Cuba\",\"CW\":\"Cura\\u00e7ao\",\"CY\":\"Cyprus\",\"CZ\":\"Czechia\",\"DK\":\"Denmark\",\"DJ\":\"Djibouti\",\"DM\":\"Dominica\",\"DO\":\"Dominican Republic\",\"EC\":\"Ecuador\",\"EG\":\"Egypt\",\"SV\":\"El Salvador\",\"GQ\":\"Equatorial Guinea\",\"ER\":\"Eritrea\",\"EE\":\"Estonia\",\"SZ\":\"Eswatini\",\"ET\":\"Ethiopia\",\"FK\":\"Falkland Islands\",\"FO\":\"Faroe Islands\",\"FJ\":\"Fiji\",\"FI\":\"Finland\",\"FR\":\"France\",\"GF\":\"French Guiana\",\"PF\":\"French Polynesia\",\"TF\":\"French Southern Territories\",\"GA\":\"Gabon\",\"GM\":\"Gambia\",\"GE\":\"Georgia\",\"DE\":\"Germany\",\"GH\":\"Ghana\",\"GI\":\"Gibraltar\",\"GR\":\"Greece\",\"GL\":\"Greenland\",\"GD\":\"Grenada\",\"GP\":\"Guadeloupe\",\"GU\":\"Guam\",\"GT\":\"Guatemala\",\"GG\":\"Guernsey\",\"GN\":\"Guinea\",\"GW\":\"Guinea-Bissau\",\"GY\":\"Guyana\",\"HT\":\"Haiti\",\"HM\":\"Heard Island and McDonald Islands\",\"VA\":\"Holy See\",\"HN\":\"Honduras\",\"HK\":\"Hong Kong\",\"HU\":\"Hungary\",\"IS\":\"Iceland\",\"IN\":\"India\",\"ID\":\"Indonesia\",\"IR\":\"Iran\",\"IQ\":\"Iraq\",\"IE\":\"Ireland\",\"IM\":\"Isle of Man\",\"IL\":\"Israel\",\"IT\":\"Italy\",\"JM\":\"Jamaica\",\"JP\":\"Japan\",\"JE\":\"Jersey\",\"JO\":\"Jordan\",\"KZ\":\"Kazakhstan\",\"KE\":\"Kenya\",\"KI\":\"Kiribati\",\"KP\":\"Korea, Democratic People's Republic of\",\"KR\":\"Korea, Republic of\",\"KW\":\"Kuwait\",\"KG\":\"Kyrgyzstan\",\"LA\":\"Lao People's Democratic Republic\",\"LV\":\"Latvia\",\"LB\":\"Lebanon\",\"LS\":\"Lesotho\",\"LR\":\"Liberia\",\"LY\":\"Libya\",\"LI\":\"Liechtenstein\",\"LT\":\"Lithuania\",\"LU\":\"Luxembourg\",\"MO\":\"Macao\",\"MG\":\"Madagascar\",\"MW\":\"Malawi\",\"MY\":\"Malaysia\",\"MV\":\"Maldives\",\"ML\":\"Mali\",\"MT\":\"Malta\",\"MH\":\"Marshall Islands\",\"MQ\":\"Martinique\",\"MR\":\"Mauritania\",\"MU\":\"Mauritius\",\"YT\":\"Mayotte\",\"MX\":\"Mexico\",\"FM\":\"Micronesia\",\"MD\":\"Moldova\",\"MC\":\"Monaco\",\"MN\":\"Mongolia\",\"ME\":\"Montenegro\",\"MS\":\"Montserrat\",\"MA\":\"Morocco\",\"MZ\":\"Mozambique\",\"MM\":\"Myanmar\",\"NA\":\"Namibia\",\"NR\":\"Nauru\",\"NP\":\"Nepal\",\"NL\":\"Netherlands\",\"NC\":\"New Caledonia\",\"NZ\":\"New Zealand\",\"NI\":\"Nicaragua\",\"NE\":\"Niger\",\"NG\":\"Nigeria\",\"NU\":\"Niue\",\"NF\":\"Norfolk Island\",\"MK\":\"North Macedonia\",\"MP\":\"Northern Mariana Islands\",\"NO\":\"Norway\",\"OM\":\"Oman\",\"PK\":\"Pakistan\",\"PW\":\"Palau\",\"PS\":\"Palestine, State of\",\"PA\":\"Panama\",\"PG\":\"Papua New Guinea\",\"PY\":\"Paraguay\",\"PE\":\"Peru\",\"PH\":\"Philippines\",\"PN\":\"Pitcairn\",\"PL\":\"Poland\",\"PT\":\"Portugal\",\"PR\":\"Puerto Rico\",\"QA\":\"Qatar\",\"RE\":\"R\\u00e9union\",\"RO\":\"Romania\",\"RU\":\"Russian Federation\",\"RW\":\"Rwanda\",\"BL\":\"Saint Barth\\u00e9lemy\",\"SH\":\"Saint Helena, Ascension and Tristan da Cunha\",\"KN\":\"Saint Kitts and Nevis\",\"LC\":\"Saint Lucia\",\"MF\":\"Saint Martin\",\"PM\":\"Saint Pierre and Miquelon\",\"VC\":\"Saint Vincent and the Grenadines\",\"WS\":\"Samoa\",\"SM\":\"San Marino\",\"ST\":\"Sao Tome and Principe\",\"SA\":\"Saudi Arabia\",\"SN\":\"Senegal\",\"RS\":\"Serbia\",\"SC\":\"Seychelles\",\"SL\":\"Sierra Leone\",\"SG\":\"Singapore\",\"SX\":\"Sint Maarten\",\"SK\":\"Slovakia\",\"SI\":\"Slovenia\",\"SB\":\"Solomon Islands\",\"SO\":\"Somalia\",\"ZA\":\"South Africa\",\"GS\":\"South Georgia and the South Sandwich Islands\",\"SS\":\"South Sudan\",\"ES\":\"Spain\",\"LK\":\"Sri Lanka\",\"SD\":\"Sudan\",\"SR\":\"Suriname\",\"SJ\":\"Svalbard and Jan Mayen\",\"SE\":\"Sweden\",\"CH\":\"Switzerland\",\"SY\":\"Syria Arab Republic\",\"TW\":\"Taiwan\",\"TJ\":\"Tajikistan\",\"TZ\":\"Tanzania, the United Republic of\",\"TH\":\"Thailand\",\"TL\":\"Timor-Leste\",\"TG\":\"Togo\",\"TK\":\"Tokelau\",\"TO\":\"Tonga\",\"TT\":\"Trinidad and Tobago\",\"TN\":\"Tunisia\",\"TR\":\"T\\u00fcrkiye\",\"TM\":\"Turkmenistan\",\"TC\":\"Turks and Caicos Islands\",\"TV\":\"Tuvalu\",\"UG\":\"Uganda\",\"UA\":\"Ukraine\",\"AE\":\"United Arab Emirates\",\"GB\":\"United Kingdom\",\"US\":\"United States\",\"UY\":\"Uruguay\",\"UM\":\"US Minor Outlying Islands\",\"UZ\":\"Uzbekistan\",\"VU\":\"Vanuatu\",\"VE\":\"Venezuela\",\"VN\":\"Viet Nam\",\"VG\":\"Virgin Islands, British\",\"VI\":\"Virgin Islands, U.S.\",\"WF\":\"Wallis and Futuna\",\"EH\":\"Western Sahara\",\"YE\":\"Yemen\",\"ZM\":\"Zambia\",\"ZW\":\"Zimbabwe\"},\"strings\":{\"newRowAdded\":\"New row added.\",\"rowRemoved\":\"Row removed\",\"formSaved\":\"The form has been saved.  The content contains the link to return and complete the form.\"}};\n\/\/# sourceURL=gform_gravityforms-js-extra\n<\/script>\n<script id=\"gform_gravityforms-js\" defer src=\"https:\/\/challengesabroad.com\/nz\/wp-content\/plugins\/gravityforms\/js\/gravityforms.min.js?ver=3.1.3\"><\/script>\n<script id=\"gform_page_conditional_logic-js\" defer src=\"https:\/\/challengesabroad.com\/nz\/wp-content\/plugins\/gravityforms\/js\/page_conditional_logic.min.js?ver=3.1.3\"><\/script>\n<script id=\"gform_conditional_logic-js-extra\">\nvar gf_legacy = {\"is_legacy\":\"\"};\n\/\/# sourceURL=gform_conditional_logic-js-extra\n<\/script>\n<script id=\"gform_conditional_logic-js\" defer src=\"https:\/\/challengesabroad.com\/nz\/wp-content\/plugins\/gravityforms\/js\/conditional_logic.min.js?ver=3.1.3\"><\/script>\n<script id=\"gform_placeholder-js\" defer src=\"https:\/\/challengesabroad.com\/nz\/wp-content\/plugins\/gravityforms\/js\/placeholders.jquery.min.js?ver=3.1.3\"><\/script>\n<script>\nvar gform;gform||(document.addEventListener(\"gform_main_scripts_loaded\",function(){gform.scriptsLoaded=!0}),document.addEventListener(\"gform\/theme\/scripts_loaded\",function(){gform.themeScriptsLoaded=!0}),window.addEventListener(\"DOMContentLoaded\",function(){gform.domLoaded=!0}),gform={domLoaded:!1,scriptsLoaded:!1,themeScriptsLoaded:!1,isFormEditor:()=>\"function\"==typeof InitializeEditor,callIfLoaded:function(o){return!(!gform.domLoaded||!gform.scriptsLoaded||!gform.themeScriptsLoaded&&!gform.isFormEditor()||(gform.isFormEditor()&&console.warn(\"The use of gform.initializeOnLoaded() is deprecated in the form editor context and will be removed in Gravity Forms 3.1.\"),o(),0))},initializeOnLoaded:function(o){gform.callIfLoaded(o)||(document.addEventListener(\"gform_main_scripts_loaded\",()=>{gform.scriptsLoaded=!0,gform.callIfLoaded(o)}),document.addEventListener(\"gform\/theme\/scripts_loaded\",()=>{gform.themeScriptsLoaded=!0,gform.callIfLoaded(o)}),window.addEventListener(\"DOMContentLoaded\",()=>{gform.domLoaded=!0,gform.callIfLoaded(o)}))},hooks:{action:{},filter:{}},addAction:function(o,r,e,t){gform.addHook(\"action\",o,r,e,t)},addFilter:function(o,r,e,t){gform.addHook(\"filter\",o,r,e,t)},doAction:function(o){gform.doHook(\"action\",o,arguments)},applyFilters:function(o){return gform.doHook(\"filter\",o,arguments)},removeAction:function(o,r){gform.removeHook(\"action\",o,r)},removeFilter:function(o,r,e){gform.removeHook(\"filter\",o,r,e)},addHook:function(o,r,e,t,n){null==gform.hooks[o][r]&&(gform.hooks[o][r]=[]);var d=gform.hooks[o][r];null==n&&(n=r+\"_\"+d.length),gform.hooks[o][r].push({tag:n,callable:e,priority:t=null==t?10:t})},doHook:function(r,o,e){var t;if(e=Array.prototype.slice.call(e,1),null!=gform.hooks[r][o]&&((o=gform.hooks[r][o]).sort(function(o,r){return o.priority-r.priority}),o.forEach(function(o){\"function\"!=typeof(t=o.callable)&&(t=window[t]),\"action\"==r?t.apply(null,e):e[0]=t.apply(null,e)})),\"filter\"==r)return e[0]},removeHook:function(o,r,t,n){var e;null!=gform.hooks[o][r]&&(e=(e=gform.hooks[o][r]).filter(function(o,r,e){return!!(null!=n&&n!=o.tag||null!=t&&t!=o.priority)}),gform.hooks[o][r]=e)}});\n<\/script>\n\n                <div class=\"gf_browser_gecko gform_wrapper gform-theme gform-theme--foundation gform-theme--framework gform-theme--orbital\" data-form-theme=\"orbital\" data-form-index=\"0\" id=\"gform_wrapper_14\" style=\"display:none\"><style>#gform_wrapper_14[data-form-index=\"0\"].gform-theme{--gf-color-primary: #204ce5;--gf-color-primary-rgb: 32, 76, 229;--gf-color-primary-contrast: #fff;--gf-color-primary-contrast-rgb: 255, 255, 255;--gf-color-primary-darker: #001AB3;--gf-color-primary-lighter: #527EFF;--gf-color-secondary: #fff;--gf-color-secondary-rgb: 255, 255, 255;--gf-color-secondary-contrast: #112337;--gf-color-secondary-contrast-rgb: 17, 35, 55;--gf-color-secondary-darker: #F5F5F5;--gf-color-secondary-lighter: #FFFFFF;--gf-color-out-ctrl-light: rgba(17, 35, 55, 0.1);--gf-color-out-ctrl-light-rgb: 17, 35, 55;--gf-color-out-ctrl-light-darker: rgba(104, 110, 119, 0.35);--gf-color-out-ctrl-light-lighter: #F5F5F5;--gf-color-out-ctrl-dark: #585e6a;--gf-color-out-ctrl-dark-rgb: 88, 94, 106;--gf-color-out-ctrl-dark-darker: #112337;--gf-color-out-ctrl-dark-lighter: rgba(17, 35, 55, 0.65);--gf-color-in-ctrl: #fff;--gf-color-in-ctrl-rgb: 255, 255, 255;--gf-color-in-ctrl-contrast: #112337;--gf-color-in-ctrl-contrast-rgb: 17, 35, 55;--gf-color-in-ctrl-darker: #F5F5F5;--gf-color-in-ctrl-lighter: #FFFFFF;--gf-color-in-ctrl-primary: #204ce5;--gf-color-in-ctrl-primary-rgb: 32, 76, 229;--gf-color-in-ctrl-primary-contrast: #fff;--gf-color-in-ctrl-primary-contrast-rgb: 255, 255, 255;--gf-color-in-ctrl-primary-darker: #001AB3;--gf-color-in-ctrl-primary-lighter: #527EFF;--gf-color-in-ctrl-light: rgba(17, 35, 55, 0.1);--gf-color-in-ctrl-light-rgb: 17, 35, 55;--gf-color-in-ctrl-light-darker: rgba(104, 110, 119, 0.35);--gf-color-in-ctrl-light-lighter: #F5F5F5;--gf-color-in-ctrl-dark: #585e6a;--gf-color-in-ctrl-dark-rgb: 88, 94, 106;--gf-color-in-ctrl-dark-darker: #112337;--gf-color-in-ctrl-dark-lighter: rgba(17, 35, 55, 0.65);--gf-radius: 3px;--gf-font-size-secondary: 14px;--gf-font-size-tertiary: 13px;--gf-icon-ctrl-number: url(\"data:image\/svg+xml,%3Csvg width='8' height='14' viewBox='0 0 8 14' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M4 0C4.26522 5.96046e-08 4.51957 0.105357 4.70711 0.292893L7.70711 3.29289C8.09763 3.68342 8.09763 4.31658 7.70711 4.70711C7.31658 5.09763 6.68342 5.09763 6.29289 4.70711L4 2.41421L1.70711 4.70711C1.31658 5.09763 0.683417 5.09763 0.292893 4.70711C-0.0976311 4.31658 -0.097631 3.68342 0.292893 3.29289L3.29289 0.292893C3.48043 0.105357 3.73478 0 4 0ZM0.292893 9.29289C0.683417 8.90237 1.31658 8.90237 1.70711 9.29289L4 11.5858L6.29289 9.29289C6.68342 8.90237 7.31658 8.90237 7.70711 9.29289C8.09763 9.68342 8.09763 10.3166 7.70711 10.7071L4.70711 13.7071C4.31658 14.0976 3.68342 14.0976 3.29289 13.7071L0.292893 10.7071C-0.0976311 10.3166 -0.0976311 9.68342 0.292893 9.29289Z' fill='rgba(17, 35, 55, 0.65)'\/%3E%3C\/svg%3E\");--gf-icon-ctrl-select: url(\"data:image\/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M0.292893 0.292893C0.683417 -0.097631 1.31658 -0.097631 1.70711 0.292893L5 3.58579L8.29289 0.292893C8.68342 -0.0976311 9.31658 -0.0976311 9.70711 0.292893C10.0976 0.683417 10.0976 1.31658 9.70711 1.70711L5.70711 5.70711C5.31658 6.09763 4.68342 6.09763 4.29289 5.70711L0.292893 1.70711C-0.0976311 1.31658 -0.0976311 0.683418 0.292893 0.292893Z' fill='rgba(17, 35, 55, 0.65)'\/%3E%3C\/svg%3E\");--gf-icon-ctrl-search: url(\"data:image\/svg+xml,%3Csvg width='640' height='640' xmlns='http:\/\/www.w3.org\/2000\/svg'%3E%3Cpath d='M256 128c-70.692 0-128 57.308-128 128 0 70.691 57.308 128 128 128 70.691 0 128-57.309 128-128 0-70.692-57.309-128-128-128zM64 256c0-106.039 85.961-192 192-192s192 85.961 192 192c0 41.466-13.146 79.863-35.498 111.248l154.125 154.125c12.496 12.496 12.496 32.758 0 45.254s-32.758 12.496-45.254 0L367.248 412.502C335.862 434.854 297.467 448 256 448c-106.039 0-192-85.962-192-192z' fill='rgba(17, 35, 55, 0.65)'\/%3E%3C\/svg%3E\");--gf-label-space-y-secondary: var(--gf-label-space-y-md-secondary);--gf-ctrl-border-color: #686e77;--gf-ctrl-size: var(--gf-ctrl-size-md);--gf-ctrl-label-color-primary: #112337;--gf-ctrl-label-color-secondary: #112337;--gf-ctrl-choice-size: var(--gf-ctrl-choice-size-md);--gf-ctrl-checkbox-check-size: var(--gf-ctrl-checkbox-check-size-md);--gf-ctrl-radio-check-size: var(--gf-ctrl-radio-check-size-md);--gf-ctrl-btn-font-size: var(--gf-ctrl-btn-font-size-md);--gf-ctrl-btn-padding-x: var(--gf-ctrl-btn-padding-x-md);--gf-ctrl-btn-size: var(--gf-ctrl-btn-size-md);--gf-ctrl-btn-border-color-secondary: #686e77;--gf-ctrl-btn-bg-color-hover-tertiary: #EBEBEB;--gf-field-img-choice-size: var(--gf-field-img-choice-size-md);--gf-field-img-choice-card-space: var(--gf-field-img-choice-card-space-md);--gf-field-img-choice-check-ind-size: var(--gf-field-img-choice-check-ind-size-md);--gf-field-img-choice-check-ind-icon-size: var(--gf-field-img-choice-check-ind-icon-size-md);--gf-field-pg-steps-number-color: rgba(17, 35, 55, 0.8);}<\/style><div id=\"gf_14\" class=\"gform_anchor\" tabindex=\"-1\"><\/div>\n                        <div class=\"gform_heading\">\n                            <h2 class=\"gform_title\">Make A Booking<\/h2>\n                            <p class=\"gform_description\">Sign up to your program using the booking form below<\/p>\n\t\t\t\t\t\t\t<p class=\"gform_required_legend\">\"<span class=\"gfield_required gfield_required_asterisk\">*<\/span>\" indicates required fields<\/p>\n                        <\/div><form method=\"post\" enctype=\"multipart\/form-data\" id=\"gform_14\" action=\"\/nz\/wp-json\/wp\/v2\/pages\/20884#gf_14\" data-formid=\"14\" novalidate><div id=\"payments-sdk__contingency-lightbox\"><\/div><input id=\"partial_entry_id_14\" class=\"partial_entry_id\" type=\"hidden\" name=\"partial_entry_id\" value=\"pending\" data-form_id=\"14\"><div id=\"gf_page_steps_14\" class=\"gf_page_steps\"><div id=\"gf_step_14_1\" class=\"gf_step gf_step_active gf_step_first\"><span class=\"gf_step_number\">1<\/span><span class=\"gf_step_label\">Booking Details<\/span><\/div><div id=\"gf_step_14_2\" class=\"gf_step gf_step_next gf_step_pending\"><span class=\"gf_step_number\">2<\/span><span class=\"gf_step_label\">Personal Details<\/span><\/div><div id=\"gf_step_14_3\" class=\"gf_step gf_step_pending\"><span class=\"gf_step_number\">3<\/span><span class=\"gf_step_label\">Extras<\/span><\/div><div id=\"gf_step_14_4\" class=\"gf_step gf_step_last gf_step_pending\"><span class=\"gf_step_number\">4<\/span><span class=\"gf_step_label\">Complete Your Booking<\/span><\/div><\/div>\n                        <div class=\"gform-body gform_body\"><div id=\"gform_page_14_1\" class=\"gform_page \" data-js=\"page-field-id-0\">\n\t\t\t\t\t<div class=\"gform_page_fields\"><div id=\"gform_fields_14\" class=\"gform_fields top_label form_sublabel_below description_below validation_below\"><div id=\"field_14_151\" class=\"gfield gfield--type-honeypot gform_validation_container field_sublabel_below gfield--has-description field_description_below field_validation_below gfield_visibility_visible\"><label class=\"gfield_label gform-field-label\" for=\"input_14_151\"><span class=\"gform-field-label__text\">Email<\/span><\/label><div class=\"ginput_container\"><input name=\"input_151\" id=\"input_14_151\" type=\"text\" value=\"\" autocomplete=\"new-password\"><\/div><div class=\"gfield_description\" id=\"gfield_description_14_151\">This field is for validation purposes and should be left unchanged.<\/div><\/div><div id=\"field_14_137\" class=\"gfield gfield--type-html gfield--input-type-html gfield--width-full h-c-title gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\">Booking Type<\/div><fieldset id=\"field_14_136\" class=\"gfield gfield--type-radio gfield--type-choice gfield--input-type-radio gf_list_3col gfield--width-full field_sublabel_below gfield--no-description field_description_below hidden_label field_validation_below gfield_visibility_visible gfield--choice-align-columns\"><legend class=\"gfield_label gform-field-label\"><span class=\"gform-field-label__text\">Booking Type<\/span><\/legend><div class=\"ginput_container ginput_container_radio\"><div class=\"gfield_radio\" id=\"input_14_136\">\n\t\t\t<div class=\"gchoice gchoice_14_136_0\">\n\t\t\t\t\t<input class=\"gfield-choice-input\" name=\"input_136\" type=\"radio\" value=\"Standard Booking\" id=\"choice_14_136_0\" onchange=\"gformToggleRadioOther( this )\">\n\t\t\t\t\t<label for=\"choice_14_136_0\" id=\"label_14_136_0\" class=\"gform-field-label gform-field-label--type-inline\">Standard Booking<\/label>\n\t\t\t<\/div>\n\t\t\t<div class=\"gchoice gchoice_14_136_1\">\n\t\t\t\t\t<input class=\"gfield-choice-input\" name=\"input_136\" type=\"radio\" value=\"Faculty Booking (Student or Staff)\" id=\"choice_14_136_1\" onchange=\"gformToggleRadioOther( this )\">\n\t\t\t\t\t<label for=\"choice_14_136_1\" id=\"label_14_136_1\" class=\"gform-field-label gform-field-label--type-inline\">Faculty Booking (Student or Staff)<\/label>\n\t\t\t<\/div>\n\t\t\t<div class=\"gchoice gchoice_14_136_2\">\n\t\t\t\t\t<input class=\"gfield-choice-input\" name=\"input_136\" type=\"radio\" value=\"University Invoiced (Reg. only)\" id=\"choice_14_136_2\" onchange=\"gformToggleRadioOther( this )\">\n\t\t\t\t\t<label for=\"choice_14_136_2\" id=\"label_14_136_2\" class=\"gform-field-label gform-field-label--type-inline\">University Invoiced (Reg. only)<\/label>\n\t\t\t<\/div><\/div><\/div><\/fieldset><div id=\"field_14_83\" class=\"gfield gfield--type-text gfield--input-type-text gfield--width-full field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_hidden\"><label class=\"gfield_label gform-field-label\" for=\"input_14_83\"><span class=\"gform-field-label__text\">TripID<\/span><\/label><div class=\"ginput_container ginput_container_text\"><input name=\"input_83\" id=\"input_14_83\" type=\"text\" value=\"\" class=\"large\" aria-invalid=\"false\"><\/div><\/div><div id=\"field_14_127\" class=\"gfield gfield--type-text gfield--input-type-text gfield--width-full field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_hidden\"><label class=\"gfield_label gform-field-label\" for=\"input_14_127\"><span class=\"gform-field-label__text\">Program Price<\/span><\/label><div class=\"ginput_container ginput_container_text\"><input name=\"input_127\" id=\"input_14_127\" type=\"text\" value=\"\" class=\"large\" aria-invalid=\"false\"><\/div><\/div><div id=\"field_14_135\" class=\"gfield gfield--type-text gfield--input-type-text gfield--width-full field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_hidden\"><label class=\"gfield_label gform-field-label\" for=\"input_14_135\"><span class=\"gform-field-label__text\">Extension Price<\/span><\/label><div class=\"ginput_container ginput_container_text\"><input name=\"input_135\" id=\"input_14_135\" type=\"text\" value=\"\" class=\"large\" aria-invalid=\"false\"><\/div><\/div><div id=\"field_14_129\" class=\"gfield gfield--type-text gfield--input-type-text gfield--width-full field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_hidden\"><label class=\"gfield_label gform-field-label\" for=\"input_14_129\"><span class=\"gform-field-label__text\">Extension Dates<\/span><\/label><div class=\"ginput_container ginput_container_text\"><input name=\"input_129\" id=\"input_14_129\" type=\"text\" value=\"\" class=\"large\" aria-invalid=\"false\"><\/div><\/div><div id=\"field_14_86\" class=\"gfield gfield--type-html gfield--input-type-html gfield--width-full h-c-title gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\">Your Chosen Trip<\/div><div id=\"field_14_5\" class=\"gfield gfield--type-select gfield--input-type-select gfield--width-half gf_readonly gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"><label class=\"gfield_label gform-field-label\" for=\"input_14_5\"><span class=\"gform-field-label__text\">Your Trip Option<\/span><span class=\"gfield_required\"><span class=\"gfield_required gfield_required_asterisk\">*<\/span><\/span><\/label><div class=\"ginput_container ginput_container_select\"><select name=\"input_5\" id=\"input_14_5\" class=\"large gfield_select\" aria-required=\"true\" aria-invalid=\"false\"><option value=\"\" selected class=\"gf_placeholder\">Select a trip<\/option><option value=\"cambodia-health-promotion-challenge\">Cambodia: Health Promotion Challenge<\/option><option value=\"cambodia-social-impact-challenge\">Cambodia: Social Impact Challenge<\/option><option value=\"cambodia-community-paramedic\">Cambodia: Community Paramedic Challenge<\/option><option value=\"himalaya-social-impact-challenge\">Himalaya: Social Impact Challenge<\/option><option value=\"himalaya-community-paramedic\">Himalaya: Community Paramedic Challenge<\/option><option value=\"himalaya-health-promotion-challenge\">Himalaya: Health Promotion Challenge<\/option><option value=\"himalaya-challenge\">Himalaya: Challenge<\/option><option value=\"laos-health-promotion-challenge\">Laos: Health Promotion Challenge<\/option><option value=\"laos-social-impact-challenge\">Laos: Social Impact Challenge<\/option><option value=\"laos-community-paramedic\">Laos: Community Paramedic Challenge<\/option><option value=\"nepal-community-paramedic\">Nepal: Community Paramedic Challenge<\/option><option value=\"nepal-social-impact-challenge\">Nepal: Social Impact Challenge<\/option><option value=\"nepal-climate-action-challenge\">Nepal: Climate Action Challenge<\/option><option value=\"nepal-health-promotion-challenge\">Nepal: Health Promotion Challenge<\/option><option value=\"nepal-sports-leadership-challenge\">Nepal: Sports Leadership Challenge<\/option><option value=\"panama-social-impact-challenge\">Panama: Social Impact Challenge<\/option><option value=\"panama-turtle-conservation-challenge\">Panama: Turtle Conservation Challenge<\/option><option value=\"peru-social-impact-challenge\">Peru: Social Impact Challenge<\/option><option value=\"machu-picchu-challenge\">Peru: Machu Picchu Challenge<\/option><option value=\"peru-community-paramedic\">Peru: Community Paramedic Challenge<\/option><option value=\"peru-sports-leadership-challenge\">Peru: Sports Leadership Challenge<\/option><option value=\"peru-health-promotion-challenge\">Peru: Health Promotion Challenge<\/option><option value=\"tanzania-social-impact-challenge\">Tanzania: Social Impact Challenge<\/option><option value=\"tanzania-sports-leadership-challenge\">Tanzania: Sports Leadership Challenge<\/option><option value=\"tanzania-health-promotion-challenge\">Tanzania: Health Promotion Challenge<\/option><option value=\"thailand-health-promotion-challenge\">Thailand: Health Promotion Challenge<\/option><option value=\"thailand-community-paramedic\">Thailand: Community Paramedic Challenge<\/option><option value=\"thailand-oral-health-promotion-challenge\">Thailand: Oral Health Promotion Challenge<\/option><option value=\"thailand-social-impact-challenge\">Thailand: Social Impact Challenge<\/option><option value=\"thailand-elephants-and-hill-tribes\">Thailand: Elephant and Hill Tribes Challenge<\/option><option value=\"uganda-social-impact-challenge\">Uganda: Social Impact Challenge<\/option><option value=\"fiji-health-promotion-challenge\">Fiji Health Promotion Challenge<\/option><option value=\"fiji-social-impact-challenge\">Fiji Social Impact Challenge<\/option><\/select><\/div><\/div><div id=\"field_14_82\" class=\"gfield gfield--type-select gfield--input-type-select gfield--width-half gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"><label class=\"gfield_label gform-field-label\" for=\"input_14_82\"><span class=\"gform-field-label__text\">Your Trip Dates<\/span><span class=\"gfield_required\"><span class=\"gfield_required gfield_required_asterisk\">*<\/span><\/span><\/label><div class=\"ginput_container ginput_container_select\"><select name=\"input_82\" id=\"input_14_82\" class=\"gfield_select\" aria-required=\"true\" aria-invalid=\"false\"><option value=\"Select a date\" selected>Select a date<\/option><\/select><\/div><\/div><div id=\"field_14_147\" class=\"gfield gfield--type-html gfield--input-type-html gfield--width-full gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"><!--\n  CASCADING TRIP NAME \u2192 TRIP DATES \u2014 ON THE LIVE FORM (field IDs 5 \/ 82)\n  ============================================================\n  *** THIS IS THE STAGING VERSION - BOOKING_TYPE_FIELD_ID = '136' ***\n  *** Live uses '137' for the same radio group - DO NOT paste this   ***\n  *** file into the LIVE site's WPCode snippet, or vice versa. Use   ***\n  *** alt-booking-trip-dates-cascade-LIVE.html for live.             ***\n  ============================================================\n  Builds on the existing finalised booking form (Standard\/Faculty\/\n  University Invoiced) rather than a separate form. Trip Dates\n  (field 82) is now a real GF Select field (converted from Text via\n  gf-field-82-convert-to-select.php, keeping its ID so every existing\n  integration\/merge tag that references {Trip Dates:82} still works).\n  This script rebuilds its option list to only show the dates that\n  belong to whichever trip is currently selected in Trip Name (5),\n  since a single trip can have more than one departure date. Data\n  comes from the ACF \"Trip Dates\" field (see acf-trip-dates-\n  snippet.php), not GF's own static choice list, since GF can't vary\n  a field's choices based on another field's value on its own.\n\n  LOCKED VS INTERACTIVE\n  Trip Name (5) and Trip Dates (82) both stay read-only\/locked when a\n  visitor arrives via a \"Book Now\" link with &trip=\/&dates= already\n  set (same UX as before this change) - this script adds the\n  ca-trip-prefilled class to #gform_wrapper_1 when that happens, and\n  booking-form-master-FINAL-tidy.css only applies the locked styling\n  while that class is present. Land on the form without those params\n  (or with a slug\/date that doesn't match anything) and both fields\n  stay fully interactive instead, so a visitor can pick a trip and\n  then a date themselves.\n\n  GF ADMIN SETUP\n  1. gf-field-82-convert-to-select.php active (converts field 82 to\n     a Select at render time, keeping ID 82).\n  2. Two Hidden fields already exist and are reused as-is: Trip Cost\n     (127) and a Trip ID field (83) - this script writes into them\n     whenever a date option is chosen, same as the rest of the form.\n  3. Add this file as a new HTML field, positioned AFTER both Trip\n     Name (5) and Trip Dates (82) on the page.\n  4. Requires acf-trip-dates-snippet.php active and the \"Trip Dates\"\n     ACF field on the booking page filled in (see that file's format).\n\n  URL PREFILL BEHAVIOUR (unchanged from existing Book Now links)\n  - &trip=<slug> - selects Trip Name.\n  - &dates=<exact date text, URL-encoded> - selects that specific\n    date option in Trip Dates, once the trip's date list has been\n    built. If the trip has only ONE date option, it's auto-selected\n    even without &dates= being present.\n  - &price= \/ &id= are no longer read for trips using this system -\n    price and Trip ID are looked up from the ACF data based on which\n    trip+date is selected. Harmless if a link still carries them.\n\n  UPDATED 2026-09-14 \u2014 FACULTY\/UNIVERSITY INVOICED PRICING\n  Trip Cost (127) is now looked up per Booking Type, not just per\n  trip+date: whenever the checked Booking Type radio is anything\n  other than \"Standard Booking\", this reads each date option's\n  optional FacultyPrice value instead of its standard Price (see\n  acf-trip-dates-snippet.php for the ACF format) - falls back to the\n  standard price automatically if a date didn't specify one, so\n  nothing needs updating for trips that don't need Faculty-specific\n  pricing. Recalculates live if Booking Type changes after a date is\n  already selected (e.g. the university-prefill script's synthetic\n  selection), not just on the next date change.\n\n  UPDATED 2026-09-14 (again) - TRIP DATES STAYS EDITABLE FOR FACULTY\/UNI\n  Trip Name (5) still locks read-only whenever a trip was matched\n  from the URL, same as before, regardless of Booking Type. Trip\n  Dates (82) now only locks read-only for STANDARD bookings - for\n  Faculty\/University Invoiced, the matched date still preselects\n  exactly as before, but the dropdown stays fully interactive so a\n  coordinator can pick a different available date for their group if\n  the link's default doesn't suit. If a link's &dates= doesn't match\n  anything at all (or is missing), Trip Dates was already left\n  interactive for every booking type prior to this change - that part\n  doesn't change either way. Uses a separate class (ca-dates-locked)\n  from Trip Name's own lock class (ca-trip-prefilled), since the two\n  fields can now be locked independently of each other -\n  booking-form-master-FINAL-tidy.css reads ca-dates-locked for field\n  82's read-only styling instead of ca-trip-prefilled.\n\n  UPDATED 2026-09-15 - TRIP NAME ALWAYS LOCKED FOR FACULTY\/UNI\n  Trip Name (5) now locks read-only whenever Booking Type is Faculty\n  or University Invoiced and a trip was matched from the URL - even if\n  &dates= didn't also match (previously required BOTH to match, same\n  as Standard still does). These private university-partner trips are\n  hidden from the Trip Name dropdown entirely (see gf-field-5-hide-\n  private-trips.php) and only ever reachable via their own Book Now\n  link, so once a visitor has arrived that way there's no legitimate\n  reason to let them change it - unlike Trip Dates, which intentionally\n  stays editable for Faculty\/Uni (a coordinator can still pick a\n  different available date). See applyTripNameLockState().\n\n  FIXED 2026-09-15 - BOOKING_TYPE_FIELD_ID CORRECTED FOR STAGING\n  This was '137'. Live-tested the actual DOM on staging (the Booking\n  Type radios weren't reacting to &uni=1\/&type=faculty at all) and\n  found field 137 is really the empty HTML \"Booking Type\" section\n  heading - the Standard\/Faculty\/University Invoiced RADIO GROUP\n  itself is field 136 on staging. That single wrong ID meant\n  isNonStandardBookingType() below was querying a field with no radio\n  inputs in it at all, so it silently always returned false (treated\n  every booking as Standard) no matter which link a visitor arrived\n  from - which explains every symptom seen: &uni=1 not locking Trip\n  Name, &type=faculty incorrectly locking Trip Dates too, AND the\n  Booking-Type-change listener a few lines down never firing.\n\n  NOTE 2026-09-16: confirmed LIVE has these two IDs the OPPOSITE way\n  round from staging (live: 137=radio, 136=heading). The two sites are\n  NOT interchangeable for this one constant - always re-verify against\n  the actual DOM (inspect #field_1_136 and #field_1_137, whichever is\n  the <fieldset class=\"... gfield--type-radio ...\">) before ever\n  copying this file between the two. Use the matching -LIVE \/ -STAGING\n  suffixed file for whichever site you're pasting into.\n  ============================================================\n-->\n<script>\n(function () {\n  var scriptEl = document.currentScript;\n  var wrapper = scriptEl ? scriptEl.closest('.gform_wrapper') : null;\n  var formId = wrapper ? wrapper.id.replace('gform_wrapper_', '') : '1';\n\n  var TRIP_NAME_FIELD_ID = '5';\n  var TRIP_DATES_FIELD_ID = '82';\n  var PRICE_FIELD_ID = '127';\n  var TRIP_ID_FIELD_ID = '83';\n  var PREFILLED_LOCK_CLASS = 'ca-trip-prefilled';\n  \/\/ UPDATED 2026-09-14 (again): Trip Dates now locks independently of\n  \/\/ Trip Name - see the doc comment above (\"TRIP DATES STAYS EDITABLE\n  \/\/ FOR FACULTY\/UNI\").\n  var DATES_LOCK_CLASS = 'ca-dates-locked';\n  \/\/ Tracks the last successful date match from prefillFromUrl(), so\n  \/\/ the Booking Type change listener can re-evaluate the date lock\n  \/\/ without needing to redo the whole prefill\/rebuild flow (which\n  \/\/ would also reset whatever date is currently selected).\n  var lastDateMatched = false;\n  \/\/ UPDATED 2026-09-15: tracks the last successful TRIP match, so the\n  \/\/ Booking Type change listener can also re-evaluate Trip Name's own\n  \/\/ lock (see applyTripNameLockState() below) - needed now that Trip\n  \/\/ Name locks under a different rule for Faculty\/University Invoiced\n  \/\/ than for Standard.\n  var lastTripMatched = false;\n\n  \/\/ UPDATED 2026-09-14: Faculty\/University Invoiced pricing. Per\n  \/\/ Tiffany's decision, these two booking types can legitimately be\n  \/\/ charged a different trip cost than Standard for the exact same\n  \/\/ trip+date - ACF's Trip Dates textarea now supports an optional\n  \/\/ 4th value (FacultyPrice) per date line (see acf-trip-dates-\n  \/\/ snippet.php). Any booking type other than \"Standard Booking\" uses\n  \/\/ that price instead of the standard one; if a date line didn't\n  \/\/ specify a FacultyPrice, the PHP side already falls back to the\n  \/\/ standard price, so this always has a valid number to read either\n  \/\/ way.\n  \/\/ FIXED 2026-09-15: this is '136' on STAGING (live uses '137' for\n  \/\/ the same radio group - see the big note at the top of this file).\n  var BOOKING_TYPE_FIELD_ID = '136';\n  var BOOKING_TYPE_STANDARD_VALUE = 'Standard Booking';\n\n  function getTripData() {\n    return (window.CA_TRIP_DATES && typeof window.CA_TRIP_DATES === 'object') ? window.CA_TRIP_DATES : {};\n  }\n\n  function getParam(name) {\n    var params = new URLSearchParams(window.location.search);\n    return params.get(name);\n  }\n\n  function fireChange(el) {\n    var evt;\n    try {\n      evt = new Event('change', { bubbles: true });\n    } catch (e) {\n      evt = document.createEvent('HTMLEvents');\n      evt.initEvent('change', true, false);\n    }\n    el.dispatchEvent(evt);\n  }\n\n  function formatCurrency(amount) {\n    if (isNaN(amount)) amount = 0;\n    return '$' + amount.toLocaleString('en-AU', { minimumFractionDigits: 2, maximumFractionDigits: 2 });\n  }\n\n  \/\/ Rebuilds the Trip Dates <select> options to match whichever trip\n  \/\/ is currently selected in Trip Name - reading the TEXT of the\n  \/\/ selected option (not its value\/slug), since the ACF data is\n  \/\/ keyed by the trip's display name to stay human-editable. Returns\n  \/\/ true if preselectDates was found and selected, false otherwise -\n  \/\/ used by prefillFromUrl() to decide whether to lock the fields.\n  function rebuildDateOptions(preselectDates) {\n    var tripSelect = document.getElementById('input_' + formId + '_' + TRIP_NAME_FIELD_ID);\n    var dateSelect = document.getElementById('input_' + formId + '_' + TRIP_DATES_FIELD_ID);\n    if (!tripSelect || !dateSelect) return false;\n\n    var selectedOption = tripSelect.options[tripSelect.selectedIndex];\n    var tripName = selectedOption ? selectedOption.text.trim() : '';\n    var tripData = getTripData();\n    var options = tripData[tripName] || [];\n\n    \/\/ Clear existing options and rebuild from scratch.\n    dateSelect.innerHTML = '';\n\n    var placeholder = document.createElement('option');\n    placeholder.value = '';\n    placeholder.textContent = options.length ? 'Select a date' : 'Select a date';\n    dateSelect.appendChild(placeholder);\n\n    for (var i = 0; i < options.length; i++) {\n      var opt = options[i];\n      var optionEl = document.createElement('option');\n      optionEl.value = opt.dates;\n      \/\/ FIX 2026-09-11: price removed from the visible option text per\n      \/\/ request - was \"21 Nov 2026 - 5 Dec 2026 ($2,950.00)\", now just\n      \/\/ the date range. Price is still tracked via data-price and still\n      \/\/ written into the hidden Price field (127) same as before - only\n      \/\/ the visible label changed.\n      optionEl.textContent = opt.dates;\n      optionEl.setAttribute('data-price', opt.price);\n      \/\/ UPDATED 2026-09-14: Faculty\/University Invoiced price - falls\n      \/\/ back to the standard price server-side already if a date line\n      \/\/ didn't specify one, so this is always a valid number.\n      optionEl.setAttribute('data-faculty-price', opt.facultyPrice);\n      optionEl.setAttribute('data-trip-id', opt.tripId);\n      dateSelect.appendChild(optionEl);\n    }\n\n    \/\/ Auto-select: if a specific date was requested (URL prefill) and\n    \/\/ it exists in this trip's list, pick it. Otherwise, if this trip\n    \/\/ only has ONE date option, pick that automatically since there's\n    \/\/ nothing to actually choose between.\n    var matched = false;\n    if (preselectDates) {\n      for (var j = 0; j < dateSelect.options.length; j++) {\n        if (dateSelect.options[j].value === preselectDates) {\n          dateSelect.selectedIndex = j;\n          matched = true;\n          break;\n        }\n      }\n    } else if (options.length === 1) {\n      dateSelect.selectedIndex = 1; \/\/ index 0 is the placeholder\n    }\n\n    fireChange(dateSelect);\n    updatePriceAndTripId();\n    return matched;\n  }\n\n  \/\/ UPDATED 2026-09-14: true when the currently checked Booking Type\n  \/\/ radio is anything OTHER than \"Standard Booking\" (i.e. Faculty or\n  \/\/ University Invoiced) - same lookup-by-label-text pattern used\n  \/\/ elsewhere on this form (university-prefill script, Faculty\n  \/\/ summary's Student\/Staff check), rather than relying on a specific\n  \/\/ choice input ID that shifts if choices are reordered in GF admin.\n  function isNonStandardBookingType() {\n    if (!wrapper) return false;\n    var checked = wrapper.querySelector('#field_' + formId + '_' + BOOKING_TYPE_FIELD_ID + ' input[type=\"radio\"]:checked');\n    if (!checked) return false;\n    var label = wrapper.querySelector('label[for=\"' + checked.id + '\"]');\n    var labelText = label ? label.textContent.trim().toLowerCase() : '';\n    return labelText !== BOOKING_TYPE_STANDARD_VALUE.toLowerCase();\n  }\n\n  \/\/ Writes Price\/TripID from whichever date option is currently\n  \/\/ selected into the two existing hidden fields (127\/83) - same\n  \/\/ role they already play elsewhere on this form, just populated by\n  \/\/ a choice here instead of a URL param. UPDATED 2026-09-14: reads\n  \/\/ data-faculty-price instead of data-price when the current Booking\n  \/\/ Type isn't Standard, so Faculty\/University Invoiced get their own\n  \/\/ price for the same trip+date when ACF specifies one.\n  function updatePriceAndTripId() {\n    var dateSelect = document.getElementById('input_' + formId + '_' + TRIP_DATES_FIELD_ID);\n    var priceField = document.getElementById('input_' + formId + '_' + PRICE_FIELD_ID);\n    var tripIdField = document.getElementById('input_' + formId + '_' + TRIP_ID_FIELD_ID);\n    if (!dateSelect) return;\n\n    var selected = dateSelect.options[dateSelect.selectedIndex];\n    var priceAttr = isNonStandardBookingType() ? 'data-faculty-price' : 'data-price';\n    var price = selected ? selected.getAttribute(priceAttr) : '';\n    var tripId = selected ? selected.getAttribute('data-trip-id') : '';\n\n    if (priceField) priceField.value = price || '';\n    if (tripIdField) tripIdField.value = tripId || '';\n\n    \/\/ Belt-and-braces: let GF recalculate anything hooked to product\n    \/\/ pricing, same pattern used throughout the finalised form.\n    if (window.gform && gform.addFilter && priceField) {\n      fireChange(priceField);\n    }\n  }\n\n  function selectTripBySlug(slug) {\n    var tripSelect = document.getElementById('input_' + formId + '_' + TRIP_NAME_FIELD_ID);\n    if (!tripSelect) return false;\n    for (var i = 0; i < tripSelect.options.length; i++) {\n      if (tripSelect.options[i].value === slug) {\n        tripSelect.selectedIndex = i;\n        return true;\n      }\n    }\n    return false;\n  }\n\n  \/\/ Adds\/removes ca-trip-prefilled on the form wrapper - CSS only\n  \/\/ locks Trip Name while that class is present. Trip Dates has its\n  \/\/ own separate lock, see applyDatesLockState() below.\n  function setLocked(locked) {\n    if (!wrapper) return;\n    if (locked) {\n      wrapper.classList.add(PREFILLED_LOCK_CLASS);\n    } else {\n      wrapper.classList.remove(PREFILLED_LOCK_CLASS);\n    }\n  }\n\n  \/\/ UPDATED 2026-09-15: Trip Name's own lock rule, now DIFFERENT for\n  \/\/ Faculty\/University Invoiced than for Standard. These private\n  \/\/ uni\/faculty trips are hidden from the Trip Name dropdown entirely\n  \/\/ (see gf-field-5-hide-private-trips.php) and only ever reachable via\n  \/\/ their own Book Now link - so once one of those links has selected a\n  \/\/ trip, Trip Name stays locked for the rest of the booking regardless\n  \/\/ of whether &dates= also matched (a coordinator can still pick a\n  \/\/ different date in Trip Dates itself, which keeps its own separate,\n  \/\/ unchanged lock rule - see applyDatesLockState()). Standard bookings\n  \/\/ are unaffected: Trip Name still only locks when BOTH trip and date\n  \/\/ matched, same as before this update. Re-run this (without touching\n  \/\/ whatever's currently selected) whenever Booking Type changes after\n  \/\/ the initial prefill, same pattern as applyDatesLockState().\n  function applyTripNameLockState() {\n    var shouldLock = lastTripMatched && ( lastDateMatched || isNonStandardBookingType() );\n    setLocked(shouldLock);\n  }\n\n  \/\/ UPDATED 2026-09-14 (again): Trip Dates' own lock, independent of\n  \/\/ Trip Name's. Only ever locks when a date was actually matched AND\n  \/\/ the current Booking Type is Standard - Faculty\/University\n  \/\/ Invoiced keep the dropdown interactive even when a date matched,\n  \/\/ so a coordinator can still change it. Re-run this (without\n  \/\/ touching Trip Name's lock or re-selecting a date) whenever Booking\n  \/\/ Type changes after the initial prefill, since switching type can\n  \/\/ flip this field between locked\/interactive on its own.\n  function applyDatesLockState() {\n    if (!wrapper) return;\n    var shouldLock = lastDateMatched && !isNonStandardBookingType();\n    if (shouldLock) {\n      wrapper.classList.add(DATES_LOCK_CLASS);\n    } else {\n      wrapper.classList.remove(DATES_LOCK_CLASS);\n    }\n  }\n\n  function prefillFromUrl() {\n    var tripSlug = getParam('trip');\n    var datesParam = getParam('dates');\n\n    var tripMatched = tripSlug ? selectTripBySlug(tripSlug) : false;\n    var dateMatched = rebuildDateOptions(datesParam);\n    lastTripMatched = tripMatched;\n    lastDateMatched = dateMatched;\n\n    \/\/ UPDATED 2026-09-15: Trip Name's lock rule now depends on Booking\n    \/\/ Type too - see applyTripNameLockState() above.\n    applyTripNameLockState();\n    \/\/ Trip Dates locks separately - see applyDatesLockState() above.\n    applyDatesLockState();\n  }\n\n  var tripSelectEl = document.getElementById('input_' + formId + '_' + TRIP_NAME_FIELD_ID);\n  if (tripSelectEl) {\n    \/\/ Manual change (visitor picking a different trip themselves) -\n    \/\/ always rebuild fresh, no preselected date to carry over, and\n    \/\/ never re-lock from a manual interaction.\n    tripSelectEl.addEventListener('change', function () {\n      \/\/ A manual trip change never has a preselected trip+date to carry\n      \/\/ over - clear both match flags so neither lock re-applies itself\n      \/\/ on the next Booking Type change.\n      lastTripMatched = false;\n      lastDateMatched = false;\n      applyTripNameLockState();\n      rebuildDateOptions(null);\n      applyDatesLockState();\n    });\n  }\n\n  var dateSelectEl = document.getElementById('input_' + formId + '_' + TRIP_DATES_FIELD_ID);\n  if (dateSelectEl) {\n    dateSelectEl.addEventListener('change', updatePriceAndTripId);\n  }\n\n  \/\/ UPDATED 2026-09-14: re-run the price lookup whenever Booking Type\n  \/\/ changes, so switching between Standard and Faculty\/University\n  \/\/ Invoiced (via the picker itself, or the university-prefill\n  \/\/ script's synthetic selection) recalculates Trip Cost immediately\n  \/\/ rather than only on the next date change. Delegated on the\n  \/\/ wrapper rather than bound to each radio individually, since the\n  \/\/ Booking Type section can be hidden\/shown and its radios exist in\n  \/\/ the DOM regardless.\n  if (wrapper) {\n    var bookingTypeField = wrapper.querySelector('#field_' + formId + '_' + BOOKING_TYPE_FIELD_ID);\n    if (bookingTypeField) {\n      bookingTypeField.addEventListener('change', function (e) {\n        if (e.target && e.target.type === 'radio') {\n          updatePriceAndTripId();\n          \/\/ UPDATED 2026-09-15: Trip Name can now also flip between\n          \/\/ locked\/interactive purely from a Booking Type change (e.g.\n          \/\/ switching to Faculty\/University Invoiced on a link whose\n          \/\/ date didn't match) - see applyTripNameLockState() above.\n          applyTripNameLockState();\n          \/\/ UPDATED 2026-09-14 (again): Trip Dates can flip between\n          \/\/ locked\/interactive purely from a Booking Type change (e.g.\n          \/\/ switching Standard -> Faculty on a link that matched a\n          \/\/ date) - re-evaluate without touching the selected date.\n          applyDatesLockState();\n        }\n      });\n    }\n  }\n\n  \/\/ Same retry pattern used throughout this project - window.\n  \/\/ CA_TRIP_DATES is printed by a wp_footer hook, and this field may\n  \/\/ parse\/execute before that script has run, so retry once shortly\n  \/\/ after in case the data wasn't ready on the first pass.\n  prefillFromUrl();\n  setTimeout(prefillFromUrl, 800);\n\n  \/\/ ADDED 2026-09-15: belt-and-braces fix for &uni=1 \/ &type=faculty\n  \/\/ links not locking Trip Name (or, conversely, incorrectly locking\n  \/\/ Trip Dates for Faculty). Both lock rules depend on knowing the\n  \/\/ Booking Type, which is decided by a SEPARATE HTML field's script\n  \/\/ (combined-booking-university-prefill-snippet.html) - that script\n  \/\/ fires a real 'change' event on the Booking Type radio when it\n  \/\/ runs, which the listener above normally catches immediately.\n  \/\/ Live testing showed the lock state can still end up wrong though,\n  \/\/ most likely because the two independent HTML fields' scripts don't\n  \/\/ always finish in the same order\/timing on every page load (script\n  \/\/ placement on the page, how fast the rest of the form renders,\n  \/\/ etc.) - if that other script's change event fires before THIS\n  \/\/ field's listener has been attached, it's missed entirely.\n  \/\/ Rather than depend on catching that one event at exactly the right\n  \/\/ moment, this just re-checks the lock state itself every 400ms for\n  \/\/ a few seconds - cheap and completely safe to repeat, since it only\n  \/\/ re-reads whichever Booking Type radio is CURRENTLY checked and\n  \/\/ toggles the two CSS lock classes accordingly. It never re-runs\n  \/\/ rebuildDateOptions() or touches the Trip Name\/Trip Dates VALUES,\n  \/\/ so it can't overwrite a date a coordinator has already manually\n  \/\/ changed in the meantime.\n  var lockRetryCount = 0;\n  var lockRetryTimer = setInterval( function () {\n    lockRetryCount++;\n    applyTripNameLockState();\n    applyDatesLockState();\n    if ( lockRetryCount >= 8 ) {\n      clearInterval( lockRetryTimer );\n    }\n  }, 400 );\n})();\n<\/script><\/div><fieldset id=\"field_14_130\" class=\"gfield gfield--type-checkbox gfield--type-choice gfield--input-type-checkbox gfield--width-full field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible gfield--choice-align-horizontal\"><legend class=\"gfield_label gform-field-label gfield_label_before_complex\"><span class=\"gform-field-label__text\">I\u2019m interested in extending my trip<\/span><\/legend><div class=\"ginput_container ginput_container_checkbox\"><div class=\"gfield_checkbox \" id=\"input_14_130\"><div class=\"gchoice gchoice_14_130_1\">\n\t\t\t\t\t\t\t\t<input class=\"gfield-choice-input\" name=\"input_130.1\" type=\"checkbox\" value=\"I\u2019m interested in extending my trip\" id=\"choice_14_130_1\">\n\t\t\t\t\t\t\t\t<label for=\"choice_14_130_1\" id=\"label_14_130_1\" class=\"gform-field-label gform-field-label--type-inline\">I\u2019m interested in extending my trip<\/label>\n\t\t\t\t\t\t\t<\/div><\/div><\/div><\/fieldset><div id=\"field_14_131\" class=\"gfield gfield--type-html gfield--input-type-html gfield--width-full gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"><!--\n  Fixed 2026-08-24 (field_1_131, page 1). Extension Price is field 135.\n  Checkbox (\"I'm interested in extending my trip\") is field 130.\n  Extension Dates is field 129.\n-->\n<div class=\"booking-extension-info\" id=\"booking-extension-info\" style=\"display:none;\">\n  <p class=\"booking-extension-info__text\">Extension dates: <span id=\"booking-extension-info-dates\"><\/span> \u00b7 Extension cost: <span id=\"booking-extension-info-cost\"><\/span><\/p>\n<\/div>\n<script>\n(function () {\n  var scriptEl = document.currentScript;\n  var wrapper = scriptEl ? scriptEl.closest('.gform_wrapper') : null;\n  var formId = wrapper ? wrapper.id.replace('gform_wrapper_', '') : '1';\n\n  var EXTENSION_PRICE_FIELD_ID = '135';\n\n  function formatCurrency(amount) {\n    if (isNaN(amount)) amount = 0;\n    return '$' + amount.toLocaleString('en-AU', { minimumFractionDigits: 2, maximumFractionDigits: 2 });\n  }\n  function parseCurrency(str) {\n    var num = parseFloat(String(str || '').replace(\/[^0-9.-]\/g, ''));\n    return isNaN(num) ? 0 : num;\n  }\n\n  function updateExtensionInfo() {\n    var checkbox = document.getElementById('choice_' + formId + '_130_1');\n    var priceField = document.getElementById('input_' + formId + '_' + EXTENSION_PRICE_FIELD_ID);\n    var datesField = document.getElementById('input_' + formId + '_129');\n    var infoEl = wrapper ? wrapper.querySelector('#booking-extension-info') : null;\n    var datesEl = wrapper ? wrapper.querySelector('#booking-extension-info-dates') : null;\n    var costEl = wrapper ? wrapper.querySelector('#booking-extension-info-cost') : null;\n    var checked = checkbox ? checkbox.checked : false;\n    var price = priceField ? parseCurrency(priceField.value) : 0;\n    var dates = datesField ? datesField.value.trim() : '';\n    if (checked && price > 0) {\n      if (datesEl) datesEl.textContent = dates || 'To be confirmed';\n      if (costEl) costEl.textContent = formatCurrency(price);\n      if (infoEl) infoEl.style.display = 'block';\n    } else if (infoEl) {\n      infoEl.style.display = 'none';\n    }\n  }\n\n  \/\/ Re-run whenever the checkbox is toggled.\n  var checkboxEl = document.getElementById('choice_' + formId + '_130_1');\n  if (checkboxEl) {\n    checkboxEl.addEventListener('change', updateExtensionInfo);\n  }\n  updateExtensionInfo();\n  setTimeout(updateExtensionInfo, 800);\n})();\n<\/script><\/div><div id=\"field_14_9\" class=\"gfield gfield--type-html gfield--input-type-html gfield--width-full h-c-title gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\">Contact Details<\/div><fieldset id=\"field_14_112\" class=\"gfield gfield--type-radio gfield--type-choice gfield--input-type-radio gfield--width-full gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible gfield--choice-align-horizontal\"><legend class=\"gfield_label gform-field-label\"><span class=\"gform-field-label__text\">I am a<\/span><span class=\"gfield_required\"><span class=\"gfield_required gfield_required_asterisk\">*<\/span><\/span><\/legend><div class=\"ginput_container ginput_container_radio\"><div class=\"gfield_radio\" id=\"input_14_112\">\n\t\t\t<div class=\"gchoice gchoice_14_112_0\">\n\t\t\t\t\t<input class=\"gfield-choice-input\" name=\"input_112\" type=\"radio\" value=\"Student\" id=\"choice_14_112_0\" onchange=\"gformToggleRadioOther( this )\">\n\t\t\t\t\t<label for=\"choice_14_112_0\" id=\"label_14_112_0\" class=\"gform-field-label gform-field-label--type-inline\">Student<\/label>\n\t\t\t<\/div>\n\t\t\t<div class=\"gchoice gchoice_14_112_1\">\n\t\t\t\t\t<input class=\"gfield-choice-input\" name=\"input_112\" type=\"radio\" value=\"University Staff\" id=\"choice_14_112_1\" onchange=\"gformToggleRadioOther( this )\">\n\t\t\t\t\t<label for=\"choice_14_112_1\" id=\"label_14_112_1\" class=\"gform-field-label gform-field-label--type-inline\">University Staff<\/label>\n\t\t\t<\/div><\/div><\/div><\/fieldset><div id=\"field_14_11\" class=\"gfield gfield--type-text gfield--input-type-text gfield--width-half gf_readonly gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"><label class=\"gfield_label gform-field-label\" for=\"input_14_11\"><span class=\"gform-field-label__text\">First Name<\/span><span class=\"gfield_required\"><span class=\"gfield_required gfield_required_asterisk\">*<\/span><\/span><\/label><div class=\"ginput_container ginput_container_text\"><input name=\"input_11\" id=\"input_14_11\" type=\"text\" value=\"\" class=\"large\" aria-required=\"true\" aria-invalid=\"false\"><\/div><\/div><div id=\"field_14_12\" class=\"gfield gfield--type-text gfield--input-type-text gfield--width-half gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"><label class=\"gfield_label gform-field-label\" for=\"input_14_12\"><span class=\"gform-field-label__text\">Last Name*<\/span><span class=\"gfield_required\"><span class=\"gfield_required gfield_required_asterisk\">*<\/span><\/span><\/label><div class=\"ginput_container ginput_container_text\"><input name=\"input_12\" id=\"input_14_12\" type=\"text\" value=\"\" class=\"large\" aria-required=\"true\" aria-invalid=\"false\"><\/div><\/div><div id=\"field_14_114\" class=\"gfield gfield--type-phone gfield--input-type-phone gfield--phone-format-international gfield--width-half gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"><label class=\"gfield_label gform-field-label\" for=\"input_14_114\"><span class=\"gform-field-label__text\">Phone Number<\/span><span class=\"gfield_required\"><span class=\"gfield_required gfield_required_asterisk\">*<\/span><\/span><\/label><div class=\"ginput_container ginput_container_phone\"><input name=\"input_114\" id=\"input_14_114\" type=\"tel\" value=\"\" class=\"large\" aria-required=\"true\" aria-invalid=\"false\"><\/div><\/div><div id=\"field_14_116\" class=\"gfield gfield--type-email gfield--input-type-email gfield--width-half gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"><label class=\"gfield_label gform-field-label\" for=\"input_14_116\"><span class=\"gform-field-label__text\">Email Address<\/span><span class=\"gfield_required\"><span class=\"gfield_required gfield_required_asterisk\">*<\/span><\/span><\/label><div class=\"ginput_container ginput_container_email\">\n                            <input name=\"input_116\" id=\"input_14_116\" type=\"email\" value=\"\" class=\"large\" aria-required=\"true\" aria-invalid=\"false\">\n                        <\/div><\/div><div id=\"field_14_118\" class=\"gfield gfield--type-html gfield--input-type-html gfield--width-full h-c-title gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\">Address Details<\/div><fieldset id=\"field_14_18\" class=\"gfield gfield--type-address gfield--input-type-address gfield--width-full gfield_contains_required field_sublabel_above gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"><legend class=\"gfield_label gform-field-label gfield_label_before_complex\"><span class=\"gform-field-label__text\">Address Details<\/span><span class=\"gfield_required\"><span class=\"gfield_required gfield_required_asterisk\">*<\/span><\/span><\/legend>    \n                    <div class=\"ginput_complex ginput_container has_street has_city has_state has_zip has_country ginput_container_address gform-grid-row\" id=\"input_14_18\">\n                         <span class=\"ginput_full address_line_1 ginput_address_line_1 gform-grid-col\" id=\"input_14_18_1_container\">\n                                        <label for=\"input_14_18_1\" id=\"input_14_18_1_label\" class=\"gform-field-label gform-field-label--type-sub \">Street Address<\/label>\n                                        <input type=\"text\" name=\"input_18.1\" id=\"input_14_18_1\" value=\"\" aria-required=\"true\">\n                                   <\/span><span class=\"ginput_left address_city ginput_address_city gform-grid-col\" id=\"input_14_18_3_container\">\n                                    <label for=\"input_14_18_3\" id=\"input_14_18_3_label\" class=\"gform-field-label gform-field-label--type-sub \">City<\/label>\n                                    <input type=\"text\" name=\"input_18.3\" id=\"input_14_18_3\" value=\"\" aria-required=\"true\">\n                                 <\/span><span class=\"ginput_right address_state ginput_address_state gform-grid-col\" id=\"input_14_18_4_container\">\n                                        <label for=\"input_14_18_4\" id=\"input_14_18_4_label\" class=\"gform-field-label gform-field-label--type-sub \">State \/ Province \/ Region<\/label>\n                                        <input type=\"text\" name=\"input_18.4\" id=\"input_14_18_4\" value=\"\" aria-required=\"true\">\n                                      <\/span><span class=\"ginput_left address_zip ginput_address_zip gform-grid-col\" id=\"input_14_18_5_container\">\n                                    <label for=\"input_14_18_5\" id=\"input_14_18_5_label\" class=\"gform-field-label gform-field-label--type-sub \">ZIP \/ Postal Code<\/label>\n                                    <input type=\"text\" name=\"input_18.5\" id=\"input_14_18_5\" value=\"\" aria-required=\"true\">\n                                <\/span><span class=\"ginput_right address_country ginput_address_country gform-grid-col\" id=\"input_14_18_6_container\">\n                                        <label for=\"input_14_18_6\" id=\"input_14_18_6_label\" class=\"gform-field-label gform-field-label--type-sub \">Country<\/label>\n                                        <select name=\"input_18.6\" id=\"input_14_18_6\" aria-required=\"true\"><option value=\"\"><\/option><option value=\"AF\">Afghanistan<\/option><option value=\"AX\">\u00c5land Islands<\/option><option value=\"AL\">Albania<\/option><option value=\"DZ\">Algeria<\/option><option value=\"AS\">American Samoa<\/option><option value=\"AD\">Andorra<\/option><option value=\"AO\">Angola<\/option><option value=\"AI\">Anguilla<\/option><option value=\"AQ\">Antarctica<\/option><option value=\"AG\">Antigua and Barbuda<\/option><option value=\"AR\">Argentina<\/option><option value=\"AM\">Armenia<\/option><option value=\"AW\">Aruba<\/option><option value=\"AU\" selected>Australia<\/option><option value=\"AT\">Austria<\/option><option value=\"AZ\">Azerbaijan<\/option><option value=\"BS\">Bahamas<\/option><option value=\"BH\">Bahrain<\/option><option value=\"BD\">Bangladesh<\/option><option value=\"BB\">Barbados<\/option><option value=\"BY\">Belarus<\/option><option value=\"BE\">Belgium<\/option><option value=\"BZ\">Belize<\/option><option value=\"BJ\">Benin<\/option><option value=\"BM\">Bermuda<\/option><option value=\"BT\">Bhutan<\/option><option value=\"BO\">Bolivia<\/option><option value=\"BQ\">Bonaire, Sint Eustatius and Saba<\/option><option value=\"BA\">Bosnia and Herzegovina<\/option><option value=\"BW\">Botswana<\/option><option value=\"BV\">Bouvet Island<\/option><option value=\"BR\">Brazil<\/option><option value=\"IO\">British Indian Ocean Territory<\/option><option value=\"BN\">Brunei Darussalam<\/option><option value=\"BG\">Bulgaria<\/option><option value=\"BF\">Burkina Faso<\/option><option value=\"BI\">Burundi<\/option><option value=\"KH\">Cambodia<\/option><option value=\"CM\">Cameroon<\/option><option value=\"CA\">Canada<\/option><option value=\"CV\">Cape Verde<\/option><option value=\"KY\">Cayman Islands<\/option><option value=\"CF\">Central African Republic<\/option><option value=\"TD\">Chad<\/option><option value=\"CL\">Chile<\/option><option value=\"CN\">China<\/option><option value=\"CX\">Christmas Island<\/option><option value=\"CC\">Cocos Islands<\/option><option value=\"CO\">Colombia<\/option><option value=\"KM\">Comoros<\/option><option value=\"CG\">Congo<\/option><option value=\"CD\">Congo, Democratic Republic of the<\/option><option value=\"CK\">Cook Islands<\/option><option value=\"CR\">Costa Rica<\/option><option value=\"CI\">C\u00f4te d'Ivoire<\/option><option value=\"HR\">Croatia<\/option><option value=\"CU\">Cuba<\/option><option value=\"CW\">Cura\u00e7ao<\/option><option value=\"CY\">Cyprus<\/option><option value=\"CZ\">Czechia<\/option><option value=\"DK\">Denmark<\/option><option value=\"DJ\">Djibouti<\/option><option value=\"DM\">Dominica<\/option><option value=\"DO\">Dominican Republic<\/option><option value=\"EC\">Ecuador<\/option><option value=\"EG\">Egypt<\/option><option value=\"SV\">El Salvador<\/option><option value=\"GQ\">Equatorial Guinea<\/option><option value=\"ER\">Eritrea<\/option><option value=\"EE\">Estonia<\/option><option value=\"SZ\">Eswatini<\/option><option value=\"ET\">Ethiopia<\/option><option value=\"FK\">Falkland Islands<\/option><option value=\"FO\">Faroe Islands<\/option><option value=\"FJ\">Fiji<\/option><option value=\"FI\">Finland<\/option><option value=\"FR\">France<\/option><option value=\"GF\">French Guiana<\/option><option value=\"PF\">French Polynesia<\/option><option value=\"TF\">French Southern Territories<\/option><option value=\"GA\">Gabon<\/option><option value=\"GM\">Gambia<\/option><option value=\"GE\">Georgia<\/option><option value=\"DE\">Germany<\/option><option value=\"GH\">Ghana<\/option><option value=\"GI\">Gibraltar<\/option><option value=\"GR\">Greece<\/option><option value=\"GL\">Greenland<\/option><option value=\"GD\">Grenada<\/option><option value=\"GP\">Guadeloupe<\/option><option value=\"GU\">Guam<\/option><option value=\"GT\">Guatemala<\/option><option value=\"GG\">Guernsey<\/option><option value=\"GN\">Guinea<\/option><option value=\"GW\">Guinea-Bissau<\/option><option value=\"GY\">Guyana<\/option><option value=\"HT\">Haiti<\/option><option value=\"HM\">Heard Island and McDonald Islands<\/option><option value=\"VA\">Holy See<\/option><option value=\"HN\">Honduras<\/option><option value=\"HK\">Hong Kong<\/option><option value=\"HU\">Hungary<\/option><option value=\"IS\">Iceland<\/option><option value=\"IN\">India<\/option><option value=\"ID\">Indonesia<\/option><option value=\"IR\">Iran<\/option><option value=\"IQ\">Iraq<\/option><option value=\"IE\">Ireland<\/option><option value=\"IM\">Isle of Man<\/option><option value=\"IL\">Israel<\/option><option value=\"IT\">Italy<\/option><option value=\"JM\">Jamaica<\/option><option value=\"JP\">Japan<\/option><option value=\"JE\">Jersey<\/option><option value=\"JO\">Jordan<\/option><option value=\"KZ\">Kazakhstan<\/option><option value=\"KE\">Kenya<\/option><option value=\"KI\">Kiribati<\/option><option value=\"KP\">Korea, Democratic People's Republic of<\/option><option value=\"KR\">Korea, Republic of<\/option><option value=\"KW\">Kuwait<\/option><option value=\"KG\">Kyrgyzstan<\/option><option value=\"LA\">Lao People's Democratic Republic<\/option><option value=\"LV\">Latvia<\/option><option value=\"LB\">Lebanon<\/option><option value=\"LS\">Lesotho<\/option><option value=\"LR\">Liberia<\/option><option value=\"LY\">Libya<\/option><option value=\"LI\">Liechtenstein<\/option><option value=\"LT\">Lithuania<\/option><option value=\"LU\">Luxembourg<\/option><option value=\"MO\">Macao<\/option><option value=\"MG\">Madagascar<\/option><option value=\"MW\">Malawi<\/option><option value=\"MY\">Malaysia<\/option><option value=\"MV\">Maldives<\/option><option value=\"ML\">Mali<\/option><option value=\"MT\">Malta<\/option><option value=\"MH\">Marshall Islands<\/option><option value=\"MQ\">Martinique<\/option><option value=\"MR\">Mauritania<\/option><option value=\"MU\">Mauritius<\/option><option value=\"YT\">Mayotte<\/option><option value=\"MX\">Mexico<\/option><option value=\"FM\">Micronesia<\/option><option value=\"MD\">Moldova<\/option><option value=\"MC\">Monaco<\/option><option value=\"MN\">Mongolia<\/option><option value=\"ME\">Montenegro<\/option><option value=\"MS\">Montserrat<\/option><option value=\"MA\">Morocco<\/option><option value=\"MZ\">Mozambique<\/option><option value=\"MM\">Myanmar<\/option><option value=\"NA\">Namibia<\/option><option value=\"NR\">Nauru<\/option><option value=\"NP\">Nepal<\/option><option value=\"NL\">Netherlands<\/option><option value=\"NC\">New Caledonia<\/option><option value=\"NZ\">New Zealand<\/option><option value=\"NI\">Nicaragua<\/option><option value=\"NE\">Niger<\/option><option value=\"NG\">Nigeria<\/option><option value=\"NU\">Niue<\/option><option value=\"NF\">Norfolk Island<\/option><option value=\"MK\">North Macedonia<\/option><option value=\"MP\">Northern Mariana Islands<\/option><option value=\"NO\">Norway<\/option><option value=\"OM\">Oman<\/option><option value=\"PK\">Pakistan<\/option><option value=\"PW\">Palau<\/option><option value=\"PS\">Palestine, State of<\/option><option value=\"PA\">Panama<\/option><option value=\"PG\">Papua New Guinea<\/option><option value=\"PY\">Paraguay<\/option><option value=\"PE\">Peru<\/option><option value=\"PH\">Philippines<\/option><option value=\"PN\">Pitcairn<\/option><option value=\"PL\">Poland<\/option><option value=\"PT\">Portugal<\/option><option value=\"PR\">Puerto Rico<\/option><option value=\"QA\">Qatar<\/option><option value=\"RE\">R\u00e9union<\/option><option value=\"RO\">Romania<\/option><option value=\"RU\">Russian Federation<\/option><option value=\"RW\">Rwanda<\/option><option value=\"BL\">Saint Barth\u00e9lemy<\/option><option value=\"SH\">Saint Helena, Ascension and Tristan da Cunha<\/option><option value=\"KN\">Saint Kitts and Nevis<\/option><option value=\"LC\">Saint Lucia<\/option><option value=\"MF\">Saint Martin<\/option><option value=\"PM\">Saint Pierre and Miquelon<\/option><option value=\"VC\">Saint Vincent and the Grenadines<\/option><option value=\"WS\">Samoa<\/option><option value=\"SM\">San Marino<\/option><option value=\"ST\">Sao Tome and Principe<\/option><option value=\"SA\">Saudi Arabia<\/option><option value=\"SN\">Senegal<\/option><option value=\"RS\">Serbia<\/option><option value=\"SC\">Seychelles<\/option><option value=\"SL\">Sierra Leone<\/option><option value=\"SG\">Singapore<\/option><option value=\"SX\">Sint Maarten<\/option><option value=\"SK\">Slovakia<\/option><option value=\"SI\">Slovenia<\/option><option value=\"SB\">Solomon Islands<\/option><option value=\"SO\">Somalia<\/option><option value=\"ZA\">South Africa<\/option><option value=\"GS\">South Georgia and the South Sandwich Islands<\/option><option value=\"SS\">South Sudan<\/option><option value=\"ES\">Spain<\/option><option value=\"LK\">Sri Lanka<\/option><option value=\"SD\">Sudan<\/option><option value=\"SR\">Suriname<\/option><option value=\"SJ\">Svalbard and Jan Mayen<\/option><option value=\"SE\">Sweden<\/option><option value=\"CH\">Switzerland<\/option><option value=\"SY\">Syria Arab Republic<\/option><option value=\"TW\">Taiwan<\/option><option value=\"TJ\">Tajikistan<\/option><option value=\"TZ\">Tanzania, the United Republic of<\/option><option value=\"TH\">Thailand<\/option><option value=\"TL\">Timor-Leste<\/option><option value=\"TG\">Togo<\/option><option value=\"TK\">Tokelau<\/option><option value=\"TO\">Tonga<\/option><option value=\"TT\">Trinidad and Tobago<\/option><option value=\"TN\">Tunisia<\/option><option value=\"TR\">T\u00fcrkiye<\/option><option value=\"TM\">Turkmenistan<\/option><option value=\"TC\">Turks and Caicos Islands<\/option><option value=\"TV\">Tuvalu<\/option><option value=\"UG\">Uganda<\/option><option value=\"UA\">Ukraine<\/option><option value=\"AE\">United Arab Emirates<\/option><option value=\"GB\">United Kingdom<\/option><option value=\"US\">United States<\/option><option value=\"UY\">Uruguay<\/option><option value=\"UM\">US Minor Outlying Islands<\/option><option value=\"UZ\">Uzbekistan<\/option><option value=\"VU\">Vanuatu<\/option><option value=\"VE\">Venezuela<\/option><option value=\"VN\">Viet Nam<\/option><option value=\"VG\">Virgin Islands, British<\/option><option value=\"VI\">Virgin Islands, U.S.<\/option><option value=\"WF\">Wallis and Futuna<\/option><option value=\"EH\">Western Sahara<\/option><option value=\"YE\">Yemen<\/option><option value=\"ZM\">Zambia<\/option><option value=\"ZW\">Zimbabwe<\/option> <\/select>\n                                    <\/span>\n                    <div class=\"gf_clear gf_clear_complex\"><\/div>\n                <\/div><\/fieldset><\/div>\n                    <\/div>\n                    <div class=\"gform-page-footer gform_page_footer top_label\">\n                         <button type=\"button\" id=\"gform_next_button_14_1\" class=\"gform_next_button gform-theme-button button\" onclick=\"gform.submission.handleButtonClick(this);\" data-submission-type=\"next\">Next<\/button> \n                    <\/div>\n                <\/div>\n                <div id=\"gform_page_14_2\" class=\"gform_page\" data-js=\"page-field-id-1\" style=\"display:none;\">\n                    <div class=\"gform_page_fields\">\n                        <div id=\"gform_fields_14_2\" class=\"gform_fields top_label form_sublabel_below description_below validation_below\"><div id=\"field_14_20\" class=\"gfield gfield--type-html gfield--input-type-html gfield--width-full h-c-title gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\">Personal Details<\/div><div id=\"field_14_23\" class=\"gfield gfield--type-date gfield--input-type-date gfield--input-type-datepicker gfield--datepicker-default-icon gfield--width-half gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"><label class=\"gfield_label gform-field-label\" for=\"input_14_23\"><span class=\"gform-field-label__text\">Date of Birth<\/span><span class=\"gfield_required\"><span class=\"gfield_required gfield_required_asterisk\">*<\/span><\/span><\/label><div class=\"ginput_container ginput_container_date\">\n\t\t\t\t\t<input placeholder=\"dd\/mm\/yyyy\" id=\"input_14_23\" class=\"datepicker gform-datepicker dmy datepicker_with_icon gdatepicker_with_icon\" type=\"text\" name=\"input_23\" value=\"\" aria-invalid=\"false\" aria-required=\"true\" data-mask=\"99\/99\/9999\">\n\t\t\t\t<kbd id=\"keyboardHint_input_14_23\" hidden class=\"down\"><\/kbd>\n\t\t\t\t<button type=\"button\" id=\"datepicker_toggle_input_14_23\" class=\"gform-datepicker-toggle gform-datepicker-toggle--default accCalendar aria-date-picker gform-button gform-theme-button gform-theme-button--simple gform-theme-button--simple-in-ctrl\" aria-expanded=\"false\" aria-controls=\"input_14_23\" aria-label=\"Date of Birth: Choose date on calendar\">\n\t\t\t\t\t\t\t<span class=\"gform-calendar-icon gform-datepicker-toggle-icon gform-datepicker-toggle-icon--default dashicons dashicons-calendar-alt\" aria-hidden=\"true\"><\/span>\n\t\t\t\t\t\t<\/button>\n\t\t\t<\/div><\/div><div id=\"field_14_85\" class=\"gfield gfield--type-select gfield--input-type-select gfield--width-half field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"><label class=\"gfield_label gform-field-label\" for=\"input_14_85\"><span class=\"gform-field-label__text\">Gender<\/span><\/label><div class=\"ginput_container ginput_container_select\"><select name=\"input_85\" id=\"input_14_85\" class=\"large gfield_select\" aria-invalid=\"false\"><option value=\"\" selected class=\"gf_placeholder\">Please select<\/option><option value=\"Male\">Male<\/option><option value=\"Female\">Female<\/option><option value=\"Transgender - M\">Transgender - M<\/option><option value=\"Transgender - F\">Transgender - F<\/option><option value=\"Non-binary\">Non-binary<\/option><option value=\"Other\">Other<\/option><\/select><\/div><\/div><div id=\"field_14_24\" class=\"gfield gfield--type-select gfield--input-type-select gfield--width-full gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"><label class=\"gfield_label gform-field-label\" for=\"input_14_24\"><span class=\"gform-field-label__text\">University Name<\/span><span class=\"gfield_required\"><span class=\"gfield_required gfield_required_asterisk\">*<\/span><\/span><\/label><div class=\"ginput_container ginput_container_select\"><select name=\"input_24\" id=\"input_14_24\" class=\"large gfield_select\" aria-required=\"true\" aria-invalid=\"false\"><option value=\"\" selected class=\"gf_placeholder\">Please make a selection<\/option><option value=\"Australian Catholic University - Ballarat\">Australian Catholic University - Ballarat<\/option><option value=\"Australian Catholic University - Brisbane\">Australian Catholic University - Brisbane<\/option><option value=\"Australian Catholic University - Blacktown\">Australian Catholic University - Blacktown<\/option><option value=\"Australian Catholic University - Canberra\">Australian Catholic University - Canberra<\/option><option value=\"Australian Catholic University - Melbourne\">Australian Catholic University - Melbourne<\/option><option value=\"Australian Catholic University - Sydney\">Australian Catholic University - Sydney<\/option><option value=\"Australian National University\">Australian National University<\/option><option value=\"Bond University\">Bond University<\/option><option value=\"Central Queensland University\">Central Queensland University<\/option><option value=\"Charles Darwin University\">Charles Darwin University<\/option><option value=\"Charles Sturt University\">Charles Sturt University<\/option><option value=\"Curtin University\">Curtin University<\/option><option value=\"Deakin University\">Deakin University<\/option><option value=\"Edith Cowan University\">Edith Cowan University<\/option><option value=\"Federation University\">Federation University<\/option><option value=\"Flinders University\">Flinders University<\/option><option value=\"Griffith University\">Griffith University<\/option><option value=\"James Cook University\">James Cook University<\/option><option value=\"La Trobe University\">La Trobe University<\/option><option value=\"Macquarie University\">Macquarie University<\/option><option value=\"Monash University\">Monash University<\/option><option value=\"Murdoch University\">Murdoch University<\/option><option value=\"Queensland University of Technology\">Queensland University of Technology<\/option><option value=\"RMIT University\">RMIT University<\/option><option value=\"Southern Cross University\">Southern Cross University<\/option><option value=\"Swinburne University of Technology\">Swinburne University of Technology<\/option><option value=\"University of Adelaide\">University of Adelaide<\/option><option value=\"University of Canberra\">University of Canberra<\/option><option value=\"University of Melbourne\">University of Melbourne<\/option><option value=\"University of New England\">University of New England<\/option><option value=\"University of New South Wales\">University of New South Wales<\/option><option value=\"University of Newcastle\">University of Newcastle<\/option><option value=\"University of Notre Dame - Perth\">University of Notre Dame - Perth<\/option><option value=\"University of Notre Dame - Sydney\">University of Notre Dame - Sydney<\/option><option value=\"University of Queensland\">University of Queensland<\/option><option value=\"University of South Australia\">University of South Australia<\/option><option value=\"University of Southern Queensland\">University of Southern Queensland<\/option><option value=\"University of the Sunshine Coast\">University of the Sunshine Coast<\/option><option value=\"University of Sydney\">University of Sydney<\/option><option value=\"University of Tasmania\">University of Tasmania<\/option><option value=\"University of Technology Sydney\">University of Technology Sydney<\/option><option value=\"University of Western Australia\">University of Western Australia<\/option><option value=\"University of Western Sydney\">University of Western Sydney<\/option><option value=\"University of Wollongong\">University of Wollongong<\/option><option value=\"Victoria University\">Victoria University<\/option><option value=\"Other\">Other<\/option><\/select><\/div><\/div><div id=\"field_14_138\" class=\"gfield gfield--type-select gfield--input-type-select gfield--width-full gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"><label class=\"gfield_label gform-field-label\" for=\"input_14_138\"><span class=\"gform-field-label__text\">University Name<\/span><span class=\"gfield_required\"><span class=\"gfield_required gfield_required_asterisk\">*<\/span><\/span><\/label><div class=\"ginput_container ginput_container_select\"><select name=\"input_138\" id=\"input_14_138\" class=\"large gfield_select\" aria-required=\"true\" aria-invalid=\"false\"><option value=\"\" selected class=\"gf_placeholder\">Please make a selection<\/option><option value=\"Australian Catholic University - Ballarat\">Australian Catholic University - Ballarat<\/option><option value=\"Australian Catholic University - Brisbane\">Australian Catholic University - Brisbane<\/option><option value=\"Australian Catholic University - Blacktown\">Australian Catholic University - Blacktown<\/option><option value=\"Australian Catholic University - Canberra\">Australian Catholic University - Canberra<\/option><option value=\"Australian Catholic University - Melbourne\">Australian Catholic University - Melbourne<\/option><option value=\"Australian Catholic University - Sydney\">Australian Catholic University - Sydney<\/option><option value=\"Australian National University\">Australian National University<\/option><option value=\"Bond University\">Bond University<\/option><option value=\"Central Queensland University\">Central Queensland University<\/option><option value=\"Charles Darwin University\">Charles Darwin University<\/option><option value=\"Charles Sturt University\">Charles Sturt University<\/option><option value=\"Curtin University\">Curtin University<\/option><option value=\"Deakin University\">Deakin University<\/option><option value=\"Edith Cowan University\">Edith Cowan University<\/option><option value=\"Federation University\">Federation University<\/option><option value=\"Flinders University\">Flinders University<\/option><option value=\"Griffith University\">Griffith University<\/option><option value=\"James Cook University\">James Cook University<\/option><option value=\"La Trobe University\">La Trobe University<\/option><option value=\"Macquarie University\">Macquarie University<\/option><option value=\"Monash University\">Monash University<\/option><option value=\"Murdoch University\">Murdoch University<\/option><option value=\"Queensland University of Technology\">Queensland University of Technology<\/option><option value=\"RMIT University\">RMIT University<\/option><option value=\"Southern Cross University\">Southern Cross University<\/option><option value=\"Swinburne University of Technology\">Swinburne University of Technology<\/option><option value=\"University of Adelaide\">University of Adelaide<\/option><option value=\"University of Canberra\">University of Canberra<\/option><option value=\"University of Melbourne\">University of Melbourne<\/option><option value=\"University of New England\">University of New England<\/option><option value=\"University of New South Wales\">University of New South Wales<\/option><option value=\"University of Newcastle\">University of Newcastle<\/option><option value=\"University of Notre Dame - Perth\">University of Notre Dame - Perth<\/option><option value=\"University of Notre Dame - Sydney\">University of Notre Dame - Sydney<\/option><option value=\"University of Queensland\">University of Queensland<\/option><option value=\"University of South Australia\">University of South Australia<\/option><option value=\"University of Southern Queensland\">University of Southern Queensland<\/option><option value=\"University of the Sunshine Coast\">University of the Sunshine Coast<\/option><option value=\"University of Sydney\">University of Sydney<\/option><option value=\"University of Tasmania\">University of Tasmania<\/option><option value=\"University of Technology Sydney\">University of Technology Sydney<\/option><option value=\"University of Western Australia\">University of Western Australia<\/option><option value=\"University of Western Sydney\">University of Western Sydney<\/option><option value=\"University of Wollongong\">University of Wollongong<\/option><option value=\"Victoria University\">Victoria University<\/option><option value=\"Other\">Other<\/option><\/select><\/div><\/div><div id=\"field_14_139\" class=\"gfield gfield--type-html gfield--input-type-html gfield--width-full gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"><!--\n  COMBINED BOOKING FORM \u2014 UNIVERSITY PARAM PREFILL + AUTO-TYPE\n  ============================================================\n  *** THIS IS THE STAGING\/FORM 14 VERSION - BOOKING_TYPE_FIELD_ID = '136' ***\n  *** Live (form 9) uses '137' for the same radio group - DO NOT paste   ***\n  *** this file into the LIVE site's WPCode snippet, or vice versa. Use  ***\n  *** combined-booking-university-prefill-snippet-LIVE.html for live.    ***\n  ============================================================\n\n  UPDATED 2026-09-03 (again): &university= and the University Invoiced\n  booking-type trigger are now DECOUPLED into two separate params,\n  since Faculty trip links started carrying &university= too (to\n  prefill the dropdown for them as well) - its bare presence stopped\n  being a reliable \"this is a University Invoiced link\" signal once\n  it could show up on non-University-Invoiced links.\n  - &university=<Name> - ONLY prefills the University Name dropdown.\n    Safe to put on any link (University Invoiced, Faculty, or even\n    Standard) purely to prefill that one field.\n  - &uni=1 - the actual University Invoiced trigger. Auto-selects\n    \"University Invoiced\" in the Booking Type radio and locks the\n    other two choices, same as before - just on its own dedicated\n    param now instead of piggybacking on &university=.\n  IMPORTANT: any University Invoiced links already built with the old\n  &university=<Name>-only pattern need &uni=1 appended too, or they'll\n  now only prefill the dropdown and silently stop auto-selecting the\n  booking type.\n\n  Does the following whenever a link carries &uni=1:\n  Auto-selects \"University Invoiced\" in the Booking Type radio. Fires\n  a change event after both so GF's Conditional Logic (student\/staff\n  radio, coupon field, summary block, payment step) reacts correctly.\n  University Invoiced ALSO locks the other two Booking Type\n  choices, since that link is a private, single-purpose entry\n  point - nobody arriving via a University Invoiced link should end\n  up Standard.\n\n  UPDATED 2026-09-03: Added a second, independent trigger for Faculty.\n  &type=faculty on a trip link pre-selects \"Faculty Booking (Student\n  or Staff)\" the same way. For now this is only ever appended\n  alongside &university= on the same trip links (which of the two\n  actually gets used per trip is still to be decided) - if BOTH are\n  present, &university= takes priority and &type=faculty is ignored,\n  since a link can only land on one outcome.\n\n  UPDATED 2026-09-03 (again): once EITHER param has decided the\n  booking type, the whole Booking Type radio field and its \"Booking\n  Type\" heading now hide completely - there's nothing left to pick,\n  so no need to show the picker UI at all. This applies to both\n  University Invoiced and Faculty triggers equally. The radio's value\n  is still set (and GF's Conditional Logic downstream still reacts to\n  it correctly) before the section is hidden, so nothing else on the\n  form breaks. Only relevant fields for that booking type end up\n  visible, driven entirely by GF's own existing Conditional Logic on\n  those fields (Student\/Staff radio, coupon field, summary blocks,\n  T&Cs) - no change needed there, they already key off the radio's\n  value, not its visibility.\n\n  FIXED 2026-09-04, then SWAPPED BACK 2026-09-15: live-tested against\n  the actual STAGING DOM (make-a-booking page, combined Standard\/\n  Faculty\/University Invoiced form) and confirmed the Booking Type\n  RADIO (Standard\/Faculty\/University Invoiced choices) is field 136 on\n  staging, and the empty HTML section heading above it is field 137.\n\n  NOTE 2026-09-16: confirmed LIVE has these two IDs the OPPOSITE way\n  round from staging (live: 137=radio, 136=heading). The two sites are\n  NOT interchangeable for these two constants - always re-verify\n  against the actual DOM (inspect #field_1_136 and #field_1_137,\n  whichever is the <fieldset class=\"... gfield--type-radio ...\">)\n  before ever copying this file between the two. Use the matching\n  -LIVE \/ -STAGING suffixed file for whichever site you're pasting\n  into. alt-booking-trip-dates-cascade.html needs to agree with\n  whichever value this file uses on the same site.\n\n  CONFIRMED against Form 14's actual rendered DOM on\n  \/au\/make-a-booking-test\/ (2026-09-17): field_14_136 is the Booking\n  Type radio fieldset, field_14_137 is the heading, field_14_24 is the\n  visible University Name select (required), field_14_112 is the\n  Student\/Staff radio (required). All four IDs below match what's\n  actually on Form 14 - this script was never active on that page\n  before now, which is why University Invoiced \/ Faculty links were\n  failing validation (field 24 was left on its empty placeholder with\n  nothing to prefill it).\n\n  KNOWN GAP (flagged 2026-09-17, not yet fixed): STUDENT_STAFF_FIELD_ID\n  and STUDENT_CHOICE_VALUE below are declared but never referenced\n  anywhere in prefill() - the \"auto-preselect Student on &type=faculty\n  links\" feature described in the 2026-09-11 note was never actually\n  implemented in this file. Doesn't affect University Invoiced (this\n  file's only job for that path is field 24 + the radio), but Faculty\n  visitors currently still have to pick Student\/Staff manually - if\n  they reach Next without doing so, that required field will fail\n  validation the same way field 24 did. Left as-is here pending\n  confirmation of what the intended behaviour actually was.\n\n  MERGED 2026-09-17: added the gformToggleRadioOther guard Tiffany\n  built into her own updated copy of this file (dated yesterday).\n  Every GF radio choice renders with an inline\n  onchange=\"gformToggleRadioOther(this)\" attribute. The real function\n  only exists once Gravity Forms' own core script has finished\n  loading - this snippet is an inline <script> that runs during the\n  initial HTML parse and fires a real click\/change on a Booking Type\n  radio, so if it runs before GF's script has loaded, that inline\n  onchange throws \"ReferenceError: gformToggleRadioOther is not\n  defined\". Tiffany's testing found this uncaught error can abort GF's\n  own Conditional Logic re-run after a failed multi-page submission,\n  leaving every page of the form stuck on display:none. Defining a\n  harmless placeholder before this script ever touches a radio\n  guarantees the function exists by the time anything calls it; GF's\n  real implementation simply overwrites the placeholder once it loads.\n\n  Update these once the combined form's real field IDs are known:\n  - UNIVERSITY_FIELD_ID: University Name field ID (currently 24 -\n    confirmed correct as of 2026-09-03, matches the live, visible\n    University Name field on the combined form)\n  - BOOKING_TYPE_FIELD_ID: the new Booking Type radio's field ID\n  - BOOKING_TYPE_UNI_VALUE: the exact value\/text of the \"University\n    Invoiced\" choice as set up in GF admin\n  - BOOKING_TYPE_FACULTY_VALUE: the exact value\/text of the \"Faculty\n    Booking\" choice as set up in GF admin\n  ============================================================\n-->\n<script>\n(function () {\n  var scriptEl = document.currentScript;\n  var wrapper = scriptEl ? scriptEl.closest('.gform_wrapper') : null;\n  var formId = wrapper ? wrapper.id.replace('gform_wrapper_', '') : '1';\n  \/\/ REVERTED 2026-09-03: briefly changed to '138' after seeing field\n  \/\/ 24 disabled\/hidden on a live page snapshot taken on the STANDARD\n  \/\/ page, where it's SUPPOSED to be hidden. There are actually TWO\n  \/\/ separate University Name fields on this form, conditionally shown\n  \/\/ by booking type: 138 shows only for Standard, 24 shows for\n  \/\/ Faculty + University Invoiced - the two types &university= is\n  \/\/ actually built for. 24 was correct all along.\n  var UNIVERSITY_FIELD_ID = '24';\n  \/\/ FIXED 2026-09-04, then SWAPPED BACK 2026-09-15: this is '136' on\n  \/\/ STAGING (live uses '137' for the same radio group - see the big\n  \/\/ note at the top of this file).\n  var BOOKING_TYPE_FIELD_ID = '136';\n  var BOOKING_TYPE_HEADING_FIELD_ID = '137';\n  var BOOKING_TYPE_UNI_VALUE = 'University Invoiced (Reg. only)';\n  var BOOKING_TYPE_FACULTY_VALUE = 'Faculty Booking (Student or Staff)';\n  var BOOKING_TYPE_STANDARD_VALUE = 'Standard Booking';\n  \/\/ ADDED 2026-09-11: Faculty's own \"I am a\" Student\/Staff radio (112) -\n  \/\/ preselect \"Student\" whenever a &type=faculty link decides Faculty\n  \/\/ for the visitor, since most Faculty links are for students, not\n  \/\/ staff, and leaving it blank meant every Faculty visitor had to\n  \/\/ manually pick before the rest of the form's conditional logic\n  \/\/ (Trip Cost display, UNISTAFF coupon field) reacted at all.\n  \/\/ NOTE: not yet wired up below - see KNOWN GAP comment at the top\n  \/\/ of this file.\n  var STUDENT_STAFF_FIELD_ID = '112';\n  var STUDENT_CHOICE_VALUE = 'Student';\n\n  \/\/ FIXED 2026-09-17 - PREVENT \"gformToggleRadioOther is not defined\"\n  \/\/ -------------------------------------------------------------\n  \/\/ Every Gravity Forms radio choice renders with an inline\n  \/\/ onchange=\"gformToggleRadioOther(this)\" attribute (part of GF's\n  \/\/ built-in \"Other\" choice feature). The real function is defined by\n  \/\/ Gravity Forms' own core script, which only finishes loading near\n  \/\/ the END of the page. selectBookingTypeByValue() below runs during\n  \/\/ the initial HTML parse (this is an inline <script>, executing as\n  \/\/ soon as the browser reaches it) and fires a genuine 'click'\/\n  \/\/ 'change' on a Booking Type radio - if that happens before Gravity\n  \/\/ Forms' script has loaded, the radio's own onchange attribute throws\n  \/\/ ReferenceError: gformToggleRadioOther is not defined.\n  \/\/\n  \/\/ Confirmed via live testing that this uncaught exception, when it\n  \/\/ happens to fire while Gravity Forms is re-running its own\n  \/\/ Conditional Logic after a failed multi-page submission, can abort\n  \/\/ that routine before it finishes deciding which page to redisplay -\n  \/\/ leaving the ENTIRE form hidden (every page stuck on display:none)\n  \/\/ instead of showing the visitor what needs fixing.\n  \/\/\n  \/\/ Defining a harmless placeholder here - before this script ever\n  \/\/ touches a radio - guarantees the function always exists by the\n  \/\/ time anything calls it. If Gravity Forms' real implementation\n  \/\/ loads afterwards, it simply overwrites this placeholder, so GF's\n  \/\/ actual \"Other\" choice feature (if ever used elsewhere) keeps\n  \/\/ working exactly as before.\n  if (typeof window.gformToggleRadioOther !== 'function') {\n    window.gformToggleRadioOther = function () {};\n  }\n\n  function getParam(name) {\n    var params = new URLSearchParams(window.location.search);\n    return params.get(name);\n  }\n\n  function fireChange(el) {\n    var evt = document.createEvent('HTMLEvents');\n    evt.initEvent('change', true, false);\n    el.dispatchEvent(evt);\n  }\n\n  function selectUniversity(raw) {\n    var wanted = raw.trim().toLowerCase();\n    var select = document.getElementById('input_' + formId + '_' + UNIVERSITY_FIELD_ID);\n    if (!select) return;\n    for (var i = 0; i < select.options.length; i++) {\n      var opt = select.options[i];\n      if (opt.text.trim().toLowerCase() === wanted || opt.value.trim().toLowerCase() === wanted) {\n        select.selectedIndex = i;\n        fireChange(select);\n        break;\n      }\n    }\n  }\n\n  function fireClick(el) {\n    var evt;\n    try {\n      evt = new MouseEvent('click', { bubbles: true, cancelable: true, view: window });\n    } catch (e) {\n      evt = document.createEvent('MouseEvents');\n      evt.initEvent('click', true, true);\n    }\n    el.dispatchEvent(evt);\n  }\n\n  \/\/ Finds a Booking Type radio by its exact label text (case-\n  \/\/ insensitive) and its wrapping .gchoice element, regardless of\n  \/\/ whether it's currently hidden or not. Generalised so both\n  \/\/ University Invoiced and Faculty can reuse the same lookup.\n  function findBookingTypeChoice(targetValue) {\n    if (!wrapper) return null;\n    var radios = wrapper.querySelectorAll('#field_' + formId + '_' + BOOKING_TYPE_FIELD_ID + ' input[type=\"radio\"]');\n    for (var i = 0; i < radios.length; i++) {\n      var radio = radios[i];\n      var label = wrapper.querySelector('label[for=\"' + radio.id + '\"]');\n      var labelText = label ? label.textContent.trim().toLowerCase() : '';\n      if (labelText === targetValue.toLowerCase()) {\n        return { radio: radio, label: label, allRadios: radios };\n      }\n    }\n    return null;\n  }\n\n  \/\/ Hidden by default - this option is only ever meant to be reached\n  \/\/ via a private &uni=1 link, never picked by a student landing on\n  \/\/ the form directly. Runs regardless of whether that param is\n  \/\/ present, so the organic\/default view never shows it.\n  function hideUniversityInvoicedByDefault() {\n    hideChoiceByDefault(BOOKING_TYPE_UNI_VALUE);\n  }\n\n  \/\/ UPDATED 2026-09-03 (again): Faculty is now ALSO hidden by default,\n  \/\/ same as University Invoiced - a student landing on the form with\n  \/\/ no params at all should only ever see \"Standard Booking\" as a\n  \/\/ pickable option. Faculty is only ever reachable via a &type=faculty\n  \/\/ link now, same private-link-only treatment University Invoiced has\n  \/\/ always had.\n  function hideFacultyByDefault() {\n    hideChoiceByDefault(BOOKING_TYPE_FACULTY_VALUE);\n  }\n\n  function hideChoiceByDefault(targetValue) {\n    var found = findBookingTypeChoice(targetValue);\n    if (!found) return;\n    var choiceWrap = found.radio.closest ? found.radio.closest('.gchoice') : null;\n    if (choiceWrap) {\n      choiceWrap.style.display = 'none';\n    }\n  }\n\n  \/\/ Once a booking type is fully determined by a URL param (either\n  \/\/ &university= or &type=faculty), there's nothing left for the\n  \/\/ student to pick - hide the whole radio field AND its \"Booking\n  \/\/ Type\" heading rather than just narrowing down which choices show.\n  \/\/ GF's Conditional Logic downstream (student\/staff radio, coupon\n  \/\/ field, summary blocks, T&Cs) all keys off the radio's VALUE, not\n  \/\/ its visibility - since selectBookingTypeByValue() still sets\n  \/\/ radio.checked = true before this runs, hiding the field here\n  \/\/ doesn't break anything downstream.\n  function hideBookingTypeSection() {\n    if (!wrapper) return;\n    var field = wrapper.querySelector('#field_' + formId + '_' + BOOKING_TYPE_FIELD_ID);\n    if (field) field.style.display = 'none';\n    var heading = wrapper.querySelector('#field_' + formId + '_' + BOOKING_TYPE_HEADING_FIELD_ID);\n    if (heading) heading.style.display = 'none';\n  }\n\n  \/\/ Selects the Booking Type choice matching targetValue, then hides\n  \/\/ the whole Booking Type section (see above) - this only ever runs\n  \/\/ from prefill(), i.e. only when a URL param has already decided\n  \/\/ the booking type, never from an organic\/manual click. lockOthers\n  \/\/ additionally disables the other two radios as a defensive\n  \/\/ belt-and-braces measure (University Invoiced only) - mostly moot\n  \/\/ now the section is hidden either way, but keeps them from being\n  \/\/ submitted if the section were ever force-shown again.\n  function selectBookingTypeByValue(targetValue, lockOthers) {\n    if (!wrapper) return;\n    var found = findBookingTypeChoice(targetValue);\n    if (!found) return;\n\n    \/\/ UPDATED 2026-09-03 (again): un-hide the target choice itself\n    \/\/ unconditionally now, not just when lockOthers - Faculty is\n    \/\/ hidden by default too now (see hideFacultyByDefault above), so\n    \/\/ its own trigger needs to reveal it first before checking it,\n    \/\/ same as University Invoiced already did. Moot in practice since\n    \/\/ hideBookingTypeSection() below immediately hides the whole\n    \/\/ field again anyway, but keeps the function correct on its own.\n    var choiceWrap = found.radio.closest ? found.radio.closest('.gchoice') : null;\n    if (choiceWrap) {\n      choiceWrap.style.display = '';\n    }\n\n    var radio = found.radio;\n    radio.checked = true;\n    \/\/ Setting .checked in JS never fires a native change event on a\n    \/\/ radio the way a real click does, and GF's own conditional-logic\n    \/\/ listener for radio\/checkbox fields is typically bound to click,\n    \/\/ not change - so fire both rather than guess which one GF is\n    \/\/ listening for.\n    fireClick(radio);\n    fireChange(radio);\n    \/\/ Belt-and-braces: GF's own public function for forcing a\n    \/\/ conditional-logic recheck after a script changes a field's\n    \/\/ value. Only call it if the page has actually loaded it.\n    if (window.gf_apply_rules) {\n      try {\n        gf_apply_rules(formId, [BOOKING_TYPE_FIELD_ID], true);\n      } catch (e) { \/* no-op if GF's signature differs by version *\/ }\n    }\n\n    if (lockOthers) {\n      lockOtherBookingTypes(found.allRadios, radio);\n    }\n\n    hideBookingTypeSection();\n  }\n\n  \/\/ FIX 2026-09-14: this used to also set radio.disabled = true on the\n  \/\/ other two choices. Found via live testing that University Invoiced\n  \/\/ (the only trigger that passed lockOthers=true) was intermittently\n  \/\/ causing Gravity Forms' AJAX page-turn submission to silently fail\n  \/\/ and fall back to a full page reload (confirmed via performance\n  \/\/ navigation entries + JS state being wiped) - Faculty, which never\n  \/\/ disabled any radios, never had this problem. A required radio\n  \/\/ group with 2 of its 3 inputs actually disabled (not just hidden)\n  \/\/ inside a hidden fieldset is the most likely trigger. Disabling was\n  \/\/ always redundant anyway: hideBookingTypeSection() already hides the\n  \/\/ whole fieldset, so a visitor can't reach these radios to change\n  \/\/ them regardless of their disabled state - only the hide is needed.\n  function lockOtherBookingTypes(radios, selectedRadio) {\n    for (var i = 0; i < radios.length; i++) {\n      var radio = radios[i];\n      if (radio === selectedRadio) continue;\n      var choiceWrap = radio.closest ? radio.closest('.gchoice') : null;\n      if (choiceWrap) {\n        choiceWrap.style.display = 'none';\n      }\n    }\n  }\n\n  function prefill() {\n    hideUniversityInvoicedByDefault();\n    hideFacultyByDefault();\n\n    \/\/ &university=<Name> now ONLY prefills the University Name\n    \/\/ dropdown - it no longer implies University Invoiced on its own.\n    \/\/ That decoupling is needed because Faculty trip links have\n    \/\/ started carrying &university= too (to prefill the dropdown for\n    \/\/ them as well), so its mere presence stopped being a reliable\n    \/\/ \"this is a University Invoiced link\" signal the moment it could\n    \/\/ also show up on Faculty links.\n    var uniName = getParam('university');\n    if (uniName) {\n      selectUniversity(uniName);\n    }\n\n    \/\/ &uni=1 is the new, separate signal that actually decides\n    \/\/ University Invoiced - only ever put on the private University\n    \/\/ Invoiced links, same \"unique signal\" role &university= used to\n    \/\/ play alone. Checked independently of &university= above, so a\n    \/\/ link can carry both together (dropdown prefill + booking type)\n    \/\/ without the two stepping on each other.\n    var uniType = getParam('uni');\n    if (uniType) {\n      selectBookingTypeByValue(BOOKING_TYPE_UNI_VALUE, true);\n      \/\/ University Invoiced takes priority if a link somehow carried\n      \/\/ both &uni= and &type=faculty - shouldn't happen by design,\n      \/\/ but don't also run the Faculty trigger on top of it if it did.\n      return;\n    }\n\n    var type = getParam('type');\n    if (type && type.trim().toLowerCase() === 'faculty') {\n      selectBookingTypeByValue(BOOKING_TYPE_FACULTY_VALUE, false);\n      return;\n    }\n\n    \/\/ UPDATED 2026-09-03: neither &uni=1 nor &type=faculty is present -\n    \/\/ the only choice left visible is Standard Booking (University\n    \/\/ Invoiced and Faculty are both hidden by default above), so\n    \/\/ auto-select it and hide the whole Booking Type section the same\n    \/\/ way the other two triggers do. Previously this case just left\n    \/\/ Standard sitting there unselected with the picker still showing -\n    \/\/ now it's fully decided and hidden too, consistent with \"nothing\n    \/\/ left to pick\" applying to all three outcomes, not just two of them.\n    selectBookingTypeByValue(BOOKING_TYPE_STANDARD_VALUE, false);\n  }\n\n  prefill();\n  setTimeout(prefill, 800);\n})();\n<\/script><\/div><div id=\"field_14_8\" class=\"gfield gfield--type-select gfield--input-type-select gfield--width-half gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"><label class=\"gfield_label gform-field-label\" for=\"input_14_8\"><span class=\"gform-field-label__text\">Select your free t-shirt size<\/span><span class=\"gfield_required\"><span class=\"gfield_required gfield_required_asterisk\">*<\/span><\/span><\/label><div class=\"ginput_container ginput_container_select\"><select name=\"input_8\" id=\"input_14_8\" class=\"large gfield_select\" aria-required=\"true\" aria-invalid=\"false\"><option value=\"Small\">Small<\/option><option value=\"Medium\">Medium<\/option><option value=\"Large\">Large<\/option><option value=\"extra-large\">Extra large<\/option><option value=\"xxl\">XXL<\/option><\/select><\/div><\/div><div id=\"field_14_27\" class=\"gfield gfield--type-select gfield--input-type-select gfield--width-half gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"><label class=\"gfield_label gform-field-label\" for=\"input_14_27\"><span class=\"gform-field-label__text\">Year of Study<\/span><span class=\"gfield_required\"><span class=\"gfield_required gfield_required_asterisk\">*<\/span><\/span><\/label><div class=\"ginput_container ginput_container_select\"><select name=\"input_27\" id=\"input_14_27\" class=\"large gfield_select\" aria-required=\"true\" aria-invalid=\"false\"><option value=\"\" selected class=\"gf_placeholder\">Please make a selection<\/option><option value=\"1st Year\">1st Year<\/option><option value=\"2nd Year\">2nd Year<\/option><option value=\"3rd Year\">3rd Year<\/option><option value=\"4th Year\">4th Year<\/option><option value=\"5th Year +\">5th Year +<\/option><\/select><\/div><\/div><div id=\"field_14_84\" class=\"gfield gfield--type-text gfield--input-type-text gfield--width-half gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"><label class=\"gfield_label gform-field-label\" for=\"input_14_84\"><span class=\"gform-field-label__text\">Degree\/Course<\/span><span class=\"gfield_required\"><span class=\"gfield_required gfield_required_asterisk\">*<\/span><\/span><\/label><div class=\"ginput_container ginput_container_text\"><input name=\"input_84\" id=\"input_14_84\" type=\"text\" value=\"\" class=\"large\" aria-required=\"true\" aria-invalid=\"false\"><\/div><\/div><fieldset id=\"field_14_117\" class=\"gfield gfield--type-radio gfield--type-choice gfield--input-type-radio gfield--width-half field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible gfield--choice-align-horizontal\"><legend class=\"gfield_label gform-field-label\"><span class=\"gform-field-label__text\">Are you interested in becoming a Challenge Leader?<\/span><\/legend><div class=\"ginput_container ginput_container_radio\"><div class=\"gfield_radio\" id=\"input_14_117\">\n\t\t\t<div class=\"gchoice gchoice_14_117_0\">\n\t\t\t\t\t<input class=\"gfield-choice-input\" name=\"input_117\" type=\"radio\" value=\"Yes\" id=\"choice_14_117_0\" onchange=\"gformToggleRadioOther( this )\">\n\t\t\t\t\t<label for=\"choice_14_117_0\" id=\"label_14_117_0\" class=\"gform-field-label gform-field-label--type-inline\">Yes<\/label>\n\t\t\t<\/div>\n\t\t\t<div class=\"gchoice gchoice_14_117_1\">\n\t\t\t\t\t<input class=\"gfield-choice-input\" name=\"input_117\" type=\"radio\" value=\"No\" id=\"choice_14_117_1\" onchange=\"gformToggleRadioOther( this )\">\n\t\t\t\t\t<label for=\"choice_14_117_1\" id=\"label_14_117_1\" class=\"gform-field-label gform-field-label--type-inline\">No<\/label>\n\t\t\t<\/div><\/div><\/div><\/fieldset><div id=\"field_14_122\" class=\"gfield gfield--type-html gfield--input-type-html gfield--width-full h-c-title gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\">Emergency Contact<\/div><div id=\"field_14_123\" class=\"gfield gfield--type-text gfield--input-type-text gfield--width-half gf_readonly gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"><label class=\"gfield_label gform-field-label\" for=\"input_14_123\"><span class=\"gform-field-label__text\">Emergency Contact Name<\/span><span class=\"gfield_required\"><span class=\"gfield_required gfield_required_asterisk\">*<\/span><\/span><\/label><div class=\"ginput_container ginput_container_text\"><input name=\"input_123\" id=\"input_14_123\" type=\"text\" value=\"\" class=\"large\" placeholder=\"Enter Full Name\" aria-required=\"true\" aria-invalid=\"false\"><\/div><\/div><div id=\"field_14_125\" class=\"gfield gfield--type-phone gfield--input-type-phone gfield--phone-format-international gfield--width-half gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"><label class=\"gfield_label gform-field-label\" for=\"input_14_125\"><span class=\"gform-field-label__text\">Emergency Contact Phone Number<\/span><span class=\"gfield_required\"><span class=\"gfield_required gfield_required_asterisk\">*<\/span><\/span><\/label><div class=\"ginput_container ginput_container_phone\"><input name=\"input_125\" id=\"input_14_125\" type=\"tel\" value=\"\" class=\"large\" aria-required=\"true\" aria-invalid=\"false\"><\/div><\/div><div id=\"field_14_143\" class=\"gfield gfield--type-section gfield--input-type-section gsection field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"><h3 class=\"gsection_title\"><\/h3><\/div><fieldset id=\"field_14_142\" class=\"gfield gfield--type-consent gfield--type-choice gfield--input-type-consent gfield--width-full gfield_contains_required field_sublabel_below gfield--no-description field_description_below hidden_label field_validation_below gfield_visibility_visible gfield--choice-align-vertical\"><legend class=\"gfield_label gform-field-label gfield_label_before_complex\"><span class=\"gform-field-label__text\">T&amp;Cs - University Invoiced<\/span><span class=\"gfield_required\"><span class=\"gfield_required gfield_required_asterisk\">*<\/span><\/span><\/legend><div class=\"ginput_container ginput_container_consent\"><input name=\"input_142.1\" id=\"input_14_142_1\" type=\"checkbox\" value=\"1\" aria-required=\"true\" aria-invalid=\"false\"> <label class=\"gform-field-label gform-field-label--type-inline gfield_consent_label\" for=\"input_14_142_1\"><span class=\"gform-field-label__text\">I have read and agree to the <a href=\"https:\/\/challengesabroad.com\/nz\/terms-conditions\/\" target=\"_blank\" aria-label=\"Terms &amp; Conditions\">Terms &amp; Conditions<\/a>.<\/span><span class=\"gfield_required gfield_required_asterisk\">*<\/span><\/label><input type=\"hidden\" name=\"input_142.2\" value='I have read and agree to the &lt;a href=\"https:\/\/challengesabroad.com\/nz\/terms-conditions\/\" target=\"_blank\"&gt;Terms &amp; Conditions&lt;\/a&gt;.' class=\"gform_hidden\"><input type=\"hidden\" name=\"input_142.3\" value=\"14\" class=\"gform_hidden\"><\/div><\/fieldset><\/div>\n                    <\/div>\n                    <div class=\"gform-page-footer gform_page_footer top_label\">\n                        <button type=\"button\" id=\"gform_previous_button_14_19\" class=\"gform_previous_button gform-theme-button gform-theme-button--secondary button\" onclick=\"gform.submission.handleButtonClick(this);\" data-submission-type=\"previous\">Previous Page<\/button> <button type=\"button\" id=\"gform_next_button_14_19\" class=\"gform_next_button gform-theme-button button\" onclick=\"gform.submission.handleButtonClick(this);\" data-submission-type=\"next\">Next Step<\/button> \n                    <\/div>\n                <\/div>\n                <div id=\"gform_page_14_3\" class=\"gform_page\" data-js=\"page-field-id-19\" style=\"display:none;\">\n                    <div class=\"gform_page_fields\">\n                        <div id=\"gform_fields_14_3\" class=\"gform_fields top_label form_sublabel_below description_below validation_below\"><div id=\"field_14_39\" class=\"gfield gfield--type-html gfield--input-type-html gfield--width-full h-c-title gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\">Order Summary and Checkout<\/div><div id=\"field_14_100\" class=\"gfield gfield--type-html gfield--input-type-html gfield--width-full gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_hidden\">You can sign up to this program by paying the deposit with the PayPal payment option available at checkout.<\/div><div id=\"field_14_111\" class=\"gfield gfield--type-product gfield--input-type-select gfield--width-full gfield_price gfield_price_14_111 gfield_product_14_111 gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_hidden\"><label class=\"gfield_label gform-field-label\" for=\"input_14_111\"><span class=\"gform-field-label__text\">Your registration fee:<\/span><span class=\"gfield_required\"><span class=\"gfield_required gfield_required_asterisk\">*<\/span><\/span><\/label><div class=\"ginput_container ginput_container_select\"><select name=\"input_111\" id=\"input_14_111\" class=\"large gfield_select\" aria-required=\"true\" aria-invalid=\"false\"><option value=\"Challenge Registration Fee|300\">Registration Fee - $ 250<\/option><\/select><\/div><\/div><div id=\"field_14_77\" class=\"gfield gfield--type-total gfield--input-type-total gfield--width-full gfield_price gfield_price_14_ gfield_total gfield_total_14_ field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\" aria-atomic=\"true\" aria-live=\"polite\"><label class=\"gfield_label gform-field-label\" for=\"input_14_77\"><span class=\"gform-field-label__text\">Your total payment<\/span><\/label><div class=\"ginput_container ginput_container_total\">\n\t\t\t\t\t\t\t<input type=\"text\" readonly name=\"input_77\" id=\"input_14_77\" value=\"$ 0.00\" class=\"gform-text-input-reset ginput_total ginput_total_14\">\n\t\t\t\t\t\t<\/div><\/div><div id=\"field_14_133\" class=\"gfield gfield--type-number gfield--input-type-number gfield--width-full gfield_calculation field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_hidden\"><label class=\"gfield_label gform-field-label\" for=\"input_14_133\"><span class=\"gform-field-label__text\">Order Total<\/span><\/label><div class=\"ginput_container ginput_container_number\"><input name=\"input_133\" id=\"input_14_133\" type=\"text\" step=\"any\" value=\"\" class=\"large gform-text-input-reset\" readonly aria-invalid=\"false\"><\/div><\/div><div id=\"field_14_128\" class=\"gfield gfield--type-html gfield--input-type-html gfield--width-full gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"><!--\n  COMBINED BOOKING FORM \u2014 STANDARD SUMMARY BLOCK (MINIMAL LAYOUT)\n  ============================================================\n  DRAFT - not yet placed on the live form.\n\n  Manager-preferred minimal layout, matching the UK-style comparison\n  built earlier: plain stacked rows, no separate \"Total\" line (goes\n  straight from Extension Cost to Registration Fee - Due Now), no\n  trip name \/ trip dates sublabels. Payment note stays removed;\n  Refund Details stays, per the earlier instruction for this combined\n  form specifically.\n\n  Same math as before: discount comes off Trip Cost \/ Remaining\n  Balance only, Deposit Due Now is always the full, untouched amount.\n  This block never asks GF's own Total\/product math to apply any\n  discount, by design (GF's native Coupons add-on enforces a $1.00\n  minimum charge, which would leave the deposit never quite able to\n  hit its intended value if a discount applied there).\n\n  Promo codes come from an ACF Repeater field (\"Promo Codes\"), output\n  as window.CA_PROMO_CODES via acf-promo-codes-snippet.php.\n\n  Set this block's HTML field container to Conditional Logic: show if\n  Booking Type is Standard Booking, in GF admin.\n\n  Update the field IDs below (EXTENSION_PRICE_FIELD_ID, TRIP_NAME_\n  FIELD_ID, TRIP_DATES_FIELD_ID, EXTENSION_DATES_FIELD_ID, and the\n  input_<formId>_127 \/ input_<formId>_77 \/ choice_<formId>_130_1\n  lookups inside updateSummary) once the combined form's real field\n  IDs are known - these are carried over as placeholders and may not\n  match.\n  ============================================================\n-->\n<div class=\"booking-price-summary booking-price-summary--std-minimal\" id=\"booking-price-summary-standard\">\n  <div class=\"booking-price-summary__row\">\n    <span class=\"booking-price-summary__label\">Trip Cost<span class=\"booking-price-summary__sublabel\" id=\"booking-price-trip-name-std\"><\/span><span class=\"booking-price-summary__sublabel\" id=\"booking-price-trip-dates-std\"><\/span><\/span>\n    <span class=\"booking-price-summary__value\" id=\"booking-price-trip-cost-std\">$0.00<\/span>\n  <\/div>\n  <div class=\"booking-price-summary__row booking-price-summary__row--extension\" id=\"booking-price-extension-row-std\" style=\"display:none;\">\n    <span class=\"booking-price-summary__label\">Extension Cost<\/span>\n    <span class=\"booking-price-summary__value\" id=\"booking-price-extension-std\">$0.00<\/span>\n  <\/div>\n  <div class=\"booking-price-summary__row booking-price-summary__row--coupon\" id=\"booking-price-coupon-row-std\" style=\"display:none;\">\n    <span class=\"booking-price-summary__label\" id=\"booking-price-coupon-label-std\">Coupon Discount<\/span>\n    <span class=\"booking-price-summary__value\" id=\"booking-price-coupon-std\">\u2014<\/span>\n  <\/div>\n  <div class=\"booking-price-summary__row booking-price-summary__row--balance-v2\">\n    <span class=\"booking-price-summary__label\">Remaining Balance<span class=\"booking-price-summary__sublabel\">In Flexible Instalments<\/span><\/span>\n    <span class=\"booking-price-summary__value\" id=\"booking-price-total-std\">$0.00<\/span>\n  <\/div>\n  <div class=\"booking-price-summary__row booking-price-summary__row--due-now-v2\">\n    <span class=\"booking-price-summary__label\">Registration Fee - Due Now<\/span>\n    <span class=\"booking-price-summary__value\" id=\"booking-price-deposit-std\">-$250.00<\/span>\n  <\/div>\n  <!-- UPDATED 2026-09-03: Apply Discount widget moved OUT to its own\n       separate GF HTML field - see\n       combined-booking-apply-discount-standard.html - matching the\n       same split already done for Faculty. The script below still\n       finds and wires up #booking-promo-input-std \/\n       #booking-promo-apply-std wherever they physically live, since it\n       looks them up by ID within the whole .gform_wrapper, not\n       relative to this block. -->\n  <div class=\"booking-refund-note\">\n    <p class=\"booking-refund-note__title\">Refund Details<\/p>\n    <p>You can cancel your place and receive a full refund within 7 days of your registration, after this date your deposit amount will be non-refundable.<\/p>\n  <\/div>\n<\/div>\n<script>\n(function () {\n  var scriptEl = document.currentScript;\n  var wrapper = scriptEl ? scriptEl.closest('.gform_wrapper') : null;\n  var formId = wrapper ? wrapper.id.replace('gform_wrapper_', '') : '1';\n\n  var EXTENSION_PRICE_FIELD_ID = '135';\n  var TRIP_NAME_FIELD_ID = '5';\n  var TRIP_DATES_FIELD_ID = '82';\n\n  var appliedDiscount = 0;\n  var appliedCode = '';\n\n  \/\/ For a <select> field (like \"Your Trip Option\"), .value is just the\n  \/\/ URL slug, not what's shown on screen - read the selected option's\n  \/\/ visible text instead. Falls back to .value for plain text fields.\n  function getFieldDisplayText(field) {\n    if (!field) return '';\n    if (field.tagName === 'SELECT') {\n      var selected = field.options[field.selectedIndex];\n      return selected ? String(selected.text || '').trim() : '';\n    }\n    return String(field.value || '').trim();\n  }\n\n  \/\/ Trip name \/ trip dates sublabels under \"Trip Cost\", stacked on\n  \/\/ their own lines (see CSS). Both fields are already prefilled\/\n  \/\/ read-only elsewhere on page 1, so this just mirrors what's\n  \/\/ already selected there.\n  function updateTripDetail() {\n    var tripNameField = document.getElementById('input_' + formId + '_' + TRIP_NAME_FIELD_ID);\n    var tripDatesField = document.getElementById('input_' + formId + '_' + TRIP_DATES_FIELD_ID);\n    var tripNameEl = wrapper ? wrapper.querySelector('#booking-price-trip-name-std') : null;\n    var tripDatesEl = wrapper ? wrapper.querySelector('#booking-price-trip-dates-std') : null;\n    if (tripNameEl) tripNameEl.textContent = getFieldDisplayText(tripNameField);\n    if (tripDatesEl) tripDatesEl.textContent = getFieldDisplayText(tripDatesField);\n  }\n\n  function formatCurrency(amount) {\n    if (isNaN(amount)) amount = 0;\n    return '$' + amount.toLocaleString('en-AU', { minimumFractionDigits: 2, maximumFractionDigits: 2 });\n  }\n  function parseCurrency(str) {\n    var num = parseFloat(String(str || '').replace(\/[^0-9.-]\/g, ''));\n    return isNaN(num) ? 0 : num;\n  }\n\n  function getPromoCodes() {\n    return (window.CA_PROMO_CODES && typeof window.CA_PROMO_CODES === 'object') ? window.CA_PROMO_CODES : {};\n  }\n\n  function applyPromoCode() {\n    var input = wrapper ? wrapper.querySelector('#booking-promo-input-std') : null;\n    var errorEl = wrapper ? wrapper.querySelector('#booking-promo-error-std') : null;\n    var entered = input ? String(input.value || '').trim().toUpperCase() : '';\n    var codes = getPromoCodes();\n\n    if (entered && codes.hasOwnProperty(entered)) {\n      appliedDiscount = codes[entered];\n      appliedCode = entered;\n      if (errorEl) errorEl.style.display = 'none';\n    } else {\n      appliedDiscount = 0;\n      appliedCode = '';\n      if (errorEl) errorEl.style.display = entered ? '' : 'none';\n    }\n    updateSummary();\n  }\n\n  function updateSummary() {\n    var tripCostField = document.getElementById('input_' + formId + '_127');\n    var depositField = document.getElementById('input_' + formId + '_77');\n    var extensionPriceField = document.getElementById('input_' + formId + '_' + EXTENSION_PRICE_FIELD_ID);\n    var extensionCheckbox = document.getElementById('choice_' + formId + '_130_1');\n\n    var tripCost = tripCostField ? parseCurrency(tripCostField.value) : 0;\n    var depositDue = depositField ? parseCurrency(depositField.value) : 0;\n    var extensionPrice = extensionPriceField ? parseCurrency(extensionPriceField.value) : 0;\n    var extensionSelected = extensionCheckbox ? extensionCheckbox.checked : false;\n    var extensionCost = (extensionSelected && extensionPrice > 0) ? extensionPrice : 0;\n\n    var clampedDiscount = Math.min(appliedDiscount, tripCost + extensionCost);\n    var tripTotal = (tripCost - clampedDiscount) + extensionCost;\n    var remainingBalance = tripTotal - depositDue;\n\n    var tripCostEl = wrapper ? wrapper.querySelector('#booking-price-trip-cost-std') : null;\n    var extensionRowEl = wrapper ? wrapper.querySelector('#booking-price-extension-row-std') : null;\n    var extensionEl = wrapper ? wrapper.querySelector('#booking-price-extension-std') : null;\n    var depositEl = wrapper ? wrapper.querySelector('#booking-price-deposit-std') : null;\n    var totalEl = wrapper ? wrapper.querySelector('#booking-price-total-std') : null;\n    var couponRowEl = wrapper ? wrapper.querySelector('#booking-price-coupon-row-std') : null;\n    var couponLabelEl = wrapper ? wrapper.querySelector('#booking-price-coupon-label-std') : null;\n    var couponEl = wrapper ? wrapper.querySelector('#booking-price-coupon-std') : null;\n\n    if (tripCostEl) tripCostEl.textContent = formatCurrency(tripCost);\n    if (depositEl) depositEl.textContent = (depositDue > 0 ? '-' : '') + formatCurrency(depositDue);\n    if (totalEl) totalEl.textContent = formatCurrency(remainingBalance);\n\n    if (extensionCost > 0 && extensionRowEl && extensionEl) {\n      extensionEl.textContent = formatCurrency(extensionCost);\n      extensionRowEl.style.display = '';\n    } else if (extensionRowEl) {\n      extensionRowEl.style.display = 'none';\n    }\n\n    if (clampedDiscount > 0 && couponRowEl && couponEl) {\n      if (couponLabelEl) couponLabelEl.textContent = 'Coupon Discount (' + appliedCode + ')';\n      couponEl.textContent = '-' + formatCurrency(clampedDiscount);\n      couponRowEl.style.display = '';\n    } else if (couponRowEl) {\n      couponRowEl.style.display = 'none';\n    }\n  }\n\n  var extensionCheckboxEl = document.getElementById('choice_' + formId + '_130_1');\n  if (extensionCheckboxEl) {\n    extensionCheckboxEl.addEventListener('change', updateSummary);\n  }\n\n  \/\/ UPDATED 2026-09-03: same fix Faculty needed - this <script> may now\n  \/\/ run before the separate Apply Discount field's HTML has been\n  \/\/ parsed into the DOM (inline <script> tags execute immediately at\n  \/\/ parse time), so wire it up via a function that runs immediately\n  \/\/ AND retries after the same 800ms delay updateSummary() already\n  \/\/ uses below, guaranteeing the page has fully parsed by then\n  \/\/ regardless of field order.\n  function wirePromoWidget() {\n    var applyBtn = wrapper ? wrapper.querySelector('#booking-promo-apply-std') : null;\n    if (applyBtn) {\n      applyBtn.addEventListener('click', applyPromoCode);\n    }\n    var promoInput = wrapper ? wrapper.querySelector('#booking-promo-input-std') : null;\n    if (promoInput) {\n      promoInput.addEventListener('keydown', function (e) {\n        if (e.key === 'Enter') {\n          e.preventDefault();\n          applyPromoCode();\n        }\n      });\n    }\n  }\n\n  if (window.gform && gform.addFilter) {\n    gform.addFilter('gform_product_total', function (total, fid) {\n      if (String(fid) === String(formId)) updateSummary();\n      return total;\n    });\n  }\n\n  wirePromoWidget();\n  setTimeout(wirePromoWidget, 800);\n  updateSummary();\n  setTimeout(updateSummary, 800);\n  updateTripDetail();\n  setTimeout(updateTripDetail, 800);\n\n  \/\/ FIX 2026-09-16: with Gravity Forms AJAX enabled, \"Next\"\/\"Previous\"\n  \/\/ no longer reload the page - the same JS context (and the one-shot\n  \/\/ 800ms retries above) carries over across page turns instead of\n  \/\/ being wiped by a fresh page load. If one of those retries lands\n  \/\/ right as the page is turning, it can catch the Trip Name\/Trip\n  \/\/ Dates fields mid-transition and bake a stale\/wrong value (e.g.\n  \/\/ \"No dates available\") into the summary panel, with nothing to\n  \/\/ correct it afterwards since the retries only fire once.\n  \/\/\n  \/\/ gform_page_loaded is GF's own event for \"a page of this form just\n  \/\/ became visible\" and fires on every AJAX page turn (not just the\n  \/\/ very first page load), so re-running both functions here keeps\n  \/\/ the summary panel honest no matter when\/why it went stale -\n  \/\/ it always ends up mirroring whatever the fields actually hold.\n  if (window.jQuery) {\n    jQuery(document).on('gform_page_loaded', function (event, loadedFormId) {\n      if (String(loadedFormId) === String(formId)) {\n        updateTripDetail();\n        updateSummary();\n      }\n    });\n  }\n})();\n<\/script><\/div><div id=\"field_14_141\" class=\"gfield gfield--type-html gfield--input-type-html gfield--width-full gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"><!--\n  COMBINED BOOKING FORM \u2014 FACULTY SUMMARY BLOCK (MINIMAL LAYOUT)\n  ============================================================\n  LIVE on the production form as of 2026-09-14 (synced from the\n  actual deployed source, pasted by Tiffany - this file previously\n  only had an older draft without preselectStudentByDefault()).\n\n  UPDATED 2026-09-03: Confirmed Faculty uses the exact same math as\n  Standard - the coupon only ever reduces Trip Cost \/ Remaining\n  Balance, Deposit Due Now is always charged in full regardless of\n  any code entered. This replaces the earlier draft, which tried to\n  zero the deposit via Gravity Forms' native Coupons add-on - that\n  approach is scrapped, since the deposit must never be touched for\n  either booking type. This also sidesteps the GF Coupons $1.00\n  minimum-charge risk entirely, since GF's native coupon system is no\n  longer used anywhere in this block.\n\n  Per-institution codes live in the SAME ACF \"Promo Codes\" repeater\n  Standard uses (window.CA_PROMO_CODES) - one shared list for both\n  booking types, no separate system to manage.\n\n  SECOND, SEPARATE COUPON BOX - UNISTAFF (deposit waiver):\n  UNISTAFF needs to actually zero the deposit for real, which this\n  custom widget can't do (it never touches GF's real product pricing,\n  by design). So UNISTAFF runs through a second, genuinely different\n  mechanism: add a real Gravity Forms Coupon field (GF's own Coupons\n  add-on, not this HTML block) elsewhere on this page, labelled\n  \"Apply Discount for Uni Staff\", with its own Conditional Logic set\n  to show if Booking Type is Faculty Booking. Scope the UNISTAFF\n  coupon in GF admin to apply only to the deposit\/registration-fee\n  product - Trip Cost stays untouched, so Remaining Balance still\n  reflects the full trip cost owed later. This is a real field added\n  in the GF editor, not something in this file - once it exists, send\n  its field ID over so the matching CSS can be written to style it\n  the same as the \"Apply Discount\" box below.\n\n  Set this block's HTML field container to Conditional Logic: show if\n  Booking Type is Faculty Booking, in GF admin.\n\n  2026-09-14: found via live console error that preselectStudentByDefault()\n  below crashes on this site's stale gformToggleRadioOther onchange\n  attribute (present on the Student\/Staff radio inputs themselves) -\n  see gform-toggle-radio-other-stub.php for the fix. Not a bug in this\n  file's own logic.\n\n  Update the field IDs below (EXTENSION_PRICE_FIELD_ID and the\n  input_<formId>_127 \/ input_<formId>_77 \/ choice_<formId>_130_1\n  lookups inside updateSummary) once the combined form's real field\n  IDs are known - these are carried over as placeholders and may not\n  match.\n  ============================================================\n-->\n<div class=\"booking-price-summary booking-price-summary--std-minimal\" id=\"booking-price-summary-faculty\">\n  <div class=\"booking-price-summary__row\">\n    <span class=\"booking-price-summary__label\">Trip Cost<span class=\"booking-price-summary__sublabel\" id=\"booking-price-trip-name-fac\"><\/span><span class=\"booking-price-summary__sublabel\" id=\"booking-price-trip-dates-fac\"><\/span><\/span>\n    <span class=\"booking-price-summary__value\" id=\"booking-price-trip-cost-fac\">$0.00<\/span>\n  <\/div>\n  <div class=\"booking-price-summary__row booking-price-summary__row--extension\" id=\"booking-price-extension-row-fac\" style=\"display:none;\">\n    <span class=\"booking-price-summary__label\">Extension Cost<\/span>\n    <span class=\"booking-price-summary__value\" id=\"booking-price-extension-fac\">$0.00<\/span>\n  <\/div>\n  <div class=\"booking-price-summary__row booking-price-summary__row--coupon\" id=\"booking-price-coupon-row-fac\" style=\"display:none;\">\n    <span class=\"booking-price-summary__label\" id=\"booking-price-coupon-label-fac\">Coupon Discount<\/span>\n    <span class=\"booking-price-summary__value\" id=\"booking-price-coupon-fac\">\u2014<\/span>\n  <\/div>\n  <div class=\"booking-price-summary__row booking-price-summary__row--balance-v2\">\n    <span class=\"booking-price-summary__label\">Remaining Balance<span class=\"booking-price-summary__sublabel\">In Flexible Instalments<\/span><\/span>\n    <span class=\"booking-price-summary__value\" id=\"booking-price-total-fac\">$0.00<\/span>\n  <\/div>\n  <div class=\"booking-price-summary__row booking-price-summary__row--due-now-v2\">\n    <span class=\"booking-price-summary__label\">Registration Fee - Due Now<\/span>\n    <span class=\"booking-price-summary__value\" id=\"booking-price-deposit-fac\">-$250.00<\/span>\n  <\/div>\n  <!-- Apply Discount widget moved OUT to its own separate GF HTML\n       field - see combined-booking-apply-discount-faculty.html - so\n       it can sit Half Width next to the native UNISTAFF Coupon field\n       (78) in GF admin. The script below still finds and wires up\n       #booking-promo-input-fac \/ #booking-promo-apply-fac wherever\n       they physically live, since it looks them up by ID within the\n       whole .gform_wrapper, not relative to this block. -->\n  <div class=\"booking-refund-note\">\n    <p class=\"booking-refund-note__title\">Refund Details<\/p>\n    <p>You can cancel your place and receive a full refund within 7 days of your registration, after this date your deposit amount will be non-refundable.<\/p>\n  <\/div>\n<\/div>\n<script>\n(function () {\n  var scriptEl = document.currentScript;\n  var wrapper = scriptEl ? scriptEl.closest('.gform_wrapper') : null;\n  var formId = wrapper ? wrapper.id.replace('gform_wrapper_', '') : '1';\n\n  var EXTENSION_PRICE_FIELD_ID = '135';\n  var TRIP_NAME_FIELD_ID = '5';\n  var TRIP_DATES_FIELD_ID = '82';\n\n  \/\/ For a <select> field (like \"Your Trip Option\"), .value is just the\n  \/\/ URL slug, not what's shown on screen - read the selected option's\n  \/\/ visible text instead. Falls back to .value for plain text fields.\n  function getFieldDisplayText(field) {\n    if (!field) return '';\n    if (field.tagName === 'SELECT') {\n      var selected = field.options[field.selectedIndex];\n      return selected ? String(selected.text || '').trim() : '';\n    }\n    return String(field.value || '').trim();\n  }\n\n  \/\/ Trip name \/ trip dates sublabels under \"Trip Cost\", stacked on\n  \/\/ their own lines (see CSS). Both fields are already prefilled\/\n  \/\/ read-only elsewhere on page 1, so this just mirrors what's\n  \/\/ already selected there - same as Standard's summary.\n  function updateTripDetail() {\n    var tripNameField = document.getElementById('input_' + formId + '_' + TRIP_NAME_FIELD_ID);\n    var tripDatesField = document.getElementById('input_' + formId + '_' + TRIP_DATES_FIELD_ID);\n    var tripNameEl = wrapper ? wrapper.querySelector('#booking-price-trip-name-fac') : null;\n    var tripDatesEl = wrapper ? wrapper.querySelector('#booking-price-trip-dates-fac') : null;\n    if (tripNameEl) tripNameEl.textContent = getFieldDisplayText(tripNameField);\n    if (tripDatesEl) tripDatesEl.textContent = getFieldDisplayText(tripDatesField);\n  }\n\n  \/\/ UPDATED 2026-09-03: Student\/Staff radio (112) - when set to\n  \/\/ \"University Staff\", Trip Cost reads as $0.00 in the summary\n  \/\/ (staff cover trip cost separately via the UNISTAFF coupon field,\n  \/\/ not through this booking). Everything else - extension cost,\n  \/\/ deposit, remaining balance - still pulls through normally; only\n  \/\/ the trip cost portion zeroes out.\n  var STUDENT_STAFF_FIELD_ID = '112';\n  var STAFF_CHOICE_VALUE = 'University Staff';\n  var STUDENT_CHOICE_VALUE = 'Student';\n\n  var appliedDiscount = 0;\n  var appliedCode = '';\n\n  \/\/ Pre-selects \"Student\" the first time this field is visible with\n  \/\/ nothing checked yet - so a Faculty visitor doesn't have to\n  \/\/ manually pick a default, and Trip Cost doesn't sit at $0.00 (the\n  \/\/ University Staff behaviour) just because nothing was chosen.\n  \/\/ Never overrides an existing selection - only fires when the field\n  \/\/ has no checked radio at all.\n  function preselectStudentByDefault() {\n    if (!wrapper) return;\n    var fieldEl = wrapper.querySelector('#field_' + formId + '_' + STUDENT_STAFF_FIELD_ID);\n    if (!fieldEl) return;\n    \/\/ Skip if GF's conditional logic still has this field hidden -\n    \/\/ nothing to preselect yet, this will run again on the next retry.\n    if (fieldEl.style.display === 'none') return;\n    var alreadyChecked = fieldEl.querySelector('input[type=\"radio\"]:checked');\n    if (alreadyChecked) return;\n    var radios = fieldEl.querySelectorAll('input[type=\"radio\"]');\n    for (var i = 0; i < radios.length; i++) {\n      var radio = radios[i];\n      var label = wrapper.querySelector('label[for=\"' + radio.id + '\"]');\n      var labelText = label ? label.textContent.trim().toLowerCase() : '';\n      if (labelText === STUDENT_CHOICE_VALUE.toLowerCase()) {\n        radio.checked = true;\n        var evt;\n        try {\n          evt = new Event('change', { bubbles: true });\n        } catch (e) {\n          evt = document.createEvent('HTMLEvents');\n          evt.initEvent('change', true, false);\n        }\n        radio.dispatchEvent(evt);\n        updateSummary();\n        break;\n      }\n    }\n  }\n\n  \/\/ Finds the currently CHECKED radio in the Student\/Staff field and\n  \/\/ compares its label text to STAFF_CHOICE_VALUE, case-insensitively -\n  \/\/ same lookup-by-label-text pattern already used for the Booking\n  \/\/ Type radio in the university-prefill script, rather than relying\n  \/\/ on a specific choice input ID (which shifts if choices are\n  \/\/ reordered in GF admin).\n  function isUniversityStaffSelected() {\n    if (!wrapper) return false;\n    var checked = wrapper.querySelector('#field_' + formId + '_' + STUDENT_STAFF_FIELD_ID + ' input[type=\"radio\"]:checked');\n    if (!checked) return false;\n    var label = wrapper.querySelector('label[for=\"' + checked.id + '\"]');\n    var labelText = label ? label.textContent.trim().toLowerCase() : '';\n    return labelText === STAFF_CHOICE_VALUE.toLowerCase();\n  }\n\n  function formatCurrency(amount) {\n    if (isNaN(amount)) amount = 0;\n    return '$' + amount.toLocaleString('en-AU', { minimumFractionDigits: 2, maximumFractionDigits: 2 });\n  }\n  function parseCurrency(str) {\n    var num = parseFloat(String(str || '').replace(\/[^0-9.-]\/g, ''));\n    return isNaN(num) ? 0 : num;\n  }\n\n  \/\/ Same shared ACF-managed code list Standard reads from.\n  function getPromoCodes() {\n    return (window.CA_PROMO_CODES && typeof window.CA_PROMO_CODES === 'object') ? window.CA_PROMO_CODES : {};\n  }\n\n  function applyPromoCode() {\n    var input = wrapper ? wrapper.querySelector('#booking-promo-input-fac') : null;\n    var errorEl = wrapper ? wrapper.querySelector('#booking-promo-error-fac') : null;\n    var entered = input ? String(input.value || '').trim().toUpperCase() : '';\n    var codes = getPromoCodes();\n\n    if (entered && codes.hasOwnProperty(entered)) {\n      appliedDiscount = codes[entered];\n      appliedCode = entered;\n      if (errorEl) errorEl.style.display = 'none';\n    } else {\n      appliedDiscount = 0;\n      appliedCode = '';\n      if (errorEl) errorEl.style.display = entered ? '' : 'none';\n    }\n    updateSummary();\n  }\n\n  function updateSummary() {\n    var tripCostField = document.getElementById('input_' + formId + '_127');\n    \/\/ Read straight off GF's own Total field - this custom promo\n    \/\/ system never touches any GF product\/coupon math, so this is\n    \/\/ always the full, untouched deposit.\n    var depositField = document.getElementById('input_' + formId + '_77');\n    var extensionPriceField = document.getElementById('input_' + formId + '_' + EXTENSION_PRICE_FIELD_ID);\n    var extensionCheckbox = document.getElementById('choice_' + formId + '_130_1');\n\n    var tripCost = tripCostField ? parseCurrency(tripCostField.value) : 0;\n    \/\/ University Staff: trip cost reads as $0.00 - only affects this\n    \/\/ displayed figure, not GF's own underlying product total, which\n    \/\/ is what actually gets charged\/deposited elsewhere.\n    if (isUniversityStaffSelected()) {\n      tripCost = 0;\n    }\n    var depositDue = depositField ? parseCurrency(depositField.value) : 0;\n    var extensionPrice = extensionPriceField ? parseCurrency(extensionPriceField.value) : 0;\n    var extensionSelected = extensionCheckbox ? extensionCheckbox.checked : false;\n    var extensionCost = (extensionSelected && extensionPrice > 0) ? extensionPrice : 0;\n\n    var clampedDiscount = Math.min(appliedDiscount, tripCost + extensionCost);\n    var tripTotal = (tripCost - clampedDiscount) + extensionCost;\n    var remainingBalance = tripTotal - depositDue;\n\n    var tripCostEl = wrapper ? wrapper.querySelector('#booking-price-trip-cost-fac') : null;\n    var extensionRowEl = wrapper ? wrapper.querySelector('#booking-price-extension-row-fac') : null;\n    var extensionEl = wrapper ? wrapper.querySelector('#booking-price-extension-fac') : null;\n    var depositEl = wrapper ? wrapper.querySelector('#booking-price-deposit-fac') : null;\n    var totalEl = wrapper ? wrapper.querySelector('#booking-price-total-fac') : null;\n    var couponRowEl = wrapper ? wrapper.querySelector('#booking-price-coupon-row-fac') : null;\n    var couponLabelEl = wrapper ? wrapper.querySelector('#booking-price-coupon-label-fac') : null;\n    var couponEl = wrapper ? wrapper.querySelector('#booking-price-coupon-fac') : null;\n\n    if (tripCostEl) tripCostEl.textContent = formatCurrency(tripCost);\n    if (depositEl) depositEl.textContent = (depositDue > 0 ? '-' : '') + formatCurrency(depositDue);\n    if (totalEl) totalEl.textContent = formatCurrency(remainingBalance);\n\n    if (extensionCost > 0 && extensionRowEl && extensionEl) {\n      extensionEl.textContent = formatCurrency(extensionCost);\n      extensionRowEl.style.display = '';\n    } else if (extensionRowEl) {\n      extensionRowEl.style.display = 'none';\n    }\n\n    if (clampedDiscount > 0 && couponRowEl && couponEl) {\n      if (couponLabelEl) couponLabelEl.textContent = 'Coupon Discount (' + appliedCode + ')';\n      couponEl.textContent = '-' + formatCurrency(clampedDiscount);\n      couponRowEl.style.display = '';\n    } else if (couponRowEl) {\n      couponRowEl.style.display = 'none';\n    }\n  }\n\n  var extensionCheckboxEl = document.getElementById('choice_' + formId + '_130_1');\n  if (extensionCheckboxEl) {\n    extensionCheckboxEl.addEventListener('change', updateSummary);\n  }\n\n  \/\/ Re-run the summary the moment Student\/Staff is toggled, so Trip\n  \/\/ Cost updates live rather than only on the next page load\/timeout.\n  if (wrapper) {\n    var studentStaffRadios = wrapper.querySelectorAll('#field_' + formId + '_' + STUDENT_STAFF_FIELD_ID + ' input[type=\"radio\"]');\n    for (var i = 0; i < studentStaffRadios.length; i++) {\n      studentStaffRadios[i].addEventListener('change', updateSummary);\n    }\n  }\n\n  \/\/ UPDATED 2026-09-03: This <script> lives inside field 141, but the\n  \/\/ \"Apply Discount\" markup it wires up now lives in a SEPARATE field\n  \/\/ (144, combined-booking-apply-discount-faculty.html) positioned\n  \/\/ AFTER 141 in the field order, so it can sit Half Width next to the\n  \/\/ native UNISTAFF coupon field. Inline <script> tags execute the\n  \/\/ instant the browser parses them - at that point field 144 hasn't\n  \/\/ been parsed into the DOM yet, so querySelector('#booking-promo-\n  \/\/ apply-fac') returned null and the click listener never attached,\n  \/\/ silently breaking \"Apply\". Wrapped the wiring in a function that\n  \/\/ runs immediately (works if the field order ever changes back) AND\n  \/\/ via the same setTimeout retry updateSummary() already uses below -\n  \/\/ by the time that timer fires, the whole page has finished parsing\n  \/\/ regardless of field order, so field 144 is guaranteed to exist.\n  function wirePromoWidget() {\n    var applyBtn = wrapper ? wrapper.querySelector('#booking-promo-apply-fac') : null;\n    if (applyBtn) {\n      applyBtn.addEventListener('click', applyPromoCode);\n    }\n    var promoInput = wrapper ? wrapper.querySelector('#booking-promo-input-fac') : null;\n    if (promoInput) {\n      promoInput.addEventListener('keydown', function (e) {\n        if (e.key === 'Enter') {\n          e.preventDefault();\n          applyPromoCode();\n        }\n      });\n    }\n  }\n\n  if (window.gform && gform.addFilter) {\n    gform.addFilter('gform_product_total', function (total, fid) {\n      if (String(fid) === String(formId)) updateSummary();\n      return total;\n    });\n  }\n\n  wirePromoWidget();\n  setTimeout(wirePromoWidget, 800);\n  updateSummary();\n  setTimeout(updateSummary, 800);\n  updateTripDetail();\n  setTimeout(updateTripDetail, 800);\n  \/\/ Retried a few times rather than just once - this field only\n  \/\/ becomes visible after the Booking Type prefill script picks\n  \/\/ Faculty, which itself runs on a delay, so a single early check\n  \/\/ can fire before the field has actually been revealed yet.\n  preselectStudentByDefault();\n  setTimeout(preselectStudentByDefault, 800);\n  setTimeout(preselectStudentByDefault, 1600);\n\n  \/\/ FIX 2026-09-16: with Gravity Forms AJAX enabled, \"Next\"\/\"Previous\"\n  \/\/ no longer reload the page - the same JS context (and the one-shot\n  \/\/ retries above) carries over across page turns instead of being\n  \/\/ wiped by a fresh page load. If one of those retries lands right as\n  \/\/ the page is turning, it can catch the Trip Name\/Trip Dates fields\n  \/\/ mid-transition and bake a stale\/wrong value (e.g. \"No dates\n  \/\/ available\") into the summary panel, with nothing to correct it\n  \/\/ afterwards since the retries only fire once. Same fix as Standard's\n  \/\/ summary block.\n  \/\/\n  \/\/ gform_page_loaded is GF's own event for \"a page of this form just\n  \/\/ became visible\" and fires on every AJAX page turn (not just the\n  \/\/ very first page load), so re-running these here keeps the summary\n  \/\/ panel honest no matter when\/why it went stale.\n  if (window.jQuery) {\n    jQuery(document).on('gform_page_loaded', function (event, loadedFormId) {\n      if (String(loadedFormId) === String(formId)) {\n        updateTripDetail();\n        updateSummary();\n        preselectStudentByDefault();\n      }\n    });\n  }\n})();\n<\/script><\/div><div id=\"field_14_144\" class=\"gfield gfield--type-html gfield--input-type-html gfield--width-half gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"><!--\n  COMBINED BOOKING FORM \u2014 STANDARD \"APPLY DISCOUNT\" WIDGET (STANDALONE)\n  ============================================================\n  DRAFT - not yet placed on the live form.\n\n  Pulled out of combined-booking-summary-standard.html into its own\n  separate GF HTML field, matching the same split already done for\n  Faculty (combined-booking-apply-discount-faculty.html) - keeps the\n  two booking types structurally consistent, since Standard has no\n  native coupon field to sit beside, this one can just be Full Width.\n\n  GF admin setup:\n  1. Add this as a new HTML field, positioned directly after the\n     Standard summary block (field 128).\n  2. Conditional Logic: show if Booking Type is Standard Booking (same\n     rule as the Standard summary block already uses).\n\n  No JS lives in this file - the calc script in\n  combined-booking-summary-standard.html already looks up\n  #booking-promo-input-std \/ #booking-promo-apply-std \/\n  #booking-promo-error-std by ID within the whole .gform_wrapper, so\n  it keeps working no matter which GF field this markup physically\n  sits in. Keep that summary file's <script> block in place - don't\n  duplicate it here.\n  ============================================================\n-->\n<div class=\"booking-promo\">\n  <label for=\"booking-promo-input-std\" class=\"booking-promo__label\">Apply Discount<\/label>\n  <div class=\"booking-promo__row\">\n    <input type=\"text\" id=\"booking-promo-input-std\" class=\"booking-promo__input\">\n    <button type=\"button\" id=\"booking-promo-apply-std\" class=\"booking-promo__apply\">Apply<\/button>\n  <\/div>\n  <div id=\"booking-promo-error-std\" class=\"booking-promo__error\" style=\"display:none;\">Sorry, that code wasn't recognised.<\/div>\n<\/div><\/div><div id=\"field_14_78\" class=\"gfield gfield--type-coupon gfield--input-type-coupon gfield--width-half field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"><label class=\"gfield_label gform-field-label\" for=\"gf_coupon_code_14\"><span class=\"gform-field-label__text\">Apply Staff Discount<\/span><\/label><div class=\"ginput_container\" id=\"gf_coupons_container_14\"><div class=\"ginput_container_coupon\"><input id=\"gf_coupon_code_14\" class=\"gf_coupon_code\" onkeyup=\"DisableApplyButton(14);\" onchange=\"DisableApplyButton(14);\" onpaste=\"setTimeout(function(){DisableApplyButton(14);}, 50);\" type=\"text\"><input type=\"button\" disabled onclick=\"ApplyCouponCode(14);\" value=\"Apply\" id=\"gf_coupon_button\" class=\"button\"> <img style=\"display:none;\" id=\"gf_coupon_spinner\" src=\"https:\/\/challengesabroad.com\/nz\/wp-content\/plugins\/gravityformscoupons\/images\/spinner.gif\" alt=\"please wait\"><\/div><div id=\"gf_coupon_info\"><\/div><input type=\"hidden\" id=\"gf_coupon_codes_14\" name=\"input_78\" value=\"\"><input type=\"hidden\" id=\"gf_total_no_discount_14\"><input type=\"hidden\" id=\"gf_coupons_14\" name=\"gf_coupons_14\" value=\"\"><\/div><\/div><div id=\"field_14_146\" class=\"gfield gfield--type-section gfield--input-type-section gsection field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_hidden\"><h3 class=\"gsection_title\"><\/h3><\/div><fieldset id=\"field_14_148\" class=\"gfield gfield--type-consent gfield--type-choice gfield--input-type-consent gfield--width-full gfield_contains_required field_sublabel_below gfield--no-description field_description_below hidden_label field_validation_below gfield_visibility_visible gfield--choice-align-vertical\"><legend class=\"gfield_label gform-field-label gfield_label_before_complex\"><span class=\"gform-field-label__text\">T&amp;Cs - Standard\/Faculty<\/span><span class=\"gfield_required\"><span class=\"gfield_required gfield_required_asterisk\">*<\/span><\/span><\/legend><div class=\"ginput_container ginput_container_consent\"><input name=\"input_148.1\" id=\"input_14_148_1\" type=\"checkbox\" value=\"1\" aria-required=\"true\" aria-invalid=\"false\"> <label class=\"gform-field-label gform-field-label--type-inline gfield_consent_label\" for=\"input_14_148_1\"><span class=\"gform-field-label__text\">I have read and agree to the <a href=\"https:\/\/challengesabroad.com\/nz\/terms-conditions\/\" target=\"_blank\" aria-label=\"Terms &amp; Conditions\">Terms &amp; Conditions<\/a>.<\/span><span class=\"gfield_required gfield_required_asterisk\">*<\/span><\/label><input type=\"hidden\" name=\"input_148.2\" value='I have read and agree to the &lt;a href=\"https:\/\/challengesabroad.com\/nz\/terms-conditions\/\" target=\"_blank\"&gt;Terms &amp; Conditions&lt;\/a&gt;.' class=\"gform_hidden\"><input type=\"hidden\" name=\"input_148.3\" value=\"14\" class=\"gform_hidden\"><\/div><\/fieldset><\/div>\n                    <\/div>\n                    <div class=\"gform-page-footer gform_page_footer top_label\">\n                        <button type=\"button\" id=\"gform_previous_button_14_149\" class=\"gform_previous_button gform-theme-button gform-theme-button--secondary button\" onclick=\"gform.submission.handleButtonClick(this);\" data-submission-type=\"previous\">Previous<\/button> <button type=\"button\" id=\"gform_next_button_14_149\" class=\"gform_next_button gform-theme-button button\" onclick=\"gform.submission.handleButtonClick(this);\" data-submission-type=\"next\">Next<\/button> \n                    <\/div>\n                <\/div>\n                <div id=\"gform_page_14_4\" class=\"gform_page\" data-js=\"page-field-id-149\" style=\"display:none;\">\n                    <div class=\"gform_page_fields\">\n                        <div id=\"gform_fields_14_4\" class=\"gform_fields top_label form_sublabel_below description_below validation_below\"><div id=\"field_14_150\" class=\"gfield gfield--type-html gfield--input-type-html gfield--width-full gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"><h3 class=\"h-c-title\">Complete Your Booking<\/h3>\n<br>\n<p>You're almost done, simply pay your deposit below to secure your spot.<\/p><\/div><fieldset id=\"field_14_126\" class=\"gfield gfield--type-paypal gfield--input-type-paypal gfield--width-full gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible gform_ppcp_custom_card_fields\" data-field-class=\"gform_ppcp_custom_card_fields\"><legend class=\"gfield_label gfield_label_before_complex gform-field-label\" for=\"input_14_126_1\">Payment Method<span class=\"gfield_required\"><span class=\"gfield_required gfield_required_asterisk\">*<\/span><\/span><\/legend><div class=\"ginput_container ginput_container_select gform_ppcp_payment_method\" style=\"display:none;\"><select name=\"input_126.6\" id=\"input_126_6\" class=\"medium gfield_select\" aria-label=\"Payment Method\"><option value=\"PayPal Checkout\" selected>PayPal Checkout<\/option><\/select><\/div><div class=\"ginput_complex ginput_container ginput_container_custom_card_fields gform-grid-row\" id=\"input_14_126\" style=\"display:none;\"><span class=\"ginput_full gform-grid-col\" id=\"input_14_126_1_container\">\n                                    <div class=\"gform_card_icon_container gform_card_icon_style1\"><div class=\"gform_card_icon gform_card_icon_amex\">American Express<\/div><div class=\"gform_card_icon gform_card_icon_discover\">Discover<\/div><div class=\"gform_card_icon gform_card_icon_mastercard\">MasterCard<\/div><div class=\"gform_card_icon gform_card_icon_visa\">Visa<\/div><span class=\"screen-reader-text\" id=\"field_14_126_supported_creditcards\">Supported Credit Cards: American Express, Discover, MasterCard, Visa<\/span><\/div>\n                                    <span id=\"input_14_126_1\" class=\"ginput_card_field ginput_card_number gform-theme-field-control\"><\/span>\n                                    <label for=\"input_14_126_1\" id=\"input_14_126_1_label\" class=\"gform-field-label gform-field-label--type-sub\">Card Number<\/label>\n                                 <\/span><span class=\"ginput_full ginput_cardextras gform-grid-col gform-grid-row\" id=\"input_14_126_2_container\">\n                                            <span class=\"ginput_cardinfo_left gform-grid-col\" id=\"input_14_126_2_cardinfo_left\">\n                                                <span id=\"input_14_126_2\" class=\"ginput_card_field ginput_card_expiration gform-theme-field-control\"><\/span>\n                                                <label for=\"input_14_126_2\" class=\"gform-field-label gform-field-label--type-sub\">Expiration Date<\/label>\n                                            <\/span><span class=\"ginput_cardinfo_right gform-grid-col\" id=\"input_14_126_2_cardinfo_right\">\n                                                <span id=\"input_14_126_3\" class=\"ginput_card_field ginput_card_security_code gform-theme-field-control\"><\/span>\n                                                <span class=\"ginput_card_security_code_icon\">\u00a0<\/span>\n                                                <label for=\"input_14_126_3\" class=\"gform-field-label gform-field-label--type-sub\">Security Code<\/label>\n                                             <\/span>\n                                        <\/span><span class=\"ginput_full gform-grid-col\" id=\"input_14_126_5_container\">\n                                            <input type=\"text\" name=\"input_126.5\" id=\"input_14_126_5\" value=\"\">\n                                            <label for=\"input_14_126_5\" id=\"input_14_126_5_label\" class=\"gform-field-label gform-field-label--type-sub\">Cardholder Name<\/label>\n                                        <\/span> <\/div><\/fieldset><\/div><\/div>\n        <div class=\"gform-page-footer gform_page_footer top_label\"><button type=\"submit\" id=\"gform_previous_button_14\" class=\"gform_previous_button gform-theme-button gform-theme-button--secondary button\" onclick=\"gform.submission.handleButtonClick(this);\" data-submission-type=\"previous\">Previous<\/button> <button type=\"submit\" id=\"gform_submit_button_14\" class=\"gform_button button\" onclick=\"gform.submission.handleButtonClick(this);\" data-submission-type=\"submit\">Submit<\/button><div id=\"gform_ppcp_smart_payment_buttons_14\" class=\"responsive gform_ppcp_smart_payment_buttons\"><\/div> \n            <input type=\"hidden\" class=\"gform_hidden\" name=\"gform_submission_method\" data-js=\"gform_submission_method_14\" value=\"postback\">\n            <input type=\"hidden\" class=\"gform_hidden\" name=\"gform_theme\" data-js=\"gform_theme_14\" id=\"gform_theme_14\" value=\"orbital\">\n            <input type=\"hidden\" class=\"gform_hidden\" name=\"gform_style_settings\" data-js=\"gform_style_settings_14\" id=\"gform_style_settings_14\" value=\"\">\n            <input type=\"hidden\" class=\"gform_hidden\" name=\"is_submit_14\" value=\"1\">\n            <input type=\"hidden\" class=\"gform_hidden\" name=\"gform_submit\" value=\"14\">\n            \n            <input type=\"hidden\" class=\"gform_hidden\" name=\"gform_currency\" data-currency=\"NZD\" value=\"rSOWt1fwyAcUN8sUGwBMddV06fHZmlboB4fN1GWExmBm4EjvkPMyc4ebZfMJEEkJj4UbY5Um5bybQVF\/4DHgxh4su9hekYR+PnHXc22siobpQtU=\">\n            <input type=\"hidden\" class=\"gform_hidden\" name=\"gform_unique_id\" value=\"\">\n            <input type=\"hidden\" class=\"gform_hidden\" name=\"state_14\" value=\"WyJ7XCIxMzZcIjpbXCIyYjJlMTMzM2EwNjkxNGMyMmUwMDc3OTU3YTM3ODYxN1wiLFwiMzViNjgzNTYxN2RjZWM5OGQxMzRlM2E0ODZkNzliY2FcIixcImEzYTgyZWZlNzNlMDc1NmFiMDBlY2E3ZTNlMDk5MWRkXCJdLFwiMTMwLjFcIjpcIjMyMWJjYTA1NjI4ODE0OTVkMjVmYWNhN2Q4MmZjMzMxXCIsXCIxMTJcIjpbXCI1YzY2ZDczNGVjZTdlNDQ2ODU2Nzc2MTQwYTdiNDYzY1wiLFwiY2U3ZjdkNWQ4ZmM4NjEwNTk5MDcxMDhlNWM4ZTkxMWNcIl0sXCIxMTdcIjpbXCI0MDIyNzMxYzA4ZWQzMDM5Mzk1NGIzZjAyY2RlMWM4ZFwiLFwiNThjNjBmYmE2YzJmNWMzZDcwM2NmNTYzMGIzNGFhNjJcIl0sXCIxNDIuMVwiOlwiOWRiNTZmN2Q3MDQzYThiZTUyYTI1MDkyNWQzYTNmYzVcIixcIjE0Mi4yXCI6XCJhMTMzMzZjMGY3MDdjN2Y3ZDc5YWI5NGZkZTZjOWVkYlwiLFwiMTQyLjNcIjpcImE0NTZhZjllMjk5ZThiMGQ1ODQxYTk0MGEwOTQyZjNlXCIsXCIxMTFcIjpbXCJmODJjNTE1MWJmNTExZWZiOTYzZWM3ZDNlZGVjYWY3NFwiXSxcIjE0OC4xXCI6XCI5ZGI1NmY3ZDcwNDNhOGJlNTJhMjUwOTI1ZDNhM2ZjNVwiLFwiMTQ4LjJcIjpcImExMzMzNmMwZjcwN2M3ZjdkNzlhYjk0ZmRlNmM5ZWRiXCIsXCIxNDguM1wiOlwiYTQ1NmFmOWUyOTllOGIwZDU4NDFhOTQwYTA5NDJmM2VcIixcImdmb3JtX3N1Ym1pc3Npb25fbWV0aG9kXCI6W1wiNTUxZmQ1ZGM5MjRiZWYyZTZjMzQ5OTRmNmZiN2NmY2FcIixcIjkwNGM2YTgzMTg1NmU1NzBiNzdiMmRhMjFhMThjNmIwXCJdLFwiZ2Zvcm1fdGhlbWVcIjpcIjBhY2MyMzcxZGNjNzU3ZjQ5YjE2ZGJjNGI2YWE0NTE5XCIsXCJnZm9ybV9zdHlsZV9zZXR0aW5nc1wiOlwiNDQ1YWI5MWE0MTA4MTQ0YWYwZTk0Mzc0ZDAwYzQ0NGNcIixcImZvcm1faWRcIjpcImE0NTZhZjllMjk5ZThiMGQ1ODQxYTk0MGEwOTQyZjNlXCIsXCJ1cmxcIjpcIjU5ZGY1ZDM2Y2NiZDA5ZGJjNjdhYjU2MGY3N2VmN2U5XCIsXCJzdGF0ZV90aW1lc3RhbXBcIjpcIjc0N2UwODQ2YWI1ODcxYWU4OTA1MTg4ZWY0ZmM2YmJhXCJ9IiwiOTExNjI0NDg4YTNiMTAwNDJlYWI1MGNlMTBiMDI4Y2UiLDE3OTE1NDkwNzNd\">\n            <input type=\"hidden\" autocomplete=\"off\" class=\"gform_hidden\" name=\"gform_target_page_number_14\" id=\"gform_target_page_number_14\" value=\"2\">\n            <input type=\"hidden\" autocomplete=\"off\" class=\"gform_hidden\" name=\"gform_source_page_number_14\" id=\"gform_source_page_number_14\" value=\"1\">\n            <input type=\"hidden\" name=\"gform_field_values\" value=\"\">\n            \n        <\/div>\n             <\/div><\/div>\n                        <\/form>\n                        <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-45ed65f6 elementor-widget elementor-widget-text-editor\" data-id=\"45ed65f6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Having trouble booking? <a href=\"#enquiry-form-popup\" aria-label=\"Drop us a message\"><strong>Drop us a message<\/strong><\/a>, we\u2019d love to help!<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>We\u2019re currently updating our booking system. If you\u2019re having trouble accessing this page, view all our programs or send us [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-20884","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Make A Booking - Challenges Abroad New-Zealand<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/challengesabroad.com\/nz\/make-a-booking\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Make A Booking - Challenges Abroad New-Zealand\" \/>\n<meta property=\"og:description\" content=\"We\u2019re currently updating our booking system. If you\u2019re having trouble accessing this page, view all our programs or send us [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/challengesabroad.com\/nz\/make-a-booking\/\" \/>\n<meta property=\"og:site_name\" content=\"Challenges Abroad New-Zealand\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/en-gb.facebook.com\/challengesabroad\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-09T00:06:32+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@challengeabroad\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/challengesabroad.com\\\/nz\\\/make-a-booking\\\/\",\"url\":\"https:\\\/\\\/challengesabroad.com\\\/nz\\\/make-a-booking\\\/\",\"name\":\"Make A Booking - Challenges Abroad New-Zealand\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/challengesabroad.com\\\/nz\\\/#website\"},\"datePublished\":\"2026-07-07T14:33:42+00:00\",\"dateModified\":\"2026-10-09T00:06:32+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/challengesabroad.com\\\/nz\\\/make-a-booking\\\/#breadcrumb\"},\"inLanguage\":\"en-AU\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/challengesabroad.com\\\/nz\\\/make-a-booking\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/challengesabroad.com\\\/nz\\\/make-a-booking\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/challengesabroad.com\\\/nz\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Make A Booking\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/challengesabroad.com\\\/nz\\\/#website\",\"url\":\"https:\\\/\\\/challengesabroad.com\\\/nz\\\/\",\"name\":\"Challenges Abroad Australia\",\"description\":\"Join a Global Community of People Who Care\",\"publisher\":{\"@id\":\"https:\\\/\\\/challengesabroad.com\\\/nz\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/challengesabroad.com\\\/nz\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-AU\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/challengesabroad.com\\\/nz\\\/#organization\",\"name\":\"Challenges Abroad Australia\",\"url\":\"https:\\\/\\\/challengesabroad.com\\\/nz\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-AU\",\"@id\":\"https:\\\/\\\/challengesabroad.com\\\/nz\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/challengesabroad.com\\\/nz\\\/wp-content\\\/uploads\\\/sites\\\/20\\\/2026\\\/07\\\/Logo-imges-15.png\",\"contentUrl\":\"https:\\\/\\\/challengesabroad.com\\\/nz\\\/wp-content\\\/uploads\\\/sites\\\/20\\\/2026\\\/07\\\/Logo-imges-15.png\",\"width\":500,\"height\":500,\"caption\":\"Challenges Abroad Australia\"},\"image\":{\"@id\":\"https:\\\/\\\/challengesabroad.com\\\/nz\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/en-gb.facebook.com\\\/challengesabroad\\\/\",\"https:\\\/\\\/x.com\\\/challengeabroad\",\"https:\\\/\\\/www.instagram.com\\\/challengesabroad\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/challenges-abroad\",\"https:\\\/\\\/www.tiktok.com\\\/@challengesabroad\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Make A Booking - Challenges Abroad New-Zealand","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/challengesabroad.com\/nz\/make-a-booking\/","og_locale":"en_US","og_type":"article","og_title":"Make A Booking - Challenges Abroad New-Zealand","og_description":"We\u2019re currently updating our booking system. If you\u2019re having trouble accessing this page, view all our programs or send us [&hellip;]","og_url":"https:\/\/challengesabroad.com\/nz\/make-a-booking\/","og_site_name":"Challenges Abroad New-Zealand","article_publisher":"https:\/\/en-gb.facebook.com\/challengesabroad\/","article_modified_time":"2026-10-09T00:06:32+00:00","twitter_card":"summary_large_image","twitter_site":"@challengeabroad","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/challengesabroad.com\/nz\/make-a-booking\/","url":"https:\/\/challengesabroad.com\/nz\/make-a-booking\/","name":"Make A Booking - Challenges Abroad New-Zealand","isPartOf":{"@id":"https:\/\/challengesabroad.com\/nz\/#website"},"datePublished":"2026-07-07T14:33:42+00:00","dateModified":"2026-10-09T00:06:32+00:00","breadcrumb":{"@id":"https:\/\/challengesabroad.com\/nz\/make-a-booking\/#breadcrumb"},"inLanguage":"en-AU","potentialAction":[{"@type":"ReadAction","target":["https:\/\/challengesabroad.com\/nz\/make-a-booking\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/challengesabroad.com\/nz\/make-a-booking\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/challengesabroad.com\/nz\/"},{"@type":"ListItem","position":2,"name":"Make A Booking"}]},{"@type":"WebSite","@id":"https:\/\/challengesabroad.com\/nz\/#website","url":"https:\/\/challengesabroad.com\/nz\/","name":"Challenges Abroad Australia","description":"Join a Global Community of People Who Care","publisher":{"@id":"https:\/\/challengesabroad.com\/nz\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/challengesabroad.com\/nz\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-AU"},{"@type":"Organization","@id":"https:\/\/challengesabroad.com\/nz\/#organization","name":"Challenges Abroad Australia","url":"https:\/\/challengesabroad.com\/nz\/","logo":{"@type":"ImageObject","inLanguage":"en-AU","@id":"https:\/\/challengesabroad.com\/nz\/#\/schema\/logo\/image\/","url":"https:\/\/challengesabroad.com\/nz\/wp-content\/uploads\/sites\/20\/2026\/07\/Logo-imges-15.png","contentUrl":"https:\/\/challengesabroad.com\/nz\/wp-content\/uploads\/sites\/20\/2026\/07\/Logo-imges-15.png","width":500,"height":500,"caption":"Challenges Abroad Australia"},"image":{"@id":"https:\/\/challengesabroad.com\/nz\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/en-gb.facebook.com\/challengesabroad\/","https:\/\/x.com\/challengeabroad","https:\/\/www.instagram.com\/challengesabroad\/","https:\/\/www.linkedin.com\/company\/challenges-abroad","https:\/\/www.tiktok.com\/@challengesabroad"]}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/challengesabroad.com\/nz\/wp-json\/wp\/v2\/pages\/20884","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/challengesabroad.com\/nz\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/challengesabroad.com\/nz\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/challengesabroad.com\/nz\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/challengesabroad.com\/nz\/wp-json\/wp\/v2\/comments?post=20884"}],"version-history":[{"count":168,"href":"https:\/\/challengesabroad.com\/nz\/wp-json\/wp\/v2\/pages\/20884\/revisions"}],"predecessor-version":[{"id":27156,"href":"https:\/\/challengesabroad.com\/nz\/wp-json\/wp\/v2\/pages\/20884\/revisions\/27156"}],"wp:attachment":[{"href":"https:\/\/challengesabroad.com\/nz\/wp-json\/wp\/v2\/media?parent=20884"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}