1 <style> 2 #footer, .header-content { 3 display: block } 4 </style> 5 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 6<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" itemscope itemtype="http://schema.org/Blog"> 7 <head> 8
8<script type="text/javascript"> 9// Centralized countdown labels - available globally 10 document.addEventListener('DOMContentLoaded', () => { 11 window.countdownLabels = {"days":"Days","hours":"Hours","minutes":"Minutes","seconds":"Seconds","startingIn":"Starting in"}; 12 }); 13</script>
13 14
14<script> 15 </script>
15 16
16<script src="https://cmp.osano.com/AzqNEeSTuihQR1mLH/8ba39fbb-0fe2-42c4-b005-b76d4e447986/osano.js"></script>
16<style>.osano-cm-widget{display: none;}</style> 17 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 18 19<!-- CMS page Meta-data Start --> 20<!-- Social Meta tags start --> 21<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 22 23<!-- General Meta --> 24<meta name="description" content="CodeSecCon is the premier virtual event bringing together developers and cybersecurity professionals to revolutionize the way applications are built, secured, and maintained." /> 25<meta name="keywords" content="" /> 26<link rel="canonical" href="https://www.codeseccon.com/" /> 27 28<!-- Open Graph / Facebook / LinkedIn --> 29<meta property="og:site_name" content="Registration Form" /> 30<meta property="og:title" content="Registration Form" /> 31<meta property="og:description" content="CodeSecCon is the premier virtual event bringing together developers and cybersecurity professionals to revolutionize the way applications are built, secured, and maintained." /> 32<meta property="og:image" content="" /> 33<meta property="og:url" content="https://codeseccon.com/" /> 34<meta property="og:type" content="website" /> 35 36<!-- Twitter Cards --> 37<meta name="twitter:card" content="summary_large_image" /> 38<meta name="twitter:title" content="Registration Form" /> 39<meta name="twitter:description" content="CodeSecCon is the premier virtual event bringing together developers and cybersecurity professionals to revolutionize the way applications are built, secured, and maintained." /> 40<meta name="twitter:image" content="" /> 41<meta name="twitter:url" content="https://codeseccon.com/" /> 42 43<!-- Schema.org for Google --> 44<meta itemprop="name" content="Registration Form" /> 45<meta itemprop="description" content="CodeSecCon is the premier virtual event bringing together developers and cybersecurity professionals to revolutionize the way applications are built, secured, and maintained." /> 46<meta itemprop="image" content="" /> 47 48<!-- Fallback / other platforms --> 49<link rel="image_src" type="image/jpeg" href="" /> 50 51 <!-- WebSite structured data (controls the site name Google shows in search results) --> 52
52<script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"WebSite","name":"CodeSecCon 2026","url":"https:\/\/codeseccon.com\/"}</script>
52 53<!-- Social Meta tags end --> 54<!-- CMS page Meta-data End --> 55 <link rel="icon" type="image/png" sizes="32x32" href="https://vepimg.b8cdn.com//uploads/vjfnew/20550/content/images/1754417909logo-dark-300ppi-1-png1754417909.png"> 56 <title>CodeSecCon 2026</title> 57 <!-- using older bootstrap css --> 58<link href="https://vepcss.b8cdn.com/css/bootstrap.min.css" rel="stylesheet" type="text/css" /> 59 <link href="https://vepcss.b8cdn.com/css/style.css?v=12" rel="stylesheet" type="text/css" /> 60 <link href="https://vepcss.b8cdn.com/css/eliqaat/datepicker3.css?v=1" rel="stylesheet" type="text/css" /> 61 62 <!-- new global analytics --> 63
63<script defer data-domain="www.codeseccon.com,vfairscombined.com" src="https://plausible.vfairs.com/js/script.js"></script>
63 64 65 66 67 <!--[if lt IE 9]> 68 <link href="https://vepcss.b8cdn.com/css/ie8.css?v=1" rel="stylesheet" type="text/css" /> 69 <![endif]--> 70
70<script type="text/javascript"> 71 IsLogedin = false; 72 IsEventLive = true; 73 </script>
73 74 <style type="text/css"> 75 .page-heading {border-bottom:1px solid #eaeaea; background: #f7f7f7} 76 .page-heading h4,.page-heading h1 {font-size: 24px; font-weight: bold; padding: 20px 0; margin: 0} 77 .page-heading h4.form-heading,.page-heading h1.form-heading {text-align: left} 78 79 .control-label {text-align: left; padding-top: 5px; font-size:13px;} 80 .curr-lang-ar .control-label {text-align: right !important; padding-top: 5px; font-size:13px;} 81 #ResponseMsg{ 82 text-align: right; 83 padding-right: 40px; 84 } 85 .row-content{ 86 padding: 10px 10px 100px 0px; 87 } 88 #LoadingBar{ 89 display:none; 90 } 91 .logo-left-en{ 92 text-align:right; 93 } 94 </style> 95 <!-- vFair Css --> 96 <link href="https://vepcss.b8cdn.com/css/vjf_20550.css?v=90887825" rel="stylesheet" type="text/css" /> 97 98 99 100 101 102 103 </head> 104 <body dir="ltr" class="curr-lang-en lp-front-page"> 105 106 107 108 109 110 111 112 113 114 115 <!-- Video Player Box Start --> 116 <div class="modal fade" id="VideoPlayerModal" tabindex="-1" role="dialog" aria-labelledby="EventModalTitle" aria-hidden="true"> 117 <div class="modal-dialog"> 118 <div class="modal-content"> 119 <div class="modal-header"> 120 <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-label="Close" aria-hidden="false">×</span></button> 121 <h4 class="modal-title" id="EventModalTitle">CodeSecCon 2026</h4> 122 </div> 123 <div class="modal-body" style="height: 350px;" id="VideoPlayerModal-Content"> 124 </div> 125 </div> 126 </div> 127 </div> 128 <!-- Video Player Box End --> 129 130 131 <!-- VFC-18157 - Confirm / Alert popup to be used when attendee asks to cancel his registration --> 132 <style> 133 #confirm_alert_modal-d { 134 font-family: 'Avenir'; 135 font-style: normal; 136 font-weight: 400; 137 font-size: 14px; 138 line-height: 22px; 139 margin: 8px 0; 140 opacity: 1; 141 } 142 143 144 #confirm_alert_modal-d .modal-content { 145 background: #f3f4f6; 146 max-width: 350px; 147 padding: 20px 20px 10px; 148 width: 100%; 149 margin: 0 auto; 150 } 151 #confirm_alert_modal-d .modal-body { 152 padding: 0px 12px; 153 } 154 #confirm_alert_modal-d h3 { 155 font-family: var(--secondaryFont), sans-serif; 156 font-size: 22px; 157 font-weight: 600; 158 color: var(--primaryThemeColor) !important; 159 margin-bottom: 0px; 160 } 161 #LoginModal .modal-body p, 162 #confirm_alert_modal-d .modal-body p { 163 font-size: 18px; 164 margin-top: 8px !important; 165 } 166 167 .confirm_alert_modal_actions_container-d button { 168 border-radius: 5px !important; 169 box-shadow: none; 170 font-family: var(--secondaryFont), sans-serif; 171 margin: 4px 0px !important; 172 outline: none; 173 padding: 12px; 174 text-transform: uppercase; 175 width: 100%; 176 } 177 /*.confirm_alert_modal_actions_container-d button.btn_confirm_action-d {*/ 178 /* background: var(--primaryThemeColor) !important;*/ 179 /* color: #fff !important;*/ 180 /*}*/ 181 </style> 182 183 184 <!-- Login Modal --> 185 <div class="modal fade" id="LoginModal" tabindex="-1" role="dialog" aria-labelledby="LoginModalTitle"> 186 <div class="modal-dialog"> 187 <div class="modal-content"> 188 <div class="modal-header"> 189 <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-label="Close" aria-hidden="false">×</span></button> 190 <h4 class="modal-title" id="LoginModalTitle">Login</h4> 191 </div> 192 <form action="https://codeseccon.com/en/login" method="post" accept-charset="utf-8" id="Main-Login-Frm" autocomplete="off" enctype="multipart/form-data"><div style="display:none"> 193<input type="hidden" name="login-red" value="" /> 194<input type="hidden" name="Login-frm" value="Login-frm" /> 195<input type="hidden" name="ci_csrf_token" value="" /> 196</div> <div class="modal-body"> 197 <div class="form-group group-email" > 198 <label for="LoginEmail" class="control-label" aria-label="email" tabindex="0">Email:</label> 199 <input type="text" id="LoginEmail" name="LoginEmail" class="form-control" placeholder="Enter email" value="" tabindex="0"/> 200 </div> 201 <div class="form-group"> 202 <!--label for="message-text" class="control-label"> </label--> 203 <div id="ResponseBox" class="ResponseBox" style="font-size:14px;"></div> 204 </div> 205 </div> 206 <div class="modal-footer" id="login-footer"> 207 <div class="row"> 208 <div class="col-sm-4"> 209 <button type="button" class="btn btn-default" data-dismiss="modal" tabindex="0" aria-label="Cancel">Cancel</button> 210 <button type="submit" class="btn btn-darkgrey" tabindex="0" aria-label="Login<">Login</button> 211 </div> 212 <div class="col-sm-8" > 213 <a href="/en/registration" class="btn-modal-registration btn btn-darkgrey flt-left" style='border-radius:0' tabindex="0" aria-label="New user? Register now">New user? Register now</a> 214 </div> 215 </div> 216 </div> 217 </form> </div> 218 </div> 219 </div> 220 <!-- Login popup end--> 221 222 <!-- VFC-18157 - Confirm / Alert popup to be used when attendee asks to cancel his registration --> 223 224 <!-- VFC-18157 - Confirm / Alert popup to be used when attendee asks to cancel his registration --> 225 <div id="confirm_alert_modal-d" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="confirmAlertModalTitle" > 226 <div class="modal-dialog"> 227 <div class="modal-content"> 228 <div class="modal-body"> 229 <div class="row"> 230 <div class="col-sm-12 my-3 mx-2 "> 231 <h3 class="confirm_alert_modal_title-d"> 232 Are you sure you want to cancel your registration? 233 </h3> 234 </div> 235 </div> 236 <div class="row"> 237 <div class="col-sm-12"> 238 <p class="confirm_alert_modal_description-d my-3 mx-2"> 239 Cancelling your registration will remove your access to the event. If you proceed, you will no longer be able to participate or access event-related materials. 240 </p> 241 </div> 242 </div> 243 <div class="row"> 244 <div class="col-sm-12 mt-2 mb-4 text-right confirm_alert_modal_actions_container-d"> 245 <button type="button" class="btn btn-default btn_cancel_action-d" data-dismiss="modal" tabindex="0" data-dismiss_btn_text="Keep My Registration">Keep My Registration</button> 246 <button type="submit" class="btn btn-default btn_confirm_action-d" tabindex="0" data-confirm_action_type="cancel_registration" data-confirm_action_btn_text="Cancel Registration">Cancel Registration</button> 247 </div> 248 </div> 249 </div> 250 </div> 251 </div> 252 </div> 253 254 <!-- VFC-18157 - Confirm / Alert popup to be used when attendee asks to cancel his registration --> 255 <div id="delete_alert_modal-d" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="confirmAlertModalTitle" > 256 <div class="modal-dialog"> 257 <div class="modal-content"> 258 <div class="modal-body"> 259 <div class="row"> 260 <div class="col-sm-12 my-3 mx-2 "> 261 <h3 class="confirm_alert_modal_title-d"> 262 Are you sure you want to delete account? 263 </h3> 264 </div> 265 </div> 266 <div class="row"> 267 <div class="col-sm-12"> 268 <p class="confirm_alert_modal_description-d my-3 mx-2"> 269 Deleting your account will remove your access to the event. 270 </p> 271 </div> 272 </div> 273 <div class="row"> 274 <div class="col-sm-12 mt-2 mb-4 text-right confirm_alert_modal_actions_container-d"> 275 <button type="button" class="btn btn-default btn_cancel_action-d" data-dismiss="modal" tabindex="0" data-dismiss_btn_text="Keep My Registration">Keep My Registration</button> 276 <button type="submit" class="btn btn-darkgrey btn_confirm_action-d" tabindex="0" data-confirm_action_type="delete_registration" data-confirm_action_btn_text="Delete Registration">Delete Registration</button> 277 </div> 278 </div> 279 </div> 280 </div> 281 </div> 282 </div> 283 284 285 <!-- Forgot Password Update Popup Start --> 286 <div class="modal fade" id="set-new-pwd-modal" tabindex="-1" role="dialog" aria-labelledby="setPasswordModalTitle" aria-hidden="true"> 287 <div class="modal-dialog"> 288 <div class="modal-content"> 289 <div class="modal-header"> 290 <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-label="Close" aria-hidden="false">×</span></button> 291 <h4 class="modal-title" id="setPasswordModalTitle">Reset Password</h4> 292 </div> 293 <form id="reset-update-pwd-frm" method="post"> 294 <input type="hidden" id="pwd-reset-update-token" name="token" value="
2940"> 295 <div class="modal-body"> 296 <div class="form-group hide" style="display:none;"> 297 <label for="updatepwdemail" class="control-label">Email / Username:</label> 298 <input type="text" name="updatepwdemail" id="updatepwdemail" class="form-control" placeholder="Enter Your Email Address"> 299 </div> 300 <div class="form-group"> 301 <label for="updatepwdnewpwd" class="control-label">New password:</label> 302 <input type="password" name="updatepwdnewpwd" id="updatepwdnewpwd" class="form-control" placeholder="New password" autocomplete="off"/> 303 </div> 304 <div class="form-group"> 305 <label for="updatepwdconfirm" class="control-label">Confirm password:</label> 306 <input type="password" name="updatepwdconfirm" id="updatepwdconfirm" class="form-control" placeholder="Confirm password" autocomplete="off"/> 307 </div> 308 <div class="form-group"> 309 <div id="reset-pwd-responseBox"></div> 310 </div> 311 </div> 312 <div class="modal-footer"> 313 <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button> 314 <button type="submit" class="btn btn-darkgrey">Update</button> 315 </div> 316 </form> 317 </div> 318 </div> 319 </div> 320 <!-- Forgot Password Update Popup End --> 321 <!-- Forgot Password Popup Start --> 322 <div class="modal fade" id="forgot-pwd-modal" tabindex="-1" role="dialog" aria-labelledby="ResetPasswordModalTitle" aria-hidden="true"> 323 <div class="modal-dialog"> 324 <div class="modal-content"> 325 <div class="modal-header"> 326 <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-label="Close" aria-hidden="false">×</span></button> 327 <h4 class="modal-title" id="ResetPasswordModalTitle">Reset Password</h4> 328 </div> 329 <form id="reset-pwd-frm" method="post"> 330 <div class="modal-body"> 331 <div class="form-group group-email"> 332 <label for="resetemail" class="control-label">Email / Username:</label> 333 <input type="text" name="resetemail" id="resetemail" class="form-control" placeholder="Enter Your Email Address"> 334 </div> 335 <div class="form-group"> 336 <div id="forgot-pwd-responseBox"></div> 337 </div> 338 </div> 339 <div class="modal-footer"> 340 <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button> 341 <button type="submit" class="btn btn-darkgrey">Reset</button> 342 </div> 343 </form> 344 </div> 345 </div> 346 </div> 347 <!-- Forgot Password Popup End --> 348 <!-- Message for fair not live and invalid login --> 349 <div id="MessageResponseWindow" class="modal fade bs-example-modal-md" aria-labelledby="EventNotLiveModalTitle" tabindex="-1" role="dialog"> 350 <div class="modal-dialog modal-md"> 351 <div class="modal-content" > 352 <div class="modal-header"> 353 <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-label="Close" aria-hidden="false">×</span></button> 354 <h4 class="modal-title" id="EventNotLiveModalTitle">CodeSecCon 2026</h4> 355 </div> 356 <div class="ResponseBoxTxt" id="ResponseBoxTxt"> 357 358 </div> 359 </div> 360 </div> 361 </div> 362 363 364 365<!-- primery branch popup --> 366<div class='container-parent header-content'><div class='container'><div class="header-content sticky fullWidthNav" role="Header"> 367<div class="slim-bar"> 368<div class="container-fluid"> 369<div class="row"> 370<div class="col-sm-12"> 371<ul> 372<li>Need Technical Assistance? 373<div id="bar-sep"></div> 374<a href="mailto:[email protected]"><span class="glyphicon glyphicon-envelope"></span> [email protected]</a></li> 375</ul> 376</div> 377</div> 378</div> 379</div> 380<div class="container"> 381<div class="row"> 382<div class="col-sm-3 event-logo"><a href="/en/"><img src="https://vepimg.b8cdn.com/uploads/vjfnew/20550/content/files/1
382754572902logo-light-300ppi-cropped-png1754572902.png" alt="company logo" /></a></div> 383<div class="col-sm-9"><nav class="navbar navbar-default" role="navigation"> 384<div class="navbar-header"><button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#main-nav"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button></div> 385<div class="collapse navbar-collapse" id="main-nav"> 386<div class="navClose">x</div> 387<ul class="nav navbar-nav"> 388<li><a href="/">Home</a></li> 389<li><a href="/en/#home-agenda">Agenda</a></li> 390<li><a href="/en/#exploreSponsor">Sponsors</a></li> 391<li><a href="#LoginModal" data-toggle="modal">Login</a></li> 392<li><a href="/en/registration-form" id="RegisterBtn" class="coloredShadow rounded btnColored" target="_blank" rel="noopener noreferrer"><i class="fa fa-user"></i>Register</a></li> 393</ul> 394</div> 395</nav></div> 396</div> 397</div> 398</div></div></div> <style> 399 /* thank you page */ 400 .thanksWrapper iframe { 401 height: auto !important; 402 } 403 404 .thanksWrapper .two-btns a { 405 border-radius: 5px !important; 406 box-shadow: none; 407 font-family: var(--secondaryFont), sans-serif; 408 margin: 4px 0px !important; 409 outline: none; 410 padding: 12px; 411 text-transform: uppercase; 412 width: 100%; 413 background: #F36531 !important; 414 color: #fff !important; 415 } 416 .thanksWrapper .two-btns a:hover { 417 background: #fff !important; 418 color: #F36531 !important; 419 } 420 </style> 421 <div class="section registration-form"> 422 <div class="page-heading"> 423 <div class="container"> 424 <h4 class="form-heading">Registration Form</h4> 425 </div> 426 </div> 427 <div class="container full-page-container"> 428 <div class="row row-content"> 429 <div class="col-lg-12"><div class="formbuilder-form-wrap"><p><!doctype html> 430<html lang="en"> 431 <head> 432 <meta charset="utf-8"> 433 <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 434 <meta name="description" content=""> 435 436 <!-- Bootstrap core CSS --> 437 <link rel="stylesheet" href="https://vepimg.b8cdn.com/uploads/vjfnew/9258/content/files/1684341076bootstrap-min-css1684341076.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous"> 438 <link rel="stylesheet" href="https://vepimg.b8cdn.com/uploads/vjfnew/9258/content/files/1684341203jquery-ui-css1684341203.css"> 439 <link rel="stylesheet" href="https://vepimg.b8cdn.com/uploads/vjfnew/9258/content/files/1684341127bootstrap-datepicker-min-css1684341127.css"/> 440
440<script src="https://vepimg.b8cdn.com/uploads/vjfnew/9258/content/files/1684341173jquery-1-12-4-js1684341173.js"></script>
440 441
441<script src="https://vepimg.b8cdn.com/uploads/vjfnew/9258/content/files/1684341220jquery-ui-js1684341220.js"></script>
441 442 <link href="//vepcss.b8cdn.com/css/font-awesome.min.css" rel="stylesheet" type="text/css"> 443 444 <!-- Datepicker --> 445 446 <style> 447 .bd-placeholder-img { 448 font-size: 1.125rem; 449 text-anchor: middle; 450 -webkit-user-select: none; 451 -moz-user-select: none; 452 -ms-user-select: none; 453 user-select: none; 454 } 455 456 .themed-grid-col { 457 padding-top: 15px; 458 padding-bottom: 15px; 459 background-color: rgba(86, 61, 124, .15); 460 border: 1px solid rgba(86, 61, 124, .2); 461 } 462 463 .themed-container { 464 padding: 15px; 465 margin-bottom: 30px; 466 background-color: rgba(0, 123, 255, .15); 467 border: 1px solid rgba(0, 123, 255, .2); 468 } 469 470 @media (min-width: 768px) { 471 .bd-placeholder-img-lg { 472 font-size: 3.5rem; 473 } 474 } 475 .primary_account_number_btn{ 476 background-color: #F1F5F8; 477 } 478 .selectionDataFields .control-label{ 479 display: inline-block; 480 color: #4F5B67; 481 font-weight: 500; 482 } 483 484 .selectedAreaManagerDetailsBlock{ 485 min-height: 100px; 486 } 487 .selectedAreaManagerBlock{ 488 width: 100%; 489 padding: 16px; 490 background: #F0F2F6; 491 border-radius: 8px; 492 border: 1px solid #E5E4EA; 493 position: relative; 494 } 495 </style> 496 </head> 497 <body class="py-4"> 498 <div class="container-fluid"> 499<!-- Global CSS --> <style></style><!--include top bs file--> 500 501 502<link rel="stylesheet" href="https://vepimg.b8cdn.com/uploads/vjfnew/5681/content/files/1698227853flatpickr-min-css1698227853.css">
503<script src="https://vepimg.b8cdn.com/uploads/vjfnew/5681/content/files/1698227840flatpickr-js1698227840.js"></script>
503 504<style> 505 #LoginModal.pending_payment_model .modal-dialog, 506 #floorPlanReservationModal .modal-dialog { 507 margin: 30px auto; 508 width: 100%; 509 max-width: 500px; 510 } 511 #LoginModal.pending_payment_model .modal-dialog .modal-content, 512 #floorPlanReservationModal .modal-dialog .modal-content { 513 max-width: 800px !important; 514 } 515 #LoginModal.pending_payment_model #login-footer .col-sm-4, 516 #floorPlanReservationModal #floor-plan-footer .col-sm-4 { 517 display: flex; 518 align-items: center; 519 gap: 12px; 520 width: 100%; 521 float: none; 522 padding: 0; 523 } 524 #floorPlanReservationModal { 525 text-align: center; 526 } 527 #floorPlanReservationModal:before { 528 content: ''; 529 display: inline-block; 530 height: 100%; 531 vertical-align: middle; 532 } 533 #floorPlanReservationModal .modal-dialog { 534 display: inline-block; 535 text-align: left; 536 vertical-align: middle; 537 margin: 30px auto; 538 width: 100%; 539 max-width: 500px; 540 } 541 #floorPlanReservationModal .modal-header { 542 background: #fff !important; 543 border-bottom: none; 544 padding: 20px 20px 0; 545 } 546 #floorPlanReservationModal .modal-header .close { 547 color: #999; 548 opacity: 1; 549 font-weight: 300; 550 font-size: 28px; 551 } 552 #floorPlanReservationModal .modal-title { 553 font-weight: 700; 554 font-size: 18px; 555 line-height: 1.3; 556 margin: 0; 557 } 558 #floorPlanReservationModal .modal-body { 559 padding: 20px; 560 font-size: 14px; 561 } 562 #floorPlanReservationModal .modal-body p { 563 font-size: 14px; 564 line-height: 1.5; 565 margin: 0 0 16px; 566 color: #5F6269; 567 font-weight: 400; 568 } 569 #floorPlanReservationModal .modal-body .control-label { 570 font-size: 14px; 571 font-weight: 600; 572 margin-bottom: 6px; 573 } 574 #floorPlanReservationModal .modal-body .form-control { 575 font-size: 14px; 576 height: auto; 577 padding: 8px 12px; 578 } 579 #floorPlanReservationModal .modal-footer { 580 border-top: none; 581 padding: 0 20px 20px; 582 text-align: left; 583 } 584 #floorPlanReservationModal #floor-plan-footer .row { 585 margin: 0; 586 } 587 #floorPlanReservationModal #floor-plan-footer .col-sm-4 { 588 width: 100%; 589 max-width: 100%; 590 } 591 #floorPlanReservationModal #reserveBoothBtn { 592 display: block; 593 width: 100%; 594 text-align: center; 595 text-transform: uppercase; 596 margin-bottom: 0 !important; 597 border-radius: 4px; 598 padding: 10px 16px; 599 border: none; 600 color: #fff; 601 text-decoration: none; 602 font-size: 14px; 603 font-weight: 600; 604 line-height: 1.4; 605 box-sizing: border-box; 606 } 607 @media screen and (max-width: 767px) { 608 #LoginModal.pending_payment_model #login-footer .col-sm-4, 609 #floorPlanReservationModal #floor-plan-footer .col-sm-4 { 610 flex-direction: column; 611 } 612 #floorPlanReservationModal .modal-dialog { 613 width: 90%; 614 max-width: 90%; 615 } 616 } 617 618 .fa-question-circle-o:before { 619 content: "\f29c" !Important; 620 } 621 .tooltip * { 622 color: #fff !important; 623 line-height: 1.3; 624 } 625</style>
626<script type="text/javascript"> 627 // VFE-40877 -> https://marvellsgevent.vfairs.com/ 628 let maxUserCountLimitExceeded = 0; 629 $(function(event){ 630 $('.reg-form-data').on('click', 'input[type="submit"]', function(e){ 631 // Validate .jfif files before any other processing 632 if (!validateAllFileInputs($(this).closest('form')[0])) { 633 e.preventDefault(); 634 e.stopPropagation(); 635 alert('Form cannot be submitted. Please remove all .jfif files and use JPG, PNG, or PDF format instead.'); 636 637 // Scroll to the first file input with error 638 var firstErrorInput = $(this).closest('form').find('input[type="file"]').filter(function() { 639 return hasBlockedFileExtensions(this); 640 }).first(); 641 642 if (firstErrorInput.length > 0) { 643 firstErrorInput[0].scrollIntoView({ behavior: 'smooth', block: 'center' }); 644 firstErrorInput.focus(); 645 } 646 647 return false; 648 } 649 650 651 if(maxUserCountLimitExceeded){ 652 alert('The event has reached its maximum capacity'); 653 e.stopPropagation(); 654 e.preventDefault(); 655 return false; 656 } 657 }) 658 }); 659 660 // Extract grouped fields (e.g. branchDetails[name][], branchDetails[value][]) into an object 661 function extractGroupedFields(formDataArray, prefix) { 662 const grouped = {}; 663 664 formDataArray.forEach(({ name, value }) => { 665 const match = name.match(new RegExp(`^${prefix}\\[([^\\]]+)\\]\\[\\]$`)); 666 if (match) { 667 const key = match[1]; // e.g. "name", "value", etc. 668 if (!grouped[key]) grouped[key] = []; 669 grouped[key].push(value); 670 } 671 }); 672 673 return grouped; 674 } 675 676 // Update user_list[] inputs with selected branch/area manager fields 677 function updateUserListWithSelectedFields() { 678 const form = $('.reg-form-data'); 679 const formDataArray = form.serializeArray(); 680 681 // Common fields for both branch and area manager 682 const commonFields = [ 683 "tradeshow-customer-type", 684 "customer_prospect_type", 685 "ts_business_name", 686 "ts_business_address", 687 "ts_district_sales_manager", 688 "ts_sales_person_area_manager", 689 "ts_city_state_zip", 690 "ts_am_email", 691 "ts_dsm_email", 692 "ts_am_phone" 693 ]; 694 695 // Fields specific to branch registration 696 const branchFields = [ 697 ...commonFields, 698 "tradeshow-branch[]", 699 "branch_registration_field_id", 700 "primeryAccountNumber", 701 "branchDetails" 702 ]; 703 704 // Fields specific to area manager registration 705 const areaManagerFields = [ 706 ...commonFields, 707 "tradeshow-area-managers", 708 "area_manager_registration_field_id", 709 "areaManagerDetails" 710 ]; 711 712 // Determine if area manager based on selection 713 const isAreaManager = $('#customer_prospect_type').val() === 'area-manager'; 714 const selectedFields = isAreaManager ? areaManagerFields : branchFields; 715 716 // Build object with selected field data 717 const selectedFieldData = {}; 718 719 formDataArray.forEach(({ name, value }) => { 720 if (selectedFields.includes(name)) { 721 if (name.endsWith('[]')) { 722 // Handle array fields like tradeshow-branch[] 723 const key = name.slice(0, -2); 724 if (!selectedFieldData[key]) selectedFieldData[key] = []; 725 selectedFieldData[key].push(value); 726 } else { 727 // Handle regular fields 728 selectedFieldData[name] = value; 729 } 730 } 731 }); 732 733 // Extract grouped fields data 734 if (isAreaManager) {
735 const grouped = extractGroupedFields(formDataArray, 'areaManagerDetails'); 736 if (Object.keys(grouped).length) { 737 selectedFieldData['areaManagerDetails'] = grouped; 738 } 739 } else { 740 const grouped = extractGroupedFields(formDataArray, 'branchDetails'); 741 if (Object.keys(grouped).length) { 742 selectedFieldData['branchDetails'] = grouped; 743 } 744 } 745 746 // Update each user_list[] input 747 const userListInputs = form.find('input[name="user_list[]"]'); 748 userListInputs.each(function () { 749 const $input = $(this); 750 const value = $input.val(); 751 752 if (!value?.trim()) return; 753 754 try { 755 const userObj = JSON.parse(value); 756 // Remove fields that will be updated 757 selectedFields.forEach(field => delete userObj[field]); 758 759 // Remove nested details 760 if (isAreaManager) delete userObj['areaManagerDetails']; 761 else delete userObj['branchDetails']; 762 763 // Merge with selected data 764 const updatedUserObj = { ...userObj, ...selectedFieldData }; 765 console.log(updatedUserObj) 766 767 $input.val(JSON.stringify(updatedUserObj)); 768 } catch (err) { 769 console.warn("Invalid JSON in user_list[] input", err); 770 } 771 }); 772 } 773 774</script>
774 775<style> 776 .limit-error{ 777 color: red; 778 width: 80%; 779 float: left; 780 } 781 .row.st-payment-row { 782 justify-content: space-between; 783 max-width: 920px; 784 -webkit-box-orient: horizontal; 785 -webkit-box-direction: normal; 786 -webkit-box-pack: justify; 787 -ms-flex-pack: justify; 788 -webkit-flex-direction: row; 789 -ms-flex-direction: row; 790 flex-direction: row; 791 -webkit-justify-content: space-between; 792 justify-content: space-between; 793 max-width: 920px; 794 margin: 0 auto; 795 border: 2px solid #ddd; 796 border-radius: 12px; 797 padding: 3rem; 798 } 799 .st-payment { 800 box-shadow: 3px 0 30px 0 rgba(0,0,0,.18); 801 padding: 15px; 802 border-radius: 12px; 803 } 804 span.st-back img:hover {transform: scale(1.2);} 805 span.st-back { 806 cursor: pointer; 807 display: block; 808 padding-bottom: 35px; 809 } 810 .st-payment h2 { 811 font-size: 22px; 812 } 813 span.st-payment-icons { 814 position: absolute; 815 right: 3%; 816 top: 34%; 817 } 818 span.st-payment-icons img { 819 margin: 0px 2px; 820 } 821 .st-payment-date { 822 display: flex; 823 } 824 .st-payment-cards { 825 position: relative; 826 } 827 .st-payment-date input { 828 border-top: none; 829 } 830 831 .nw-frm-bldr.reg-form-wrap { 832 /*padding-top: 100px; done against this ticket VFC-19235 */ 833 padding-top: 20px; 834 } 835 836 837 @media only screen and (max-width: 768px) { 838 .row.st-payment-row { 839 padding: 1rem 0rem; 840 } 841 .ticket-dec { 842 padding-bottom: 20px; 843 } 844 845 } 846 847 /* Fix applied for IOS Safari VFE-52740 */ 848 .dropdown.open .dropdown-menu { 849 display: block !important; 850 } 851 /* Fix applied for IOS Safari VFE-52740 */ 852 853</style> 854 855<style> 856 .payment-methods-div img{ 857 display: block; 858 object-fit: scale-down; 859 margin-left: 3px; 860 height: 40px; 861 width: 80px; 862 } 863 .payment-methods-div .payment-method-label { 864 display: block; 865 font-size: 14px; 866 font-weight: 500; 867 line-height: 40px; 868 min-width: 80px; 869 text-align: center; 870 margin-left: 3px; 871 } 872 #card-element { 873 width: 100%; 874 padding: 15px; 875 } 876 .form-row > label{ 877 padding: 15px; 878 } 879 880 881 .datepicker.datepicker-dropdown.dropdown-menu { 882 max-width: 228px; 883 } 884 885 .modal.fade.in { 886 opacity: 1; 887 background: #00000026; 888 } 889 890 .modal .modal-dialog { 891 width: 600px; 892 margin: 83px auto; 893 } 894 895 .modal .modal-header { 896 display: -ms-flexbox; 897 display: initial; 898 -ms-flex-align: start; 899 align-items: inherit; 900 -ms-flex-pack: justify; 901 justify-content: inherit; 902 padding: 1rem 1rem; 903 border-bottom: 1px solid #dee2e6; 904 border-top-left-radius: calc(.3rem - 1px); 905 border-top-right-radius: calc(.3rem - 1px); 906 } 907 908 .modal .btn { 909 display: inline-block; 910 padding: 6px 12px; 911 margin-bottom: 0; 912 font-size: 14px; 913 font-weight: 400; 914 line-height: 1.42857143; 915 text-align: center; 916 white-space: nowrap; 917 vertical-align: middle; 918 cursor: pointer; 919 -webkit-user-select: none; 920 -moz-user-select: none; 921 -ms-user-select: none; 922 user-select: none; 923 background-image: none; 924 border: 1px solid transparent; 925 border-radius: 4px; 926 } 927 928 .modal .form-control { 929 display: block; 930 width: 100%; 931 height: 34px; 932 padding: 6px 12px; 933 font-size: 14px; 934 line-height: 1.42857143; 935 color: #555; 936 background-color: #fff; 937 background-image: none; 938 border: 1px solid #ccc; 939 border-radius: 4px; 940 -webkit-box-shadow: inset 0 1px 1px rgb(0 0 0 / 8%); 941 box-shadow: inset 0 1px 1px rgb(0 0 0 / 8%); 942 -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; 943 -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; 944 transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; 945 } 946 947 .modal .modal-footer { 948 display: -ms-flexbox; 949 display: inherit; 950 -ms-flex-wrap: wrap; 951 flex-wrap: inherit; 952 -ms-flex-align: center; 953 align-items: inherit; 954 -ms-flex-pack: end; 955 /* justify-content: flex-end; */ 956 padding: .75rem; 957 border-top: 1px solid #dee2e6; 958 border-bottom-right-radius: calc(.3rem - 1px); 959 border-bottom-left-radius: calc(.3rem - 1px); 960 } 961 962 .modal.in .modal-dialog { 963 -webkit-transform: translate3d(0, 0, 0); 964 -o-transform: translate3d(0, 0, 0); 965 transform: translate3d(0, 0, 0); 966 } 967 968 .modal .col-sm-4 { 969 -ms-flex: 0 0 33.333333%; 970 flex: none; 971 max-width: none; 972 } 973 974 .modal h4.modal-title { 975 font-size: 18px; 976 } 977 978 .order-change span { 979 margin-left: 20px !IMPORTANT; 980 } 981 982 span.has-error, span.has-error > p { 983 color: red; 984 display: block; 985 width: 80%; 986 float: right; 987 font-weight: bold; 988 font-size: 11px !important; 989 color: red !important; 990 } 991 992 .custom-col-1 label.error, #packages-error { 993 color: red; 994 display: block; 995 width: 80%; 996 float: left; 997 } 998 999 1000 .custom-col-1 .col-12 span { 1001 margin-left: 0px; 1002 margin-bottom: 20px; 1003 } 1004 1005 .custom-col-1 .form-control { 1006 display: inline-block; 1007 width: 100%; 1008 float: left; 1009 margin-bottom: 12px; 1010 } 1011 1012 .custom-col-1 .control-label { 1013 /*display: inline-block;*/ 1014 /*width: 32%;*/ 1015 /*float: left;*/ 1016 text-overflow: clip; 1017 overflow: hidden; 1018 white-space: pre-wrap; 1019 vertical-align: middle; 1020 } 1021 1022 /*.order-change {*/ 1023 /* display: flex;*/ 1024 /* flex-wrap: wrap;*/ 1025 /* padding: 0px;*/ 1026 /*}
1026*/ 1027 .order-change { 1028 display: flex; 1029 flex-wrap: nowrap; 1030 align-items: flex-start; 1031 } 1032 1033 .order-change input { 1034 order: 2; 1035 } 1036 1037 .order-change label.error { 1038 width: 100%; 1039 order: 1; 1040 } 1041 1042 .order-change span { 1043 order: 3; 1044 } 1045 1046 label.error,span.error { 1047 color: red; 1048 display: block 1049 } 1050 .custom-col-1 .iti--allow-dropdown { 1051 width: 80%; 1052 float: left; 1053 } 1054 1055 .coupn-code-sec { 1056 width: 80%; 1057 float: left; 1058 } 1059 1060 .custom-col-1 .iti--allow-dropdown .form-control { 1061 width: 100%; 1062 } 1063 1064 .custom-col-1 .iti--allow-dropdown { 1065 padding: 0 0 15px; 1066 } 1067 1068 .reg-form-data .select2-container--default .select2-selection--multiple .select2-selection__choice__remove { 1069 1070 margin-bottom: 0px; 1071 font-size: 14px; 1072 } 1073 1074 .reg-form-data .select2-selection.select2-selection--single, .reg-form-data .select2-selection__arrow { 1075 margin-top: 15px; 1076 } 1077 1078 .reg-form-data .select2-container span { 1079 margin-bottom: 0px !important; 1080 } 1081 1082 .required.control-label:after { 1083 content: "*"; 1084 color: red; 1085 } 1086 1087 .field-hidden { 1088 display: none; 1089 } 1090 1091 .iti__selected-flag { 1092 height: auto !important; 1093 min-height: 22px; 1094 } 1095 1096 .checkbox-label { 1097 /*margin-top: 0 !important;*/ 1098 padding-top: 0 !important; 1099 } 1100 1101 .select2-container--default .select2-results__option[aria-selected=true] { 1102 background-color: #ddd; 1103 } 1104 1105 .form-control-file { 1106 width: 202px; 1107 } 1108 1109 h1, h2, h3, h4, h5, h6 { 1110 text-align: left; 1111 } 1112 1113 p { 1114 font-size: 1.5rem; 1115 } 1116 1117 select[multiple], select[size] { 1118 height: auto; 1119 width: 100%; 1120 border: 1px solid #dcdbff; 1121 border-radius: 4px; 1122 font-size: 14px; 1123 cursor: auto; 1124 padding: 5px 5px; 1125 } 1126 1127 .select2-container--default .select2-selection--multiple { 1128 background-color: white; 1129 border: 1px solid #dcdbff; 1130 border-radius: 7px; 1131 cursor: pointer; 1132 font-size: 14px; 1133 min-height: calc(2.75em + .25rem + 2px); 1134 height: auto; 1135 1136 } 1137 1138 .select2-container--default .select2-selection--multiple .select2-selection__rendered { 1139 overflow: visible; 1140 } 1141 1142 .select2-search--inline { 1143 width: 100%; 1144 } 1145 1146 .select2-search--inline .select2-search__field { 1147 width: 100% !important; 1148 } 1149 1150 .select2-search--inline .select2-search__field:placeholder-shown { 1151 width: 100% !important; 1152 } 1153 1154 .select2-container--default.select2-container--focus .select2-selection--multiple { 1155 border: solid #80bdff 1px !important; 1156 outline: 0 1157 } 1158 1159 .custom-col-1 .col-12 span { 1160 margin-bottom: 0px !important; 1161 } 1162 1163 .select2-container--default .select2-search--inline .select2-search__field { 1164 margin-top: 9px !important; 1165 padding-left: 5px !important; 1166 } 1167 1168 .helper-tooltip { 1169 float: right; 1170 } 1171 .form-rtl .helper-tooltip{ 1172 float: left !important; 1173 } 1174 1175 .form-rtl input[type='checkbox']+label, 1176 .form-rtl input[type='radio']+label { 1177 right: 8px; 1178 left: 0 !important; 1179 bottom: 2px !important; 1180 } 1181 1182 .tooltip.in{ 1183 opacity: 100% !important; 1184 } 1185 .tooltip p { 1186 margin-bottom: 0 !important; 1187 font-size: 10px !important; 1188 } 1189 .ctooltip { 1190 position: relative; 1191 display: inline-block; 1192 } 1193 1194 .ctooltip .ctooltiptext { 1195 visibility: hidden; 1196 background-color: black; 1197 color: #fff; 1198 text-align: center; 1199 border-radius: 6px; 1200 padding: 1px 8px; 1201 display: table; 1202 max-width: 100%; 1203 min-width: 110px; 1204 margin-top: -17PX; 1205 margin-left: 12px !important; 1206 } 1207 1208 .ctooltip:hover .ctooltiptext { 1209 visibility: visible; 1210 } 1211 .form-rtl { 1212 direction: rtl; 1213 } 1214 1215 .form-rtl label { 1216 text-align: right; 1217 } 1218 1219 .form-rtl label.error, 1220 .form-rtl .helping-field { 1221 float: right; 1222 text-align: right; 1223 } 1224 1225 .form-rtl .order-change span { 1226 margin-right: 20px; 1227 } 1228 1229 .form-rtl p, 1230 .form-rtl h1, 1231 .form-rtl h2, 1232 .form-rtl h3, 1233 .form-rtl h4, 1234 .form-rtl h5, 1235 .form-rtl h6 { 1236 text-align: right; 1237 } 1238 1239 .form-rtl select[multiple="multiple"]+p { 1240 clear: none !important; 1241 margin-right: 10px !important; 1242 } 1243 1244 .form-rtl .starrr-container { 1245 text-align: right; 1246 } 1247 1248 .form-rtl .starrr { 1249 display: inline-block; 1250 } 1251 1252 input[type="file"] { 1253 margin-bottom: 10px; 1254 } 1255 input[type="file"]::file-selector-button { 1256 margin-right: 10px; 1257 } 1258 input[type="file"]::-webkit-file-upload-button { 1259 margin-right: 10px; 1260 } 1261 /* Fix for speaker registration form - show complete filename */ 1262 1263 a.fa-star:focus, 1264 a.fa-star:active, 1265 a.fa-star:hover { 1266 color: #FFD119; 1267 text-decoration: none; 1268 } 1269 .fa-star { 1270 font-size: 30px; 1271 padding: 0 1px; 1272 cursor: pointer; 1273 color: #FFD119; 1274 text-decoration: none; 1275 } 1276 .fa.fa-star.fa-star-emp { 1277 color: #cacaca; 1278 } 1279 1280 .star-input { 1281 height: 0px; 1282 width: 0px; 1283 padding: 0; 1284 visibility: hidden; 1285 display: block; 1286 } 1287 #loadingMessage,#loadingMessage1 { 1288 width: 100%; 1289 height: 100%; 1290 z-index: 1000; 1291 background: #ccc; 1292 top: 0px; 1293 left: 0px; 1294 position: absolute; 1295 } 1296 .desc_para { 1297 height: 75px; 1298 margin-bottom: 8px; 1299 transition: 5s ease; 1300 display: -webkit-box; 1301 -webkit-line-clamp: 3; 1302 -webkit-box-orient: vertical; 1303 overflow: hidden; 1304 } 1305 .desc_para.show { 1306 height: auto; 1307 } 1308 /*.collapse:not(.show) {*/ 1309 /* display: block !important;*/ 1310 /*}
1310*/ 1311 .event__form select{ 1312 -webkit-appearance: auto !important; 1313 } 1314 1315 .col-12.order-change div { 1316 display: flex; 1317 align-items: baseline; 1318 } 1319 1320 .col-12.order-change div label { 1321 order: 2; 1322 padding-left:10px; 1323 display: inline; 1324 } 1325 .custom-tooltip .tooltip-inner { 1326 font-size: 10px; /* Adjust the font size as needed */ 1327 } 1328 /*--*/ 1329.formbuilder-form-wrap h3 { 1330 font-size: 28px; 1331 font-weight: bold; 1332 margin: 20px auto; 1333 max-width: 850px; 1334 color: #696969; 1335} 1336.reg-form-data { 1337 box-shadow: 0px 2px 20px 0 rgba(0, 0, 0, 0.1); 1338 border-radius: 20px; 1339 border: 1px solid #dedede; 1340 margin-bottom: 30px; 1341 max-width: 850px; 1342 padding-top: 15px; 1343 padding-bottom: 15px; 1344 margin: auto; 1345 background-color: #FFF; 1346} 1347.reg-form-data .form_field_grp { 1348 font-size: 14px !important; 1349 color: #696969; 1350 margin-bottom: 0px !important; 1351 margin-left: 0px; 1352 height: auto !important; 1353} 1354/* Restore bullet/number styling for editor rich text in form fields */ 1355.reg-form-data .form_field_grp ul, 1356.section .form_field_grp ul { 1357 list-style-type: disc; 1358 padding-left: 0.55em; 1359 margin: 0.5em 0; 1360} 1361.reg-form-data .form_field_grp ul li, 1362.section .form_field_grp ul li { 1363 list-style: inherit; 1364 display: list-item; 1365} 1366.reg-form-data .form_field_grp ol, 1367.section .form_field_grp ol { 1368 list-style-type: decimal; 1369 padding-left: 1.5em; 1370 margin: 0.5em 0; 1371} 1372.reg-form-data .form_field_grp ol li, 1373.section .form_field_grp ol li { 1374 list-style: inherit; 1375 display: list-item; 1376} 1377/* Ensure dropdown/menu lists never show bullets (Assign dropdown, etc.) - must override above */ 1378.reg-form-data .dropdown-menu, 1379.reg-form-data .dropdown-menu ul, 1380.section .dropdown-menu, 1381.section .dropdown-menu ul, 1382.packageContainer .dropdown-menu, 1383.packageContainer__head .dropdown-menu { 1384 list-style: none !important; 1385} 1386.packageContainer__head .dropdown-menu.dropdown-menu-main { 1387 padding: 8px !important; 1388} 1389.reg-form-data .dropdown-menu li, 1390.reg-form-data .dropdown-menu ul li, 1391.section .dropdown-menu li, 1392.section .dropdown-menu ul li, 1393.packageContainer .dropdown-menu li, 1394.packageContainer__head .dropdown-menu li { 1395 list-style: none !important; 1396 display: block; 1397} 1398.reg-form-data input[type=submit] { 1399 background: #f96634; 1400 border-color: #f96634; 1401 border-radius: 50px !important; 1402} 1403.reg-form-data .user-links > div { 1404 padding: 0px 0px; 1405 margin-right: 8px; 1406} 1407.reg-form-data .user-links .btn-primary { 1408 background: #f96634; 1409 border-color: #f96634; 1410} 1411.reg-form-data .coupn-code-sec { 1412 display: flex; 1413 align-items: center; 1414 gap: 8px; 1415 margin-left: 8px; 1416} 1417.reg-form-data .coupn-code-sec input { 1418 margin: 0px 0px; 1419} 1420.reg-form-data .coupn-code-sec .btn-primary { 1421 background: #f96634; 1422 border-color: #f96634; 1423} 1424.ev__ticket__wrapper { 1425 width: 100% !important; 1426} 1427.ticket-form { 1428 border: none; 1429 padding: 0px 15px !important; 1430 box-shadow: none; 1431} 1432.ticket-form h3 { 1433 font-size: 22px; 1434} 1435.packageContainer h3 { 1436 font-size: 16px; 1437 margin: 0px 0px; 1438 padding: 0px 0px; 1439} 1440 1441 .packageContainer h3 { 1442 font-size: 16px; 1443 margin: 0px 0px; 1444 padding: 0px 0px; 1445 } 1446</style> 1447<style> 1448/* Ticket: VFC-21254 */ 1449 1450.ticketadd__desc__text{ 1451 width: 60%; 1452} 1453 1454.ticketadd__desc__text .ticketadd__description{ 1455 font-family: var(--primary-font); 1456 font-style: normal; 1457 font-weight: 400; 1458 font-size: 14px; 1459 line-height: 22px; 1460 margin: 8px 0; 1461 color: #5F6269; 1462} 1463 1464.ticketadd__desc__text .ticketadd__description .morecontent{ 1465 display: none; 1466} 1467 1468.ticketadd__desc__text .ticketadd__title{ 1469 font-weight: 600; 1470} 1471/*--*/ 1472 1473.both-block { 1474 padding: 15px 0; 1475} 1476 1477.ev__ticket .row { 1478 margin-left: 0; 1479 margin-right: 0; 1480} 1481 .formbuilder-form-wrap h3 { 1482 font-size: 28px; 1483 font-weight: bold; 1484 margin: 20px auto; 1485 max-width: 850px; 1486 color: #696969; 1487 } 1488 .reg-form-data { 1489 box-shadow: 0px 2px 20px 0 rgba(0, 0, 0, 0.1); 1490 border-radius: 20px; 1491 border: 1px solid #dedede; 1492 margin-bottom: 30px; 1493 max-width: 850px; 1494 padding-top: 15px; 1495 padding-bottom: 15px; 1496 margin: auto; 1497 background-color: #FFF; 1498 } 1499 .reg-form-data .form_field_grp { 1500 font-size: 14px !important; 1501 color: #696969; 1502 margin-bottom: 0px !important; 1503 margin-left: 0px; 1504 height: auto !important; 1505 } 1506 .reg-form-data input[type=submit] { 1507 background: #f96634; 1508 border-color: #f96634; 1509 border-radius: 50px !important; 1510 } 1511 .reg-form-data .user-links > div { 1512 padding: 0px 0px; 1513 margin-right: 8px; 1514 } 1515 .reg-form-data .user-links .btn-primary { 1516 background: #f96634; 1517 border-color: #f96634; 1518 } 1519 .reg-form-data .coupn-code-sec { 1520 display: flex; 1521 align-items: center; 1522 gap: 8px; 1523 margin-left: 8px; 1524 } 1525 .reg-form-data .coupn-code-sec input { 1526 margin: 0px 0px; 1527 } 1528 .reg-form-data .coupn-code-sec .btn-primary { 1529 background: #f96634; 1530 border-color: #f96634; 1531 } 1532 1533 .ev__ticket__wrapper { 1534 width: 100% !important; 1535 } 1536 1537 .ticket-form { 1538 border: none; 1539 padding: 0px 0px; 1540 box-shadow: none; 1541 } 1542 .ticket-form h3 { 1543 font-size: 22px; 1544 } 1545 .packageContainer h3 { 1546 font-size: 16px; 1547 margin: 0px 0px; 1548 padding: 0px 0px; 1549 } 1550 .formbuilder-form-wrap { 1551 width: 100%; 1552 max-width: 850px; 1553 margin: 0 auto; 1554 } 1555 1556 /* VFC-20036 ---> VFC-22346 */ 1557 input#optionsRadios1[type="radio"] { 1558 width: 16px; 1559 height: 16px; 1560 appearance: none; 1561 border: 2px solid #ccc; 1562 border-radius: 50%; 1563 outline: none; 1564 cursor: pointer; 1565 transition: all 0.3s ease; 1566 background-color: #fff; 1567 top: 50%; 1568 transform: translateY(-50%); 1569 margin-top: 0px; 1570 } 1571 input#optionsRadios1[type="radio"]:checked, input#optionsRadios1[type="radio"]:checked:focus { 1572 width: 16px; 1573 height: 16px; 1574 appearance: none; 1575 border: 3px solid #fff; 1576 border-radius: 50%; 1577 outline: 1px solid #f36531; 1578 cursor: pointer; 1579 transition: all 0.3s ease; 1580 background-color: #f36531; 1581 } 1582 1583 .order__summary .radio { 1584 width: 145px; 1585 } 1586 1587 .order__summary .radio { 1588 background: #FFFFFF; 1589 border: 1px solid #DFE2E8; 1590 border-radius: 4px; 1591 padding: 13px; 1592 height: 56px; 1593 margin: 0px; 1594 display: flex; 1595 justify-content: center; 1596 align-items: center; 1597 } 1598 1599 .order__summary .payment__method { 1600 display: flex; 1601 align-items: center; 1602 gap: 16px; 1603 flex-wrap: wrap; 1604 justify-content: center; 1605 } 1606 1607 .order__summary .payment__method img { 1608 margin-left: 0px; 1609 } 1610 1611 .radio.payment-methods-div { 1612 label{ 1613 padding-left:10px 1614 } 1615 } 1616 .select2-container--default.select2-container--focus .select2-selection--multiple,.select2-selection--multiple { 1617 height: max-content !important; 1618} 1619 1620 1621</style> 1622<style>.{0:;1:0;2:1;}</style><div class=''> 1623 <div class=' m-1'> 1624 <div class="" style="margin: auto"> 1625 <form class="page_break_form em4r5 form-lang-en custom-col-1 container-fluid reg-form-data" 1626 id='form_84537' 1627 action='/en/form/registerUser' method="post" enctype="multipart/form-data"> 1628 1629 <input type='hidden' name='current_url' value='https://codeseccon.com/en/registration-form?'> <input type='hidden' id="abstractRedirectBack" name='abstractRedirectBack' value=''/> 1630 <input type='hidden' id="appId" name='appID' value='20550' autocomplete="off" aria-hidden="true" data-1p-ignore="true" data-lpignore="true" data-bw-ignore="true" data-bwignore="true"/> 1631 <input type='hidden' id="formId" name='formID' value='84537' autocomplete="off" aria-hidden="true" data-1p-ignore="true" data-lpignore="true" data-bw-ignore="true" data-bwignore="true"/> 1632 <input type='hidden' id="webinar_id" name='webinar_id' value='' autocomplete="off" aria-hidden="true" data-1p-ignore="true" data-lpignore="true" data-bw-ignore="true" data-bwignore="true"/> 1633 <input type='hidden' name='off_fields' id="off_fields" value=''/> 1634 <input type='hidden' name='customer_id' id="customer_id" value=''/> 1635 1636 1637 1638 <input type='hidden' name='utm_source' value=''/> 1639 <input type='hidden' name='utm_source' value=''/> 1640 <input type='hidden' name='utm_medium' value=''/> 1641 <input type='hidden' name='utm_content' value=''/> 1642 <input type='hidden' name='utm_campaign' value=''/> 1643 <input type='hidden' name='utm_term' value=''/> 1644 <input type='hidden' name='partner_tag' value=''/> 1645 <input type='hidden' name='mktg_promoter_tag' value=''/> 1646 <input type='hidden' name='is_fields_decrypted' value=''/> 1647 <input type='hidden' name='access_id' value='' autocomplete="off" aria-hidden="true" data-1p-ignore="true" data-lpignore="true" data-bw-ignore="true" data-bwignore="true"/> 1648 <input type="hidden" name="payment_method_count" id="payment_method_count" value="
16480" /> 1649 <input type='hidden' name='uuid' id='uuid' value='' autocomplete="off" aria-hidden="true" data-1p-ignore="true" data-lpignore="true" data-bw-ignore="true" data-bwignore="true"/> 1650 <input type='hidden' name='uuiid' id='uuiid' value='2055052741124231912' autocomplete="off" aria-hidden="true" data-1p-ignore="true" data-lpignore="true" data-bw-ignore="true" data-bwignore="true"/> 1651 1652 1653 <!-- CSRF TOKEN ADD TO FORM--> 1654 1655 <input type='hidden' name='user_id' value=''/> 1656 1657 1658 1659 1660 <div class="row m-1"> 1661 1662 <div class="col-12 " role="group" aria-label="First Name" ><span id="grp_fld_1506998" class="form_field_grp "><label class='control-label required' for='fld_1506998'>First Name</label><input type=text class='form-control form-control' name='first_name' id='fld_1506998' required value='' placeholder='Enter First Name' /><span class='text-danger'></span></div><div class="col-12 " role="group" aria-label="Last Name" ><span id="grp_fld_1506999" class="form_field_grp "><label class='control-label required' for='fld_1506999'>Last Name</label><input type=text class='form-control form-control' name='last_name' id='fld_1506999' required value='' placeholder='Enter Last Name' /><span class='text-danger'></span></div><div class="col-12 " role="group" aria-label="Business Email" ><span id="grp_fld_1507000" class="form_field_grp "><label class='control-label required' for='fld_1507000'>Business Email</label><input type=email class='form-control form-control' name='email' id='fld_1507000' required value='' placeholder='Enter Email' /><span class='text-danger'></span></div><div class="col-12 " role="group" aria-label="Company Name" ><span id="grp_fld_1516606" class="form_field_grp "><label class='control-label required' for='fld_1516606'>Company Name</label><input type=text class='form-control form-control' name='fld_1516606' id='fld_1516606' required value='' placeholder='Enter Company Name' /><span class='text-danger'></span></div><div class="col-12 " role="group" aria-label="Job Title" ><span id="grp_fld_1516608" class="form_field_grp "><label class='control-label required' for='fld_1516608'>Job Title</label><input type=text class='form-control form-control' name='fld_1516608' id='fld_1516608' required value='' placeholder='Enter Job Title' /><span class='text-danger'></span></div><div class="col-12 " role="group" aria-label="Phone Number" ><span id="grp_fld_1516609" class="form_field_grp "><label class='control-label required' for='fld_1516609'>Phone Number</label><input type=text pattern='^\+?[0-9]*' class='form-control form-control tel-number' name='phone_number' id='fld_1516609' required value='' placeholder='Enter Phone Number' /><span class='text-danger'></span></div><div class="col-12 " role="group" aria-label="Company Size" ><span id="grp_fld_1516610" class="form_field_grp "><label class='control-label required' for='fld_1516610'>Company Size</label><select class='form-control' name='fld_1516610' id='fld_1516610' required data-part='chkall' data-other-option='group_fld_1516610_other' ><option value=''>Please select</option><option value='1-10' >1-10</option><option value='11-100' >11-100</option><option value='101-500' >101-500</option><option value='501-1000' >501-1000</option><option value='1001-5000' >1001-5000</option><option value='5000+' >5000+</option></select><span class='text-danger'></span></div><div class="col-12 " role="group" aria-label="Countries" ><span id="grp_fld_1516611" class="form_field_grp "><label class='control-label required' for='fld_1516611'>Countries</label><select class='country_list form-control 1516611_1745582638307' name='fld_1516611' id='fld_1516611' required ><option value=''> Select Countries</option>1516611<option value='Afghanistan' data-id='1' >Afghanistan</option><option value='Aland Islands' data-id='2' >Aland Islands</option><option value='Albania' data-id='3' >Albania</option><option value='Algeria' data-id='4' >Algeria</option><option value='American Samoa' data-id='5' >American Samoa</option><option value='Andorra' data-id='6' >Andorra</option><option value='Angola' data-id='7' >Angola</option><option value='Anguilla' data-id='8' >Anguilla</option><option value='Antarctica' data-id='9' >Antarctica</option><option value='Antigua And Barbuda' data-id='10' >Antigua And Barbuda</option><option value='Argentina' data-id='11' >Argentina</option><option value='Armenia' data-id='12' >Armenia</option><option value='Aruba' data-id='13' >Aruba</option><option value='Australia' data-id='14' >Australia</option><option value='Austria' data-id='15' >Austria</option><option value='Azerbaijan' data-id='16' >Azerbaijan</option><option value='Bahamas The' data-id='17' >Bahamas The</option><option value='Bahrain' data-id='18' >Bahrain</option><option value='Bangladesh' data-id='19' >Bangladesh</option><option value='Barbados' data-id='20' >Barbados</option><option value='Belarus' data-id='21' >Belarus</option><option value='Belgium' data-id='22' >Belgium</option><option value='Belize' data-id='23' >Belize</option><option value='Benin' data-id='24' >Benin</option><option value='Bermuda' data-id='25' >Bermuda</option><option value='Bhutan' data-id='26' >Bhutan</option><option value='Bolivia' data-id='27' >Bolivia</option><option value='Bosnia and Herzegovina' data-id='28' >Bosnia and Herzegovina</option><option value='Botswana' data-id='29' >Botswana</option><option value='Bouvet Island' data-id='30' >Bouvet Island</option><option value='Brazil' data-id='31' >Brazil</option><option value='British Indian Ocean Territory' data-id='32' >British Indian Ocean Territory</option><option value='Brunei' data-id='33' >Brunei</option><option value='Bulgaria' data-id='34' >Bulgaria</option><option value='Burkina Faso' data-id='35' >Burkina Faso</option><option value='Burundi' data-id='36' >Burundi</option><option value='Cabo Verde' data-id='40' >Cabo Verde</option><option value='Cambodia' data-id='37' >Cambodia</option><option value='Cameroon' data-id='38' >Cameroon</option><option value='Canada' data-id='39' >Canada</option><option value='Cayman Islands' data-id='41' >Cayman Islands</option><option value='Central African Republic' data-id='42' >Central African Republic</option><option value='Chad' data-id='43' >Chad</option><option value='Chile' data-id='44' >Chile</option><option value='China' data-id='45' >China</option><option value='Christmas Island' data-id='46' >Christmas Island</option>
1662<option value='Cocos (Keeling) Islands' data-id='47' >Cocos (Keeling) Islands</option><option value='Colombia' data-id='48' >Colombia</option><option value='Comoros' data-id='49' >Comoros</option><option value='Congo' data-id='50' >Congo</option><option value='Congo The Democratic Republic Of The' data-id='51' >Congo The Democratic Republic Of The</option><option value='Cook Islands' data-id='52' >Cook Islands</option><option value='Costa Rica' data-id='53' >Costa Rica</option><option value='Cote D'Ivoire (Ivory Coast)' data-id='54' >Cote D'Ivoire (Ivory Coast)</option><option value='Croatia (Hrvatska)' data-id='55' >Croatia (Hrvatska)</option><option value='Cuba' data-id='56' >Cuba</option><option value='Cyprus' data-id='57' >Cyprus</option><option value='Czech Republic' data-id='58' >Czech Republic</option><option value='Denmark' data-id='59' >Denmark</option><option value='Djibouti' data-id='60' >Djibouti</option><option value='Dominica' data-id='61' >Dominica</option><option value='Dominican Republic' data-id='62' >Dominican Republic</option><option value='East Timor' data-id='63' >East Timor</option><option value='Ecuador' data-id='64' >Ecuador</option><option value='Egypt' data-id='65' >Egypt</option><option value='El Salvador' data-id='66' >El Salvador</option><option value='Equatorial Guinea' data-id='67' >Equatorial Guinea</option><option value='Eritrea' data-id='68' >Eritrea</option><option value='Estonia' data-id='69' >Estonia</option><option value='Eswatini' data-id='212' >Eswatini</option><option value='Ethiopia' data-id='70' >Ethiopia</option><option value='Falkland Islands' data-id='71' >Falkland Islands</option><option value='Faroe Islands' data-id='72' >Faroe Islands</option><option value='Fiji Islands' data-id='73' >Fiji Islands</option><option value='Finland' data-id='74' >Finland</option><option value='France' data-id='75' >France</option><option value='French Guiana' data-id='76' >French Guiana</option><option value='French Polynesia' data-id='77' >French Polynesia</option><option value='French Southern Territories' data-id='78' >French Southern Territories</option><option value='Gabon' data-id='79' >Gabon</option><option value='Gambia The' data-id='80' >Gambia The</option><option value='Georgia' data-id='81' >Georgia</option><option value='Germany' data-id='82' >Germany</option><option value='Ghana' data-id='83' >Ghana</option><option value='Gibraltar' data-id='84' >Gibraltar</option><option value='Greece' data-id='85' >Greece</option><option value='Greenland' data-id='86' >Greenland</option><option value='Grenada' data-id='87' >Grenada</option><option value='Guadeloupe' data-id='88' >Guadeloupe</option><option value='Guam' data-id='89' >Guam</option><option value='Guatemala' data-id='90' >Guatemala</option><option value='Guernsey and Alderney' data-id='91' >Guernsey and Alderney</option><option value='Guinea' data-id='92' >Guinea</option><option value='Guinea-Bissau' data-id='93' >Guinea-Bissau</option><option value='Guyana' data-id='94' >Guyana</option><option value='Haiti' data-id='95' >Haiti</option><option value='Heard and McDonald Islands' data-id='96' >Heard and McDonald Islands</option><option value='Honduras' data-id='97' >Honduras</option><option value='Hong Kong S.A.R.' data-id='98' >Hong Kong S.A.R.</option><option value='Hungary' data-id='99' >Hungary</option><option value='Iceland' data-id='100' >Iceland</option><option value='India' data-id='101' >India</option><option value='Indonesia' data-id='102' >Indonesia</option><option value='Iran' data-id='103' >Iran</option><option value='Iraq' data-id='104' >Iraq</option><option value='Ireland' data-id='105' >Ireland</option><option value='Israel' data-id='106' >Israel</option><option value='Italy' data-id='107' >Italy</option><option value='Jamaica' data-id='108' >Jamaica</option><option value='Japan' data-id='109' >Japan</option><option value='Jersey' data-id='110' >Jersey</option><option value='Jordan' data-id='111' >Jordan</option><option value='Kazakhstan' data-id='112' >Kazakhstan</option><option value='Kenya' data-id='113' >Kenya</option><option value='Kiribati' data-id='114' >Kiribati</option><option value='Korea North 1663' data-id='115' >Korea North 1664</option><option value='Korea South' data-id='116' >
1664Korea South</option><option value='Kosovo' data-id='248' >Kosovo</option><option value='Kuwait' data-id='117' >Kuwait</option><option value='Kyrgyzstan' data-id='118' >Kyrgyzstan</option><option value='Laos' data-id='119' >Laos</option><option value='Latvia' data-id='120' >Latvia</option><option value='Lebanon' data-id='121' >Lebanon</option><option value='Lesotho' data-id='122' >Lesotho</option><option value='Liberia' data-id='123' >Liberia</option><option value='Libya' data-id='124' >Libya</option><option value='Liechtenstein' data-id='125' >Liechtenstein</option><option value='Lithuania' data-id='126' >Lithuania</option><option value='Luxembourg' data-id='127' >Luxembourg</option><option value='Macau S.A.R.' data-id='128' >Macau S.A.R.</option><option value='Macedonia' data-id='129' >Macedonia</option><option value='Madagascar' data-id='130' >Madagascar</option><option value='Malawi' data-id='131' >Malawi</option><option value='Malaysia' data-id='132' >Malaysia</option><option value='Maldives' data-id='133' >Maldives</option><option value='Mali' data-id='134' >Mali</option><option value='Malta' data-id='135' >Malta</option><option value='Man (Isle of)' data-id='136' >Man (Isle of)</option><option value='Marshall Islands' data-id='137' >Marshall Islands</option><option value='Martinique' data-id='138' >Martinique</option><option value='Mauritania' data-id='139' >Mauritania</option><option value='Mauritius' data-id='140' >Mauritius</option><option value='Mayotte' data-id='141' >Mayotte</option><option value='Mexico' data-id='142' >Mexico</option><option value='Micronesia' data-id='143' >Micronesia</option><option value='Moldova' data-id='144' >Moldova</option><option value='Monaco' data-id='145' >Monaco</option><option value='Mongolia' data-id='146' >Mongolia</option><option value='Montenegro' data-id='147' >Montenegro</option><option value='Montserrat' data-id='148' >Montserrat</option><option value='Morocco' data-id='149' >Morocco</option><option value='Mozambique' data-id='150' >Mozambique</option><option value='Myanmar' data-id='151' >Myanmar</option><option value='Namibia' data-id='152' >Namibia</option><option value='Nauru' data-id='153' >Nauru</option><option value='Nepal' data-id='154' >Nepal</option><option value='Netherlands Antilles' data-id='155' >Netherlands Antilles</option><option value='Netherlands The' data-id='156' >Netherlands The</option><option value='New Caledonia' data-id='157' >New Caledonia</option><option value='New Zealand' data-id='158' >New Zealand</option><option value='Nicaragua' data-id='159' >Nicaragua</option><option value='Niger' data-id='160' >Niger</option><option value='Nigeria' data-id='161' >Nigeria</option><option value='Niue' data-id='162' >Niue</option><option value='Norfolk Island' data-id='163' >Norfolk Island</option><option value='Northern Mariana Islands' data-id='164' >Northern Mariana Islands</option><option value='Norway' data-id='165' >Norway</option><option value='Oman' data-id='166' >Oman</option><option value='Pakistan' data-id='167' >Pakistan</option><option value='Palau' data-id='168' >Palau</option><option value='Palestinian Territory Occupied' data-id='169' >Palestinian Territory Occupied</option><option value='Panama' data-id='170' >Panama</option><option value='Papua new Guinea' data-id='171' >Papua new Guinea</option><option value='Paraguay' data-id='172' >Paraguay</option><option value='Peru' data-id='173' >Peru</option><option value='Philippines' data-id='174' >Philippines</option><option value='Pitcairn Island' data-id='175' >Pitcairn Island</option><option value='Poland' data-id='176' >Poland</option><option value='Portugal' data-id='177' >Portugal</option><option value='Puerto Rico' data-id='178' >Puerto Rico</option><option value='Qatar' data-id='179' >Qatar</option><option value='Reunion' data-id='180' >Reunion</option><option value='Romania' data-id='181' >Romania</option><option value='Russia' data-id='182' >Russia</option><option value='Rwanda' data-id='183' >Rwanda</option><option value='Saint Helena' data-id='184' >Saint Helena</option><option value='Saint Kitts And Nevis' data-id='185' >Saint Kitts And Nevis</option><option value='Saint Lucia' data-id='186' >Saint Lucia</option><option value='Saint Pierre and Miquelon' data-id='187' >Saint Pierre and Miquelon</option><option value='Saint Vincent And The Grenadines' data-id='188' >Saint Vincent And The Grenadines</option><option value='Saint-Barthelemy' data-id='189' >Saint-Barthelemy</option><option value='Saint-Martin (French part)' data-id='190' >Saint-Martin (French part)</option><option value='Samoa' data-id='191' >Samoa</option><option value='San Marino' data-id='192' >San Marino</option><option value='Sao Tome and Principe' data-id='193' >Sao Tome and Principe</option><option value='Saudi Arabia' data-id='194' >Saudi Arabia</option><option value='Senegal' data-id='195' >Senegal</option><option value='Serbia' data-id='196' >Serbia</option><option value='Seychelles' data-id='197' >Seychelles</option><option value='Sierra Leone' data-id='198' >Sierra Leone</option><option value='Singapore' data-id='199' >Singapore</option><option value='Slovakia' data-id='200' >Slovakia</option><option value='Slovenia' data-id='201' >Slovenia</option><option value='Solomon Islands' data-id='202' >Solomon Islands</option><option value='Somalia' data-id='203' >Somalia</option><option value='South Africa' data-id='204' >South Africa</option><option value='South Georgia' data-id='205' >South Georgia</option><option value='South Sudan' data-id='206' >South Sudan</option><option value='Spain' data-id='207' >Spain</option><option value='Sri Lanka' data-id='208' >Sri Lanka</option><option value='Sudan' data-id='209' >Sudan</option><option value='Suriname' data-id='210' >Suriname</option><option value='Svalbard And Jan Mayen Islands' data-id='211' >Svalbard And Jan Mayen Islands</option><option value='Sweden' data-id='213' >Sweden</option><option value='Switzerland' data-id='214' >Switzerland</option><option value='Syria' data-id='215' >Syria</option><option value='Taiwan' data-id='216' >Taiwan</option><option value='Tajikistan' data-id='217' >Tajikistan</option><option value='Tanzania' data-id='218' >Tanzania</option><option value='Thailand' data-id='219' >Thailand</option><option value='Togo' data-id='220' >Togo</option><option value='Tokelau' data-id='221' >Tokelau</option><option value='Tonga' data-id='222' >Tonga</option><option value='Trinidad And Tobago' data-id='223' >Trinidad And Tobago</option><option value='Tunisia' data-id='224' >Tunisia</option><option value='Türkiye' data-id='225' >Türkiye</option><option value='Turkmenistan' data-id='226' >Turkmenistan</option><option value='Turks And Caicos Islands' data-id='227' >Turks And Caicos Islands</option><option value='Tuvalu' data-id='228' >Tuvalu</option><option value='Uganda' data-id='229' >Uganda</option><option value='Ukraine' data-id='230' >Ukraine</option><option value='United Arab Emirates' data-id='231' >United Arab Emirates</option><option value='United Kingdom' data-id='232' >United Kingdom</option><option value='United States' data-id='233' >United States</option><option value='United States Minor Outlying Islands' data-id='234' >United States Minor Outlying Islands</option><option value='Uruguay' data-id='235' >Uruguay</option><option value='Uzbekistan' data-id='236' >Uzbekistan</option><option value='Vanuatu' data-id='237' >Vanuatu</option><option value='Vatican City State (Holy See)' data-id='238' >Vatican City State (Holy See)</option><option value='Venezuela' data-id='239' >Venezuela</option><option value='Vietnam' data-id='240' >Vietnam</option><option value='Virgin Islands (British)' data-id='241' >Virgin Islands (British)</option><option value='Virgin Islands (US)' data-id='242' >Virgin Islands (US)</option><option value='Wallis And Futuna Islands' data-id='243' >Wallis And Futuna Islands</option><option value='Western Sahara' data-id='244' >Western Sahara</option><option value='Yemen' data-id='245' >Yemen</option><option value='Zambia' data-id='246' >Zambia</option><option value='Zimbabwe' data-id='247' >Zimbabwe</option></select><span class='text-danger'></span></div><div class="col-12 " role="group" aria-label="State" ><span id="grp_fld_1516612" class="form_field_grp "><label class='control-label required' for='fld_1516612'>State</label><input type=text class='form-control form-control' name='fld_1516612' id='fld_1516612' required value='' /><span class='text-danger'></span></div><div class="col-12 " role="group" aria-label="(empty)" ><span id="grp_fld_725983" class="form_field_grp "><input class='btn btn-primary pull-right btn-lg mt-3' name='fld_725983' id='fld_725983'type='submit'value='Register'/><span class='text-danger'></span></div> </div> 1665 1666 </form> 1667</div> 1668</div>
1669<div id="LoadingBar" style="display:none; position: absolute; top: 50%; left: 50%;" role="progressbar" aria-label="Your data is being saved, please wait." aria-busy="true"> 1670 <img alt="Loading spinner" src="https://vepimg.b8cdn.com/images/new_loading_spiner.gif" > 1671</div> 1672</div> <div class="modal fade" id="videoModal" tabindex="-1" role="dialog" aria-labelledby="videoModalLabel" aria-hidden="true"> 1673 <div class="modal-dialog" role="document" style="max-width: 75% !important; 1674 width: 75% !important;"> 1675 <div class="modal-content"> 1676 <div class="modal-header"> 1677 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 1678 <span aria-hidden="true">Ã</span> 1679 </button> 1680 </div> 1681 <div class="modal-body"> 1682 <iframe id="iframe-id" width="100%" height="600" data-src="{url}" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe> 1683 <div id="loadingMessage" style="display: none;">Loading...</div> 1684 </div> 1685 </div> 1686 </div> 1687 </div> 1688 1689 <div id="deleteModal" class="modal fade" role='dialog'> 1690 <div class="modal-dialog"> 1691 <div class="modal-content"> 1692 <div class="modal-header" style="background: #F36531;"> 1693 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">Ã</button> 1694 <h4 class="modal-title">Ticket </h4> 1695 </div> 1696 <div class="modal-body"> 1697 <p>Are you sure you want to change your ticket selection ?</p> 1698 1699 </div> 1700 <div class="modal-footer"> 1701 <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button> 1702 <span id= 'deleteButton'></span> 1703 </div> 1704 1705 </div> 1706 </div> 1707 </div> 1708 <!--Modal ends here---> 1709 1710 1711 1712 1713
1713<script type="text/javascript" src="https://vepjs.b8cdn.com/js/v2/registration/payment-summary.js?v=2.8"></script>
1713 1714 1715
1716<script type="text/javascript" src="https://vepjs.b8cdn.com/js/v2/registration/enhancedTicketAvailability.js?v=2.33"></script>
vendor: 1 bytes, line 1716
1716
1717<script> 1718 var isTicket= ''; 1719 var organizationId= '323'; 1720 var isTicketTop= ''; 1721 var formType= 'REGISTRATION_FORM'; 1722 var isCardOnHold= ''; 1723 var isStripeElement= ''; 1724 var isStripeConnectElement= ''; 1725 var isStripeConnectAccountId= ''; 1726 var isGroupRegistrationField = ''; 1727 var isGroupMultipleSelect = ''; 1728 var simplifiedTicketAssignment = ''; 1729 var autoAddonsToBuyer = false; 1730 var hasAdminOrEventOwnerLimitBypass = false; 1731 var groupRegistrationFieldMax = '1'; 1732 var paymentMethodCount = '0'; 1733 var paymentMethodShuttleId = 19; 1734 var hasVfairsOfflinePayments = false; 1735 var enableVfairsPaymentFlag = false; 1736 if ($('#payment_method_count').length) { 1737 $('#payment_method_count').val(paymentMethodCount); 1738 } 1739 if (organizationId == 180) { 1740 var org180CustomerDetailsLabel = document.querySelector('.showOrHideCustomerDetails'); 1741 if (org180CustomerDetailsLabel) { 1742 org180CustomerDetailsLabel.textContent = 'Attendee details'; 1743 } 1744 } 1745 1746 /** 1747 * True only for Shuttle-only vFairs checkout (payment UI hidden, no Cheque/PO). 1748 * Must not run for Stripe/PayPal/etc. or when user must choose Cheque/PO. 1749 */ 1750 function isShuttleOnlyVfairsCheckout() { 1751 if (!enableVfairsPaymentFlag || hasVfairsOfflinePayments || !$('.pmnt_fld').length) { 1752 return false; 1753 } 1754 var $shuttleOpt = $('.pmnt_fld option[data-id="' + paymentMethodShuttleId + '"]'); 1755 if (!$shuttleOpt.length) { 1756 return false; 1757 } 1758 var $radios = $('input[name="optionsRadios"]'); 1759 var $shuttleRadios = $('input[name="optionsRadios"][data-method="' + paymentMethodShuttleId + '"]'); 1760 // No radios at all (legacy shuttle-only) OR only Shuttle radio(s) exist 1761 return $radios.length === 0 || ($shuttleRadios.length > 0 && $radios.length === $shuttleRadios.length); 1762 } 1763 function autoSelectShuttlePaymentMethod() { 1764 if (!isShuttleOnlyVfairsCheckout()) { 1765 return false; 1766 } 1767 var $shuttleOpt = $('.pmnt_fld option[data-id="' + paymentMethodShuttleId + '"]'); 1768 if (!$shuttleOpt.length) { 1769 return false; 1770 } 1771 $('.pmnt_fld').val($shuttleOpt.val()); 1772 $('input[name="optionsRadios"][data-method="' + paymentMethodShuttleId + '"]').prop('checked', true); 1773 return !!$('.pmnt_fld').val(); 1774 } 1775 /** 1776 * Free ($0) tickets hide the payment UI, so pmnt_fld stays empty and submit 1777 * fails required validation. Prefer Shuttle when present; else first real option. 1778 */ 1779 function isZeroTotalTicketCheckout() { 1780 var stored = parseFloat(sessionStorage.getItem('total_price')); 1781 if (!isNaN(stored) && stored === 0) { 1782 return true; 1783 } 1784 var attrTotal = parseFloat($('.order__summary .price__item > div.total__price > span').attr('data-original_total_price')); 1785 if (!isNaN(attrTotal) && attrTotal === 0) { 1786 return true; 1787 } 1788 return $('.paynbtn.zerob, .paynbtn.zerobb').length > 0; 1789 } 1790 function autoSelectPaymentMethodForFreeTicket() { 1791 if (!isZeroTotalTicketCheckout() || !$('.pmnt_fld').length) { 1792 return false; 1793 } 1794 var $opt = $('.pmnt_fld option[data-id="' + paymentMethodShuttleId + '"]'); 1795 if (!$opt.length) { 1796 $opt = $('.pmnt_fld option').filter(function () { 1797 return $(this).val() !== ''; 1798 }).first(); 1799 } 1800 if (!$opt.length || !$opt.val()) { 1801 return false; 1802 } 1803 $('.pmnt_fld').val($opt.val()); 1804 var methodId = $opt.attr('data-id'); 1805 if (methodId) { 1806 $('input[name="optionsRadios"][data-method="' + methodId + '"]').prop('checked', true); 1807 } 1808 return !!$('.pmnt_fld').val(); 1809 } 1810 var isGroupBypassMember = ''; 1811 var showBookingRelatedData = 1; 1812 var enableV5ApiDiscount = 1; 1813 var enableV5EnhanceAvailabilityApi = 0; 1814 var isStripeValidation=false; 1815 var isStripeValidation=false; 1816 var appId= "20550"; 1817 var enableExpiredOwnedEditProfile10003110 = false;
1818 function getRegistrationFieldValueFromScope($scope, fieldName) { 1819 if (!$scope || !$scope.fn) { 1820 return ''; 1821 } 1822 var $inputs = $scope('input[name="' + fieldName + '"]'); 1823 if (!$inputs.length) { 1824 return ''; 1825 } 1826 var $primaryInput = $inputs.filter(function () { 1827 var id = $scope(this).attr('id'); 1828 return id && id.indexOf('fld_') !== -1; 1829 }).first(); 1830 if (!$primaryInput.length) { 1831 $primaryInput = $inputs.first(); 1832 } 1833 return ($primaryInput.val() || '').trim(); 1834 } 1835 function getMainRegistrationInputValue(fieldName) { 1836 var value = getRegistrationFieldValueFromScope($, fieldName); 1837 if (value) { 1838 return value; 1839 } 1840 if (window.parent && window.parent !== window) { 1841 try { 1842 value = getRegistrationFieldValueFromScope(window.parent.$, fieldName); 1843 } catch (e) {} 1844 if (value) { 1845 return value; 1846 } 1847 } 1848 if (window.opener && window.opener !== window) { 1849 try { 1850 value = getRegistrationFieldValueFromScope(window.opener.$, fieldName); 1851 } catch (e) {} 1852 } 1853 return value || ''; 1854 } 1855 var assignDropdownFixAppIds = [19899]; 1856 let TicketPackages={}; 1857 let v5TicketPackagesData={}; 1858 var seatPlanUrl= ''; 1859 var seatPlanPackageIds= []; 1860 var pageBreakSummaryCount = "0"; 1861 1862 if(enableV5ApiDiscount){ 1863 var paymentSummaryObject = new PaymentSummary("https://www.codeseccon.com/rest/v5/registration/paymentSummary/byPostData"); 1864 // var paymentSummaryObject = new PaymentSummary("https://pre-prod.vfairsdev.com/rest/v5/registration/paymentSummary/byPostData"); 1865 } 1866 1867 if (enableV5EnhanceAvailabilityApi) { 1868 var enhancedTicketAvailabilityObject = new EnhancedTicketAvailability("https://www.codeseccon.com/rest/v5"); 1869 } 1870 1871 if (formType === 'SPEAKER_REGISTRATION_FORM' && (appId == 11368 || appId == 15715)) { 1872 // Custom logic for SPEAKER_REGISTRATION_FORM 1873 document.addEventListener('DOMContentLoaded', function() { 1874 // Get license key from config 1875 FroalaEditor.DEFAULTS.key = 'Ne2C1sA4A3H4A14A7D9A6kOPVi1b1b2Le2e1G1AWMSGSAFDTGHWsE7D7D6C4A1H4E3C3C6B5=='; 1876 1877 new FroalaEditor('.froala-editor', { 1878 height: 300, 1879 toolbarButtons: ['bold', 'italic', 'underline', 'strikeThrough', '|', 1880 'paragraphFormat', 'align', 'formatOL', 'formatUL', '|', 1881 'insertLink', 'insertImage', 'insertTable', '|', 1882 'html'] 1883 }); 1884 }); 1885 // You can add more functionality here as needed 1886 } 1887 1888 1889 1890 1891 1892 $(function () { 1893 1894 if(appId == 22243){ 1895 console.log('appId == 22243'); 1896 $(document).on('change', '#bypass', function() { 1897 // debugger; 1898 console.log('bypass changed, checked:', $(this).is(':checked')); 1899 if($(this).is(':checked')) { 1900 $(this).val('1'); 1901 console.log('bypass value set to 1'); 1902 // Create bypass_auto element if it doesn't exist 1903 if($("#bypass_auto").length == 0) { 1904 $('body').append('<input type="hidden" name="bypass_auto" id="bypass_auto" value="1" style="float: left">'); 1905 console.log('bypass_auto element created'); 1906 } 1907 } else { 1908 $(this).val('0'); 1909 console.log('bypass value set to 0'); 1910 // Remove bypass_auto element 1911 $("#bypass_auto").remove(); 1912 console.log('bypass_auto element removed, length:', $("#bypass_auto").length); 1913 } 1914 }); 1915 1916 1917 // Initialize on page load 1918 if($('#bypass').length > 0) { 1919 // debugger; 1920 if($('#bypass').is(':checked')) { 1921 $('#bypass').val('1'); 1922 console.log('bypass value set to 1 on page load'); 1923 // Create bypass_auto element if it doesn't exist 1924 // if($("#bypass_auto").length == 0) { 1925 // $('body').append('<input type="hidden" name="bypass_auto" id="bypass_auto" value="1" style="float: left">'); 1926 // console.log('bypass_auto element created on page load'); 1927 // } 1928 } else { 1929 $('#bypass').val('0'); 1930 console.log('bypass value set to 0 on page load'); 1931 // Remove bypass_auto element 1932 // $("#bypass_auto").remove(); 1933 // console.log('bypass_auto element removed on page load, length:', $("#bypass_auto").length); 1934 } 1935 } 1936 } 1937 let shouldRunStripeSubmit = true; 1938 if(!isTicket){
1939 $('.pmnt_fld').val($('.pmnt_fld option:nth-child(2)').val()).change(); 1940 } 1941 $('.attendeGr__btn').click(function () { 1942 var target = $(this).data('offcanvas'); 1943 $('.attendeOffcanvas').removeClass('show'); 1944 $('.attendbackdrop').addClass('show'); 1945 $('#' + target).addClass('show'); 1946 1947 }); 1948 $('.attendeOffcanvas__header button, .attendbackdrop').click(function () { 1949 $('.attendeOffcanvas').removeClass('show'); 1950 $('.attendbackdrop').removeClass('show'); 1951 if (typeof refreshSessionLimitedFieldAvailability === 'function') { 1952 refreshSessionLimitedFieldAvailability(null); 1953 } 1954 }); 1955 1956 client_secret = ''; 1957 intent_id = ''; 1958 }); 1959 $(document).click(function(e) { 1960 var target = e.target; 1961 if (assignDropdownFixAppIds.includes(Number(appId))) { 1962 if (!$(target).closest('.assign-buttn').length) { 1963 $('.packageContainer__head .dropdown-menu').hide(); 1964 } 1965 } else { 1966 if (!$(target).is('#assign-buttn') && !$(target).parents().is('#assign-buttn')) { 1967 $('#assign-buttn .dropdown-menu').hide(); 1968 } 1969 } 1970 }); 1971 $(document).ready(function() { 1972 let clickedOnce = false; 1973 $('#field_addons').select2({ 1974 language: { 1975 noResults: function() { 1976 return "No addons available"; 1977 } 1978 } 1979 }); 1980 var isEventBound = false; 1981 function getMainRegistrationInputValue(fieldName) { 1982 var $inputs = $('input[name="' + fieldName + '"]'); 1983 if (!$inputs.length) { 1984 return ''; 1985 } 1986 var $primaryInput = $inputs.filter(function () { 1987 var id = $(this).attr('id'); 1988 return id && id.indexOf('fld_') !== -1; 1989 }).first(); 1990 if (!$primaryInput.length) { 1991 $primaryInput = $inputs.first(); 1992 } 1993 return ($primaryInput.val() || '').trim(); 1994 } 1995 var orderNowProcessing = false; 1996 window.orderNowProcessing = false; 1997 var orderNowProcessingRef = window; 1998 1999 $('.order-now-button, .order-now-button1').click(function (e) { 2000 if (orderNowProcessingRef.orderNowProcessing) { 2001 e.preventDefault(); 2002 return false; 2003 } 2004 orderNowProcessingRef.orderNowProcessing = true; 2005 $('.order-now-button, .order-now-button1').prop('disabled', true); 2006 2007 2008 if(![15625, 15223, 1000000241].includes(Number(appId))) { 2009 // Keep coupon when a promo was applied (including 100% off / $0 total). 2010 // Old checks treated hidden/$0.00 discount UI as "no discount" and cleared a valid code. 2011 var discountedAmt = parseFloat($('.pricing.discount span').attr('data-discounted_amount')); 2012 var isPromoApplied = ($('#text_help').hasClass('alert-success') && $('#text_help').is(':visible')) 2013 || ($('#price_details').is(':visible') && $.trim($('#price_details').text()) !== '') 2014 || (discountedAmt > 0) 2015 || Number($('.order__summary .price__item > div.total__price > span').attr('data-is_discount_applied')) === 1; 2016 if (!isPromoApplied && ($('.pricing.discount span').text() === '$0.00' || $('.pricing.discount').css('display') === 'none' || String($('.pricing.discount span').attr('data-discounted_amount') || '0') === '0')) { 2017 $('.coupn-code-sec.coupncode.copenfull input').val(''); 2018 } 2019 }else{ 2020 2021 } 2022 2023 if (enableV5EnhanceAvailabilityApi) { 2024 2025 let postData = { 2026 appId: "20550", 2027 packages: [] 2028 } 2029 2030 let packageQuantities = {}; 2031 let addonQuantities = {}; 2032 2033 if (isUpgradeDowngradeProfile) { 2034 console.log(globalPackagesAndAddonsData); 2035 let packageAndAddonData = enhancedTicketAvailabilityObject.getPackageAndAddonArrayFromUpgradeDowngradePaymentData(globalPackagesAndAddonsData); 2036 2037 if (packageAndAddonData && packageAndAddonData.packageQuantities) { 2038 packageQuantities = packageAndAddonData.packageQuantities; 2039 } 2040 2041 if (packageAndAddonData && packageAndAddonData.addonQuantities) { 2042 addonQuantities = packageAndAddonData.addonQuantities; 2043 } 2044 } 2045 2046 $(".ticket__item").each(function() { 2047 2048 if ($(this).find(".pricebtn-btn").css('display') === 'none') { 2049 let packageData = {}; 2050 let pkgId = $(this).find(".qty-plus").attr("data-id"); 2051 if (pkgId) { 2052 let pkgQty = $(this).find(".qty_package").val(); 2053 if (pkgQty && parseInt(pkgQty) > 0) { 2054 2055 if (isUpgradeDowngradeProfile) { 2056 if (packageQuantities[pkgId]) { 2057 pkgQty -= parseInt(packageQuantities[pkgId]); 2058 2059 if (parseInt(pkgQty) <= 0) { 2060 pkgQty = 0; 2061 } 2062 } 2063 } 2064 2065 packageData = { 2066 id: pkgId, 2067 qty: parseInt(pkgQty), 2068 addons: [] 2069 }; 2070 2071 $(".ticket__addon.addon-package-"+pkgId+" .qty").each(function() { 2072 let addonQty = $(this).val(); 2073 let addonId = $(this).siblings(".qty-plus").attr("data-addons"); 2074 if (addonId && addonQty && parseInt(addonQty) > 0) { 2075 2076 if (isUpgradeDowngradeProfile) { 2077 if (addonQuantities[pkgId] && addonQuantities[pkgId][addonId]) { 2078 addonQty -= parseInt(addonQuantities[pkgId][addonId]); 2079 2080 if (parseInt(addonQty) <= 0) { 2081 addonQty = 0; 2082 } 2083 } 2084 } 2085 2086 packageData.addons.push({ 2087 id: addonId, 2088 qty: parseInt(addonQty) 2089 }); 2090 } 2091 }); 2092 } 2093 postData.packages.push(packageData); 2094 } 2095 } 2096 }); 2097 2098 enhancedTicketAvailabilityObject.checkAddonAndPackageAvailability(postData, orderNowClickAction, e); 2099 } else { 2100 orderNowClickAction(e); 2101 } 2102 }); 2103 2104 function upgradeDowngradeSlotHasAuthoritativeAddonSelection(source, packageId, email) { 2105 if (!source) { 2106 return false;
2107 } 2108 var ud = source.userDetails || source; 2109 email = (email || source.email || (ud && ud.email) || '').trim(); 2110 if (!ud || !ud.selected_data || !email) { 2111 return false; 2112 } 2113 try { 2114 var sd = typeof ud.selected_data === 'string' ? JSON.parse(ud.selected_data) : ud.selected_data; 2115 return !!(sd && sd[email] && sd[email][packageId] && $.isArray(sd[email][packageId].field_addons)); 2116 } catch (e) { 2117 return false; 2118 } 2119 } 2120 2121 function getUpgradeDowngradePaymentAddonIds(email, packageId) { 2122 email = (email || '').trim(); 2123 packageId = String(packageId || ''); 2124 if (!email || !packageId) { 2125 return []; 2126 } 2127 var packagesSource = null; 2128 if (typeof multipleTicketPackageListOnly === 'object' && multipleTicketPackageListOnly) { 2129 packagesSource = multipleTicketPackageListOnly; 2130 } else if (globalPackagesAndAddonsData && globalPackagesAndAddonsData.packages) { 2131 packagesSource = globalPackagesAndAddonsData.packages; 2132 } 2133 if (!packagesSource || !packagesSource[email] || !packagesSource[email][packageId]) { 2134 return []; 2135 } 2136 var paymentPackage = packagesSource[email][packageId]; 2137 if ($.isArray(paymentPackage.field_addons)) { 2138 return paymentPackage.field_addons.slice(); 2139 } 2140 return []; 2141 } 2142 2143 function getUpgradeDowngradeUserAddonIds(source, packageId, options) { 2144 options = options || {}; 2145 if (!source) { 2146 return []; 2147 } 2148 var ud = source.userDetails || source; 2149 var email = (source.email || (ud && ud.email) || '').trim(); 2150 var isFromUserSlot = !!options.isFromUserSlot; 2151 2152 // Child iframe edits store authoritative addon picks in selected_data. 2153 if (ud && ud.selected_data) { 2154 try { 2155 var sd = typeof ud.selected_data === 'string' ? JSON.parse(ud.selected_data) : ud.selected_data; 2156 if (sd && email && sd[email] && sd[email][packageId] && $.isArray(sd[email][packageId].field_addons)) { 2157 return sd[email][packageId].field_addons.slice(); 2158 } 2159 } catch (e) {} 2160 } 2161 2162 if (isFromUserSlot && isUpgradeDowngradeProfile) { 2163 return []; 2164 } 2165 2166 if (isUpgradeDowngradeProfile) { 2167 return getUpgradeDowngradePaymentAddonIds(email, packageId); 2168 } 2169 2170 if (ud && typeof ud === 'object') { 2171 var pmntAddonIds = []; 2172 $.each(ud, function (key, val) { 2173 if (key.indexOf('pmnt_addons_') === 0 && val) { 2174 if ($.isArray(val)) { 2175 pmntAddonIds = pmntAddonIds.concat(val); 2176 } else { 2177 pmntAddonIds.push(val); 2178 } 2179 } 2180 }); 2181 if (pmntAddonIds.length > 0) { 2182 return pmntAddonIds; 2183 } 2184 } 2185 2186 if (ud && $.isArray(ud.field_addons)) { 2187 return ud.field_addons.slice(); 2188 } 2189 2190 if ($.isArray(source.field_addons)) { 2191 return source.field_addons.slice(); 2192 } 2193 2194 return []; 2195 } 2196 2197 function resolveUpgradeDowngradeUserListSlot(countSelector) { 2198 var existingSlotVal = $('#user' + countSelector).val(); 2199 if (!existingSlotVal || String(existingSlotVal).trim() === '') { 2200 return null; 2201 } 2202 try { 2203 return JSON.parse(String(existingSlotVal).replace(/"/g, '"')); 2204 } catch (e) { 2205 return null; 2206 } 2207 } 2208 2209 function sanitizeUpgradeDowngradeUserListPayload(userData, packageId, addonIds) { 2210 if (!userData || typeof userData !== 'object') { 2211 return userData; 2212 } 2213 var payload = $.extend(true, {}, userData); 2214 var keepAddonKeys = {}; 2215 var addonList = addonIds || []; 2216 $.each(addonList, function (_, addonId) { 2217 keepAddonKeys[String(addonId)] = true; 2218 }); 2219 $.each(payload, function (key) { 2220 if (key.indexOf('qty_') !== 0) { 2221 return; 2222 } 2223 var match = key.match(/^qty_(.+)_([^_]+)$/); 2224 if (!match || String(match[2]) !== String(packageId)) { 2225 return; 2226 } 2227 if (!keepAddonKeys[match[1]]) { 2228 delete payload[key]; 2229 } 2230 }); 2231 if (addonList.length > 0) { 2232 payload.field_addons = addonList.slice(); 2233 } else { 2234 delete payload.field_addons; 2235 } 2236 return payload; 2237 } 2238 2239 function buildUpgradeDowngradeUserAddonDisplay(packageDetails, packageId, addonIds) { 2240 var allAddonsName = ''; 2241 var allAddonsNameBox = ''; 2242 var jsonfield_addons = ''; 2243 var AddonsArray = []; 2244 2245 $.each(addonIds, function (idx, addonId) { 2246 addonId = String(addonId); 2247 var addonName = ''; 2248 if (packageDetails.field_addons && packageDetails.field_addons[addonId]) { 2249 addonName = packageDetails.field_addons[addonId]; 2250 } else if (TicketPackages[packageId] && TicketPackages[packageId][addonId]) { 2251 var meta = TicketPackages[packageId][addonId]; 2252 addonName = meta.name || meta.addons_name || ''; 2253 } 2254 if (!addonName) { 2255 addonName = 'Addon ' + addonId; 2256 } 2257 if (allAddonsName !== '') { 2258 allAddonsName += ', '; 2259 jsonfield_addons += ','; 2260 } 2261 jsonfield_addons += addonId; 2262 allAddonsName += addonName; 2263 allAddonsNameBox += '<span>' + addonName + '</span>'; 2264 AddonsArray.push(addonId); 2265 }); 2266 2267 return { 2268 allAddonsName: allAddonsName, 2269 allAddonsNameBox: allAddonsNameBox, 2270 jsonfield_addons: jsonfield_addons, 2271 AddonsArray: AddonsArray 2272 }; 2273 } 2274 2275 var orderNowClickAction = (e) => { 2276 2277 var totalElement = document.querySelector('.totalcountT p[data-total]'); 2278 if (totalElement) { 2279 var totalText = totalElement.textContent; 2280 var totalNumber = parseFloat(totalText.replace(/[^0-9.]/g, '')); 2281 2282 } 2283 const hasNonDonationPackage = Object.entries(TicketPackages).some(([id, details]) => 2284 id !== 'paymentMethodId' && details?.isDonation === 0 2285 ); 2286 2287 if (!hasNonDonationPackage) { 2288 $('#error_message_addons').remove(); 2289 const errorDiv = ` 2290 <div class="col-md-12 form-control my-3 alert alert-danger" 2291 role="alert" 2292 id="error_message_addons" 2293 style="width: 100% !important;" 2294 tabindex="0"> 2295 Please select at least one package other than the donation package. 2296 </div>`; 2297 $('.ticket__totalBox.small-discout-box').after(errorDiv); 2298 orderNowProcessingRef.orderNowProcessing = false;
2299 $('.order-now-button, .order-now-button1').prop('disabled', false); 2300 return false; 2301 } 2302 2303 // Check if we have existing ticket details to validate against 2304 if(userDetailsEditTicket){ 2305 // Only validate quantities if V5 API discounts and quantity restrictions are enabled 2306 if(enableV5ApiDiscount){ 2307 $("#LoadingBar").show(); 2308 2309 // Initialize upgrade/downgrade handler 2310 const upgradeDowngradeObject = new UpgradeDowngradeClass( 2311 "https://www.codeseccon.com/rest/v5/registration/paymentSummary/upgradeDowngrade/getAmountPaid" 2312 ); 2313 2314 // Compare quantities between original and new selections 2315 // Returns false if quantities don't match to prevent invalid upgrades 2316 if(typeof enableTicketUpgradeRestrictQty !== 'undefined' && enableTicketUpgradeRestrictQty !='0'){ 2317 if(!upgradeDowngradeObject.ticketUpgradeRestrictQtyCheck(multipleTicketPackageListOnly, TicketPackages)) { 2318 $('#error_message_addons').remove(); 2319 var errorDiv = '<div class="col-md-12 form-control my-3 alert alert-danger" role="alert" id="error_message_addons" style="width: 100% !important;" tabindex="0">Changing the quantity of packages is restricted. Please contact support for assistance.</div>'; 2320 $('.ticket__totalBox.small-discout-box').after(errorDiv); 2321 // Hide error message after 5 seconds 2322 setTimeout(function() { 2323 $('.ticket__totalBox.small-discout-box').next('.alert-danger').remove(); 2324 }, 5000); 2325 $("#LoadingBar").hide(); 2326 orderNowProcessingRef.orderNowProcessing = false; 2327 $('.order-now-button, .order-now-button1').prop('disabled', false); 2328 return false; 2329 } 2330 } 2331 if(typeof enableTicketUpgradeRestrictAddonsQtyNumber !== 'undefined' && enableTicketUpgradeRestrictAddonsQtyNumber !='0'){ 2332 if(!upgradeDowngradeObject.ticketUpgradeRestrictAddonsQtyNumber(multipleTicketPackageListOnly, TicketPackages)) { 2333 $('#error_message_addons').remove(); 2334 var errorDiv = '<div class="col-md-12 form-control my-3 alert alert-danger" role="alert" id="error_message_addons" style="width: 100% !important;" tabindex="0">Changing the quantity of add-ons is restricted. Please contact support for assistance.</div>'; 2335 $('.ticket__totalBox.small-discout-box').after(errorDiv); 2336 setTimeout(function() { 2337 $('.ticket__totalBox.small-discout-box').next('.alert-danger').remove(); 2338 }, 5000); 2339 $("#LoadingBar").hide(); 2340 orderNowProcessingRef.orderNowProcessing = false; 2341 $('.order-now-button, .order-now-button1').prop('disabled', false); 2342 return false; 2343 } 2344 } 2345 2346 2347 $("#LoadingBar").hide(); 2348 } 2349 } 2350 if (parseInt(isTicket)) { 2351 if(fromBackBtn && tcktModifiedFromBackBtn){ 2352 if (formType === 'REGISTRATION_FORM' && parseInt(pageBreakSummaryCount, 10) > 0) { 2353 if (typeof pruneStepFormTicketPackagesFromDomSelection === 'function') { 2354 pruneStepFormTicketPackagesFromDomSelection(); 2355 } 2356 $('input[name="user_list[]"]').val(''); 2357 $('.packageContainer').remove(); 2358 clickedOnce = false; 2359 } 2360 $('.packageBlock').html(''); 2361 $('.user-links input').each(function(){ 2362 $(this).val(''); 2363 }); 2364 2365 if (pageBreakSummaryCount > 0) { 2366 $('.packageContainer > .aPackage').remove(); 2367 } 2368 } 2369 if (isTicket && (isGroupBypassMember && isGroupRegistrationField) && ! multipleTicketEdit) { 2370 $('.packageBlock').css("visibility", "hidden"); 2371 $('.group_registration_label').css("display", "none"); 2372 $('.group-reg-block').css("height", "0px"); 2373 $('.packageBlock').css({ 2374 height: '0px', // set to your desired height
2375 width: '0px' // set to your desired width 2376 }); 2377 /* VFE-60354 - Group Reg - Hide it when package is one */ 2378 } else { 2379 $('.packageBlock').css("visibility", "visible"); 2380 $('.group_registration_label').css("display", "block"); 2381 $('.group-reg-block').css("height", "auto"); 2382 $(this).css({ 2383 height: '', 2384 width: '' 2385 }); 2386 /* VFE-60354 - Group Reg - Hide it when package is one */ 2387 } 2388 if ($(".ticketSelbtn")[0]) { 2389 flag = 0; 2390 $(".ticketSelbtn").each(function () { 2391 if ($(this).css("display") == "none") { 2392 flag = flag + 1; 2393 } 2394 }); 2395 if (flag == 0) { 2396 $('#packages-error').remove(); 2397 $('.ticket__content h3').after('<p id="packages-error" class="error" style="font-weight: bold" >Please Select Package.</p>'); 2398 $('#packages-error').fadeOut(20000); 2399 orderNowProcessingRef.orderNowProcessing = false; 2400 $('.order-now-button, .order-now-button1').prop('disabled', false); 2401 return false; 2402 } else { 2403 $('#packages-error').remove(); 2404 if (isTicket && !parseInt(isTicketTop)) { 2405 if(paymentMethodCount != 1) { 2406 $('.order__summary.ordsum').show(); 2407 }else{ 2408 $('.paynbtn.single-pay').show(); 2409 } 2410 $('.order-now-button1').hide(); 2411 } 2412 } 2413 } 2414 2415 $(this).prop('disabled', true); 2416 2417 total_sum = 0; 2418 count_start = 0; 2419 // simplifiedTicketAssignment=1; 2420 // console.log($('.qty_package').length); 2421 var count = 1; 2422 // Start Generation Here 2423 2424 $(document).find('.qty_package').each(function () { 2425 if (($(this).val() != '' && $(this).val() != 0) && ((fromBackBtn && tcktModifiedFromBackBtn) || (!fromBackBtn && !tcktModifiedFromBackBtn))) { 2426 2427 total_sum = parseInt(total_sum) + parseInt($(this).val()); 2428 var packageHTML = ''; 2429 if(simplifiedTicketAssignment){ 2430 var packageId = $(this).prev().data('id'); 2431 var upgradePackageQty = 0; 2432 if(userDetailsEditTicket && userDetailsEditTicket[packageId]){ 2433 if (isGroupBypassMember) { 2434 $.each(userDetailsEditTicket[packageId], function (index, packageDetails) { 2435 upgradePackageQty += parseInt(packageDetails.package_qty, 10) || 0; 2436 }); 2437 } else { 2438 var packageQty = userDetailsEditTicket[packageId][0].package_qty; 2439 upgradePackageQty = packageQty; 2440 } 2441 } 2442 var buyer = 0; 2443 var first_name = 'Not Set'; 2444 var last_name = ''; 2445 var email = 'Not Set'; 2446 var addons = 'Not Set'; 2447 2448 if (isGroupBypassMember) { 2449 var selectedPackageQty = parseInt($(this).val(), 10); 2450 var total_sum_faker = (count - 1) + selectedPackageQty; 2451 if (upgradePackageQty > 0) { 2452 total_sum_faker = total_sum_faker - upgradePackageQty; 2453 } 2454 if (total_sum_faker < (count - 1)) { 2455 total_sum_faker = count - 1; 2456 } 2457 var savedPackage = packageId; 2458 var packLoopStart = count; 2459 var packLoopEnd = total_sum_faker;
2460 if (userDetailsEditTicket && userDetailsEditTicket[packageId] && upgradePackageQty > 0) { 2461 packLoopStart = upgradePackageQty + 1; 2462 packLoopEnd = selectedPackageQty; 2463 } 2464 2465 while (packLoopStart <= packLoopEnd) { 2466 var packNum = packLoopStart; 2467 var selector = '.user-num' + packNum; 2468 2469 packageHTML += '<div class="fakePackage fakePackage' + packNum + '" data-pack="' + packNum + '" data-buyer="' + buyer + '" data-addonsname="" data-addons="" data-package="' + savedPackage + '">' + 2470 '<div class="aPackage__detail">' + 2471 '<div class="aPackage__detail__cell aPackage__detail__width" style="width: 80px !important"><span></span><p>Ticket ' + packNum + '</p></div>' + 2472 '<div class="aPackage__detail__cell aPackage__detail__width"><span>Name</span><p>' + first_name + ' ' + last_name + '</p></div>' + 2473 '<div class="aPackage__detail__cell aPackage__detail__width"><span>Email</span><p>' + email + '</p></div>' + 2474 '<div class="aPackage__detail__cell"><span>Addons</span><div class="addons"><p>' + addons + '</p></div></div>' + 2475 '</div>' + 2476 '<div class="aPackage__actions">'; 2477 packageHTML += '<a href="javascript:void(0)" class="btn action-btn assign-user-to-package" data-row="' + packNum + '"><i class="fa fa-pencil-alt"></i> Add User Details</a>'; 2478 packageHTML += '' + 2479 '</div>' + 2480 '</div>'; 2481 2482 packLoopStart++; 2483 } 2484 count = packLoopEnd + 1; 2485 } else { 2486 var total_sum_faker = (count - 1) + parseInt($(this).val()); // Example total sum 2487 if (upgradePackageQty > 0) { 2488 total_sum_faker = total_sum_faker - upgradePackageQty; 2489 } 2490 var savedPackage = 1; 2491 2492 while (count <= total_sum_faker) { 2493 var selector = '.user-num' + count; 2494 2495 packageHTML += '<div class="fakePackage fakePackage' + count + '" data-pack="' + count + '" data-buyer="' + buyer + '" data-addonsname="" data-addons="" data-package="' + savedPackage + '">' + 2496 '<div class="aPackage__detail">' + 2497 '<div class="aPackage__detail__cell aPackage__detail__width" style="width: 80px !important"><span></span><p>Ticket ' + count + '</p></div>' + 2498 '<div class="aPackage__detail__cell aPackage__detail__width"><span>Name</span><p>' + first_name + ' ' + last_name + '</p></div>' + 2499 '<div class="aPackage__detail__cell aPackage__detail__width"><span>Email</span><p>' + email + '</p></div>' + 2500 '<div class="aPackage__detail__cell"><span>Addons</span><div class="addons"><p>' + addons + '</p></div></div>' + 2501 '</div>' + 2502 '<div class="aPackage__actions">'; 2503 packageHTML += '<a href="javascript:void(0)" class="btn action-btn assign-user-to-package" data-row="' + count + '"><i class="fa fa-pencil-alt"></i> Add User Details</a>'; 2504 packageHTML += '' + 2505 '</div>' + 2506 '</div>'; 2507 2508 count++; 2509 } 2510 } 2511 } 2512 2513 2514 2515 let assignLink = ''; 2516 let countItem = ''; 2517 let ticketAssigned = ''; 2518 2519 if (!simplifiedTicketAssignment) { 2520 if (assignDropdownFixAppIds.includes(Number(appId))) { 2521 assignLink = '<a href="javascript:void(0)" class="btn theme-light-btn dropdown-btn" data-toggle="dropdown"><i class="fa fa-plus"></i> Assign</a>' + 2522 '<ul class="dropdown-menu dropdown-menu-main dropdown-menu-right" role="menu"> ' + 2523 '<li><a href="javascript:void(0);" class="btn theme-light-btn assign-user-to-package"><i class="fa fa-plus"></i> Add a New User</a></li>' + 2524 '<li><span class="dropdown-header">Assign to Existing User:</span></li>' + 2525 '</ul>'; 2526 } else { 2527 assignLink = '<a href="javascript:void(0)" class="btn theme-light-btn " id="dropdown-btn" data-toggle="dropdown"><i class="fa fa-plus"></i> Assign</a>' + 2528 '<ul class="dropdown-menu dropdown-menu-main dropdown-menu-right" role="menu"> ' + 2529 '<li><a href="javascript:void(0);" class="btn theme-light-btn assign-user-to-package"><i class="fa fa-plus"></i> Add a New User</a></li>' + 2530 '<li><span class="dropdown-header">Assign to Existing User:</span></li>' + 2531 '</ul>'; 2532 } 2533 countItem='<h3>' + $(this).closest('.ticket__item').find('.ticket__desc__text h5').text() + ' (0/' + $(this).val() + ')</h3>'; 2534 2535 }else{ 2536 assignLink = '<a href="javascript:void(0)" class="btn theme-light-btn user-info-prev buyer" data-buyer="1" data-user="buyer"><i class="fa fa-plus"></i> Assign to Self</a></li>'; 2537 2538 countItem='<h3>' + $(this).closest('.ticket__item').find('.ticket__desc__text h5').text() + ' </h3>'; 2539 ticketAssigned='<span class="assigned-tickets"> 0/' + $(this).val() + ' tickets assigned </span>'; 2540 } 2541 // Start of Selection 2542 var packageId = $(this).prev().data('id'); 2543 var oriTotal = $(this).val(); 2544 var assignDropdownHtml = assignDropdownFixAppIds.includes(Number(appId)) 2545 ? '<div class="dropdown assign-buttn" id="assign-buttn-' + packageId + '">' + assignLink + '</div>' 2546 : '<div class="dropdown" id="assign-buttn">' + assignLink + '</div>'; 2547 2548 $('.packageBlock').append('<div class="packageContainer" id="packageContainerBlock' + packageId + '" data-package="' + packageId + '">' + 2549 '<div class="packageContainer__head" data-ori-total="' + oriTotal + '" data-total="' + total_sum + '" data-count="' + count_start + '">' + 2550 countItem + 2551 assignDropdownHtml + 2552 '</div>' + 2553 ticketAssigned + 2554 packageHTML + 2555 '</div>'); 2556 2557 2558 if(TicketPackages[packageId]){ 2559 var packagedetails= TicketPackages[packageId]; 2560 if(packagedetails && packagedetails['isDonation'] ==1){ 2561 $('#packageContainerBlock'+packageId).hide(); 2562 } 2563 } 2564 count_start = total_sum; 2565 } 2566 }); 2567 2568 if (formType === 'REGISTRATION_FORM' && parseInt(pageBreakSummaryCount, 10) > 0 && fromBackBtn && tcktModifiedFromBackBtn) { 2569 clickedOnce = false;
2570 if (typeof ensureBuyerAssignLinkInPackage === 'function') { 2571 $('.packageContainer').each(function () { 2572 ensureBuyerAssignLinkInPackage($(this)); 2573 }); 2574 } 2575 } 2576 2577 2578 // plce new data here nomi 2579 if(userDetailsEditTicket){ 2580 if(byPassGroupMember){ 2581 $('#bypass').closest('div').hide(); 2582 } 2583 2584 2585 // Was count_start+1 (e.g. 21 after qty 20) so hydrate wrote #user21+ 2586 // while #user1â20 stayed empty. Submit counts filled slots vs ticket qty. 2587 var countSelector=1; 2588 $('input[name="email"]').attr('readonly', true); 2589 // start 2590 var ticketAddonsQtyArr = {}; 2591 $.each(userDetailsEditTicket, function(packageId, packageArray) { 2592 if(!isNaN(parseFloat(packageId)) && isFinite(packageId)) { 2593 if (TicketPackages.hasOwnProperty(packageId) && TicketPackages[packageId].hasOwnProperty('pkg_qty')) { 2594 var packageQtyEdit = TicketPackages[packageId]['pkg_qty']; 2595 var packageCount = 0; 2596 var countCheck = 1; 2597 $.each(packageArray, function (index, packageDetails) { 2598 if (parseInt(packageQtyEdit) < parseInt(countCheck)) { 2599 return false; // Break the loop after two iterations 2600 } 2601 countCheck++; 2602 var packageArrayCount = packageDetails['package_qty']; 2603 for (var i = 0; i < packageQtyEdit; i++) { 2604 if (i < packageArrayCount) { 2605 if (packageDetails.field_addons) { 2606 $.each(packageDetails.field_addons, function (index, addon) { 2607 // Ensure packageId is initialized as an object within ticketAddonsQtyArr 2608 if (!ticketAddonsQtyArr[packageId]) { 2609 ticketAddonsQtyArr[packageId] = {}; 2610 } 2611 if (packageDetails.field_addons_qty[index] && packageDetails.field_addons_qty[index] > 0) { 2612 if (TicketPackages[packageId] && TicketPackages[packageId][index] && TicketPackages[packageId][index]['addons_qty']) { 2613 ticketAddonsQtyArr[packageId][index] = TicketPackages[packageId][index]['addons_qty']; 2614 } 2615 } 2616 }); 2617 } 2618 } 2619 } 2620 }); 2621 } 2622 } 2623 }); 2624 //end 2625 $.each(userDetailsEditTicket, function(packageId, packageArray) { // Data from DB 2626 if(!isNaN(parseFloat(packageId)) && isFinite(packageId)) { 2627 if (TicketPackages.hasOwnProperty(packageId) && TicketPackages[packageId].hasOwnProperty('pkg_qty')) { // current selection 2628 if(TicketPackages[packageId].hasOwnProperty('isDonation') && TicketPackages[packageId].isDonation != 1){ 2629 var packageQtyEdit = TicketPackages[packageId]['pkg_qty']; 2630 var packageCount = 0; 2631 var countCheck = 1; 2632 $.each(packageArray, function (index, packageDetails) { 2633 if (parseInt(packageQtyEdit) < parseInt(countCheck)) { 2634 return false; // Break the loop after two iterations 2635 } 2636 var packageArrayCount = packageDetails['package_qty']; 2637 2638 for (var i = 0; i < packageQtyEdit; i++) { 2639 if (i < packageArrayCount) { 2640 if (parseInt(packageQtyEdit) < parseInt(countCheck)) { 2641 return false; // Break the loop after two iterations 2642 } 2643 2644 var userId = packageDetails.user_id; 2645 var firstName = packageDetails.first_name; 2646 var lastName = packageDetails.last_name; 2647 var email = packageDetails.email; 2648 var allAddonsName = ''; // Initialize as an empty string 2649 var allAddonsNameBox = ''; // Initialize as an empty string 2650 var jsonfield_addons = ''; // Initialize as an empty string 2651 let AddonsArray = []; 2652 2653 // Special handling for single package selection to include newly selected addons 2654 if (parseInt(packageQtyEdit) === 1 && TicketPackages[packageId]) { 2655 $.each(TicketPackages[packageId], function (key, item) { 2656 if (key !== 'pkg_price' && key !== 'total_price' && key !== 'tax' &&
2656key !== 'pkg_qty' && key !== 'symbol' && key !== 'isDonation') { 2657 if (item.id && item.addons_qty && parseInt(item.addons_qty) > 0) { 2658 var addonId = item.id; 2659 var addonName = item.name; 2660 var addonQty = parseInt(item.addons_qty); 2661 2662 for (var j = 0; j < addonQty; j++) { 2663 if (allAddonsName !== '') { 2664 allAddonsName += ', '; 2665 jsonfield_addons += ','; 2666 } 2667 jsonfield_addons += addonId; 2668 allAddonsName += addonName; 2669 allAddonsNameBox += '<span>' + addonName + '</span>'; 2670 AddonsArray.push(addonId); 2671 } 2672 } 2673 } 2674 }); 2675 } else if (isUpgradeDowngradeProfile && parseInt(packageQtyEdit, 10) > 1) { 2676 var upgradeUserSlot = resolveUpgradeDowngradeUserListSlot(countSelector); 2677 var userAddonIds = []; 2678 if (upgradeUserSlot && upgradeDowngradeSlotHasAuthoritativeAddonSelection(upgradeUserSlot, packageId, email)) { 2679 userAddonIds = getUpgradeDowngradeUserAddonIds(upgradeUserSlot, packageId, { isFromUserSlot: true }); 2680 } else { 2681 userAddonIds = getUpgradeDowngradeUserAddonIds(packageDetails, packageId, { isFromUserSlot: false }); 2682 } 2683 var addonDisplay = buildUpgradeDowngradeUserAddonDisplay(packageDetails, packageId, userAddonIds); 2684 allAddonsName = addonDisplay.allAddonsName; 2685 allAddonsNameBox = addonDisplay.allAddonsNameBox; 2686 jsonfield_addons = addonDisplay.jsonfield_addons; 2687 AddonsArray = addonDisplay.AddonsArray; 2688 if (upgradeUserSlot && upgradeDowngradeSlotHasAuthoritativeAddonSelection(upgradeUserSlot, packageId, email) && typeof upgradeUserSlot === 'object' && !upgradeUserSlot.userDetails) { 2689 if (!packageDetails.userDetails || typeof packageDetails.userDetails !== 'object') { 2690 packageDetails.userDetails = upgradeUserSlot; 2691 } else { 2692 $.extend(packageDetails.userDetails, upgradeUserSlot); 2693 } 2694 } 2695 } else if (packageDetails.field_addons) { 2696 $.each(packageDetails.field_addons, function (index, addon) { 2697 if(ticketAddonsQtyArr[packageId]) { 2698 if (ticketAddonsQtyArr[packageId][index] > 0) { 2699 if (parseInt(ticketAddonsQtyArr[packageId][index]) > 0) { 2700 if (packageDetails.field_addons_qty[index]) { 2701 if (ticketAddonsQtyArr[packageId][index] > 0) { 2702 if (packageDetails.field_addons_qty[index] && packageDetails.field_addons_qty[index] > 1) { 2703 var quantity = packageDetails.field_addons_qty[index]; 2704 var ticketAddonsQty = ticketAddonsQtyArr[packageId][index]; 2705 var addonsCount = ticketAddonsQty; 2706 for (var i = 0; i < parseInt(ticketAddonsQty); i++) { 2707 2708 2709 if (allAddonsName !== '') { 2710 allAddonsName += ', '; 2711 jsonfield_addons += ','; 2712 } 2713 jsonfield_addons += index; 2714 allAddonsName += addon; 2715 allAddonsNameBox += '<span>' + addon + '</span>'; 2716 ticketAddonsQtyArr[packageId][index] = ticketAddonsQtyArr[packageId][index] - 1; 2717 AddonsArray.push(index); 2718 } 2719 } else { 2720 2721 if (allAddonsName !== '') { 2722 allAddonsName += ', '; 2723 jsonfield_addons += ','; 2724 } 2725 jsonfield_addons += index; 2726 allAddonsName += addon; 2727 allAddonsNameBox += '<span>' + addon + '</span>'; 2728 ticketAddonsQtyArr[packageId][index] = ticketAddonsQtyArr[packageId][index] - 1; 2729 AddonsArray.push(index); 2730 } 2731 } 2732 2733 2734 } 2735 }else{ 2736 console.log('no addons'); 2737 } 2738 } 2739 } 2740 2741 }); 2742 } 2743 2744 if (packageDetails && packageDetails.userDetails && typeof packageDetails.userDetails === 'object') { 2745 // if (parseInt(ticketAddonsQtyArr[packageId][index]) > 0) { 2746 let newAddonsArr = [...AddonsArray]; 2747 if (Array.isArray(AddonsArray) && AddonsArray.length > 0) { 2748 // Copying AddonsArray to newAddonsArr 2749 packageDetails.userDetails.field_addons = newAddonsArr; 2750 }else{ 2751 packageDetails.userDetails.field_addons = newAddonsArr; 2752 packageDetails.field_addons = {}; 2753 packageDetails.field_addons_qty = {}; 2754 } 2755 // } 2756 2757 } else if (enableExpiredOwnedEditProfile10003110) { 2758 packageDetails.userDetails = { 2759 first_name: firstName, 2760 last_name: lastName, 2761 email: email, 2762 user_id: userId, 2763 package: packageId, 2764 field_addons: AddonsArray 2765 }; 2766 } 2767 2768 2769 var buyer = 0; 2770 if (buyer == 0) { 2771 var emailInput = $('input[name="email"]'); 2772 if (emailInput.length > 0) { 2773 if (email == emailInput.val().trim()) { 2774 buyer = 1; 2775 } 2776 } 2777 } 2778 var packageContainerSelector = '#packageContainerBlock' + packageId; 2779 var packageContainer = $(packageContainerSelector, window.parent.document); 2780 var ori_total = packageContainer.find('.packageContainer__head').data("ori-total"); 2781 var total = packageContainer.find('.packageContainer__head').data("total"); 2782 var savedPackage = packageContainer.data('package'); 2783 var count = parseInt(packageContainer.find('.packageContainer__head').attr("data-count")) + 1; 2784 packageContainer.find('.packageContainer__head').attr("data-count", count); 2785 if (total === count) { 2786 packageContainer.find('.packageContainer__head .dropdown').hide(); 2787 } 2788 var size = packageContainer.find('> .aPackage').length + 1; 2789 2790 if (simplifiedTicketAssignment) { 2791 var package_name = packageContainer.find('> span.assigned-tickets').text().replace(/\d+\/\d+ tickets assigned/, '') + ' ' + size + '/' + ori_total + ' tickets assigned'; 2792 // var package_name = packageContainer.find('.packageContainer__head > h3').text().replace(/\d+\/\d+ tickets assigned/, '') + ' ' + size + '/' + ori_total + ' tickets assigned'; 2793 packageContainer.find('> span.assigned-tickets').text(package_name); 2794 var package_name = packageContainer.find('> span.assigned-tickets').text().replace(/\d+\/\d+ tickets assigned/, '') + ' ' + size + '/' + ori_total + ' tickets assigned'; 2795 packageContainer.find('> span.assigned-tickets').text(package_name); 2796 } else { 2797 var package_name = packageContainer.find('.packageContainer__head > h3').text().replace(/\s*\(\d+\/\d+\)/, '') + ' (' + size + '/' + ori_total + ')'; 2798 packageContainer.find('.packageContainer__head > h3').text(package_name); 2799 var package_name = packageContainer.find('.packageContainer__head > h3').text().replace(/\s*\(\d+\/\d+\)/, '') + ' (' + size + '/' + ori_total + ')'; 2800 packageContainer.find('.packageContainer__head > h3').text(package_name); 2801 } 2802 2803 2804 2805 var selector = '.user-num' + countSelector; 2806 2807 2808 packageContainer.append('<div class="aPackage aPackage' + countSelector + '" data-pack="' + countSelector + '" data-buyer="' + buyer + '" data-addonsname="' + allAddonsName + '" data-package="' + packageId + '" data-addons="' + jsonfield_addons + '"><div class="aPackage__detail"><div class="aPackage__detail__cell aPackage__detail__width">' + 2809 '<span>Name</span> <p>' + firstName + ' ' + lastName + '</p> </div> <div class="aPackage__detail__cell aPackage__detail__width"> <span>Email</span> <p> ' + email + '</p> </div>' + 2810 '<div class="aPackage__detail__cell"><span>Addons</span><div class="addons">' + allAddonsNameBox + '</div></div></div>' + 2811 '<div class="aPackage__actions">' + 2812 '<div class="dropdown"><a href="#" class="btn action-btn" data-toggle="dropdown"><i class="fa fa-pencil"></i> Edit</a>' + 2813 '<ul class="dropdown-menu dropdown-menu-edit dropdown-menu-right" role="menu"> ' + 2814 '<li><a href="javascript:void(0)" data-selector="' + selector + '" class="btn action-btn update-user-to-package"><i class="fa fa-pencil-alt"></i> Edit</a></li>' + 2815 '<li><a href="javascript:void(0)" class="btn action-btn remove-block"><i class="fa fa-pencil-alt"></i> Remove</a></li>' + 2816 '</ul></div>' + 2817 '</div></div>'); 2818 2819 2820 if (packageDetails.userDetails && packageDetails.userDetails.current_url) { 2821 var url = packageDetails.userDetails.current_url; 2822 var decodedUrl = decodeURIComponent(url.replace(/&/g, '&')); 2823 var urlObject = new URL(decodedUrl); 2824 2825 var newGr
2825oupValue = 'user' + countSelector; // Example new value 2826 urlObject.searchParams.set('group', newGroupValue); 2827 var updatedUrl = urlObject.toString(); 2828 var encodedUrl = updatedUrl.replace(/&/g, '&'); 2829 packageDetails.userDetails.current_url = encodedUrl; 2830 } 2831 2832 if (enableExpiredOwnedEditProfile10003110 && packageDetails.userDetails) { 2833 if (typeof packageDetails.userDetails === 'object') { 2834 packageDetails.userDetails.first_name = firstName; 2835 packageDetails.userDetails.last_name = lastName; 2836 packageDetails.userDetails.email = email; 2837 } 2838 } 2839 2840 if (packageDetails.userDetails && typeof packageDetails.userDetails === 'object' && packageDetails.user_id && !packageDetails.userDetails.user_id) { 2841 packageDetails.userDetails.user_id = packageDetails.user_id; 2842 } 2843 2844 var encodedJsonData = JSON.stringify(packageDetails.userDetails); 2845 if (isUpgradeDowngradeProfile) { 2846 var preservedSlot = resolveUpgradeDowngradeUserListSlot(countSelector); 2847 if (preservedSlot && typeof preservedSlot === 'object' && upgradeDowngradeSlotHasAuthoritativeAddonSelection(preservedSlot, packageId, email)) { 2848 encodedJsonData = JSON.stringify(sanitizeUpgradeDowngradeUserListPayload(preservedSlot, packageId, AddonsArray)); 2849 } else if (packageDetails.userDetails && typeof packageDetails.userDetails === 'object') { 2850 encodedJsonData = JSON.stringify(sanitizeUpgradeDowngradeUserListPayload(packageDetails.userDetails, packageId, AddonsArray)); 2851 } 2852 } 2853 $('#user' + countSelector).val(encodedJsonData); 2854 countSelector++; 2855 countCheck++; 2856 } 2857 } 2858 }); 2859 } 2860 } 2861 } 2862 2863 }); 2864 2865 // Handle newly selected packages that don't exist in userDetailsEditTicket 2866 // Legacy org 1733, or application 3850 only (other apps are unchanged). Extra user_list fields for 3850 only, see inner if (appId === 3850). 2867 if (String(organizationId) === '1733' || parseInt(appId, 10) === 3850) { 2868 $.each(TicketPackages, function(packageId, packageData) { 2869 if(!isNaN(parseFloat(packageId)) && isFinite(packageId)) { 2870 // Check if this package exists in the database records 2871 if (!userDetailsEditTicket || !userDetailsEditTicket[packageId]) { 2872 // This is a new package - assign it to the buyer 2873 if (packageData.hasOwnProperty('pkg_qty') && packageData.pkg_qty > 0) { 2874 if(packageData.hasOwnProperty('isDonation') && packageData.isDonation != 1){ 2875 var packageQty = packageData['pkg_qty']; 2876 2877 // Get buyer information from the form 2878 var firstName = getMainRegistrationInputValue('first_name'); 2879 var lastName = getMainRegistrationInputValue('last_name'); 2880 var email = getMainRegistrationInputValue('email'); 2881 2882 // Process each ticket in the new package 2883 for (var i = 0; i < packageQty; i++) { 2884 var allAddonsName = ''; 2885 var allAddonsNameBox = ''; 2886 var jsonfield_addons = ''; 2887 let AddonsArray = []; 2888 2889 // Get addons for this package 2890 $.each(packageData, function (key, item) { 2891 if (key !== 'pkg_price' && key !== 'total_price' && key !== 'tax' &&
2891key !== 'pkg_qty' && key !== 'symbol' && key !== 'isDonation') { 2892 if (item.id && item.addons_qty && parseInt(item.addons_qty) > 0) { 2893 var addonId = item.id; 2894 var addonName = item.name; 2895 var addonQty = parseInt(item.addons_qty); 2896 2897 for (var j = 0; j < addonQty; j++) { 2898 if (allAddonsName !== '') { 2899 allAddonsName += ', '; 2900 jsonfield_addons += ','; 2901 } 2902 jsonfield_addons += addonId; 2903 allAddonsName += addonName; 2904 allAddonsNameBox += '<span>' + addonName + '</span>'; 2905 AddonsArray.push(addonId); 2906 } 2907 } 2908 } 2909 }); 2910 2911 var buyer = 1; // This is the buyer 2912 var packageContainerSelector = '#packageContainerBlock' + packageId; 2913 var packageContainer = $(packageContainerSelector, window.parent.document); 2914 var ori_total = packageContainer.find('.packageContainer__head').data("ori-total"); 2915 var total = packageContainer.find('.packageContainer__head').data("total"); 2916 var savedPackage = packageContainer.data('package'); 2917 var count = parseInt(packageContainer.find('.packageContainer__head').attr("data-count")) + 1; 2918 packageContainer.find('.packageContainer__head').attr("data-count", count); 2919 if (total === count) { 2920 packageContainer.find('.packageContainer__head .dropdown').hide(); 2921 } 2922 var size = packageContainer.find('> .aPackage').length + 1; 2923 2924 if (simplifiedTicketAssignment) { 2925 var package_name = packageContainer.find('> span.assigned-tickets').text().replace(/\d+\/\d+ tickets assigned/, '') + ' ' + size + '/' + ori_total + ' tickets assigned'; 2926 packageContainer.find('> span.assigned-tickets').text(package_name); 2927 } else { 2928 var package_name = packageContainer.find('.packageContainer__head > h3').text().replace(/\s*\(\d+\/\d+\)/, '') + ' (' + size + '/' + ori_total + ')'; 2929 packageContainer.find('.packageContainer__head > h3').text(package_name); 2930 } 2931 2932 var selector = '.user-num' + countSelector; 2933 2934 2935 packageContainer.append('<div class="aPackage aPackage' + countSelector + '" data-pack="' + countSelector + '" data-buyer="' + buyer + '" data-addonsname="' + allAddonsName + '" data-package="' + packageId + '" data-addons="' + jsonfield_addons + '"><div class="aPackage__detail"><div class="aPackage__detail__cell aPackage__detail__width">' + 2936 '<span>Name</span> <p>' + firstName + ' ' + lastName + '</p> </div> <div class="aPackage__detail__cell aPackage__detail__width"> <span>Email</span> <p> ' + email + '</p> </div>' + 2937 '<div class="aPackage__detail__cell"><span>Addons</span><div class="addons">' + allAddonsNameBox + '</div></div></div>' + 2938 '<div class="aPackage__actions">' + 2939 '<div class="dropdown"><a href="#" class="btn action-btn" data-toggle="dropdown"><i class="fa fa-pencil"></i> Edit</a>' + 2940 '<ul class="dropdown-menu dropdown-menu-edit dropdown-menu-right" role="menu"> ' + 2941 '<li><a href="javascript:void(0)" data-selector="' + selector + '" class="btn action-btn update-user-to-package"><i class="fa fa-pencil-alt"></i> Edit</a></li>' + 2942 '<li><a href="javascript:void(0)" class="btn action-btn remove-block"><i class="fa fa-pencil-alt"></i> Remove</a></li>' + 2943 '</ul></div>' + 2944 '</div></div>'); 2945 2946 // Create user data object for the hidden input 2947 var userDataObject = { 2948 "current_url": window.location.href.replace(/&/g, '&') + "&group=user" + countSelector, 2949 "field_addons": AddonsArray, 2950 "package": packageId 2951 }; 2952 if (parseInt(appId, 10) === 3850) { 2953 var bypass3850 = ($("#bypass_auto").length > 0 || ($("#bypass").length > 0 && $("#bypass").is(":checked"))) ? "1" : "0"; 2954 var formId3850 = ($('input[name="formID"]').val() || $('#formId').val() || ''); 2955 userDataObject.first_name = firstName; 2956 userDataObject.last_name = lastName; 2957 userDataObject.email = email; 2958 userDataObject.appID = String($('#a
2958ppId').val() || appId); 2959 userDataObject.formID = formId3850; 2960 userDataObject.bypass = bypass3850; 2961 userDataObject.group_registration = "false"; 2962 userDataObject.post_submit = "true"; 2963 userDataObject['qty_' + packageId] = "1"; 2964 var sd3850 = {}; 2965 sd3850[email] = {}; 2966 sd3850[email][packageId] = { package_qty: 1 }; 2967 userDataObject.selected_data = JSON.stringify(sd3850); 2968 } 2969 2970 var encodedJsonData = JSON.stringify(userDataObject); 2971 $('#user' + countSelector).val(encodedJsonData); 2972 2973 countSelector++; 2974 } 2975 } 2976 } 2977 } 2978 } 2979 }); 2980 } 2981 2982 // Remaining addons fixed 2983 var total_data={}; 2984 $.each(TicketPackages, function (packageId, package) { 2985 if(!isNaN(parseFloat(packageId)) && isFinite(packageId)) { 2986 total_data[packageId] = {}; 2987 // Iterate through each item/package addon 2988 $.each(package, function (key, item) { 2989 if (key !== 'pkg_price' && key !== 'total_price' && key !== 'tax' && key !== 'pkg_qty' && key !== 'symbol') { 2990 if (item.id && item.addons_qty) { 2991 total_data[packageId][item.id] = item.addons_qty; 2992 } 2993 } 2994 }); 2995 } 2996 }); 2997 const used_data = Object.assign({}, total_data); 2998 $('.packageContainer .aPackage', window.parent.document).each(function () { 2999 var $package = $(this); 3000 var packageId = $package.attr("data-package"); 3001 var addonsArray = $package.attr("data-addons"); 3002 // if(package_id == savedPackage){ 3003 addonsArray = addonsArray.split(','); 3004 3005 $.each(addonsArray, function (key, value){ 3006 value=parseInt(value); 3007 used_data[packageId][value]=parseInt(used_data[packageId][value]) - 1; 3008 }); 3009 // } 3010 }); 3011 var remainingAddons=""; 3012 var remainingIds=""; 3013 $.each(used_data, function (packageId, package) { 3014 if(!isNaN(parseFloat(packageId)) && isFinite(packageId)) { 3015 $.each(package, function (key, item) { 3016 for(i=0;i<parseInt(item);i++){ 3017 if(remainingAddons == ''){ 3018 remainingAddons=TicketPackages[packageId][key]['addons_name']; 3019 remainingIds=TicketPackages[packageId][key]['id']; 3020 }else{ 3021 remainingAddons+=', '+TicketPackages[packageId][key]['addons_name']; 3022 remainingIds+=', '+TicketPackages[packageId][key]['id']; 3023 } 3024 } 3025 3026 }); 3027 } 3028 }); 3029 3030 $('.packageBlock', window.parent.document).attr('data-remaining-addons',remainingAddons); 3031 $('.packageBlock', window.parent.document).attr('data-remaining-addons-ids',remainingIds); 3032 //end remain addons fixed 3033 if(EditProfilePaymentMethodId){ 3034 var pmnt_fld_name = $('.pmnt_fld').attr('name'); 3035 $('select[name="'+pmnt_fld_name+'"]').val(EditProfilePaymentMethodId).change(); 3036 $('input[type="radio"][value="'+EditProfilePaymentMethodId+'"]').prop('checked', true); 3037 var dataMethod = $('input[name="optionsRadios"][value="'+EditProfilePaymentMethodId+'"]').attr('data-method'); 3038 if(dataMethod ==13 && stripeConnectElement){ 3039 setTimeout(function () { 3040 $('#payment-element').show(); 3041 },2000); 3042 3043 } 3044 } 3045 // const radioInputs = document.querySelectorAll('input[type="radio"][data-method="9"]');
3046 // radioInputs.forEach(input => { 3047 // // Find the parent div with class "radio" and hide it 3048 // const parentDiv = input.closest('.radio'); 3049 // if (parentDiv) { 3050 // parentDiv.style.display = 'none'; 3051 // } 3052 // }); 3053 setTimeout(function () { 3054 if (assignDropdownFixAppIds.includes(Number(appId))) { 3055 $('.packageContainer__head .dropdown .dropdown-btn').first().click(); 3056 } else { 3057 $(document).find('#dropdown-btn').click(); 3058 } 3059 $('.dropdown-menu.dropdown-menu-main.dropdown-menu-right').css('display', 'none'); 3060 },1000); 3061 var serializedObject = JSON.stringify(TicketPackages); 3062 localStorage.setItem("TicketPackages", serializedObject); 3063 3064 // new code // 3065 var totalElement = document.querySelector('.totalcountT p[data-total]'); 3066 if (totalElement) { 3067 var totalText = totalElement.textContent; 3068 var totalNumber = parseFloat(totalText.replace(/[^0-9.]/g, '')); 3069 if(totalNumber > 0){ 3070 $('.zerobb').css('display', 'none'); 3071 } 3072 } 3073 if (EditProfilePaymentMethodId) { 3074 var pmnt_fld_name = $('.pmnt_fld').attr('name'); 3075 $('select[name="' + pmnt_fld_name + '"]').val(EditProfilePaymentMethodId).change(); 3076 $('input[type="radio"][value="' + EditProfilePaymentMethodId + '"]').prop('checked', true); 3077 var dataMethod = $('input[name="optionsRadios"][value="' + EditProfilePaymentMethodId + '"]').attr('data-method'); 3078 if (dataMethod == 13 && stripeConnectElement) { 3079 setTimeout(function () { 3080 $('#payment-element').show(); 3081 }, 2000); 3082 3083 } 3084 } 3085 3086 // donation package Auto assign to parent 3087 setTimeout(function () { 3088 $('input[name="first_name"], input[name="last_name"], input[name="email"]').change(); 3089 }, 2000); 3090 // 3091 3092 }else{ 3093 3094 // donation package Auto assign to parent 3095 setTimeout(function () { 3096 $('input[name="first_name"], input[name="last_name"], input[name="email"]').change(); 3097 }, 2000); 3098 const totalPkgQty = Object.keys(TicketPackages) 3099 .filter(key => typeof TicketPackages[key] === 'object' && TicketPackages[key].hasOwnProperty('pkg_qty')) 3100 .reduce((sum, key) => sum + parseInt(TicketPackages[key].pkg_qty, 10), 0); 3101 3102 if (totalPkgQty > 1) { 3103 $('#bypass').closest('div').show(); 3104 } 3105 } 3106 3107 if (count_start == 1) { 3108 3109 if (!isRegistrationForm || pageBreakSummaryCount == 0) { 3110 $('input[name=partner_tag]').val(count_start); 3111 } 3112 3113 $('.packageBlock').css("visibility", "hidden"); 3114 $('.group_registration_label').css("display", "none"); 3115 $('.group-reg-block').css("height", "0px"); 3116 } else { 3117 if (!isGroupBypassMember) { 3118 $('.packageBlock').css("visibility", "visible"); 3119 $('.group_registration_label').css("display", "block"); 3120 $('.group-reg-block').css("height", "auto"); 3121 } 3122 3123 } 3124 3125 // TICKET: VFC-21255,VFC-21456 - hide package block incase of single ticket and multiple page breaks 3126 let packageCount = 0; 3127 3128 $.each(TicketPackages, function (packageId, package) { 3129 if (!isNaN(packageId)) { 3130 if (package['pkg_qty'] != '' && package['pkg_qty'] != undefined && !isNaN(package['pkg_qty'])) { 3131 packageCount += parseInt(package['pkg_qty']); 3132 } 3133 } 3134 3135 }); 3136 if (isRegistrationForm) { 3137 if (pageBreakSummaryCount > 0 && packageCount == 1) { 3138 $('.packageBlock').css("visibility", "hidden"); 3139 $('.group_registration_label').css("display", "none"); 3140 $('.group-reg-block').css("height", "0px"); 3141 } 3142 } 3143 3144 var checkTicketCount= validateTicketPackages(); 3145 3146 if(checkTicketCount==false){ 3147 $('.packageBlock').css("visibility", "hidden"); 3148 $('.group_registration_label').css("display", "none"); 3149 $('.group-reg-block').css("height", "0px"); 3150 } 3151 3152 3153 if (typeof updateTicketGroupMaxAssignUi === 'function') { 3154 updateTicketGroupMaxAssignUi(); 3155 } 3156 3157 if (formType === 'REGISTRATION_FORM' && parseInt(pageBreakSummaryCount, 10) > 0) { 3158 orderNowProcessingRef.orderNowProcessing = false;
3159 if (fromBackBtn && tcktModifiedFromBackBtn) { 3160 tcktModifiedFromBackBtn = false; 3161 } 3162 } 3163 3164 $(document).on('change', 'input[name="first_name"], input[name="last_name"], input[name="email"]', function () { 3165 var first_name = getMainRegistrationInputValue('first_name'); 3166 var last_name = getMainRegistrationInputValue('last_name'); 3167 var email = getMainRegistrationInputValue('email'); 3168 $packageContainer = $('.packageContainer'); 3169 3170 var data = {}; 3171 3172 if(first_name !='' && last_name !='' && email !='') { 3173 if ($packageContainer.find('> .aPackage').length > 0) { 3174 $packageContainer.find('> .aPackage').each(function () { 3175 var $package = $(this); 3176 var block_id = $package.attr("data-pack"); 3177 if(block_id !== undefined && block_id !== ''){ 3178 var buyer = $package.attr("data-buyer"); 3179 if (buyer == 1) { 3180 3181 // simplifiedTicketAssignment =1 3182 if (simplifiedTicketAssignment) { 3183 var name = $package.find('.aPackage__detail__cell:nth-of-type(2) p').text(); 3184 var block_email = $package.find('.aPackage__detail__cell:nth-of-type(3) p').text().replace(/\s/g, ""); 3185 $package.find('.aPackage__detail__cell:nth-of-type(2) p').text(first_name + ' ' + last_name); 3186 $package.find('.aPackage__detail__cell:nth-of-type(3) p').text(email); 3187 } else { 3188 var name = $package.find('.aPackage__detail__cell:nth-of-type(1) p').text(); 3189 var block_email = $package.find('.aPackage__detail__cell:nth-of-type(2) p').text().replace(/\s/g, ""); 3190 $package.find('.aPackage__detail__cell:nth-of-type(1) p').text(first_name + ' ' + last_name); 3191 $package.find('.aPackage__detail__cell:nth-of-type(2) p').text(email); 3192 } 3193 3194 3195 var value = $("#user" + block_id).val(); 3196 3197 // $('#' + user_id).val(); 3198 3199 // Parse JSON value and update corresponding user input 3200 if (value != undefined && value != "") { 3201 var jsonObject = JSON.parse(value); 3202 // Unset property 3203 jsonObject.first_name = first_name; 3204 jsonObject.last_name = last_name; 3205 jsonObject.email = email; 3206 3207 value = JSON.stringify(jsonObject); 3208 $("#user" + block_id).val(value); 3209 } 3210 } 3211 } 3212 3213 3214 }); 3215 } 3216 $packageContainer.each(function () { 3217 $(this).find('.dropdown-menu > li a').each(function () { 3218 var buyer = $(this).attr("data-buyer"); 3219 var user = $(this).attr("data-user"); 3220 if (buyer == 1) { 3221 $(this).find('p').text(first_name + ' ' + last_name + ' (Buyer)') 3222 $(this).find('span').text(email) 3223 return false; 3224 } 3225 }); 3226 }); 3227 } 3228 var singleTicketAutoAssign = ''; 3229 if(singleTicketAutoAssign){ 3230 if(first_name !='' && last_name !='' && email !=''){ 3231 if($('.aPackage1').length > 0){ 3232 var name=first_name + ' ' +last_name; 3233 if(simplifiedTicketAssignment){ 3234 $('.aPackage1 .aPackage__detail__cell p').eq(1).text(name); 3235 $('.aPackage1 .aPackage__detail__cell p').eq(2).text(email); 3236 }else{ 3237 $('.aPackage1 .aPackage__detail__cell p').first().text(name); 3238 $('.aPackage1 .aPackage__detail__cell p').eq(1).text(email); 3239 } 3240 3241 }else{ 3242 $('.packageContainer__head .dropdown .dropdown-btn').first().click(); 3243 $('.user-info-prev.buyer').click(); 3244 } 3245 3246 } 3247 } 3248 //donation auto assign to parent user 3249 if(first_name !='' && last_name !='' && email !=''){ 3250 $.each(TicketPackages, function (packageId, package) { 3251 if(package && package['isDonation'] && typeof package['isDonation'] !== 'undefined' && package['isDonation'] !== null && package['isDonation'] == 1){ 3252 var countPackage=0; 3253 $('input[name="user_list[]"]').each(function() { 3254 const inputField = $(this); 3255 if ($.trim(inputField.val()) !== "") { // Check if the input value is not empty 3256 try { 3257 const jsonData = JSON.parse(inputField.val().replace(/"/g, '"')); // Parse JSON 3258 if (jsonData && parseInt(jsonData.package) === parseInt(packageId)) { // Validate if `package` exists and matches 3259 countPackage++; 3260 } 3261 } catch (error) { 3262 console.error("Invalid JSON in input field:", inputField.val()); // Log error for debugging 3263 } 3264 } 3265 }); 3266 if(countPackage ==0){ 3267 for (let i = 0; i < parseInt(package['pkg_qty']); i++) { 3268 if (assignDropdownFixAppIds.includes(Number(appId))) { 3269 $('#packageContainerBlock' + packageId + ' .dropdown-btn').click(); 3270 } else { 3271 $('#packageContainerBlock' + packageId + ' #dropdown-btn').click(); 3272 } 3273 $('#packageContainerBlock' + packageId + ' .user-info-prev').click(); 3274 } 3275 } 3276 3277 } 3278 3279 }); 3280 } 3281 3282 }); 3283 if (!isEventBound) { 3284 3285 /* JIRA Ticket - VFC-19349 */ 3286 let isUniqueEmailValidationEnabled = false;
3287 3288 3289 3290 $(document).on('click', '.assign-buttn .btn, #assign-buttn .btn', function () { 3291 // Toggle dropdown menu 3292 3293 3294 var first_name = getMainRegistrationInputValue('first_name'); 3295 var last_name = getMainRegistrationInputValue('last_name'); 3296 var email = getMainRegistrationInputValue('email'); 3297 var $dropdownMenu = $(this).next('.dropdown-menu'); 3298 // Check if the dropdown menu is currently hidden 3299 var isDropdownHidden = $dropdownMenu.css('display') === 'none'; 3300 $(".packageContainer__head").find('.dropdown-menu').hide(); 3301 3302 3303 if (first_name !== '' && last_name !== '' && email !== '') { 3304 3305 var is_back=false 3306 // Check if the local cookie "backButtonClicked" exists; if so, do not proceed 3307 function getCookie(name) { 3308 let match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)')); 3309 if (match) return match[2]; 3310 return null; 3311 } 3312 if (getCookie('backButtonClicked') === 'true') { 3313 // Delete the "backButtonClicked" cookie by setting its expiration date to the past 3314 document.cookie = "backButtonClicked=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;"; 3315 // Prevent further action if the cookie exists 3316 is_back=true; 3317 3318 } 3319 /* If unique email validation is enabled, the parent user should be shown in assignee list only one time and not added again */ 3320 if (!clickedOnce || is_back) { 3321 3322 /* JIRA Ticket - VFC-19349 */ 3323 $packageContainer = $(this).closest('.packageContainer'); 3324 if ($packageContainer.find('.packageContainer__head .dropdown-menu-main .buyer').length == 0 && $packageContainer.find('.packageContainer__head .dropdown-menu-main .user-info-prev').length == 0) { 3325 $packageContainer.find('.packageContainer__head .dropdown-menu-main').each(function () { 3326 $(this).append('<li><a href="javascript:void(0)" class="user-info-prev buyer" data-buyer="1" data-user="buyer"><p>' + first_name + ' ' + last_name + ' (Buyer)</p><span>' + email + '</span></a></li>'); 3327 }); 3328 } 3329 if ($packageContainer.find('.packageContainer__head .dropdown-menu-main .buyer').length == 0 3330 && !assignDropdownAlreadyHasEmail($packageContainer.find('.packageContainer__head .dropdown-menu-main'), email)) { 3331 var dropdownMenuNew = $packageContainer.find('.packageContainer__head .dropdown-menu-main'); 3332 3333 // Create the new <li> element 3334 var newUserData = ` 3335 <li> 3336 <a href="javascript:void(0)" class="user-info-prev buyer" data-buyer="1" data-user="buyer"> 3337 <p>${first_name} ${last_name} (Buyer)</p> 3338 <span>${email}</span> 3339 </a> 3340 </li>`; 3341 3342 // Check if there are at least 2 existing <li> elements 3343 if (dropdownMenuNew.find('li').length >= 2) { 3344 // Insert the new user data as the 3rd <li> (index 2, 0-based) 3345 dropdownMenuNew.find('li').eq(1).after(newUserData); 3346 } else { 3347 // If there are fewer than 2 <li>, append it at the end 3348 dropdownMenuNew.append(newUserData); 3349 } 3350 } 3351 3352 // If the dropdown was already visible, hide it. Otherwise, show it.
3353 if (!isDropdownHidden) { 3354 $dropdownMenu.hide(); 3355 } else { 3356 $dropdownMenu.show(); 3357 } 3358 //This code is creating issue on live site 3359 // setTimeout(function(){ 3360 // if($('div[data-buyer="1"]').length == 0){ 3361 // let buyer_one_anchor = $('a[data-buyer="1"]'); 3362 // buyer_one_anchor.click(); 3363 // buyer_one_anchor.prop('disabled',true); 3364 // buyer_one_anchor.css('cursor','not-allowed'); 3365 // $('.aPackage1 .action-btn').first().hide(); 3366 // } 3367 // },500); 3368 if (isUniqueEmailValidationEnabled) { 3369 clickedOnce = true; 3370 } 3371 } 3372 } else { 3373 alert("Please fill in all fields: First Name, Last Name, and Email."); 3374 $dropdownMenu.hide(); 3375 } 3376 }); 3377 $(document).on('click', '.assign-user-to-package', function () { 3378 3379 /* JIRA Ticket - VFC-19349 */ 3380 3381 // Ticket group max: block adding a new other attendee when limit is reached 3382 if (typeof canAddNewOtherAttendeeUnderTicketGroupMax === 'function' && !canAddNewOtherAttendeeUnderTicketGroupMax()) { 3383 return false; 3384 } 3385 3386 if (!simplifiedTicketAssignment) { 3387 $(this).parent().parent().hide(); 3388 var $assignPkgHead = $(this).closest('.packageContainer__head'); 3389 var rawDataCount = $assignPkgHead.attr('data-count'); 3390 count = parseInt(rawDataCount, 10); 3391 var isMultipleTicketUpgrade = typeof multipleTicketEdit !== 'undefined' && parseInt(multipleTicketEdit, 10) === 1; 3392 if (isNaN(count) || count < 0 || (isMultipleTicketUpgrade && (rawDataCount === undefined || rawDataCount === ''))) { 3393 $assignPkgHead.attr('data-count', '0'); 3394 count = 0; 3395 } 3396 } else { 3397 count = $(this).closest('.packageContainer').find('.packageContainer__head').attr('data-count'); 3398 } 3399 3400 if (typeof multipleTicketEdit !== 'undefined' && multipleTicketEdit) { 3401 count = getlastRecordID(); 3402 3403 if (isNaN(count) || count < 0 ) { 3404 count = 0; 3405 } 3406 } 3407 3408 3409 package_id = $(this).closest('.packageContainer').data('package'); 3410 count = parseInt(count) + 1; 3411 if(simplifiedTicketAssignment){ 3412 count = $(this).attr('data-row'); 3413 } else { 3414 // iframe writes group=userN. data-count+1 / getlastRecordID+1 can 3415 // overwrite a filled seat after a middle remove; use first empty #userN. 3416 var emptySlot = findFirstEmptyField(); 3417 if (emptySlot > 0) { 3418 count = emptySlot; 3419 } 3420 } 3421 var buyer = $(this).closest('.aPackage').data('buyer') || 0; 3422 localStorage.setItem("buyer", buyer); 3423 localStorage.setItem("savedPackage", package_id); 3424 if (typeof syncTicketPackagesToStorage === 'function') { 3425 syncTicketPackagesToStorage(); 3426 } else { 3427 localStorage.setItem("TicketPackages", JSON.stringify(TicketPackages)); 3428 } 3429 $('.user-num' + count).click(); 3430 3431 3432 }); 3433 3434 $(document).on('click', '.update-user-to-package', function () { 3435 console.log('EDIT'); 3436 selector = $(this).attr('data-selector'); 3437 if (enableExpiredOwnedEditProfile10003110) { 3438 var packId = $(this).closest('.aPackage').attr('data-pack'); 3439 if (packId) { 3440 syncGroupUserHiddenFieldFromDisplay('user' + packId); 3441 selector = '.user-num' + packId; 3442 } 3443 } 3444 package_id = $(this).closest('.packageContainer').data('package'); 3445 buyer = $(this).closest('.aPackage').data('buyer'); 3446 localStorage.setItem("buyer", buyer); 3447 localStorage.setItem("savedPackage", package_id); 3448 if (typeof syncTicketPackagesToStorage === 'function') { 3449 syncTicketPackagesToStorage(); 3450 } else { 3451 localStorage.setItem("TicketPackages", JSON.stringify(TicketPackages)); 3452 } 3453 $(selector).click(); 3454 3455 }); 3456 3457 3458 // $(".user-info-prev", window.parent.document).click(function () { 3459 $(document).on('click', '.user-info-prev', function () { 3460 var first_name = getMainRegistrationInputValue('first_name'); 3461 var last_name = getMainRegistrationInputValue('last_name'); 3462 var email = getMainRegistrationInputValue('email'); 3463 var appId = $('#appId').val(); 3464 3465 // Ticket group max: block assigning a new unique other email when limit is reached 3466 var assignEmailCandidate = ($(this).find('span').text() || '').trim(); 3467 var assignDataBuyer = $(this).data('buyer'); 3468 var assignDataUser = $(this).data('user'); 3469 if (assignDataUser == 'buyer' || assignDataBuyer == 1) { 3470 assignEmailCandidate = email; 3471 } 3472 if (typeof canAssignEmailUnderTicketGroupMax === 'function' && !canAssignEmailUnderTicketGroupMax(assignEmailCandidate)) { 3473 return false;
3474 } 3475 3476 // Check if email already exists in any .aPackage within this .packageContainer 3477 if(appId == 21070 ){ 3478 3479 var $clicked = $(this); 3480 var emailClicked = $clicked.find('span').text()?.trim() || ''; 3481 var $packageContainer = $(this).closest('.packageContainer'); 3482 var emailExists = false; 3483 var isEdit = false; 3484 var currentEditIndex = -1; 3485 3486 // Determine if this is an edit action by checking for aPackage being edited 3487 // Try to find the current editing .aPackage (if any) 3488 var $editingPackage = $(this).closest('.packageContainer').find('.aPackage.editing'); 3489 if ($editingPackage.length > 0) { 3490 isEdit = true; 3491 currentEditIndex = $editingPackage.index(); 3492 } 3493 3494 // Check for duplicate email in both scenarios: Add and Edit 3495 $packageContainer.find('.aPackage').each(function(idx) { 3496 // If editing, skip the current editing row 3497 if (isEdit && idx === currentEditIndex) { 3498 return true; // continue 3499 } 3500 // Try to find the email in the "Email" cell 3501 var $emailCell = $(this).find('.aPackage__detail__cell:contains("Email")'); 3502 var existingEmail = ''; 3503 if ($emailCell.length > 0) { 3504 existingEmail = $emailCell.find('p').text().trim().toLowerCase(); 3505 } else { 3506 // Fallback: try to find the first <p> under .aPackage__detail__cell with a <span> containing "Email" 3507 $(this).find('.aPackage__detail__cell').each(function() { 3508 var $span = $(this).find('span'); 3509 if ($span.length && $span.text().trim().toLowerCase() === 'email') { 3510 existingEmail = $(this).find('p').text().trim().toLowerCase(); 3511 return false; // break inner loop 3512 } 3513 }); 3514 } 3515 if (existingEmail === emailClicked.toLowerCase()) { 3516 emailExists = true; 3517 return false; // break outer loop 3518 } 3519 }); 3520 3521 if (emailExists) { 3522 // Show validation error (you can customize this as needed) 3523 if ($('.email-duplicate-error').length === 0) { 3524 // Find the specific label 3525 var $label = $('label.control-label.group_registration_label[for="fld_1518407"]'); 3526 if ($label.length) { 3527 // Insert error message after the label 3528 $('<div class="email-duplicate-error" style="color:red;margin-bottom:10px;">This email has already been assigned to a ticket.</div>').insertAfter($label); 3529 } else { 3530 // Fallback: insert before email input as before 3531 $('<div class="email-duplicate-error" style="color:red;margin-bottom:10px;">This email has already been assigned to a ticket.</div>').insertBefore($('input[name="email"]').closest('.form-group, .form-row, .form-field').length ? $('input[name="email"]').closest('.form-group, .form-row, .form-field') : $('input[name="email"]')); 3532 } 3533 } 3534 return false; 3535 } else { 3536 $('.email-duplicate-error').remove(); 3537 } 3538 } 3539 3540 3541 if (first_name !== '' && last_name !== '' && email !== '') { 3542 3543 // Retrieve relevant data attributes 3544 var $packageContainer = $(this).closest('.packageContainer'); 3545 var user_id = $(this).data("user"); 3546 var data_buyer = $(this).data("buyer"); 3547 var ori_total = $packageContainer.find('.packageContainer__head').data("ori-total"); 3548 var total = $packageContainer.find('.packageContainer__head').data("total"); 3549 var savedPackage = $packageContainer.data('package'); 3550 3551 // Auto-assign addons for app_id 1000001457 when assigning user to ticket 3552 // OR when auto_addons_to_buyer is on and assigning to the buyer/parent 3553 // For auto_addons_to_buyer: only remaining addons (exclude units already on other tickets) 3554 var addonIdsArray = []; 3555 var allAddonsName = ''; 3556 var allAddonsNameBox = ''; 3557 var jsonfield_addons = ''; 3558 var isBuyerAssign = (user_id == 'buyer' || data_buyer == 1); 3559 if ((String(appId) === '1000001457' || (autoAddonsToBuyer && isBuyerAssign)) && TicketPackages && TicketPackages[savedPackage]) { 3560 var pkg = TicketPackages[savedPackage]; 3561 var usedAddonCounts = {}; 3562 3563 if (autoAddonsToBuyer && isBuyerAssign) { 3564 $packageContainer.find('> .aPackage').each(function () { 3565 var addonsAttr = ($(this).attr('data-addons') || '').trim(); 3566 var countedFromDom = false;
3567 if (addonsAttr) { 3568 $.each(addonsAttr.split(','), function (i, value) { 3569 value = parseInt($.trim(value), 10); 3570 if (!isNaN(value) && value) { 3571 usedAddonCounts[value] = (usedAddonCounts[value] || 0) + 1; 3572 countedFromDom = true; 3573 } 3574 }); 3575 } 3576 // Fallback if data-addons is empty but user_list already has field_addons 3577 if (!countedFromDom) { 3578 var packId = $(this).attr('data-pack'); 3579 var userVal = $('#user' + packId).val(); 3580 if (userVal) { 3581 try { 3582 var userObj = JSON.parse(userVal); 3583 if (userObj.field_addons && Array.isArray(userObj.field_addons)) { 3584 $.each(userObj.field_addons, function (i, addonId) { 3585 addonId = parseInt(addonId, 10); 3586 if (!isNaN(addonId) && addonId) { 3587 usedAddonCounts[addonId] = (usedAddonCounts[addonId] || 0) + 1; 3588 } 3589 }); 3590 } 3591 } catch (e) {} 3592 } 3593 } 3594 }); 3595 } 3596 3597 $.each(pkg, function (key, item) { 3598 if (key !== 'pkg_price' && key !== 'total_price' && key !== 'tax' && key !== 'pkg_qty' && key !== 'symbol' && key !== 'isDonation' && item && item.id && item.addons_qty && parseInt(item.addons_qty) > 0) { 3599 var addonId = item.id; 3600 var addonName = (item.addons_name != null && item.addons_name !== '') ? item.addons_name : (item.name || ''); 3601 var addonQty = parseInt(item.addons_qty, 10); 3602 3603 // Parent gets only what's left after other tickets 3604 if (autoAddonsToBuyer && isBuyerAssign) { 3605 var usedQty = usedAddonCounts[addonId] || usedAddonCounts[String(addonId)] || 0; 3606 addonQty = Math.max(0, addonQty - usedQty); 3607 } 3608 3609 for (var j = 0; j < addonQty; j++) { 3610 addonIdsArray.push(addonId); 3611 if (allAddonsName !== '') { 3612 allAddonsName += ', '; 3613 jsonfield_addons += ','; 3614 } 3615 allAddonsName += addonName; 3616 allAddonsNameBox += '<span>' + addonName + '</span>'; 3617 jsonfield_addons += addonId; 3618 } 3619 } 3620 }); 3621 } 3622 3623 // Increment count and hide dropdown if necessary 3624 var count = parseInt($packageContainer.find('.packageContainer__head').attr("data-count")) + 1; 3625 3626 $packageContainer.find('.packageContainer__head').attr("data-count", count); 3627 var Useremail = $(this).find('span').text(); 3628 3629 if (total === count) { 3630 $packageContainer.find('.packageContainer__head .dropdown').hide(); 3631 } 3632 3633 var size = $packageContainer.find('> .aPackage').length + 1; 3634 if(simplifiedTicketAssignment){ 3635 var package_name = $packageContainer.find('> span.assigned-tickets').text().replace(/\d+\/\d+ tickets assigned/, '') + ' ' + size + '/' + ori_total + ' tickets assigned'; 3636 $packageContainer.find('> span.assigned-tickets').text(package_name); 3637 }else{ 3638 var package_name = $packageContainer.find('.packageContainer__head > h3').text().replace(/\s*\(\d+\/\d+\)/, '') + ' (' + size + '/' + ori_total + ')'; 3639 $packageContainer.find('.packageContainer__head > h3').text(package_name); 3640 } 3641 3642 3643 if(simplifiedTicketAssignment){ 3644 count = $packageContainer.find('.fakePackage').first().data('pack'); 3645 } else { 3646 // data-count is this package's assigned qty, not the global #userN index. 3647 // After remove, data-count+1 can point at a filled seat; write the first empty slot. 3648 var emptySlot = findFirstEmptyField(); 3649 if (emptySlot > 0) { 3650 count = emptySlot; 3651 } 3652 } 3653 var buyer = 0; 3654 if (user_id == 'buyer' || data_buyer == 1) { 3655 data = {}; 3656 var formDataArray = $('.reg-form-data').serializeArray(); 3657 formDataArray.forEach(function (field) { 3658 if (field.name != "user_list[]") { 3659 // Check if field name contains "[]" 3660 if (field.name.indexOf("[]") !== -1) { 3661 // Remove "[]" from the field name 3662 var fieldName = field.name.replace("[]", ""); 3663 // Initialize an array if the key doesn't exist 3664 if (!data[fieldName]) { 3665 data[fieldName] = []; 3666 } 3667 // Push the value to the array 3668 data[fieldName].push(field.value); 3669 } else { 3670 // Add the value directly if the key doesn't exist 3671 data[field.name] = field.value; 3672 } 3673 } 3674 }); 3675 buyer = 1; 3676 3677 var first_name = data['first_name']; 3678 var last_name = data['last_name']; 3679 var email = data['email']; 3680 data["package"] = savedPackage; 3681 if (addonIdsArray.length > 0 && (String(appId) === '1000001457' || (autoAddonsToBuyer && isBuyerAssign))) { 3682 data["field_addons"] = addonIdsArray; 3683 } 3684 var clickSource = $(this).attr('data-click-source') || ''; 3685 if(clickSource === 'partner_tag_section') { 3686 let addonPaymentValues = []; 3687 3688 // Check if TicketPackages has single object and pkg_qty is 1 3689 let packageKeys = Object.keys(TicketPackages).filter(key => !isNaN(key)); 3690 if (packageKeys.length === 1) { 3691 let package = TicketPackages[savedPackage]; 3692 if (package.pkg_qty === 1) { 3693 // Get addon IDs from numeric keys 3694 for (let key in package) { 3695 if (!isNaN(key) && package[key].id) { 3696 addonPaymentValues.push(package[key].id); 3697 } 3698 } 3699 } 3700 } 3701 3702 if (addonPaymentValues.length > 0) { 3703 data["field_addons"] = addonPaymentValues; 3704 } 3705 3706 // Remove the attribute after handling 3707 // $(this).removeAttr('data-click-source'); 3708 } 3709 3710 3711 data = JSON.stringify(data); 3712 $('#user' + count).val(data); 3713 window.changeIcon(count); 3714 } else { 3715 var value = $('#' + user_id).val(); 3716 if(value ==""){ 3717 var newValue=null; 3718 var userListInputs = document.querySelectorAll('input[name="user_list[]"]');
3719 userListInputs.forEach(function(input) { 3720 var value2 = input.value; 3721 if (value2 !="") { 3722 // Parse JSON value and update corresponding user input 3723 var jsonObject = JSON.parse(value2); 3724 if(jsonObject.email.trim().toLowerCase() ==Useremail.trim().toLowerCase()){ 3725 newValue=value2; 3726 } 3727 } 3728 3729 }); 3730 if(newValue !=null){ 3731 value=newValue; 3732 } 3733 } 3734 // Parse JSON value and update corresponding user input 3735 var jsonObject = JSON.parse(value); 3736 // Update the package_id value inside the jsonObject, if present or add it 3737 3738 // if ($('#appId').val() == '22760' || $('#appId').val() =='22759') { 3739 jsonObject.package_id = savedPackage; 3740 jsonObject.package = String(savedPackage); 3741 // } 3742 if (String(appId) === '1000001457' && addonIdsArray.length > 0) { 3743 jsonObject.field_addons = addonIdsArray; 3744 } else { 3745 delete jsonObject.field_addons; 3746 } 3747 3748 value = JSON.stringify(jsonObject); 3749 $('#user' + count).val(value); 3750 window.changeIcon(count); 3751 3752 var first_name = jsonObject.first_name; 3753 var last_name = jsonObject.last_name; 3754 var email = jsonObject.email; 3755 } 3756 3757 if (buyer == 0) { 3758 if (email == $('input[name="email"]').val().trim()) { 3759 buyer = 1; 3760 } 3761 } 3762 3763 3764 // Append new package block 3765 var selector = '.user-num' + count; 3766 var IsAddonsExists=false; 3767 if (TicketPackages && Object.keys(TicketPackages).length > 0) { 3768 for (var packageId in TicketPackages) { 3769 if (Object.prototype.hasOwnProperty.call(TicketPackages, packageId)) { 3770 var package = TicketPackages[packageId]; 3771 if (package && typeof package === 'object') { 3772 for (var addonId in package) { 3773 if (Object.prototype.hasOwnProperty.call(package, addonId) && package[addonId] && package[addonId].hasOwnProperty('addons_price')) { 3774 IsAddonsExists=true; 3775 break; 3776 } 3777 } 3778 } 3779 } 3780 } 3781 } 3782 if(simplifiedTicketAssignment){ 3783 var fakePackageCount = '.fakePackage' + count; 3784 var ticketBlock='<div class="aPackage__detail__cell aPackage__detail__width" style="width: 80px !important"><span></span><p>Ticket ' + count + '</p></div>'; 3785 var ticketButtons=''; 3786 if(buyer == 0){ 3787 ticketButtons+='<a href="javascript:void(0)" data-selector="'+selector+'" class="btn action-btn update-user-to-package">Edit</a>'; 3788 }else if(buyer == 1 && IsAddonsExists == true){ 3789 ticketButtons+='<a href="javascript:void(0)" data-selector="'+selector+'" class="btn action-btn update-user-to-package">Edit</a>'; 3790 } 3791 3792 ticketButtons += '<a href="javascript:void(0)" class="btn action-btn remove-block">Remove</a>'; 3793 3794 }else{ 3795 ticketBlock=''; 3796 var ticketButtons = '<div class="dropdown">'; 3797 ticketButtons += '<a href="#" class="btn action-btn" data-toggle="dropdown"><i class="fa fa-pencil"></i> Edit</a>'; 3798 ticketButtons += '<ul class="dropdown-menu dropdown-menu-edit dropdown-menu-right" role="menu">'; 3799 if(buyer == 0){ 3800 if (enableExpiredOwnedEditProfile10003110) { 3801 ticketButtons+='<li><a href="javascript:void(0)" data-selector="'+selector+'" class="btn action-btn update-user-to-package"><i class="fa fa-pencil-alt"></i> Edit</a></li>'; 3802 } else { 3803 ticketButtons+='<a href="javascript:void(0)" data-selector="'+selector+'" class="btn action-btn update-user-to-package">Edit</a>'; 3804 } 3805 }else if(buyer == 1 && IsAddonsExists == true){ 3806 if (enableExpiredOwnedEditProfile10003110) { 3807 ticketButtons+='<li><a href="javascript:void(0)" data-selector="'+selector+'" class="btn action-btn update-user-to-package"><i class="fa fa-pencil-alt"></i> Edit</a></li>'; 3808 } else { 3809 ticketButtons+='<a href="javascript:void(0)" data-selector="'+selector+'" class="btn action-btn update-user-to-package">Edit</a>'; 3810 } 3811 } 3812 ticketButtons += '<li><a href="javascript:void(0)" class="btn action-btn remove-block"><i class="fa fa-pencil-alt"></i> Remove</a></li>'; 3813 ticketButtons += '</ul></div>'; 3814 } 3815 3816 var shouldDisplayAutoAddons = (String(appId) === '1000001457') || (autoAddonsToBuyer && buyer == 1 && addonIdsArray.length > 0); 3817 var displayAddonsName = shouldDisplayAutoAddons ? (allAddonsName || '') : ''; 3818 var displayAddonsIds = shouldDisplayAutoAddons ? (jsonfield_addons || '') : ''; 3819 var displayAddonsBox = shouldDisplayAutoAddons ? (allAddonsNameBox || '') : ''; 3820 var packageHTML = '<div class="aPackage aPackage' + count + '" data-pack="' + count + '" data-buyer="' + buyer + '" data-addonsname="' + displayAddonsName + '" data-addons="' + displayAddonsIds + '" data-package="' + s
3820avedPackage + '">' + 3821 '<div class="aPackage__detail">' + 3822 ticketBlock+ 3823 '<div class="aPackage__detail__cell aPackage__detail__width"><span>Name</span><p>' + first_name + ' ' + last_name + '</p></div>' + 3824 '<div class="aPackage__detail__cell aPackage__detail__width"><span>Email</span><p>' + email + '</p></div>' + 3825 '<div class="aPackage__detail__cell"><span>Addons</span><div class="addons">' + displayAddonsBox + '</div>' + 3826 '</div> </div>' + 3827 '<div class="aPackage__actions">' + 3828 ticketButtons + 3829 '</div>' + 3830 '</div>'; 3831 3832 if(simplifiedTicketAssignment){ 3833 $('#packageContainerBlock' + savedPackage +' '+fakePackageCount).after(packageHTML); 3834 $('#packageContainerBlock' + savedPackage +' '+fakePackageCount).remove(); 3835 3836 if(TicketPackages[savedPackage]['isDonation'] !=1){ 3837 $('.user-info-prev').hide(); 3838 } 3839 3840 }else{ 3841 $('#packageContainerBlock' + savedPackage).append(packageHTML); 3842 } 3843 3844 3845 3846 3847 // Update data object 3848 var data = {}; 3849 $packageContainer.find('> .aPackage').each(function () { 3850 var $package = $(this); 3851 var pack_id = $package.attr("data-pack"); 3852 var name = $package.find('.aPackage__detail__cell:nth-of-type(1) p').text(); 3853 var email = $package.find('.aPackage__detail__cell:nth-of-type(2) p').text().replace(/\s/g, ""); 3854 3855 var parent_email = $('input[name="email"]').val().trim(); 3856 if (email == parent_email) { 3857 name = name + ' (Buyer)'; 3858 } 3859 if (!data[email]) { 3860 data[email] = name + ',' + pack_id; 3861 } 3862 }); 3863 3864 // Update dropdown menu 3865 var $dropdownMenu = $packageContainer.find('.packageContainer__head .dropdown-menu-main'); 3866 // $dropdownMenu.find("li").slice(3).remove(); 3867 3868 var flag = 0; 3869 $packageContainer.find('.dropdown-menu > li a').each(function () { 3870 var buyer = $(this).attr("data-buyer"); 3871 var user = $(this).attr("data-user"); 3872 if (buyer == 1) { 3873 flag = 1; 3874 } 3875 }); 3876 3877 /* JIRA Ticket - VFC-19349 */ 3878 // 1 3879 Object.entries(data).forEach(function ([key, value]) { 3880 value = value.split(","); 3881 buyer = 0; 3882 if (key == $('input[name="email"]').val().trim()) { 3883 buyer = 1; 3884 value[0] = value[0] + ' (Buyer)'; 3885 } 3886 if ($dropdownMenu && $dropdownMenu.length > 0) { 3887 if ((buyer == 1 && flag == 1) || assignDropdownAlreadyHasEmail($dropdownMenu, key)) { 3888 return; 3889 } 3890 $dropdownMenu.append('<li><a href="javascript:void(0)" class="user-info-prev" data-buyer="' + buyer + '" data-user="user' + value[1] + '"><p>' + value[0] + '</p><span>' + key + '</span></a></li>'); 3891 } 3892 3893 // $dropdownMenu.append('<li><a href="javascript:void(0)" class="user-info-prev" data-buyer="'+buyer+'" data-user="user' + value[1] + '"><p>' + value[0] + '</p><span>' + key + '</span></a></li>'); 3894 }); 3895 3896 //Check remaining Data 3897 var total_data = {}; 3898 $.each(TicketPackages, function (packageId, package) { 3899 if(!isNaN(parseFloat(packageId)) && isFinite(packageId)) { 3900 total_data[packageId] = {}; 3901 // Iterate through each item/package addon 3902 $.each(package, function (key, item) { 3903 if (key !== 'pkg_price' && key !== 'total_price' && key !== 'tax' &&
3903key !== 'pkg_qty' && key !== 'symbol') { 3904 if (item.id && item.addons_qty) { 3905 total_data[packageId][item.id] = item.addons_qty; 3906 } 3907 } 3908 }); 3909 } 3910 }); 3911 3912 // console.log('Total addons'); 3913 // console.log(total_data); 3914 3915 3916 const used_data = Object.assign({}, total_data); 3917 let excluded_app_ids_embed = [18834,18423, 17033, 14853, 15625, 15741, 16644,16279,16782,16783,18414,20463, 1000000441,1000001478, 10003234, 10003307, 1000008001]; 3918 let excluded_org_id_embed = ["78"]; 3919 if(!excluded_app_ids_embed.includes(app_id) && !excluded_org_id_embed.includes(organizationId)){ 3920 $('.packageContainer .aPackage', window.parent.document).each(function () { 3921 var $package = $(this); 3922 var package_id = $package.attr("data-package"); 3923 var addonsArray = $package.attr("data-addons"); 3924 // if(package_id == savedPackage){ 3925 addonsArray = addonsArray.split(','); 3926 // console.log(addonsArray); 3927 3928 $.each(addonsArray, function (key, value) { 3929 value = parseInt(value); 3930 used_data[package_id][value] = parseInt(used_data[package_id][value]) - 1; 3931 3932 }); 3933 // } 3934 3935 3936 }); 3937 }else{ 3938 $('.packageContainer .aPackage', window.document).each(function () { 3939 var $package = $(this); 3940 var package_id = $package.attr("data-package"); 3941 var addonsArray = $package.attr("data-addons"); 3942 // if(package_id == savedPackage){ 3943 addonsArray = addonsArray.split(','); 3944 // console.log(addonsArray); 3945 3946 $.each(addonsArray, function (key, value) { 3947 value = parseInt(value); 3948 used_data[package_id][value] = parseInt(used_data[package_id][value]) - 1; 3949 3950 }); 3951 // } 3952 3953 3954 }); 3955 } 3956 3957 // console.log('used_data addons'); 3958 // console.log(used_data); 3959 var remaining_addons = ""; 3960 var remaining_ids = ""; 3961 $.each(used_data, function (packageId, package) { 3962 if(!isNaN(parseFloat(packageId)) && isFinite(packageId)) { 3963 // console.log(package); 3964 $.each(package, function (key, item) { 3965 for (i = 0; i < parseInt(item); i++) { 3966 if (remaining_addons == '') { 3967 remaining_addons = TicketPackages[packageId][key]['addons_name']; 3968 remaining_ids = TicketPackages[packageId][key]['id']; 3969 } else { 3970 remaining_ids += ', ' + TicketPackages[packageId][key]['id']; 3971 } 3972 } 3973 3974 }); 3975 } 3976 }); 3977 let excluded_app_ids_embeded = [18834,18423, 17033, 14853, 15625,15741,16644,16279,16782,16783,18414,20463, 1000000441,1000001478, 10003234, 10003307, 1000008001]; 3978 let excluded_org_id_embeded = ["78"]; 3979 if(!excluded_app_ids_embeded.includes(app_id) && !excluded_org_id_embeded.includes(organizationId)){ 3980 $('.packageBlock', window.parent.document).attr('data-remaining-addons', remaining_addons); 3981 $('.packageBlock', window.parent.document).attr('data-remaining-addons-ids', remaining_ids); 3982 }else{ 3983 $('.packageBlock', window.document).attr('data-remaining-addons', remaining_addons); 3984 $('.packageBlock', window.document).attr('data-remaining-addons-ids', remaining_ids); 3985 } 3986 3987 if ($('input[name=partner_tag]').val() == '1') { 3988 addons_ids = $('.packageBlock').attr('data-remaining-addons-ids'); 3989 addons_ids = addons_ids.split(","); 3990 $.each(addons_ids, function (index, value) { 3991 addons_ids[index] = $.trim(value); 3992 }); 3993 var value = $('#user' + count).val(); 3994 if (value) { 3995 // Parse JSON value and update corresponding user input 3996 var jsonObject = JSON.parse(value); 3997 // Unset property 3998 jsonObject.field_addons = addons_ids; 3999 4000 var clickSource = $(this).attr('data-click-source') || ''; 4001 4002 if(clickSource === 'partner_tag_section') { 4003 let addonPaymentValues = []; 4004 4005 // Check if TicketPackages has single object and pkg_qty is 1 4006 let packageKeys = Object.keys(TicketPackages).filter(key => !isNaN(key)); 4007 if (packageKeys.length === 1) { 4008 let package = TicketPackages[savedPackage]; 4009 if (package.pkg_qty === 1) { 4010 // Get addon IDs from numeric keys 4011 for (let key in package) { 4012 if (!isNaN(key) && package[key].id) { 4013 addonPaymentValues.push(package[key].id); 4014 } 4015 } 4016 } 4017 } 4018 4019 if (addonPaymentValues.length > 0) { 4020 jsonObject.field_addons = addonPaymentValues; 4021 } 4022 4023 // Remove the attribute after handling 4024 $(this).removeAttr('data-click-source'); 4025 } 4026 4027 value = JSON.stringify(jsonObject); 4028 $('#user' + count).val(value); 4029 } 4030 4031 } 4032 4033 /* VFC-19349 */ 4034 4035 4036 // Ticket group max: update assign UI after each single-ticket assignment 4037 if (typeof afterTicketAssignmentApplyGroupMaxRules === 'function') { 4038 afterTicketAssignmentApplyGroupMaxRules(email); 4039 } 4040
4041 if (typeof openBuyerTicketDependencyPopup === 'function') { 4042 // openBuyerTicketDependencyPopup(isBuyerAssign, savedPackage, count); 4043 } 4044 4045 refreshSessionLimitedFieldAvailability('user' + count); 4046 } 4047 }); 4048 4049 $(document).on('click', '.remove-block', function () { 4050 4051 4052 var $packageContainer = $(this).closest('.packageContainer'); 4053 var savedPackage = $packageContainer.data('package'); 4054 var ori_total = $packageContainer.find('.packageContainer__head').data("ori-total"); 4055 var total = $packageContainer.find('.packageContainer__head').data("total"); 4056 var $removingPackage = $(this).closest('.aPackage'); 4057 var count = parseInt($packageContainer.find('.packageContainer__head').attr("data-count")) - 1; 4058 4059 $packageContainer.find('.packageContainer__head').attr("data-count", count); 4060 $packageContainer.find('.packageContainer__head .dropdown').show(); 4061 var $dropdownMenu = $packageContainer.find('.packageContainer__head .dropdown-menu-main'); 4062 var user_id = $(this).closest('.aPackage').attr("data-pack"); 4063 var userBuyer = $(this).closest('.aPackage').attr("data-buyer"); 4064 var Useremail = $(this).closest('.aPackage').find('.aPackage__detail__cell') 4065 .filter(function() { 4066 return $(this).find('span').text() === 'Email'; 4067 }) 4068 .find('p') 4069 .text(); 4070 4071 var userDetails=null; 4072 $dropdownMenu.find('.user-info-prev').each(function() { 4073 var currentEmail = $(this).find('span').text().trim(); 4074 if (currentEmail === Useremail) { 4075 userDetails = $(this).attr("data-user"); 4076 } 4077 }); 4078 4079 // simplifiedTicketAssignment=1; 4080 if(simplifiedTicketAssignment){ 4081 count=user_id; 4082 var savedPackage = 1; 4083 var buyer = 0; 4084 var first_name = 'Not Set'; 4085 var last_name = ''; 4086 var email = 'Not Set'; 4087 var addons = 'Not Set'; 4088 var selector = '.user-num' + count; 4089 packageHTML=''; 4090 packageHTML += '<div class="fakePackage fakePackage' + count + '" data-pack="' + count + '" data-buyer="' + buyer + '" data-addonsname="" data-addons="" data-package="' + savedPackage + '">' + 4091 '<div class="aPackage__detail">' + 4092 '<div class="aPackage__detail__cell aPackage__detail__width" style="width: 80px !important"><span></span><p>Ticket ' + count + '</p></div>' + 4093 '<div class="aPackage__detail__cell aPackage__detail__width"><span>Name</span><p>' + first_name + ' ' + last_name + '</p></div>' + 4094 '<div class="aPackage__detail__cell aPackage__detail__width"><span>Email</span><p>' + email + '</p></div>' + 4095 '<div class="aPackage__detail__cell"><span>Addons</span><div class="addons"><p>' + addons + '</p></div></div>' + 4096 '</div>' + 4097 '<div class="aPackage__actions">'; 4098 // '<div class="dropdown"><a href="#" class="btn action-btn" data-toggle="dropdown"><i class="fa fa-pencil"></i> Edit</a>' + 4099 // '<ul class="dropdown-menu dropdown-menu-edit dropdown-menu-right" role="menu">'; 4100 4101 // packageHTML += '<li><a href="javascript:void(0)" data-selector="' + selector + '" class="btn action-btn update-user-to-package"><i class="fa fa-pencil-alt"></i> Edit</a></li>'; 4102 packageHTML += '<a href="javascript:void(0)" class="btn action-btn assign-user-to-package" data-row="' + count + '"><i class="fa fa-pencil-alt"></i> Add User Details</a>'; 4103 4104 packageHTML += '' + 4105 // '<a href="javascript:void(0)" class="btn action-btn remove-block"><i class="fa fa-pencil-alt"></i> Remove</a>' + 4106 // '</ul>' + 4107 // '</div>' + 4108 '</div>' + 4109 '</div>'; 4110 4111 $(this).closest('.aPackage').after(packageHTML); 4112 if(userBuyer == 1){ 4113 $('.user-info-prev').show(); 4114 } 4115 } 4116 4117 /* JIRA ticket: VFC-19907 */ 4118 4119 $(this).closest('.aPackage').remove(); 4120 4121 var size = $packageContainer.find('> .aPackage').length; 4122 // Update package name 4123 if(simplifiedTicketAssignment){ 4124 var package_name = $packageContainer.find('> span.assigned-tickets').text().replace(/\d+\/\d+ tickets assigned/, '') + ' ' + size + '/' + ori_total + ' tickets assigned'; 4125 $packageContainer.find('> span.assigned-tickets').text(package_name); 4126 }else{ 4127 var package_name = $packageContainer.find('.packageContainer__head > h3').text().replace(/\s*\(\d+\/\d+\)/, '') + ' (' + size + '/' + ori_total + ')'; 4128 $packageContainer.find('.packageContainer__head > h3').text(package_name); 4129 } 4130 4131 4132 4133 if(simplifiedTicketAssignment){ 4134 4135 }else{
4136 // Do not reindex remaining data-pack / #userN. The old shift copied JSON 4137 // down, mutated user_id, then cleared the wrong slot and left orphan values 4138 // in high #userN (submit filled-count != ticket qty). 4139 4140 // Update data object 4141 var data = {}; 4142 $packageContainer.find('> .aPackage').each(function () { 4143 var $package = $(this); 4144 var pack_id = $package.attr("data-pack"); 4145 var name = $package.find('.aPackage__detail__cell:nth-of-type(1) p').text(); 4146 var email = $package.find('.aPackage__detail__cell:nth-of-type(2) p').text().replace(/\s/g, ""); 4147 if (!data[email]) { 4148 data[email] = name + ',' + pack_id; 4149 } 4150 }); 4151 // Update dropdown menu 4152 // if(count != ori_total) { 4153 4154 // } 4155 var flag = 0; 4156 $packageContainer.find('.dropdown-menu > li a').each(function () { 4157 var buyer = $(this).attr("data-buyer"); 4158 var user = $(this).attr("data-user"); 4159 if (buyer == 1) { 4160 flag = 1; 4161 } 4162 }); 4163 4164 /* JIRA Ticket - VFC-19349 */ 4165 Object.entries(data).forEach(function ([key, value]) { 4166 value = value.split(","); 4167 buyer = 0; 4168 if (key == $('input[name="email"]').val().trim()) { 4169 buyer = 1; 4170 value[0] = value[0] + ' (Buyer)'; 4171 } 4172 if ((buyer == 1 && flag == 1) || assignDropdownAlreadyHasEmail($dropdownMenu, key)) { 4173 return; 4174 } 4175 $dropdownMenu.append('<li><a href="javascript:void(0)" class="user-info-prev" data-buyer="' + buyer + '" data-user="user' + value[1] + '"><p>' + value[0] + '</p><span>' + key + '</span></a></li>'); 4176 }); 4177 4178 var TicketPackages = localStorage.getItem("TicketPackages"); 4179 var TicketPackages = JSON.parse(TicketPackages); 4180 var emailArray = []; 4181 for (var key in TicketPackages) { 4182 if (TicketPackages.hasOwnProperty(key)) { 4183 var counter = parseInt(user_id); 4184 var packageContainer2 = $('#packageContainerBlock'+key); 4185 var $dropdownMenu2 = packageContainer2.find('.packageContainer__head .dropdown-menu-main'); 4186 $('#packageContainerBlock'+key+' span:contains("Email")').each(function() { 4187 var email = $(this).next('p').text(); 4188 if (email.includes('@')) { 4189 emailArray.push(email); 4190 } 4191 }); 4192 } 4193 4194 } 4195 // debugger; 4196 for (var key in TicketPackages) { 4197 if (TicketPackages.hasOwnProperty(key)) { 4198 var counter = parseInt(user_id); 4199 var packageContainer2 = $('#packageContainerBlock'+key); 4200 var $dropdownMenu2 = packageContainer2.find('.packageContainer__head .dropdown-menu-main'); 4201 var emailExists = emailArray.map(email => email.trim().toLowerCase()).includes(Useremail.trim().toLowerCase()); 4202 let emailCount = emailArray.filter(email => email.trim().toLowerCase() === Useremail.trim().toLowerCase()).length; 4203 4204 console.log(emailExists); 4205 console.log(Useremail); 4206 console.log(emailCount); 4207 // if (!emailExists || emailArray.length ==0 || emailCount ==1) { 4208 if (!emailExists || emailArray.length ==0) { 4209 // var Useremail = packageContainer2.find('a[data-user="user'+user_id+'"] span').text(); 4210 $dropdownMenu2.find('.user-info-prev').each(function() { 4211 var currentEmail = $(this).find('span').text().trim(); 4212 if (currentEmail.trim().toLowerCase() === Useremail.trim().toLowerCase()) { 4213 var dataUserValue = $(this).attr('data-user'); 4214 var userValue = dataUserValue.replace('user', ''); 4215 if(dataUserValue !='buyer'){ 4216 $dropdownMenu2.find('li a[data-user="user'+userValue+'"]').closest('li').remove(); 4217 } 4218 } 4219 }); 4220 } 4221 } 4222 } 4223 // data-pack is the #userN index. Old code did user_id.replace('user','') 4224 // then fell through to userDetails.replace when the slot was already empty 4225 // (userDetails can be null after the removed reindex). 4226 $('#user' + user_id).val(''); 4227 4228 } 4229 4230 refreshSessionLimitedFieldAvailability(null); 4231 4232 // Ticket group max: re-enable Add New User when under the limit again 4233 if (typeof updateTicketGroupMaxAssignUi === 'function') { 4234 clearTicketGroupMaxError(); 4235 updateTicketGroupMaxAssignUi(); 4236 } 4237 4238 4239 4240 4241 }); 4242 isEventBound = true; 4243 } 4244 } 4245 if(parseInt(isTicket) && (parseInt(isStripeElement) || parseInt(isStripeConnectElement)) && parseInt(isTicketTop)) { 4246 4247 4248 appId= "20550"; 4249 // if(appId == 14853){ 4250 var price = sessionStorage.getItem('total_price'); 4251 if(price == null || price == undefined || price == ''){ 4252 price = $('.order__summary .price__item > div.total__price > span').text(); 4253 } 4254 // }else{ 4255 // price = $('.order__summary .price__item > div.total__price > span').text(); 4256 // } 4257 jQuery.ajax({ 4258 url: "https://www.codeseccon.com/en/form/createPaymentIntent", 4259 data: { 4260 price: price,
4261 appID: appId, 4262 ticketPackages: JSON.stringify(TicketPackages), 4263 }, 4264 type: "POST", 4265 success: function (response) { 4266 if (response) { 4267 var response = eval('(' + response + ')'); 4268 if (response.status) { 4269 client_secret = response.client_secret; 4270 intent_id = response.intent_id; 4271 customer_id = response.customer_id; 4272 $('#customer_id').val(customer_id) 4273 if ($(".refund_amount_multiple_edit").length === 1) { 4274 $('#payment-element').css('display', 'none'); 4275 } 4276 stripe = ''; 4277 if (parseInt(isStripeConnectElement)) { 4278 stripe = Stripe('', {stripeAccount: isStripeConnectAccountId}); 4279 } else { 4280 stripe = Stripe(''); 4281 } 4282 4283 elements = stripe.elements({ 4284 clientSecret: client_secret 4285 }); 4286 // Create and mount the Payment Element 4287 const paymentElement = elements.create('payment'); 4288 paymentElement.mount('#payment-element'); 4289 var id = $('.reg-form-data').attr('id'); 4290 4291 const formSubmit = document.getElementById(id); 4292 4293 4294 console.log("form=1"); 4295 console.log(formSubmit); 4296 flag_lis = 0; 4297 4298 // $(document).off('submit', '#' + id).on('submit', '#' + id, async function (event) { 4299 formSubmit.addEventListener('submit', async (event) => { 4300 console.log("form=3"); 4301 console.log("flag_lis: " + flag_lis); 4302 if (flag_lis == 0) { 4303 console.log("flag_lis == 0 =1"); 4304 event.preventDefault(); 4305 4306 let mainEmail = $('input[name="email"]').val().trim(); 4307 if (typeof shouldRunStripeSubmit !== 'undefined' && !shouldRunStripeSubmit) { 4308 return; // Do nothing if flag is false 4309 } 4310 const {error} = await stripe.confirmPayment({ 4311 //`Elements` instance that was used to create the Payment Element 4312 elements, 4313 confirmParams: { 4314 return_url: 'https://vfairs.com', 4315 receipt_email: ('' != mainEmail)? mainEmail : '' 4316 }, 4317 redirect: 'if_required' 4318 }).then((result) => { 4319 console.log("result: " + result); 4320 const messageContainer = document.querySelector('#error-message'); 4321 if ((result.error && $('input[name="optionsRadios"]').closest('.order__payment').css('display') === 'none') || (result.error && $('input[name="optionsRadios"]:checked').data('name') === 'Stripe')) { 4322 // if (result.error && $('input[name="optionsRadios"]:checked').data('name') === 'Stripe') { 4323 if ($(".refund_amount_multiple_edit").length === 1) { 4324 console.log("refund_amount_multiple_edit"); 4325 isStripeValidation = true; 4326 flag_lis = 1; 4327 $('#' + id).submit(); 4328 }else{ 4329 // console.log("result.error =1: " + result.error); 4330 messageContainer.textContent = result.error.message; 4331 } 4332 // messageContainer.textContent = result.error.message; 4333 } else { 4334 console.log("isStripeValidation =1" ); 4335 messageContainer.textContent = ''; 4336 isStripeValidation = true; 4337 flag_lis = 1; 4338 if ($('input[name="optionsRadios"]:checked').data('name') != 'Check') { 4339 console.log("submit"); 4340 console.log(id, $('#' + id)); 4341 console.log($('#' + id).length); // Should be 1 if the form exists 4342 $('#' + id).submit(); 4343 } 4344 } 4345 }).catch((err) => { 4346 }); 4347 4348 if (error) { 4349 // This point will only be reached if there is an immediate error when 4350 // confirming the payment. Show error to your customer (for example, payment 4351 // details incomplete) 4352 const messageContainer = document.querySelector('#error-message'); 4353 messageContainer.textContent = error.message; 4354 console.log("error: " + error); 4355 } else { 4356 } 4357 } 4358 4359 }); 4360 if((isUpgradeDowngradeProfile !== null && isUpgradeDowngradeProfile !== '' && (isUpgradeDowngradeProfile == 1 || isUpgradeDowngradeProfile == "1"))){ 4361 4362 paymentName=$('input[name="optionsRadios"]:checked').data('name'); 4363 4364 if(paymentName =='Stripe'){ 4365 $('#payment-element').show(); 4366 }else{ 4367 setTimeout(function() { 4368 $('#payment-element').hide(); 4369 }, 3000); 4370 } 4371 } 4372 }else{ 4373 console.log("false status"); 4374 var id = $('.reg-form-data').attr('id'); 4375 4376 const formSubmit = document.getElementById(id); 4377 formSubmit.addEventListener('submit', async (event) => { 4378 if ($(".refund_amount_multiple_edit").length === 1 && price == 0) { 4379 isStripeValidation = true; 4380 flag_lis = 1; 4381 $('#' + id).submit(); 4382 } 4383 4384 }); 4385 } 4386 4387 // VFC-17411 - add receiptEmail in payment intent for stripe Element 4388 let stripeElementContainer = $('body').find('.StripeElement'); 4389 if($(stripeElementContainer).length > 0){ 4390 $('body').find('.StripeElement').attr('data-stripe_payment_intent_id', intent_id); 4391 } 4392 4393 4394 $('.ev__ticket__wrapper').hide(); 4395 if(seatPlanUrl !== '' && seatPlanPackageIds.includes($('.package_list').val())) { 4396 $('.seat-plan-iframe-div').show(); 4397 $('#floorPlanIframe').attr('src', seatPlanUrl + $('.package_list').val()); 4398 } else { 4399 $('.seat-plan-iframe-div').hide(); 4400 } 4401 console.log("gStepNumber: " + gStepNumber); 4402 if(gStepNumber >= 1){ 4403 $('.both-block').show(); 4404 } 4405 numItems = $('.payment__method > .radio').length; 4406 if (numItems == 1 && !hasVfairsOfflinePayments) { 4407 $('.order__payment').hide(); 4408 } 4409 if (![1000002477, 1000004898, 1000004216, 1000003850, 1000004592, 1000003851, 1000003095, 1000004011, 1000003096, 1000003852, 1000003094].includes(Number(appId))) { 4410 $("html, body").animate({ scrollTop: 0 }, "slow"); 4411 } 4412 // return false;
4413 } 4414 4415 } 4416 }); 4417 }else{ 4418 if(!parseInt(isTicketTop)){ 4419 4420 }else{ 4421 $('.ev__ticket__wrapper').hide(); 4422 if(seatPlanUrl !== '' && seatPlanPackageIds.includes($('.package_list').val())) { 4423 $('.seat-plan-iframe-div').show(); 4424 $('#floorPlanIframe').attr('src', seatPlanUrl + $('.package_list').val()); 4425 } else { 4426 $('.seat-plan-iframe-div').hide(); 4427 } 4428 console.log("gStepNumber: " + gStepNumber); 4429 if(gStepNumber >= 1){ 4430 $('.both-block').show(); 4431 } 4432 numItems = $('.payment__method > .radio').length; 4433 if(numItems == 1 && !hasVfairsOfflinePayments){ 4434 $('.order__payment').hide(); 4435 if (appId == '1000001259') { 4436 var price = sessionStorage.getItem('total_price'); 4437 if (price == null || price == undefined || price === '') { 4438 price = $('.order__summary .price__item > div.total__price > span').text(); 4439 } 4440 price = parseFloat(String(price).replace(/[^0-9.-]/g, '')) || 0; 4441 if (price > 0) { 4442 $('.single-pay').show(); 4443 } 4444 } 4445 } 4446 if (![1000002477, 1000004898, 1000004216, 1000003850, 1000004592, 1000003851, 1000003095, 1000004011, 1000003096, 1000003852, 1000003094].includes(Number(appId))) { 4447 $("html, body").animate({ scrollTop: 0 }, "slow"); 4448 } 4449 return false; 4450 } 4451 4452 } 4453 } 4454 }); 4455</script>
4455 4456
4456<script> 4457 4458 var stripe=''; 4459 var elements; 4460 if(isTicket && isStripeElement && !isTicketTop) { 4461 console.log('ELEMENTS INSIDE FIRST'); 4462 4463 if(parseInt(isStripeConnectElement)){ 4464 stripe = Stripe('',{stripeAccount: isStripeConnectAccountId}); 4465 } else{ 4466 stripe = Stripe(''); 4467 } 4468 4469 4470 elements = stripe.elements({ 4471 clientSecret: '', 4472 }); 4473 4474 // Create and mount the Payment Element 4475 const paymentElement = elements.create('payment'); 4476 paymentElement.mount('#payment-element'); 4477 4478 var id = $('.reg-form-data').attr('id'); 4479 const form = document.getElementById(id); 4480 flag_lis=0; 4481 4482 4483 4484 let appId = 20550; 4485 let excluded_app_ids = [18414]; 4486 if(excluded_app_ids.includes(appId)){ 4487 // console.log("paid submit button"); 4488 $(document).on("click", "#paid-submit-button", function(){ 4489 console.log("before stripe call",stripe); 4490 stripeElementCall(elements,stripe); 4491 }); 4492 }else{ 4493 // console.log("paid submit button else"); 4494 form.addEventListener('submit', async (event) => { 4495 if (flag_lis == 0) { 4496 console.log("flag_lis == 0"); 4497 var payment_gateway_name=$('input[name="optionsRadios"]:checked').data('name'); 4498 // event.preventDefault(); 4499 4500 let mainEmail = $('input[name="email"]').val().trim(); 4501 const {error} = await stripe.confirmPayment({ 4502 //`Elements` instance that was used to create the Payment Element 4503 elements, 4504 confirmParams: { 4505 return_url: 'https://vfairs.com', 4506 receipt_email: ('' != mainEmail)? mainEmail : '' 4507 }, 4508 redirect: 'if_required' 4509 }).then((result) => { 4510 const messageContainer = document.querySelector('#error-message'); 4511 if (result.error) { 4512 if ($(".refund_amount_multiple_edit").length === 1) { 4513 isStripeValidation = true; 4514 flag_lis = 1; 4515 $('#' + id).submit(); 4516 }else{ 4517 console.log("result.error: " + result.error); 4518 if(payment_gateway_name == 'Stripe'){ 4519 messageContainer.textContent = result.error.message; 4520 } 4521 } 4522 // if(payment_gateway_name == 'Stripe'){ 4523 // messageContainer.textContent = result.error.message; 4524 // } 4525 } else { 4526 // console.log("isStripeValidation "); 4527 messageContainer.textContent = ''; 4528 isStripeValidation = true; 4529 flag_lis = 1; 4530 $('#' + id).submit(); 4531 } 4532 }).catch((err) => { 4533 }); 4534 4535 if (error) { 4536 // This point will only be reached if there is an immediate error when 4537 // confirming the payment. Show error to your customer (for example, payment 4538 // details incomplete) 4539 if(payment_gateway_name == 'Stripe'){ 4540 const messageContainer = document.querySelector('#error-message'); 4541 messageContainer.textContent = error.message; 4542 } 4543 } else { 4544 4545 } 4546 } 4547 }); 4548 } 4549 4550 4551 4552 4553 } 4554 if (!isTicket && isCardOnHold) { 4555 // console.log('ELEMENTS INSIDE SECOND'); 4556 // Set your publishable key: remember to change this to your live publishable key in production 4557 // See your keys here: https://dashboard.stripe.com/apikeys 4558 const stripe = Stripe(''); 4559 elements = stripe.elements(); 4560 // Custom styling can be passed to options when creating an Element. 4561 const style = { 4562 base: { 4563 // Add your base input styles here. For example: 4564 fontSize: '16px', 4565 color: '#32325d', 4566 }, 4567 }; 4568 4569 // Create an instance of the card Element. 4570 const card = elements.create('card', {style}); 4571 4572 // Add an instance of the card Element into the `card-element` <div>. 4573 card.mount('#card-element'); 4574 4575 // Create a token or display an error when the form is submitted. 4576 const form = document.getElementById('payment-form'); 4577 form.addEventListener('submit', async (event) => { 4578 event.preventDefault(); 4579 4580 const {token, error}
4580 = await stripe.createToken(card); 4581 4582 if (error) { 4583 const errorElement = document.getElementById('card-errors'); 4584 errorElement.textContent = error.message; 4585 } else { 4586 // Send the token to your server. 4587 stripeTokenHandler(token); 4588 } 4589 }); 4590 const stripeTokenHandler = (token) => { 4591 // Insert the token ID into the form so it gets submitted to the server 4592 const form = document.getElementById('payment-form'); 4593 const hiddenInput = document.createElement('input'); 4594 hiddenInput.setAttribute('type', 'hidden'); 4595 hiddenInput.setAttribute('name', 'stripeToken'); 4596 hiddenInput.setAttribute('value', token.id); 4597 form.appendChild(hiddenInput); 4598 4599 // Submit the form 4600 form.submit(); 4601 } 4602 } 4603 4604 4605</script>
4605 4606
4607<script> 4608 function buildGroupRegistrationEmailsList() { 4609 var emails = []; 4610 var seen = {}; 4611 $("input[name='user_list[]']").each(function () { 4612 if (!$(this).val()) { 4613 return; 4614 } 4615 try { 4616 var obj = jQuery.parseJSON($(this).val()); 4617 if (obj && obj.email) { 4618 var normalized = String(obj.email).trim().toLowerCase(); 4619 if (normalized && !seen[normalized]) { 4620 seen[normalized] = true; 4621 emails.push(obj.email); 4622 } 4623 } 4624 } catch (e) {} 4625 }); 4626 var mainEmail = ($("input[type='email']").val() || '').trim(); 4627 if (mainEmail) { 4628 var mainNormalized = mainEmail.toLowerCase(); 4629 if (!seen[mainNormalized]) { 4630 emails.unshift(mainEmail); 4631 } 4632 } 4633 return emails.join(','); 4634 } 4635 4636 function resolveEditProfileRegistrationFormUrl() { 4637 var currentURL = window.location.href.split('#')[0]; 4638 if (/editprofile/i.test(currentURL)) { 4639 if (currentURL.indexOf('/form/') !== -1) { 4640 return currentURL.split('/form/')[0] + '/registration-form'; 4641 } 4642 return currentURL.replace(/\/editprofile.*/i, '/registration-form'); 4643 } 4644 return currentURL; 4645 } 4646 4647 function hideGroupRegistrationLoadingIndicators() { 4648 $('#loadingMessage1').css('display', 'none'); 4649 $('#loadingMessage').css('display', 'none'); 4650 } 4651 4652 function resolveGroupUserHiddenValue(userFieldId) { 4653 if (!userFieldId) { 4654 return ''; 4655 } 4656 var $field = $('#' + userFieldId); 4657 if ($field.length && $field.val()) { 4658 return $field.val(); 4659 } 4660 if (enableExpiredOwnedEditProfile10003110 && window.parent && window.parent !== window) { 4661 try { 4662 $field = $(window.parent.document).find('#' + userFieldId); 4663 if ($field.length && $field.val()) { 4664 return $field.val(); 4665 } 4666 } catch (e) {} 4667 } 4668 return ''; 4669 } 4670 4671 function syncGroupUserHiddenFieldFromDisplay(userFieldId) { 4672 if (!enableExpiredOwnedEditProfile10003110 || !userFieldId) { 4673 return false; 4674 } 4675 var packNum = String(userFieldId).replace(/^user/, ''); 4676 if (!packNum) { 4677 return false; 4678 } 4679 var $package = $('.aPackage[data-pack="' + packNum + '"]'); 4680 if (!$package.length && window.parent && window.parent !== window) { 4681 try { 4682 $package = $(window.parent.document).find('.aPackage[data-pack="' + packNum + '"]'); 4683 } catch (e) {} 4684 } 4685 if (!$package.length) { 4686 return false; 4687 } 4688 var displayName = ''; 4689 var displayEmail = ''; 4690 $package.find('.aPackage__detail__cell').each(function () { 4691 var label = $(this).find('span').first().text().trim().toLowerCase(); 4692 var value = $(this).find('p').first().text().trim(); 4693 if (label === 'name' && value) { 4694 displayName = value.replace(/\s*\(Buyer\)\s*$/, '').trim(); 4695 } else if (label === 'email' && value) { 4696 displayEmail = value.trim(); 4697 } 4698 }); 4699 if (!displayName && !displayEmail) { 4700 return false; 4701 } 4702 var rawValue = resolveGroupUserHiddenValue(userFieldId); 4703 var userData; 4704 if (rawValue) { 4705 try { 4706 userData = jQuery.parseJSON(rawValue); 4707 } catch (e) { 4708 userData = null; 4709 } 4710 } 4711 if (!userData || typeof userData !== 'object') { 4712 userData = { 4713 package: $package.attr('data-package') || localStorage.getItem('savedPackage') || '' 4714 }; 4715 } 4716 if (displayName) { 4717 var nameParts = displayName.split(/\s+/); 4718 userData.first_name = nameParts.shift() || ''; 4719 userData.last_name = nameParts.join(' '); 4720 } 4721 if (displayEmail) { 4722 userData.email = displayEmail; 4723 } 4724 var syncedValue = JSON.stringify(userData); 4725 var $field = $('#' + userFieldId); 4726 if (!$field.length && window.parent && window.parent !== window) { 4727 try { 4728 $field = $(window.parent.document).find('#' + userFieldId); 4729 } catch (e) {} 4730 } 4731 if ($field.length) { 4732 $field.val(syncedValue); 4733 } 4734 return true; 4735 } 4736 4737 function getCountryStateLinkKey($select) { 4738 var classes = ($select.attr('class') || '').split(/\s+/); 4739 for (var i = 0; i < classes.length; i++) { 4740 var match = classes[i].match(/^(\d+)_(.+)$/); 4741 if (match) { 4742 return match[2]; 4743 } 4744 } 4745 return null; 4746 } 4747 4748 function buildCountryStatePairs($container, userData) { 4749 var pairs = []; 4750 var $countries = $container.find('select.country_list'); 4751 var $states = $container.find('select.state_list'); 4752 4753 $countries.each(function () { 4754 var $country = $(this); 4755 var linkKey = getCountryStateLinkKey($country); 4756 var countryName = $country.attr('name'); 4757 var countryVal = userData[countryName]; 4758 if (!countryVal) { 4759 return; 4760 } 4761 4762 $states.each(function () { 4763 var $state = $(this); 4764 var stateName = $state.attr('name'); 4765 var stateVal = userData[stateName]; 4766 if (!stateVal) { 4767 return; 4768 } 4769 var stateLinkKey = getCountryStateLinkKey($state); 4770 if (linkKey) { 4771 if (stateLinkKey !== linkKey) { 4772 return; 4773 } 4774 } else if (stateLinkKey) { 4775 return; 4776 } 4777 pairs.push({ 4778 $country: $country, 4779 $state: $state, 4780 countryVal: countryVal, 4781 stateVal: stateVal 4782 }); 4783 }); 4784 }); 4785 4786 if (!pairs.length && $countries.length === 1 && $states.length === 1) { 4787 var loneCountryName = $countries.attr('name'); 4788 var loneStateName = $states.attr('name'); 4789 if (userData[loneCountryName] && userData[loneStateName]) { 4790 pairs.push({ 4791 $country: $countries, 4792 $state: $states, 4793 countryVal: userData[loneCountryName], 4794 stateVal: userData[loneStateName] 4795 }); 4796 } 4797 } 4798 4799 return pairs; 4800 } 4801 4802 function showSavedStateImmediately($state, stateVal) { 4803 if (!$state || !$state.length || !stateVal) { 4804 return; 4805 } 4806 if ($state.val() === stateVal) { 4807 return; 4808 } 4809 4810 var placeholderText = $state.find('option[value=""]').first().text() || 'Select'; 4811 if (!$state.find('option').filter(function () { return $(this).val() === stateVal; }).length) { 4812 $state.html("<option value=''>" + placeholderText + "</option>"); 4813 $state.append($('<option>', { value: stateVal, text: stateVal, selected: true })); 4814 } else { 4815 $state.val(stateVal); 4816 } 4817 } 4818 4819 function resolveGroupUserDataForRestore(userFieldId) { 4820 if (enableExpiredOwnedEditProfile10003110) { 4821 syncGroupUserHiddenFieldFromDisplay(userFieldId); 4822 } 4823 var user_value = enableExpiredOwnedEditProfile10003110 4824 ? resolveGroupUserHiddenValue(userFieldId) 4825 : $('#' + userFieldId).val(); 4826 if (!user_value) { 4827 return null; 4828 } 4829 try { 4830 return jQuery.parseJSON(user_value); 4831 } catch (e) { 4832 return null; 4833 } 4834 } 4835 4836 function restoreCountryDependentStates($container, userData) { 4837 if (!$container || !userData || !$container.length) { 4838 return; 4839 } 4840
4841 buildCountryStatePairs($container, userData).forEach(function (pair) { 4842 pair.$country.val(pair.countryVal); 4843 showSavedStateImmediately(pair.$state, pair.stateVal); 4844 4845 var countryId = pair.$country.find(':selected').data('id'); 4846 if (!countryId) { 4847 return; 4848 } 4849 4850 var placeholder = pair.$state.find('option:first').text() || 'Select'; 4851 jQuery.ajax({ 4852 url: '/form/getStatesByCountryId/' + countryId, 4853 type: 'GET', 4854 success: function (response) { 4855 var states; 4856 try { 4857 states = typeof response === 'string' ? JSON.parse(response) : response; 4858 } catch (e) { 4859 states = eval('(' + response + ')'); 4860 } 4861 4862 pair.$state.html("<option value=''>" + placeholder + "</option>"); 4863 jQuery.each(states, function (key, item) { 4864 var selected = item.name === pair.stateVal ? ' selected' : ''; 4865 pair.$state.append("<option value='" + item.name + "' data-id='" + item.id + "'" + selected + ">" + item.name + "</option>"); 4866 }); 4867 pair.$state.val(pair.stateVal).trigger('change'); 4868 } 4869 }); 4870 }); 4871 } 4872 4873 function attemptEarlyGroupUserStateRestore(userFieldId, attempt) { 4874 attempt = attempt || 0; 4875 var userData = resolveGroupUserDataForRestore(userFieldId); 4876 if (!userData) { 4877 return; 4878 } 4879 4880 var $iframeContents = $('#iframe-id-new').contents(); 4881 if (!$iframeContents.length) { 4882 if (attempt < 50) { 4883 setTimeout(function () { 4884 attemptEarlyGroupUserStateRestore(userFieldId, attempt + 1); 4885 }, 100); 4886 } 4887 return; 4888 } 4889 4890 var $states = $iframeContents.find('select.state_list'); 4891 if ($states.length) { 4892 buildCountryStatePairs($iframeContents, userData).forEach(function (pair) { 4893 if (pair.countryVal) { 4894 pair.$country.val(pair.countryVal); 4895 } 4896 showSavedStateImmediately(pair.$state, pair.stateVal); 4897 }); 4898 $states.each(function () { 4899 var stateName = $(this).attr('name'); 4900 if (userData[stateName]) { 4901 showSavedStateImmediately($(this), userData[stateName]); 4902 } 4903 }); 4904 } 4905 4906 if (
4907 !$iframeContents.find('select.country_list option[value!=""]').length 4908 || !$states.length 4909 ) { 4910 if (attempt < 50) { 4911 setTimeout(function () { 4912 attemptEarlyGroupUserStateRestore(userFieldId, attempt + 1); 4913 }, 100); 4914 } 4915 return; 4916 } 4917 4918 restoreCountryDependentStates($iframeContents, userData); 4919 } 4920 4921 function bindGroupUserStateRestoreOnIframeLoad(userFieldId) { 4922 jQuery('#iframe-id-new').off('load.groupUserStateRestore').on('load.groupUserStateRestore', function () { 4923 attemptEarlyGroupUserStateRestore(userFieldId, 0); 4924 }); 4925 if (resolveGroupUserDataForRestore(userFieldId)) { 4926 attemptEarlyGroupUserStateRestore(userFieldId, 0); 4927 } 4928 } 4929 4930 function collectGroupUserFieldNames($container, inputType) { 4931 var names = []; 4932 $container.find('input[type=' + inputType + ']').each(function () { 4933 var name = $(this).attr('name'); 4934 if (name && names.indexOf(name) === -1) { 4935 names.push(name); 4936 } 4937 }); 4938 return names; 4939 } 4940 4941 function checkGroupUserInputsByValue($inputs, targetValue) { 4942 $inputs.filter(function () { 4943 return String($(this).val()) === String(targetValue); 4944 }).each(function () { 4945 var $input = $(this); 4946 $input.prop('checked', true); 4947 if ($input.is(':checkbox')) { 4948 $input.prop('disabled', false); 4949 $input.closest('.radio-block-all').show(); 4950 $input.closest('.form_field_grp').show(); 4951 } 4952 }); 4953 } 4954 4955 function getIntlTelInputInstance(input) { 4956 if (!input) { 4957 return null; 4958 } 4959 var $input = $(input); 4960 if ($input.data('intlTelInput')) { 4961 return $input.data('intlTelInput'); 4962 } 4963 4964 var inputWindow = input.ownerDocument ? input.ownerDocument.defaultView : null; 4965 try { 4966 if (inputWindow && inputWindow.intlTelInput && typeof inputWindow.intlTelInput.getInstance === 'function') { 4967 return inputWindow.intlTelInput.getInstance(input); 4968 } 4969 if (inputWindow && inputWindow.intlTelInputGlobals && typeof inputWindow.intlTelInputGlobals.getInstance === 'function') { 4970 return inputWindow.intlTelInputGlobals.getInstance(input); 4971 } 4972 } catch (intlErr) {} 4973 return null; 4974 } 4975 4976 function syncPhoneNumberForSubmit() { 4977 var telInput = document.querySelector('.tel-number, input[name="phone_number"]'); 4978 if (!telInput) { 4979 return ''; 4980 } 4981 4982 var iti = getIntlTelInputInstance(telInput); 4983 var phoneValue = ''; 4984 if (iti && typeof iti.getNumber === 'function') { 4985 phoneValue = (iti.getNumber() || '').trim(); 4986 } 4987 4988 if (!phoneValue) { 4989 phoneValue = (telInput.value || '').trim(); 4990 } 4991 4992 if (!phoneValue) { 4993 return ''; 4994 } 4995 4996 if (phoneValue.indexOf('+') !== 0 && iti && typeof iti.getSelectedCountryData === 'function') { 4997 var dialCode = iti.getSelectedCountryData().dialCode; 4998 var digitsOnly = phoneValue.replace(/\D/g, ''); 4999 if (dialCode && digitsOnly) { 5000 phoneValue = '+' + dialCode + digitsOnly; 5001 } 5002 } 5003 5004 $('.tel-number, input[name="phone_number"]').val(phoneValue); 5005 return phoneValue; 5006 } 5007 5008 function getGroupUserDataFromParent(groupId) { 5009 try { 5010 var raw = null; 5011 if (window.parent && window.parent !== window) { 5012 if (window.parent.$ && window.parent.$('#' + groupId).length) { 5013 raw = window.parent.$('#' + groupId).val(); 5014 } 5015 if (!raw && window.parent.document.getElementById(groupId)) { 5016 raw = window.parent.document.getElementById(groupId).value; 5017 } 5018 } 5019 if (!raw) { 5020 return null; 5021 } 5022 return JSON.parse(raw); 5023 } catch (e) { 5024 return null; 5025 } 5026 } 5027 5028 function restoreGroupUserPhoneFromParentOnIframeLoad() { 5029 return; 5030 } 5031 5032 function whenIntlTelInputReady(input, callback, attempt, allowWithoutUtils) { 5033 attempt = attempt || 0; 5034 var inputWindow = input.ownerDocument ? input.ownerDocument.defaultView : null; 5035 var iti = getIntlTelInputInstance(input); 5036 var utilsReady = inputWindow && inputWindow.intlTelInputUtils; 5037 5038 if (iti && typeof iti.setNumber === 'function' && (utilsReady || allowWithoutUtils)) { 5039 callback(iti, inputWindow); 5040 return; 5041 } 5042 5043 if (attempt < 40) { 5044 setTimeout(function () { 5045 whenIntlTelInputReady(input, callback, attempt + 1, allowWithoutUtils); 5046 }, attempt < 12 ? 40 : 100); 5047 return; 5048 } 5049 5050 if (iti && typeof iti.setNumber === 'function') { 5051 callback(iti, inputWindow); 5052 } 5053 } 5054
5055 function resolveGroupUserPhoneCountryIso($iframeContents, userData) { 5056 if (userData && userData.phone_country_iso) { 5057 return String(userData.phone_country_iso).toLowerCase(); 5058 } 5059 5060 var inputWindow = $iframeContents[0] && $iframeContents[0].defaultView ? $iframeContents[0].defaultView : null; 5061 var countryName = null; 5062 5063 $iframeContents.find('select.country_list').each(function () { 5064 var fieldName = $(this).attr('name'); 5065 if (userData && userData[fieldName]) { 5066 countryName = userData[fieldName]; 5067 return false; 5068 } 5069 if ($(this).val()) { 5070 countryName = $(this).val(); 5071 return false; 5072 } 5073 }); 5074 5075 if (!countryName && userData && userData.country) { 5076 countryName = userData.country; 5077 } 5078 5079 if (!countryName || !inputWindow || !inputWindow.intlTelInputGlobals) { 5080 return null; 5081 } 5082 5083 var normalizedTarget = String(countryName).trim().toLowerCase(); 5084 var countries = inputWindow.intlTelInputGlobals.getCountryData() || []; 5085 for (var i = 0; i < countries.length; i++) { 5086 if (String(countries[i].name).toLowerCase() === normalizedTarget) { 5087 return countries[i].iso2; 5088 } 5089 } 5090 for (var j = 0; j < countries.length; j++) { 5091 var countryLabel = String(countries[j].name).toLowerCase(); 5092 if (countryLabel.indexOf(normalizedTarget) !== -1 || normalizedTarget.indexOf(countryLabel) !== -1) { 5093 return countries[j].iso2; 5094 } 5095 } 5096 5097 return null; 5098 } 5099 5100 function setGroupUserPhoneField($iframeContents, phoneValue, userData) { 5101 if (phoneValue == null || phoneValue === '') { 5102 return; 5103 } 5104 5105 var formattedPhone = String(phoneValue).trim(); 5106 if (!formattedPhone) { 5107 return; 5108 } 5109 5110 var $phoneInput = $iframeContents.find('input.tel-number, input[name="phone_number"]').first(); 5111 if (!$phoneInput.length) { 5112 return; 5113 } 5114 5115 var input = $phoneInput[0]; 5116 userData = userData || {}; 5117 var countryIso = resolveGroupUserPhoneCountryIso($iframeContents, userData); 5118 var hasE164 = formattedPhone.indexOf('+') === 0; 5119 var canApplyEarly = !!(countryIso || hasE164); 5120 5121 // Show the saved digits immediately while intl-tel-input initializes. 5122 $phoneInput.val(formattedPhone); 5123 5124 function applyPhoneWithIti(iti) { 5125 if (countryIso && typeof iti.setCountry === 'function' && !hasE164) { 5126 iti.setCountry(countryIso); 5127 } 5128 iti.setNumber(formattedPhone); 5129 } 5130 5131 function pollIti(attempt) { 5132 attempt = attempt || 0; 5133 var iti = getIntlTelInputInstance(input); 5134 var inputWindow = input.ownerDocument ? input.ownerDocument.defaultView : null; 5135 var utilsReady = !!(inputWindow && inputWindow.intlTelInputUtils); 5136 5137 if (iti && typeof iti.setNumber === 'function') { 5138 if (canApplyEarly || utilsReady) { 5139 applyPhoneWithIti(iti); 5140 if (utilsReady) { 5141 return; 5142 } 5143 } 5144 } 5145 5146 if (attempt < 30) { 5147 setTimeout(function () { 5148 pollIti(attempt + 1); 5149 }, attempt < 12 ? 40 : 100); 5150 } 5151 } 5152 5153 pollIti(0); 5154 5155 if (canApplyEarly) { 5156 whenIntlTelInputReady(input, function (iti) { 5157 applyPhoneWithIti(iti); 5158 }, 0, false); 5159 } 5160 } 5161 5162 function setGroupUserSelectValue($select, value) { 5163 if (!$select.length) { 5164 return; 5165 } 5166 if (!$select.prop('multiple')) { 5167 var values = Array.isArray(value) ? value : [value]; 5168 values.forEach(function (optionValue) { 5169 if (optionValue == null || optionValue === '') { 5170 return; 5171 } 5172 if (!$select.find('option').filter(function () { return $(this).val() === optionValue; }).length) { 5173 $select.append($('<option></option>').attr('value', optionValue).text(optionValue)); 5174 } 5175 }); 5176 } 5177 $select.val(value).trigger('change'); 5178 if ($select.hasClass('select2-hidden-accessible') || $select.hasClass('searchable-select') || $select.hasClass('cstm-select')) { 5179 try { 5180 $select.trigger('change.select2'); 5181 } catch (select2Err) {} 5182 } 5183 } 5184
5185 function applyGroupUserDataToIframe($iframeContents, userData) { 5186 if (!$iframeContents || !$iframeContents.length || !userData) { 5187 return; 5188 } 5189 5190 var uniqueRadios = collectGroupUserFieldNames($iframeContents, 'radio'); 5191 var uniqueCheckbox = collectGroupUserFieldNames($iframeContents, 'checkbox'); 5192 5193 $.each(userData, function (index, value) { 5194 if (value !== null && typeof value === 'object' && !Array.isArray(value)) { 5195 return; 5196 } 5197 5198 5199 if (Array.isArray(value)) { 5200 var fieldNameWithBrackets = index + '[]'; 5201 var cleanedValues = value.filter(function (item) { 5202 return item != null && item !== ''; 5203 }); 5204 5205 if ($.inArray(fieldNameWithBrackets, uniqueRadios) !== -1) { 5206 $.each(cleanedValues, function (_, new_value) { 5207 checkGroupUserInputsByValue( 5208 $iframeContents.find('input[type="radio"][name="' + fieldNameWithBrackets + '"]'), 5209 new_value 5210 ); 5211 }); 5212 } else if ($.inArray(fieldNameWithBrackets, uniqueCheckbox) !== -1) { 5213 $.each(cleanedValues, function (_, new_value) { 5214 checkGroupUserInputsByValue( 5215 $iframeContents.find('input[type="checkbox"][name="' + fieldNameWithBrackets + '"]'), 5216 new_value 5217 ); 5218 }); 5219 } else { 5220 var $select = $iframeContents.find('#' + index); 5221 if (!$select.length) { 5222 $select = $iframeContents.find("[name='" + index + "']"); 5223 } 5224 if (!$select.length) { 5225 $select = $iframeContents.find("[name='" + fieldNameWithBrackets + "']"); 5226 } 5227 if ($select.length && $select.is('select')) { 5228 if ($select.prop('multiple')) { 5229 setGroupUserSelectValue($select, cleanedValues.length ? cleanedValues : value); 5230 } else if (cleanedValues.length) { 5231 setGroupUserSelectValue($select, cleanedValues[0]); 5232 } 5233 } else if (cleanedValues.length) { 5234 setGroupUserSelectValue($iframeContents.find('#' + index), cleanedValues.length === 1 ? cleanedValues[0] : cleanedValues); 5235 } 5236 } 5237 } else { 5238 var $fields = $iframeContents.find("[name='" + index + "']"); 5239 if (!$fields.length) { 5240 $fields = $iframeContents.find("[name='" + index + "[]']"); 5241 } 5242 5243 if ($fields.is(':checkbox')) { 5244 if (value == 1 || value === '1' || value === true) { 5245 $fields.prop('checked', true); 5246 } else if (value != null && value !== '' && value !== 0 && value !== '0') { 5247 checkGroupUserInputsByValue($fields, value); 5248 } 5249 } else if ($fields.is(':radio')) { 5250 checkGroupUserInputsByValue($fields, value); 5251 } else if ($fields.is('select')) { 5252 setGroupUserSelectValue($fields, value); 5253 } else if (index === 'phone_number' || $fields.first().hasClass('tel-number')) { 5254 return; 5255 } else { 5256 $fields.val(value); 5257 } 5258 } 5259 }); 5260 5261 if (userData.phone_number) { 5262 setGroupUserPhoneField($iframeContents, userData.phone_number, userData); 5263 } 5264 } 5265 5266 function populateGroupUserIframeFields(userFieldId, iframeSelector) { 5267 if (enableExpiredOwnedEditProfile10003110) { 5268 syncGroupUserHiddenFieldFromDisplay(userFieldId); 5269 } 5270 5271 var user_value = enableExpiredOwnedEditProfile10003110 5272 ? resolveGroupUserHiddenValue(userFieldId) 5273 : $('#' + userFieldId).val(); 5274 if (!user_value && window.parent && window.parent !== window) { 5275 try { 5276 user_value = $(window.parent.document).find('#' + userFieldId).val(); 5277 } catch (e) {} 5278 } 5279 if (!user_value) { 5280 return false;
5281 } 5282 5283 var targetIframeSelector = getActiveGroupRegistrationIframeSelector(iframeSelector); 5284 var $iframeContents = $(targetIframeSelector).contents(); 5285 if (!$iframeContents.length) { 5286 return false; 5287 } 5288 5289 var userData; 5290 try { 5291 userData = jQuery.parseJSON(user_value); 5292 } catch (e) { 5293 return false; 5294 } 5295 5296 applyGroupUserDataToIframe($iframeContents, userData); 5297 restoreCountryDependentStates($iframeContents, userData); 5298 5299 return $iframeContents.find("[name='email']").val() !== ''; 5300 } 5301 5302 5303 5304 jQuery(document).ready(function () { 5305 $(".cstm-select").select2(); 5306 var $isGroupRegistration = 0; 5307 if($isGroupRegistration){ 5308 setTimeout(function () { 5309 $(".searchable-select").trigger('change'); 5310 }, 1000); 5311 } 5312 if (!$isGroupRegistration) { 5313 setTimeout(function () { 5314 if ($('select.user_list').length) { 5315 $('.coupn-code-sec').parent('div').find('label').text('Group Discount'); 5316 } 5317 }, 500); 5318 } 5319 5320 setTimeout(function () { 5321 $('#loadingMessage').css('display', 'none'); 5322 $('#loadingMessage1').css('display', 'none'); 5323 }, 500); 5324 5325 if (!isEditProfileLimitOptionPage() && window.location.search.indexOf('group=') === -1 && $('.form_field_grp[data-is-limit-field="1"]').length) { 5326 setTimeout(initParentLimitedFieldSync, 1200); 5327 } else if (window.location.search.indexOf('group=') !== -1 && $('.form_field_grp[data-is-limit-field="1"]').length) { 5328 setTimeout(initGroupChildLimitedFieldSync, 800); 5329 } 5330 5331 $('.user_list').change(function () { 5332 5333 if ($("#bypass_auto").length != 0) { 5334 $('.user-links').css("display", "none"); 5335 } else { 5336 $('.user-links').css("display", "block"); 5337 } 5338 if (isTicket) { 5339 $('.user-links').hide(); 5340 } 5341 5342 var isGroupRegistrationField = ''; 5343 val = $(this).val(); 5344 $(".user-number").each(function (index) { 5345 if ((index + 1) > val) { 5346 $(this).removeClass('btn-success'); 5347 $(this).find('.fa-check').addClass('fa-plus').removeClass('fa-check'); 5348 data_id = $(this).attr('data-id'); 5349 $('#' + data_id).val(''); 5350 } 5351 $(this).css("display", "none"); 5352 }); 5353 if (isTicket) { 5354 val = 0; 5355 $('.qty_package').each(function () { 5356 if ($(this).val() != '') { 5357 val = parseInt(val) + parseInt($(this).val()); 5358 } 5359 }); 5360 } 5361 5362 for (i = 1; i <= val; i++) { 5363 $('.user-num' + i).css("display", "block"); 5364 } 5365 }); 5366 5367 $(document).on('click', '.user-number', function() { 5368 // $('.user-number').click(function () { 5369 var dataBuyer=0; 5370 if(localStorage.getItem("buyer")){ 5371 dataBuyer=localStorage.getItem("buyer"); 5372 } 5373 5374 // Initialize an empty array to hold the IDs 5375 var dropdownIds = []; 5376 5377 // Select all 'select' elements that have options with data-limit-option 5378 $('select').each(function() { 5379 // Push the id attribute of each select element into the array 5380 var id = $(this).attr('id'); 5381 5382 5383 if(id) { 5384 $(this).find('option').each(function() { 5385 var option = $(this); 5386 if (option.data('limit-option')) { 5387 dropdownIds.push(id); 5388 return false; 5389 } 5390 }); 5391 5392 } 5393 }); 5394 5395 console.log("All select IDs:", dropdownIds); 5396 // // Array to hold the IDs of the selects 5397 // var selectedIds = {}; 5398 // 5399 // // Counter for the selects with the specified option selected 5400 // var count = 0; 5401 // 5402 // // Iterate over each select element 5403 // $('select').each(function() { 5404 // var selectId = $(this).attr('id'); 5405 // 5406 // // Iterate over each option in the select 5407 // $(this).find('option').each(function() { 5408 // var option = $(this); 5409 // 5410 // // Check if the option has data-limit-option="1" and is selected 5411 // if (option.data('limit-option') >= 1 && option.is(':selected')) { 5412 // selectedIds[selectId] = option.val(); 5413 // count++; 5414 // } 5415 // }); 5416 // }); 5417 // 5418 // // Output the results 5419 // console.log("IDs of selects with the specified option selected:", selectedIds); 5420 // console.log("Count of selects with the specified option selected:", count); 5421 5422 var isGroupRegistrationField = ''; 5423 var isTicket = ''; 5424 var id = $(this).attr('data-id'); 5425 if (enableExpiredOwnedEditProfile10003110) { 5426 syncGroupUserHiddenFieldFromDisplay(id); 5427 } 5428 var user_value = enableExpiredOwnedEditProfile10003110 ? resolveGroupUserHiddenValue(id) : $("#" + id).val(); 5429 5430 5431 if (isGroupRegistrationField && isTicket) { 5432 jQuery('#addattendee2 iframe').attr('src', ''); 5433 $('#loadingMessage1').css('display', 'block'); 5434 5435 } else { 5436 jQuery('#videoModal iframe').attr('src', ''); 5437 $('#loadingMessage').css('display', 'block'); 5438 5439 } 5440 5441 5442 var group_emails; 5443 if (enableExpiredOwnedEditProfile10003110) { 5444 group_emails = buildGroupRegistrationEmailsList(); 5445 } else { 5446 group_emails = $("input[name='user_list[]']").map(function () { 5447 if ($(this).val()) { 5448 var obj = jQuery.parseJSON($(this).val()); 5449 if (obj.email) { 5450 return obj.email; 5451 } else { 5452 return; 5453 } 5454 } 5455 }).get(); 5456 if ($("input[type ='email']").val()) { 5457 group_emails.push($("input[type ='email']").val()); 5458 } 5459 group_emails = group_emails.join(","); 5460 } 5461 5462 if (isGroupRegistrationField && isTicket && typeof syncTicketPackagesToStorage === 'function') { 5463 syncTicketPackagesToStorage(); 5464 } 5465 5466 var timestamp = new Date().getTime(); 5467 var assignedPackageId = localStorage.getItem('savedPackage') || ''; 5468 var assignedPackageQuery = '&ticket_package=' + encodeURIComponent(assignedPackageId); 5469 if (isGroupRegistrationField && isTicket) { 5470 var currentURL = window.location.href; 5471 var groupEmailsQuery = group_emails; 5472 if (enableExpiredOwnedEditProfile10003110) { 5473 currentURL = resolveEditProfileRegistrationFormUrl(); 5474 groupEmailsQuery = encodeURIComponent(group_emails); 5475 } else if (currentURL.includes("editProfileV2")) { 5476 var baseURL = currentURL.split('/form/')[0]; 5477 currentURL = baseURL + '/registration-form'; 5478 } 5479 jQuery('#addattendee2 iframe').attr('src', appendParentLimitContextToGroupUrl(currentURL + '?no-cache=true&group=' + id + '&group_emails=' + groupEmailsQuery + '×tamp=' + timestamp + '&buyer=' + dataBuyer + assignedPackageQuery, id)); 5480 scheduleDynamicLimitUpdates(dropdownIds, '#iframe-id-new', id); 5481 bindGroupUserStateRestoreOnIframeLoad(id); 5482 if (enableExpiredOwnedEditProfile10003110) { 5483 jQuery('#iframe-id-new').off('load.groupUserPopulate').on('load.groupUserPopulate', function () { 5484 hideGroupRegistrationLoadingIndicators(); 5485 populateGroupUserIframeFields(id, '#iframe-id-new'); 5486 }); 5487 } 5488 } else { 5489 jQuery('#videoModal iframe').attr('src', appendParentLimitContextToGroupUrl(window.location.href + '?no-cache=true&group=' + id + '&group_emails=' + group_emails + '×tamp=' + timestamp + '&buyer=' + dataBuyer, id)); 5490 scheduleDynamicLimitUpdates(dropdownIds, '#iframe-id', id); 5491 } 5492 // $("#card-element iframe").on("load", function(e){ 5493 // $(this).contents().find(".CardNumberField-input-wrapper input").css("width", "100%"); 5494 // }); 5495 if (isGroupRegistrationField && isTicket) { 5496 setTimeout(function () { 5497 try { 5498 if (enableExpiredOwnedEditProfile10003110) { 5499 populateGroupUserIframeFields(id, '#iframe-id-new'); 5500 } else if (user_value != '') { 5501 var parsedUserData = jQuery.parseJSON(user_value); 5502 var $iframeContentsForRestore = $("#iframe-id-new").contents();
5503 applyGroupUserDataToIframe($iframeContentsForRestore, parsedUserData); 5504 restoreCountryDependentStates($iframeContentsForRestore, parsedUserData); 5505 } 5506 var email_content=$("#iframe-id-new").contents().find("[name='email']").val(); 5507 if(email_content != ''){ 5508 if (isTicket) { 5509 var ud_profile = $('input[name="ud_profile"]').val(); 5510 var iframeContents = $("#iframe-id-new").contents(); 5511 5512 var newHiddenInput = $("<input>", { 5513 type: "hidden", 5514 id: "IsEditProfileTicket", 5515 name: "is_edit_profile_ticket", 5516 value: "true" 5517 }); 5518 iframeContents.find('#off_fields').after(newHiddenInput); 5519 5520 5521 $("#iframe-id-new").contents().find("[name='email']").append('<div class="edit-block-open"></div>') 5522 var buyer = localStorage.getItem("buyer"); 5523 if(parseInt(buyer) && (ud_profile == 1 || ud_profile == 2)){ 5524 $("#iframe-id-new").contents().find("[name='email']").prop('readonly', true); 5525 $("#iframe-id-new").contents().find("input, select, radio, checkbox").prop('readonly', true); 5526 } 5527 } 5528 5529 } 5530 if (isTicket) { 5531 var savedPackage = localStorage.getItem("savedPackage"); 5532 // console.log('savedPackage'); 5533 // console.log(savedPackage); 5534 5535 var $packageContainer; 5536 5537 5538 let appId = 20550; 5539 let excluded_app_ids = [18414]; 5540 if(excluded_app_ids.includes(appId) || enableExpiredOwnedEditProfile10003110){ 5541 $packageContainer = $('#packageContainerBlock' + savedPackage); 5542 }else{ 5543 try { 5544 // Attempt to access the parent document 5545 $packageContainer = $('#packageContainerBlock' + savedPackage, window.parent.document); 5546 } catch (e) { 5547 if (e instanceof DOMException) { 5548 // If a cross-origin error occurs, fallback to the current document 5549 console.error('Cross-origin access error:', e); 5550 $packageContainer = $('#packageContainerBlock' + savedPackage); 5551 } else { 5552 // If some other error occurs, rethrow it 5553 throw e; 5554 } 5555 } 5556 } 5557 5558 5559 var data = {}; 5560 $count_addons = {}; 5561 var selected_addons = {}; 5562 $packageContainer.find('> .aPackage').each(function () { 5563 var $package = $(this); 5564 var blockId = $package.attr("data-pack"); 5565 5566 var packageId = $package.attr("data-package"); 5567 var addonsArray = $package.attr("data-addons"); 5568 if (enableExpiredOwnedEditProfile10003110) { 5569 addonsArray = (addonsArray || '').split(',').filter(function (value) { 5570 return value !== ''; 5571 }); 5572 } else { 5573 addonsArray = addonsArray.split(','); 5574 } 5575 5576 $.each(addonsArray, function (key, value) { 5577 5578 console.log("email_content"+email_content); 5579 if(email_content){ 5580 5581 if('user'+blockId == id){ 5582 if (selected_addons[value]) { 5583 selected_addons[value] = selected_addons[value] + 1; 5584 } else { 5585 selected_addons[value] = 1; 5586 } 5587 } 5588 5589 } 5590 5591 if(value && value !=""){ 5592 if ($count_addons[value]) { 5593 $count_addons[value] = $count_addons[value] + 1; 5594 5595 } else { 5596 $count_addons[value] = 1; 5597 } 5598 } 5599 }); 5600 5601 }); 5602 //Total used till now 5603 data[savedPackage] = $count_addons; 5604 // Used in edit page only 5605 5606 5607 // addons=TicketPackages[savedPackage]; 5608 addons_html = ''; 5609 5610 // For app 1000001457: pre-select all addons when "Add a New User" (no existing selection) 5611 var preSelectAllAddonsForNewUser = (String(appId) === '1000001457' && jQuery.isEmptyObject(selected_addons)); 5612 5613 $.each(TicketPackages, function (packageId, package) { 5614 5615 if(!isNaN(parseFloat(packageId)) && isFinite(packageId)) { 5616 5617 if (packageId == savedPackage) { 5618 5619 // Iterate through each item/package addon 5620 $.each(package, function (key, item) { 5621 if (key !== 'pkg_price' && key !== 'total_price' && key !== 'tax' &&
5621key !== 'pkg_qty' && key !== 'symbol') { 5622 5623 5624 if (data[savedPackage][item.id]) { 5625 used_quantities = data[savedPackage][item.id]; 5626 // if(selected_addons[item.id] && email_content){ 5627 // used_quantities=parseInt(used_quantities) -parseInt(selected_addons[item.id]); 5628 // } 5629 total_quantities = item.addons_qty; 5630 remaining_total_quantities = total_quantities - used_quantities; 5631 } else { 5632 remaining_total_quantities = item.addons_qty; 5633 } 5634 5635 if (item.id) { 5636 var count = 0 5637 if (remaining_total_quantities > 0) { 5638 while (count < parseInt(remaining_total_quantities)) { 5639 5640 // } 5641 // for (i = 0; i < parseInt(remaining_total_quantities); i++) { 5642 if (!jQuery.isEmptyObject(selected_addons)) { 5643 5644 if (selected_addons[item.id] && selected_addons[item.id] > 0 && email_content) { 5645 addons_html += '<option value="' + item.id + '" selected>' + item.addons_name + '</option>'; 5646 selected_addons[item.id] = selected_addons[item.id] - 1; 5647 5648 console.log("selected_addons MINUS"); 5649 console.log(selected_addons); 5650 } else { 5651 addons_html += '<option value="' + item.id + '"' + (String(appId) === '1000001457' && preSelectAllAddonsForNewUser ? ' selected' : '') + '>' + item.addons_name + '</option>'; 5652 console.log("MINUS 2"); 5653 count = count + 1; 5654 } 5655 } else { 5656 addons_html += '<option value="' + item.id + '"' + (String(appId) === '1000001457' && preSelectAllAddonsForNewUser ? ' selected' : '') + '>' + item.addons_name + '</option>'; 5657 console.log(" MINUS 3"); 5658 count = count + 1; 5659 } 5660 5661 } 5662 } else { 5663 var size = Object.keys(selected_addons).length; 5664 if (!jQuery.isEmptyObject(selected_addons)) { 5665 while (selected_addons[item.id] > 0) { 5666 5667 5668 if (selected_addons[item.id] && selected_addons[item.id] > 0 && email_content) { 5669 addons_html += '<option value="' + item.id + '" selected>' + item.addons_name + '</option>'; 5670 selected_addons[item.id] = selected_addons[item.id] - 1; 5671 5672 } 5673 } 5674 } 5675 5676 } 5677 5678 } 5679 5680 } 5681 }); 5682 } 5683 } 5684 }); 5685 5686 let addonInitInterval = setInterval(function () { 5687 5688 if ($("#iframe-id-new").contents().find('#field_addons').length) { 5689 5690 $("#iframe-id-new").contents().find('#field_addons').append(addons_html); 5691 $("#iframe-id-new").contents().find('#field_addons').trigger('change.select2'); 5692 5693 /* Show addons dropdown only if it has any option */ 5694 if (addons_html != "") { 5695 $("#iframe-id-new").contents().find('#field_addons').parent().show(); 5696 } else { 5697 $("#iframe-id-new").contents().find('#field_addons').parent().hide(); 5698 } 5699 5700 clearInterval(addonInitInterval); 5701 } 5702 5703 }, 500); 5704 5705 /* Hide addons dropdown by default */ 5706 $("#iframe-id-new").contents().find('#field_addons').parent().hide(); 5707 5708 5709 5710 if($('.edit-block-open').length == 1){ 5711 5712 } 5713 5714 5715 5716 } 5717 5718 5719 $("#iframe-id-new").contents().find(".header-content").css("display", "none"); 5720 $("#iframe-id-new").contents().find(".page-heading").css("display", "none"); 5721 $("#iframe-id-new").contents().find(".osano-cm-window__widget").css("display", "none"); 5722 setTimeout(function () { 5723 $("#iframe-id-new").contents().find(".osano-cm-window__widget").css("display", "none"); 5724 $("#iframe-id-new").contents().find("#launcher").css("display", "none"); 5725 }, 3000); 5726 5727 5728 $('#launcher').css('display', 'none'); 5729 $('#loadingMessage1').css('display', 'none'); 5730 $('#loadingMessage').css('display', 'none'); 5731 $('.page-heading').css('display', 'none'); 5732 // Check iframe-id-new URL for buyer parameter and hide fields accordingly 5733 var iframeNewSrc = jQuery('#iframe-id-new').attr('src'); 5734 if (iframeNewSrc && iframeNewSrc.includes('buyer=1')) { 5735 console.log('Found buyer=1 in iframe-id-new, setting up field readonly:', iframeNewSrc); 5736 hideFieldsInIframe(); 5737 } 5738 5739 try { 5740 var groupIframe = document.getElementById('iframe-id-new'); 5741 if (typeof postTicketPackagesToGroupIframe === 'function') { 5742 postTicketPackagesToGroupIframe(groupIframe); 5743 } 5744 } catch (postMessageErr) { 5745 console.error('Unable to post TicketPackages to group iframe:', postMessageErr); 5746 } 5747
5748 // App 10003110: ticketDependency() in the iframe can clear fields after TicketPackages postMessage 5749 if (enableExpiredOwnedEditProfile10003110) { 5750 setTimeout(function () { 5751 populateGroupUserIframeFields(id, '#iframe-id-new'); 5752 email_content = $("#iframe-id-new").contents().find("[name='email']").val(); 5753 if (email_content != '' && isTicket && !$("#iframe-id-new").contents().find('#IsEditProfileTicket').length) { 5754 var iframeContents = $("#iframe-id-new").contents(); 5755 iframeContents.find('#off_fields').after($("<input>", { 5756 type: "hidden", 5757 id: "IsEditProfileTicket", 5758 name: "is_edit_profile_ticket", 5759 value: "true" 5760 })); 5761 } 5762 }, 150); 5763 } 5764 5765 /** 5766 * Ticket group registration (#iframe-id-new / assign-user-to-package): 5767 * Recalculate is_limitOption remaining counts for the child iframe. 5768 * Child users are only in browser state (user_list[]) until final submit, 5769 * so PHP DB counts stay stale â this JS decrements from parent + siblings. 5770 * applyDelay=500 because the ticket iframe is already loaded by this point. 5771 */ 5772 5773 } catch (groupIframeErr) { 5774 if (enableExpiredOwnedEditProfile10003110) { 5775 console.error('Unable to initialize group registration iframe:', groupIframeErr); 5776 } else { 5777 throw groupIframeErr; 5778 } 5779 } finally { 5780 if (enableExpiredOwnedEditProfile10003110) { 5781 hideGroupRegistrationLoadingIndicators(); 5782 } 5783 } 5784 5785 }, enableExpiredOwnedEditProfile10003110 ? 8000 : 6000); 5786 // $("#iframe-id-new").remove(); 5787 } else { 5788 5789 setTimeout(function () { 5790 $("#iframe-id").contents().find(".header-content").css("display", "none"); 5791 $('#loadingMessage').css('display', 'none'); 5792 $('#loadingMessage1').css('display', 'none'); 5793 $('.page-heading').css('display', 'none'); 5794 5795 var $iframeContents = $("#iframe-id").contents(); 5796 // console.log(selectedIds); 5797 5798 /** 5799 * Non-ticket group registration (#iframe-id): 5800 * Limit recalculation is handled by scheduleDynamicLimitUpdates on iframe load. 5801 */ 5802 5803 5804 5805 }, 3000); 5806 5807 } 5808 }); 5809 5810 }); 5811 /** 5812 * Resolve which group-registration child iframe is active. 5813 * - Ticket forms: #iframe-id-new (addattendee2 offcanvas) 5814 * - Non-ticket forms: #iframe-id (videoModal) 5815 * @param {string|null} preferredSelector Explicit iframe selector when known 5816 * @returns {string} jQuery selector for the active iframe 5817 */ 5818 function getActiveGroupRegistrationIframeSelector(preferredSelector) { 5819 if (preferredSelector && $(preferredSelector).length && $(preferredSelector).attr('src')) { 5820 return preferredSelector; 5821 } 5822 // Prefer ticket iframe when it has a loaded src; otherwise fall back to non-ticket 5823 if ($('#iframe-id-new').length && $('#iframe-id-new').attr('src')) { 5824 return '#iframe-id-new'; 5825 } 5826 return '#iframe-id'; 5827 } 5828 /** 5829 * Snapshot parent/main-form limited field selections for child group-registration URLs. 5830 * @returns {Object} 5831 */ 5832 function collectParentLimitConsumptionSnapshot() { 5833 var snapshot = {}; 5834 var $scope = $(document); 5835 5836 collectLimitedCheckboxGroupIds($scope).forEach(function (groupId) { 5837 var selected = []; 5838 $scope.find('input[type="checkbox"][name="' + groupId + '[]"]:checked').each(function () { 5839 var val = $(this).val(); 5840 if (val) { 5841 selected.push(val); 5842 } 5843 }); 5844 if (selected.length) { 5845 snapshot[groupId] = selected; 5846 } 5847 }); 5848 5849 collectLimitedDropdownIds($scope).forEach(function (selectId) { 5850 var $select = $scope.find('#' + selectId); 5851 if (!$select.length) { 5852 return; 5853 } 5854 var val = $select.val(); 5855 if (!val || val === '') { 5856 return; 5857 } 5858 snapshot[selectId] = $.isArray(val) ? val : [val]; 5859 }); 5860 5861 return snapshot; 5862 } 5863 5864 function resolveEditProfileGroupChildUserId(editingUserId) { 5865 if (!editingUserId) { 5866 return null; 5867 } 5868 5869 var childUserValue = resolveGroupUserHiddenValue(editingUserId); 5870 if (childUserValue) { 5871 try { 5872 var childUserObj = JSON.parse(childUserValue.replace(/"/g, '"'));
5873 if (childUserObj && childUserObj.user_id) { 5874 return childUserObj.user_id; 5875 } 5876 } catch (e) {} 5877 } 5878 5879 if (typeof userDetailsEditTicket !== 'object' || !userDetailsEditTicket) { 5880 return null; 5881 } 5882 5883 var slot = parseInt(String(editingUserId).replace(/^user/i, ''), 10); 5884 if (isNaN(slot) || slot < 1) { 5885 return null; 5886 } 5887 5888 var matchIndex = 0; 5889 var foundUserId = null; 5890 5891 $.each(userDetailsEditTicket, function (packageId, packageArray) { 5892 if (foundUserId || !$.isArray(packageArray)) { 5893 return; 5894 } 5895 $.each(packageArray, function (index, packageDetails) { 5896 if (foundUserId) { 5897 return false; 5898 } 5899 matchIndex++; 5900 if (matchIndex === slot && packageDetails && packageDetails.user_id) { 5901 foundUserId = packageDetails.user_id; 5902 return false; 5903 } 5904 }); 5905 }); 5906 5907 return foundUserId; 5908 } 5909 5910 /** 5911 * Snapshot limited-field selections saved on the child user_list[] slot being edited. 5912 * @param {string|null} editingUserId 5913 * @returns {Object} 5914 */ 5915 function collectGroupEditingUserLimitSnapshot(editingUserId) { 5916 var snapshot = {}; 5917 if (!editingUserId) { 5918 return snapshot; 5919 } 5920 5921 var userValue = resolveGroupUserHiddenValue(editingUserId); 5922 if (!userValue && typeof isEditProfileLimitOptionPage === 'function' && isEditProfileLimitOptionPage()) { 5923 userValue = $('#' + editingUserId).val(); 5924 } 5925 if (!userValue) { 5926 return snapshot; 5927 } 5928 5929 try { 5930 var userObj = JSON.parse(userValue.replace(/"/g, '"')); 5931 var $scope = $(document); 5932 5933 collectLimitedCheckboxGroupIds($scope).forEach(function (groupId) { 5934 var val = normalizeUserListFieldValue(getUserListFieldValue(userObj, groupId)); 5935 if (!val) { 5936 return; 5937 } 5938 if (!Array.isArray(val)) { 5939 val = [val]; 5940 } 5941 val = val.filter(Boolean); 5942 if (val.length) { 5943 snapshot[groupId] = val; 5944 } 5945 }); 5946 5947 collectLimitedDropdownIds($scope).forEach(function (selectId) { 5948 var val = normalizeUserListFieldValue(getUserListFieldValue(userObj, selectId)); 5949 if (!val) { 5950 return; 5951 } 5952 if (Array.isArray(val)) { 5953 val = val.filter(Boolean); 5954 if (val.length) { 5955 snapshot[selectId] = val; 5956 } 5957 } else { 5958 snapshot[selectId] = [val]; 5959 } 5960 }); 5961 } catch (e) {} 5962 5963 return snapshot; 5964 } 5965 5966 /** 5967 * Append encoded parent/editing-user limit context for child iframe PHP rendering. 5968 * @param {string} url 5969 * @param {string|null} editingUserId 5970 * @returns {string} 5971 */ 5972 function appendParentLimitContextToGroupUrl(url, editingUserId) { 5973 try { 5974 var separator = url.indexOf('?') === -1 ? '?' : '&'; 5975 var snapshot = collectParentLimitConsumptionSnapshot(); 5976 if (snapshot && Object.keys(snapshot).length) { 5977 var encoded = btoa(unescape(encodeURIComponent(JSON.stringify(snapshot)))); 5978 url += separator + 'parent_limit_ctx=' + encodeURIComponent(encoded); 5979 separator = '&'; 5980 } 5981 5982 var editSnapshot = collectGroupEditingUserLimitSnapshot(editingUserId); 5983 if (editSnapshot && Object.keys(editSnapshot).length) { 5984 var editEncoded = btoa(unescape(encodeURIComponent(JSON.stringify(editSnapshot)))); 5985 url += separator + 'group_edit_ctx=' + encodeURIComponent(editEncoded); 5986 separator = '&'; 5987 } 5988 5989 if (typeof isEditProfileLimitOptionPage === 'function' && isEditProfileLimitOptionPage()) { 5990 url += separator + 'edit_profile_group=1'; 5991 separator = '&'; 5992 5993 var parentPageParams = new URLSearchParams(window.location.search); 5994 var parentAdminAccess = parentPageParams.get('admin_access'); 5995 if (parentAdminAccess) { 5996 url += separator + 'admin_access=' + encodeURIComponent(parentAdminAccess); 5997 separator = '&'; 5998 } 5999 var parentAccesId = parentPageParams.get('acces_id') || parentPageParams.get('access_id'); 6000 if (parentAccesId) {
6001 url += separator + 'acces_id=' + encodeURIComponent(parentAccesId); 6002 separator = '&'; 6003 } 6004 6005 var parentUserId = $('input[name="user_id"]').val(); 6006 if (parentUserId) { 6007 url += separator + 'parent_edit_user_id=' + encodeURIComponent(parentUserId); 6008 separator = '&'; 6009 } 6010 6011 var parentFormId = $('input[name="form_id"]').val() || $('#form_id').val(); 6012 if (parentFormId) { 6013 url += separator + 'parent_form_id=' + encodeURIComponent(parentFormId); 6014 separator = '&'; 6015 } 6016 6017 var childUserValue = resolveGroupUserHiddenValue(editingUserId); 6018 if (childUserValue) { 6019 try { 6020 var childUserObj = JSON.parse(childUserValue.replace(/"/g, '"')); 6021 if (childUserObj && childUserObj.user_id) { 6022 url += separator + 'edit_profile_child_user_id=' + encodeURIComponent(childUserObj.user_id
6022); 6023 separator = '&'; 6024 } 6025 } catch (childUserParseErr) {} 6026 } 6027 6028 if (url.indexOf('edit_profile_child_user_id=') === -1) { 6029 var resolvedChildUserId = resolveEditProfileGroupChildUserId(editingUserId); 6030 if (resolvedChildUserId) { 6031 url += separator + 'edit_profile_child_user_id=' + encodeURIComponent(resolvedChildUserId); 6032 separator = '&'; 6033 } 6034 } 6035 } 6036 6037 return url; 6038 } catch (e) { 6039 return url; 6040 } 6041 } 6042 6043 /** 6044 * Apply dynamic limit updates as soon as the child iframe is ready (with a short fallback). 6045 * @param {string[]} dropdownIds Limited select field ids on the parent form 6046 * @param {string} iframeSelector Child iframe selector (#iframe-id or #iframe-id-new) 6047 */ 6048 function scheduleDynamicLimitUpdates(dropdownIds, iframeSelector, editingUserId) { 6049 var $iframe = $(iframeSelector); 6050 if (!$iframe.length) { 6051 return; 6052 } 6053 6054 var populateScheduled = false; 6055 6056 function populateEditingUserFields() { 6057 if (!editingUserId || populateScheduled) { 6058 return; 6059 } 6060 var userValue = $('#' + editingUserId).val(); 6061 if (!userValue) { 6062 return; 6063 } 6064 populateScheduled = true; 6065 populateGroupUserIframeFields(editingUserId, iframeSelector); 6066 } 6067 6068 function applyLimits() { 6069 if (isParentEditProfileLimitOptionPage()) { 6070 if (editingUserId) { 6071 setTimeout(populateEditingUserFields, 100); 6072 setTimeout(populateEditingUserFields, 800); 6073 } 6074 return; 6075 } 6076 dynamicLimitDropdown(dropdownIds, 0, iframeSelector, 0, editingUserId); 6077 if (editingUserId) { 6078 setTimeout(populateEditingUserFields, 3200); 6079 } 6080 } 6081 6082 $iframe.off('load.dynamicLimits').on('load.dynamicLimits', function () { 6083 setTimeout(applyLimits, 100); 6084 }); 6085 6086 // Fallback for cached iframe loads; do not block later load-triggered updates 6087 setTimeout(applyLimits, 1500); 6088 } 6089 /** 6090 * Parent form document used for limit calculations. 6091 * @param {number} mainForm 6092 * @returns {jQuery} 6093 */ 6094 function getLimitCalculationContext(mainForm) { 6095 if (mainForm && window.parent && window.parent !== window) { 6096 return $(window.parent.document); 6097 } 6098 return $(document); 6099 } 6100 /** 6101 * Resolve a saved group-user field value from user_list JSON. 6102 * @param {Object} userObj 6103 * @param {string} fieldId 6104 * @returns {*} 6105 */ 6106 function getUserListFieldValue(userObj, fieldId) { 6107 if (!userObj) { 6108 return undefined; 6109 } 6110 if (Object.prototype.hasOwnProperty.call(userObj, fieldId)) { 6111 return userObj[fieldId]; 6112 } 6113 if (fieldId.indexOf('fld_') === 0) { 6114 var numericId = fieldId.substring(4); 6115 if (Object.prototype.hasOwnProperty.call(userObj, numericId)) { 6116 return userObj[numericId]; 6117 } 6118 } 6119 return undefined; 6120 } 6121 /** 6122 * Normalize checkbox/multi-select values stored in user_list JSON. 6123 * @param {*} value 6124 * @returns {Array|string|null} 6125 */ 6126 function normalizeUserListFieldValue(value) { 6127 if (Array.isArray(value)) { 6128 return value; 6129 } 6130 if (typeof value === 'string') { 6131 var trimmedValue = value.trim(); 6132 if (trimmedValue.charAt(0) === '[') { 6133 try { 6134 return JSON.parse(trimmedValue); 6135 } catch (e) {} 6136 } 6137 if (trimmedValue !== '') { 6138 return trimmedValue; 6139 } 6140 } 6141 return value; 6142 } 6143 /** 6144 * Collect checkbox-group field ids (fld_*) that have data-limit-option on their inputs. 6145 * @param {jQuery} $context 6146 * @returns {string[]} 6147 */ 6148 function collectLimitedCheckboxGroupIds($context) { 6149 var checkboxGroupIds = []; 6150 var $scope = $context || $(document); 6151 6152 $scope.find('input[type="checkbox"]').each(function () { 6153 var limitOption = $(this).attr('data-limit-option'); 6154 if (limitOption === undefined || limitOption === null || limitOption === '') { 6155 return; 6156 } 6157 6158 var name = $(this).attr('name'); 6159 if (!name) { 6160 return; 6161 } 6162
6163 var groupId = name.replace(/\[\]$/, ''); 6164 if (checkboxGroupIds.indexOf(groupId) === -1) { 6165 checkboxGroupIds.push(groupId); 6166 } 6167 }); 6168 6169 return checkboxGroupIds; 6170 } 6171 /** 6172 * Collect select field ids that contain data-limit-option options. 6173 * @param {jQuery|null} $context 6174 * @returns {string[]} 6175 */ 6176 function collectLimitedDropdownIds($context) { 6177 var dropdownIds = []; 6178 var $scope = $context || $(document); 6179 6180 $scope.find('select').each(function () { 6181 var id = $(this).attr('id'); 6182 if (!id) { 6183 return; 6184 } 6185 6186 $(this).find('option').each(function () { 6187 if ($(this).attr('data-limit-option')) { 6188 dropdownIds.push(id); 6189 return false; 6190 } 6191 }); 6192 }); 6193 6194 return dropdownIds; 6195 } 6196 /** 6197 * Track a sold-out limited field in off_fields so required validation is skipped. 6198 * @param {string|null} fieldId 6199 * @param {jQuery|Document|null} scopeRoot Document/root that owns the submitting form 6200 */ 6201 function addFieldIdToOffFields(fieldId, scopeRoot) { 6202 if (!fieldId) { 6203 return; 6204 } 6205 6206 var $scope = scopeRoot && scopeRoot.jquery ? scopeRoot : $(scopeRoot || document); 6207 var $offFields = $scope.find('#off_fields').first(); 6208 if (!$offFields.length) { 6209 $offFields = $('#off_fields').first(); 6210 } 6211 if (!$offFields.length) { 6212 return; 6213 } 6214 6215 var current = []; 6216 var rawValue = $offFields.val(); 6217 if (rawValue) { 6218 try { 6219 current = JSON.parse(rawValue); 6220 } catch (e) { 6221 current = String(rawValue).split(',').map(function (item) { 6222 return item.trim(); 6223 }).filter(Boolean); 6224 } 6225 } 6226 6227 if (current.indexOf(fieldId) === -1) { 6228 current.push(fieldId); 6229 $offFields.val(current); 6230 } 6231 } 6232 6233 /** 6234 * True on the top-level main registration form (not group/child iframe/page). 6235 */ 6236 function isMainParentRegistrationForm() { 6237 return window.location.search.indexOf('group=') === -1 && window.self === window.top; 6238 } 6239 6240 /** 6241 * Hide a limited field group and its column wrapper when every option is sold out. 6242 * @param {jQuery} $fieldGroup 6243 * @param {string|null} fieldId 6244 */ 6245 function markSoldOutLimitedField($fieldGroup, fieldId) { 6246 if (!$fieldGroup || !$fieldGroup.length) { 6247 return; 6248 } 6249 6250 $fieldGroup.addClass('d-none').hide(); 6251 $fieldGroup.closest('div[class*="col-"]').addClass('d-none').hide(); 6252 $fieldGroup.find('select, input, textarea').prop('required', false).removeAttr('required'); 6253 $fieldGroup.find('select, input, textarea').prop('disabled', true); 6254 6255 if (fieldId) { 6256 var ownerDocument = $fieldGroup[0] && $fieldGroup[0].ownerDocument ? $fieldGroup[0].ownerDocument : document; 6257 addFieldIdToOffFields(fieldId, $(ownerDocument)); 6258 } 6259 } 6260 6261 /** 6262 * Restore a limited field group when at least one option is available again. 6263 * @param {jQuery} $fieldGroup 6264 */ 6265 function showAvailableLimitedField($fieldGroup) { 6266 if (!$fieldGroup || !$fieldGroup.length) { 6267 return; 6268 } 6269 6270 $fieldGroup.removeClass('d-none').show(); 6271 $fieldGroup.closest('div[class*="col-"]').removeClass('d-none').show(); 6272 $fieldGroup.find('select, input, textarea').prop('disabled', false); 6273 $fieldGroup.find('.radio-block-all').show(); 6274 } 6275 6276 /** 6277 * Whether a limited checkbox group still has at least one selectable option. 6278 * @param {jQuery} $fieldGroup 6279 * @returns {boolean} 6280 */ 6281 function limitedCheckboxGroupHasSelectableOption($fieldGroup) { 6282 return $fieldGroup.find('.radio_and_checkbox_element input[type="checkbox"]').length > 0; 6283 } 6284 6285 /** 6286 * Hide limited fields when every option is sold out (label-only or placeholder-only). 6287 * @param {jQuery|null} $root 6288 */ 6289 /** 6290 * True on Edit Profile / Upgrade pages where limits are computed server-side per user. 6291 */ 6292 function isEditProfileLimitOptionPage() { 6293 return window.location.href.indexOf('editProfileV2') !== -1; 6294 } 6295 6296 /** 6297 * True when this page or its parent is Edit Profile / Upgrade (child group iframe). 6298 */ 6299 function isParentEditProfileLimitOptionPage() { 6300 if (isEditProfileLimitOptionPage()) { 6301 return true; 6302 } 6303 try { 6304 if (window.parent && window.parent !== window && window.parent.location.href.indexOf('editProfileV2') !== -1) { 6305 return true; 6306 } 6307 } catch (parentAccessErr) {} 6308 return false;
6309 } 6310 6311 function isEditProfileLimitAdminBypass() { 6312 if (!hasAdminOrEventOwnerLimitBypass) { 6313 return false; 6314 } 6315 if (isEditProfileLimitOptionPage() || isParentEditProfileLimitOptionPage()) { 6316 return true; 6317 } 6318 return window.location.search.indexOf('edit_profile_group=1') !== -1; 6319 } 6320 6321 /** 6322 * Hidden user_list[] id for the child user being edited inside a group iframe. 6323 * @returns {string|null} 6324 */ 6325 function getGroupRegistrationEditingUserId() { 6326 var match = window.location.search.match(/[?&]group=([^&]+)/); 6327 return match ? decodeURIComponent(match[1]) : null; 6328 } 6329 6330 /** 6331 * Whether saved child user_list[] data includes any value for a limited field. 6332 * @param {Object} editingSelections 6333 * @param {string} fieldId 6334 * @returns {boolean} 6335 */ 6336 function groupEditingUserHasLimitedFieldSelection(editingSelections, fieldId) { 6337 if (!editingSelections || !fieldId) { 6338 return false; 6339 } 6340 6341 if (editingSelections[fieldId]) { 6342 return true; 6343 } 6344 6345 var numericId = fieldId.replace(/^fld_/, ''); 6346 if (numericId !== fieldId && editingSelections[numericId]) { 6347 return true; 6348 } 6349 6350 return false; 6351 } 6352 6353 function hideExhaustedLimitedFields($root) { 6354 if (isEditProfileLimitOptionPage() || isParentEditProfileLimitOptionPage() || isEditProfileLimitAdminBypass()) { 6355 return; 6356 } 6357 if (!$root || !$root.length) { 6358 return; 6359 } 6360 6361 var editingUserId = getGroupRegistrationEditingUserId(); 6362 var editingSelections = getEditingUserFieldSelections(editingUserId); 6363 6364 $root.find('.form_field_grp[data-is-limit-field="1"]').each(function () { 6365 var $grp = $(this); 6366 if ($grp.find('.radio_and_checkbox_element').length) { 6367 if (limitedCheckboxGroupHasSelectableOption($grp)) { 6368 showAvailableLimitedField($grp); 6369 } else { 6370 var checkboxName = $grp.find('input[type="checkbox"]').first().attr('name') || ''; 6371 var groupId = checkboxName.replace(/\[\]$/, ''); 6372 if (groupId && groupEditingUserHasLimitedFieldSelection(editingSelections, groupId)) { 6373 showAvailableLimitedField($grp); 6374 } else { 6375 markSoldOutLimitedField($grp, groupId); 6376 } 6377 } 6378 return; 6379 } 6380 6381 var $select = $grp.find('select').first(); 6382 if (!$select.length) { 6383 return; 6384 } 6385 6386 var hasValueOption = false; 6387 $select.find('option').each(function () { 6388 if ($(this).val()) { 6389 hasValueOption = true; 6390 return false; 6391 } 6392 }); 6393 6394 if (!hasValueOption) { 6395 var selectId = $select.attr('id'); 6396 if (selectId && groupEditingUserHasLimitedFieldSelection(editingSelections, selectId)) { 6397 showAvailableLimitedField($grp); 6398 } else { 6399 markSoldOutLimitedField($grp, selectId); 6400 } 6401 } else { 6402 showAvailableLimitedField($grp); 6403 } 6404 }); 6405 } 6406 6407 /** 6408 * Hide parent limited fields when every option is sold out (label-only or placeholder-only). 6409 * @param {jQuery|null} $root 6410 */ 6411 function hideExhaustedLimitedFieldsOnParent($root) { 6412 if (!$root || !$root.length) { 6413 $root = $(window.parent && window.parent !== window ? window.parent.document : document); 6414 } 6415 6416 hideExhaustedLimitedFields($root); 6417 } 6418 /** 6419 * Whether the parent/buyer email is already stored in an assigned user_list[] slot. 6420 * When true, parent DOM selections duplicate that slot and must not be counted again. 6421 * @param {jQuery|null} $context 6422 * @returns {boolean} 6423 */ 6424 function isBuyerAssignedInUserList($context) { 6425 return !!getBuyerUserListObject($context); 6426 } 6427 6428 /** 6429 * Return the user_list[] JSON object for the parent/buyer email, if assigned. 6430 * @param {jQuery|null} $context 6431 * @returns {Object|null} 6432 */ 6433 function getBuyerUserListObject($context) { 6434 var $scope = $context || $(document); 6435 var parentEmail = getParentRegistrationEmail(); 6436 if (!parentEmail) { 6437 return null; 6438 } 6439 6440 var buyerObj = null; 6441 $scope.find("input[name='user_list[]']").each(function () { 6442 var userData = $(this).val(); 6443 if (!userData) { 6444 return; 6445 } 6446 try { 6447 userData = userData.replace(/"/g, '"'); 6448 var userObj = JSON.parse(userData); 6449 var userEmail = (userObj.email || '').trim().toLowerCase(); 6450 if (userEmail && userEmail === parentEmail) { 6451 buyerObj = userObj; 6452 return false;
6453 } 6454 } catch (e) {} 6455 }); 6456 6457 return buyerObj; 6458 } 6459 6460 /** 6461 * Limited-field values stored on the buyer user_list[] entry keyed by fld_* field id. 6462 * @param {jQuery|null} $context 6463 * @param {string[]} limitedFieldIds 6464 * @returns {Object} 6465 */ 6466 function getBuyerLimitedFieldSelections($context, limitedFieldIds) { 6467 var buyerObj = getBuyerUserListObject($context); 6468 var selections = {}; 6469 if (!buyerObj || !limitedFieldIds || !limitedFieldIds.length) { 6470 return selections; 6471 } 6472 6473 limitedFieldIds.forEach(function (fieldId) { 6474 var fieldValue = normalizeUserListFieldValue(getUserListFieldValue(buyerObj, fieldId)); 6475 if (!fieldValue) { 6476 return; 6477 } 6478 if (Array.isArray(fieldValue)) { 6479 fieldValue = fieldValue.filter(Boolean); 6480 if (fieldValue.length) { 6481 selections[fieldId] = fieldValue; 6482 } 6483 } else { 6484 selections[fieldId] = fieldValue; 6485 } 6486 }); 6487 6488 return selections; 6489 } 6490 6491 /** 6492 * Whether a parent DOM option duplicates a value already stored on buyer user_list[]. 6493 * @param {Object} buyerSelections 6494 * @param {string} fieldId 6495 * @param {string} optionValue 6496 * @returns {boolean} 6497 */ 6498 function isBuyerUserListDuplicateSelection(buyerSelections, fieldId, optionValue) { 6499 if (!buyerSelections || !fieldId || !optionValue || !buyerSelections[fieldId]) { 6500 return false; 6501 } 6502 6503 var buyerValue = buyerSelections[fieldId]; 6504 if (Array.isArray(buyerValue)) { 6505 return buyerValue.indexOf(optionValue) !== -1; 6506 } 6507 6508 return buyerValue === optionValue; 6509 } 6510 6511 /** 6512 * Read the page-load remaining baseline for a limited option/checkbox. 6513 * Baseline must not change during client-side recalculation. 6514 * @param {jQuery} $element 6515 * @returns {number} 6516 */ 6517 function getLimitBaselineFromElement($element) { 6518 if (!$element || !$element.length) { 6519 return 0; 6520 } 6521 6522 var baseline = parseInt($element.attr('data-limit-baseline'), 10); 6523 if (!isNaN(baseline)) { 6524 return baseline; 6525 } 6526 6527 baseline = parseInt($element.attr('data-limit-option'), 10); 6528 if (isNaN(baseline)) { 6529 return 0; 6530 } 6531 6532 $element.attr('data-limit-baseline', baseline); 6533 return baseline; 6534 } 6535 6536 /** 6537 * Ensure every limited option/checkbox has a frozen data-limit-baseline attribute. 6538 * @param {jQuery|null} $context 6539 */ 6540 function ensureLimitBaselines($context) { 6541 var $scope = $context || $(document); 6542 6543 $scope.find('select option[data-limit-option]').each(function () { 6544 getLimitBaselineFromElement($(this)); 6545 }); 6546 6547 $scope.find('input[type="checkbox"][data-limit-option]').each(function () { 6548 getLimitBaselineFromElement($(this)); 6549 }); 6550 } 6551 6552 /** 6553 * Recalculate is_limitOption availability on the main form after ticket assign/remove. 6554 * @param {string|null} editingUserId 6555 */ 6556 function refreshSessionLimitedFieldAvailability(editingUserId) { 6557 if (isEditProfileLimitOptionPage() || window.location.search.indexOf('group=') !== -1) { 6558 return; 6559 } 6560 6561 var $scope = $(document); 6562 var dropdownIds = collectLimitedDropdownIds($scope); 6563 var checkboxGroupIds = collectLimitedCheckboxGroupIds($scope); 6564 if (!dropdownIds.length && !checkboxGroupIds.length) { 6565 return; 6566 } 6567 6568 dynamicLimitDropdown(dropdownIds, 0, null, 0, editingUserId || null); 6569 } 6570 /** 6571 * Recalculate and hide sold-out limited fields on the main registration form at page load. 6572 */ 6573 function initParentLimitedFieldSync() { 6574 if (isEditProfileLimitOptionPage() || window.location.search.indexOf('group=') !== -1) { 6575 return; 6576 } 6577 6578 var dropdownIds = collectLimitedDropdownIds(); 6579 var checkboxGroupIds = collectLimitedCheckboxGroupIds($(document)); 6580 if (dropdownIds.length || checkboxGroupIds.length) { 6581 dynamicLimitDropdown(dropdownIds, 0, null, 0, null); 6582 } 6583 6584 hideExhaustedLimitedFieldsOnParent($(document)); 6585 } 6586 /** 6587 * Hide sold-out limited fields on the child group-registration form (iframe or ?group= page). 6588 */ 6589 function initGroupChildLimitedFieldSync() { 6590 if (window.location.search.indexOf('group=') === -1) { 6591 return; 6592 } 6593 6594 if (window.location.search.indexOf('edit_profile_group=1') !== -1) { 6595 return; 6596 } 6597 6598 function syncLimitsFromParent(attempt) { 6599 attempt = attempt || 0; 6600 if (window.parent && window.parent !== window && typeof window.parent.isParentEditProfileLimitOptionPage === 'function' && window.parent.isParentEditProfileLimitOptionPage()) { 6601 return; 6602 } 6603 if (window.parent && window.parent !== window && typeof window.parent.dynamicLimitDropdown === 'function') { 6604 var $parentDoc = window.parent.$(window.parent.document); 6605 var dropdownIds = window.parent.collectLimitedDropdownIds($parentDoc); 6606 var iframeSelector = null; 6607 if (window.frameElement && window.frameElement.id) { 6608 iframeSelector = '#' + window.frameElement.id; 6609 } 6610 var groupMatch = window.location.search.match(/[?&]group=([^&]+)/); 6611 var editingUserId = groupMatch ? decodeURIComponent(groupMatch[1]) : null; 6612 window.parent.dynamicLimitDropdown(dropdownIds, 0, iframeSelector, 0, editingUserId); 6613 return; 6614 } 6615 if (attempt < 15) { 6616 setTimeout(function () { 6617 syncLimitsFromParent(attempt + 1); 6618 }, 200); 6619 return; 6620 } 6621 hideExhaustedLimitedFields($(document)); 6622 } 6623 6624 syncLimitsFromParent(0); 6625 } 6626 /** 6627 * Read saved field selections for the group user currently being edited. 6628 * @param {string|null} editingUserId 6629 * @returns {Object} 6630 */ 6631 function getEditingUserFieldSelections(editingUserId) { 6632 var selections = {}; 6633 if (!editingUserId) { 6634 return selections; 6635 } 6636 6637 var userValue = $('#' + editingUserId).val(); 6638 if (!userValue && window.parent && window.parent !== window) { 6639 try { 6640 userValue = window.parent.$('#' + editingUserId).val(); 6641 } catch (parentReadErr) {} 6642 } 6643 if (!userValue) { 6644 return selections; 6645 } 6646 6647 try { 6648 var userObj = JSON.parse(userValue.replace(/"/g, '"'));
6649 Object.keys(userObj).forEach(function (fieldId) { 6650 var val = normalizeUserListFieldValue(userObj[fieldId]); 6651 if (Array.isArray(val)) { 6652 selections[fieldId] = val.filter(function (item) { 6653 return item; 6654 }); 6655 } else if (val) { 6656 selections[fieldId] = val; 6657 } 6658 }); 6659 } catch (e) {} 6660 6661 return selections; 6662 } 6663 /** 6664 * Check whether a limited option belongs to the child user currently being edited. 6665 * @param {Object} editingSelections 6666 * @param {string} fieldId 6667 * @param {string} optionValue 6668 * @returns {boolean} 6669 */ 6670 function isEditingUserFieldValue(editingSelections, fieldId, optionValue) { 6671 if (!editingSelections || !fieldId || !optionValue) { 6672 return false; 6673 } 6674 6675 var savedValue = editingSelections[fieldId]; 6676 if (Array.isArray(savedValue)) { 6677 return savedValue.indexOf(optionValue) !== -1; 6678 } 6679 6680 return savedValue === optionValue; 6681 } 6682 /** 6683 * Ensure sold-out options saved on the editing user remain in the limit map. 6684 * @param {Object} valueCounts 6685 * @param {string|null} editingUserId 6686 */ 6687 function augmentValueCountsForEditingUser(valueCounts, editingUserId) { 6688 if (!editingUserId) { 6689 return; 6690 } 6691 6692 var editingSelections = getEditingUserFieldSelections(editingUserId); 6693 Object.keys(editingSelections).forEach(function (fieldId) { 6694 if (!valueCounts[fieldId]) { 6695 valueCounts[fieldId] = {}; 6696 } 6697 6698 var savedValues = editingSelections[fieldId]; 6699 if (!Array.isArray(savedValues)) { 6700 savedValues = [savedValues]; 6701 } 6702 6703 savedValues.forEach(function (savedValue) { 6704 if (savedValue && !valueCounts[fieldId][savedValue]) { 6705 valueCounts[fieldId][savedValue] = { 6706 selectedCount: 0, 6707 limit: 0 6708 }; 6709 } 6710 }); 6711 }); 6712 } 6713 /** 6714 * Update parent form limited fields: keep parent selections, remove/hide sold-out unselected options. 6715 * @param {Object} valueCounts 6716 * @param {string[]} dropdownIds 6717 * @param {string[]} checkboxGroupIds 6718 */ 6719 function syncParentLimitedFieldOptions(valueCounts, dropdownIds, checkboxGroupIds) { 6720 if (isEditProfileLimitOptionPage() || isEditProfileLimitAdminBypass()) { 6721 return; 6722 } 6723 6724 var $parentRoot = $(window.parent && window.parent !== window ? window.parent.document : document); 6725 6726 $parentRoot.find('select').each(function () { 6727 var selectId = $(this).attr('id'); 6728 var $parentSelect = $(this); 6729 var isMultiple = $parentSelect.attr('multiple') !== undefined; 6730 var selectedValues = isMultiple ? ($parentSelect.val() || []) : ($parentSelect.val() ? [$parentSelect.val()] : []); 6731 6732 if (!selectId || dropdownIds.indexOf(selectId) === -1) { 6733 return; 6734 } 6735 6736 $parentSelect.find('option').each(function () { 6737 var option = $(this); 6738 var optionValue = option.val(); 6739 var limitOption = parseInt(option.attr('data-limit-option'), 10); 6740 6741 if (!optionValue || isNaN(limitOption) || limitOption < 1) { 6742 return; 6743 } 6744 6745 if (!valueCounts || !valueCounts[selectId] || !valueCounts[selectId][optionValue]) { 6746 return; 6747 } 6748 6749 var remainingLimit = Math.max(0, valueCounts[selectId][optionValue].limit - valueCounts[selectId][optionValue].selectedCount); 6750 var isSelectedOnParent = selectedValues.indexOf(optionValue) !== -1; 6751 var $parentOption = $parentRoot.find('#' + selectId + ' option[value="' + optionValue.replace(/"/g, '\\"') + '"]'); 6752 6753 if (remainingLimit <= 0 && !isSelectedOnParent) { 6754 $parentOption.remove(); 6755 return; 6756 } 6757 6758 $parentOption.text(optionValue + ' (' + remainingLimit + ')'); 6759 $parentOption.attr('data-limit-option', remainingLimit); 6760 }); 6761 6762 if ($parentSelect.hasClass('select2-hidden-accessible') || $parentSelect.hasClass('searchable-select') || $parentSelect.hasClass('cstm-select')) { 6763 try { 6764 $parentSelect.trigger('change.select2'); 6765 } catch (select2Err) {} 6766 } 6767 6768 var hasValueOption = false;
6769 $parentSelect.find('option').each(function () { 6770 if ($(this).val()) { 6771 hasValueOption = true; 6772 return false; 6773 } 6774 }); 6775 6776 var $selectFieldGroup = $parentSelect.closest('.form_field_grp'); 6777 if ($selectFieldGroup.length) { 6778 if (hasValueOption) { 6779 showAvailableLimitedField($selectFieldGroup); 6780 } else { 6781 markSoldOutLimitedField($selectFieldGroup, dropdownId); 6782 } 6783 } 6784 }); 6785 6786 checkboxGroupIds.forEach(function (groupId) { 6787 var hasVisibleOption = false; 6788 var $fieldGroup = null; 6789 6790 $parentRoot.find('input[type="checkbox"][name="' + groupId + '[]"]').each(function () { 6791 var $checkbox = $(this); 6792 var optionValue = $checkbox.val(); 6793 6794 if (!optionValue || !valueCounts || !valueCounts[groupId] || !valueCounts[groupId][optionValue]) { 6795 return; 6796 } 6797 6798 if (!$fieldGroup) { 6799 $fieldGroup = $checkbox.closest('.form_field_grp'); 6800 } 6801 6802 var remainingLimit = Math.max(0, valueCounts[groupId][optionValue].limit - valueCounts[groupId][optionValue].selectedCount); 6803 var isCheckedOnParent = $checkbox.is(':checked'); 6804 6805 if (remainingLimit <= 0 && !isCheckedOnParent) { 6806 $checkbox.prop('checked', false).prop('disabled', true); 6807 $checkbox.closest('.radio-block-all').hide(); 6808 return; 6809 } 6810 6811 hasVisibleOption = true; 6812 $parentRoot.find('label[for="' + $checkbox.attr('id') + '"]').text(optionValue + ' (' + remainingLimit + ')'); 6813 $checkbox.attr('data-limit-option', remainingLimit); 6814 $checkbox.prop('disabled', false); 6815 $checkbox.closest('.radio-block-all').show(); 6816 }); 6817 6818 if ($fieldGroup && $fieldGroup.length) { 6819 if (hasVisibleOption || limitedCheckboxGroupHasSelectableOption($fieldGroup)) { 6820 showAvailableLimitedField($fieldGroup); 6821 } else { 6822 markSoldOutLimitedField($fieldGroup, groupId); 6823 } 6824 } 6825 }); 6826 6827 hideExhaustedLimitedFieldsOnParent($parentRoot); 6828 } 6829 /** 6830 * Recalculate is_limitOption remaining capacity for limited select dropdowns and checkbox groups. 6831 * Counts: DB remaining (data-limit-option on parent) minus parent selection minus child user_list[] picks. 6832 * Then updates the child iframe options (or parent form when mainForm=1 after child submit). 6833 * 6834 * @param {string[]} dropdownIds Select element IDs that have data-limit-option options 6835 * @param {number} mainForm 0 = update child iframe; 1 = update parent form (called from child submit) 6836 * @param {string|null} iframeSelector Target child iframe (#iframe-id or #iframe-id-new) 6837 * @param {number} applyDelay Ms to wait before applying updates to the child iframe (default 0) 6838 * @param {string|null} editingUserId Hidden user_list input id being edited (e.g. user1) 6839 */ 6840 function dynamicLimitDropdown(dropdownIds, mainForm = 0, iframeSelector = null, applyDelay = 0, editingUserId = null) { 6841 var valueCounts = {}; 6842 var $limitContext = getLimitCalculationContext(mainForm); 6843 ensureLimitBaselines($limitContext); 6844 var checkboxGroupIds = collectLimitedCheckboxGroupIds($limitContext); 6845 var targetIframeSelector = getActiveGroupRegistrationIframeSelector(iframeSelector); 6846 6847 if (targetIframeSelector) { 6848 try { 6849 collectLimitedCheckboxGroupIds($(targetIframeSelector).contents()).forEach(function (groupId) { 6850 if (checkboxGroupIds.indexOf(groupId) === -1) { 6851 checkboxGroupIds.push(groupId); 6852 } 6853 }); 6854 } catch (iframeGroupErr) {} 6855 } 6856 6857 var limitedFieldIds = dropdownIds.concat(checkboxGroupIds.filter(function (groupId) { 6858 return dropdownIds.indexOf(groupId) === -1; 6859 })); 6860 // Seed each limited option with page-load remaining baseline (never the live display count). 6861 dropdownIds.forEach(function (dropdownId) { 6862 valueCounts[dropdownId] = {}; 6863 6864 // Loop through each option in the select dropdown and initialize the counts 6865 $limitContext.find("#" + dropdownId + " option").each(function () { 6866 var optionValue = $(this).val(); 6867 var limitCount = getLimitBaselineFromElement($(this)); 6868 6869 if (optionValue) { 6870 valueCounts[dropdownId][optionValue] = { 6871 selectedCount: 0, // How many times this value is already taken in this registration session 6872 limit: limitCount // Remaining slots at page load (DB baseline for this session) 6873 }; 6874 } 6875 }); 6876 6877 6878 }); 6879 6880 checkboxGroupIds.forEach(function (groupId) { 6881 valueCounts[groupId] = valueCounts[groupId] || {}; 6882 6883 $limitContext.find('input[type="checkbox"][name="' + groupId + '[]"]').each(function () { 6884 var optionValue = $(this).val(); 6885 var limitCount = getLimitBaselineFromElement($(this)); 6886 6887 if (!optionValue || isNaN(limitCount)) { 6888 return; 6889 } 6890 6891 valueCounts[groupId][optionValue] = { 6892 selectedCount: 0, 6893 limit: limitCount 6894 }; 6895 }); 6896 }); 6897 6898 if (targetIframeSelector) { 6899 try { 6900 var $iframeSeedScope = $(targetIframeSelector).contents(); 6901 6902 dropdownIds.forEach(function (dropdownId) { 6903 valueCounts[dropdownId] = valueCounts[dropdownId] || {}; 6904 $iframeSeedScope.find("#" + dropdownId + " option").each(function () { 6905 var optionValue = $(this).val(); 6906 var limitCount = getLimitBaselineFromElement($(this)); 6907
6908 if (optionValue && !valueCounts[dropdownId][optionValue]) { 6909 valueCounts[dropdownId][optionValue] = { 6910 selectedCount: 0, 6911 limit: limitCount 6912 }; 6913 } 6914 }); 6915 }); 6916 6917 checkboxGroupIds.forEach(function (groupId) { 6918 valueCounts[groupId] = valueCounts[groupId] || {}; 6919 $iframeSeedScope.find('input[type="checkbox"][name="' + groupId + '[]"]').each(function () { 6920 var optionValue = $(this).val(); 6921 var limitCount = getLimitBaselineFromElement($(this)); 6922 6923 if (!optionValue || isNaN(limitCount) || valueCounts[groupId][optionValue]) { 6924 return; 6925 } 6926 6927 valueCounts[groupId][optionValue] = { 6928 selectedCount: 0, 6929 limit: limitCount 6930 }; 6931 }); 6932 }); 6933 } catch (iframeSeedErr) {} 6934 } 6935 6936 var buyerLimitedSelections = getBuyerLimitedFieldSelections($limitContext, limitedFieldIds); 6937 6938 // Count parent-form selections toward the session usage. 6939 // Skip a parent value only when the same value is already stored on buyer user_list[]. 6940 $limitContext.find('select').each(function () { 6941 var selectId = $(this).attr('id'); 6942 var isMultiple = $(this).attr('multiple') !== undefined; 6943 6944 if (isMultiple) { 6945 6946 var selectedValues = $(this).val() || []; 6947 6948 6949 selectedValues.forEach(function(selectedValue) { 6950 if (isBuyerUserListDuplicateSelection(buyerLimitedSelections, selectId, selectedValue)) { 6951 return; 6952 } 6953 if (valueCounts[selectId] && valueCounts[selectId][selectedValue]) { 6954 valueCounts[selectId][selectedValue].selectedCount++; 6955 } 6956 }); 6957 } else { 6958 // Handle single-select dropdowns (existing logic) 6959 $(this).find('option').each(function () { 6960 var option = $(this); 6961 var optionValue = option.val(); 6962 if (!option.is(':selected') || !optionValue || !valueCounts[selectId] || !valueCounts[selectId][optionValue]) { 6963 return; 6964 } 6965 if (isBuyerUserListDuplicateSelection(buyerLimitedSelections, selectId, optionValue)) { 6966 return; 6967 } 6968 valueCounts[selectId][optionValue].selectedCount++; 6969 }); 6970 } 6971 }); 6972 6973 checkboxGroupIds.forEach(function (groupId) { 6974 $limitContext.find('input[type="checkbox"][name="' + groupId + '[]"]:checked').each(function () { 6975 var optionValue = $(this).val(); 6976 if (!optionValue || !valueCounts[groupId] || !valueCounts[groupId][optionValue]) { 6977 return; 6978 } 6979 if (isBuyerUserListDuplicateSelection(buyerLimitedSelections, groupId, optionValue)) { 6980 return; 6981 } 6982 valueCounts[groupId][optionValue].selectedCount++; 6983 }); 6984 }); 6985 6986 // Count already-assigned child users (stored in hidden user_list[] JSON, not yet in DB). 6987 // Include the user being edited so labels reflect true global consumption (e.g. 0 not 1). 6988 // Sold-out options for that user are still kept via isEditingUserFieldValue in remove* handlers. 6989 $limitContext.find("input[name='user_list[]']").each(function () { 6990 var userData = $(this).val(); 6991 6992 // Parse the JSON string (after replacing the HTML entities) 6993 if (userData) { 6994 try { 6995 userData = userData.replace(/"/g, '"'); // Convert HTML entities to plain JSON string 6996 var userObj = JSON.parse(userData); 6997 //console.log("dropdownIds",dropdownIds); 6998 // Loop through limited field ids to fetch their values 6999 limitedFieldIds.forEach(function (fieldId) { 7000 var value = normalizeUserListFieldValue(getUserListFieldValue(userObj, fieldId)); 7001 7002 // Handle both single values and arrays (for multi-select dropdowns / checkbox groups) 7003 if (value) { 7004 if (Array.isArray(value)) { 7005 value.forEach(function(singleValue) { 7006 if (singleValue && valueCounts[fieldId] && valueCounts[fieldId][singleValue]) { 7007 valueCounts[fieldId][singleValue].selectedCount++; 7008 } 7009 }); 7010 } else {
7011 if (valueCounts[fieldId] && valueCounts[fieldId][value]) { 7012 valueCounts[fieldId][value].selectedCount++; 7013 } 7014 } 7015 } 7016 }); 7017 } catch (parseErr) {} 7018 } 7019 }); 7020 7021 augmentValueCountsForEditingUser(valueCounts, editingUserId); 7022 7023 // Log the result 7024 //console.log("valueCounts",valueCounts); 7025 if (!isEditProfileLimitOptionPage() && window.location.search.indexOf('group=') === -1) { 7026 syncParentLimitedFieldOptions(valueCounts, dropdownIds, checkboxGroupIds); 7027 } 7028 7029 if (!mainForm) { 7030 // Apply updated remaining counts / remove sold-out options inside the child iframe 7031 setTimeout(() => { 7032 for (const [key, value] of Object.entries(valueCounts)) { 7033 if (dropdownIds.indexOf(key) !== -1) { 7034 removeOptionsIfLimitReached(key, value, targetIframeSelector, editingUserId); 7035 } else if (checkboxGroupIds.indexOf(key) !== -1) { 7036 removeCheckboxOptionsIfLimitReached(key, value, targetIframeSelector, editingUserId); 7037 } 7038 } 7039 setTimeout(function () { 7040 try { 7041 hideExhaustedLimitedFields($(targetIframeSelector).contents()); 7042 } catch (hideErr) {} 7043 }, 200); 7044 }, applyDelay); 7045 } 7046 7047 } 7048 /** 7049 * Apply session limit counts to a limited select inside the child group-registration iframe. 7050 * Removes sold-out options and rewrites labels as "value (remaining)". 7051 * Works for both #iframe-id (non-ticket) and #iframe-id-new (ticket). 7052 * 7053 * @param {string} dropdownId Select element id inside the iframe 7054 * @param {Object} data Map of optionValue -> { selectedCount, limit } 7055 * @param {string|null} iframeSelector Target iframe selector 7056 * @param {string|null} editingUserId Hidden user_list input id being edited 7057 */ 7058 function removeOptionsIfLimitReached(dropdownId, data, iframeSelector, editingUserId) { 7059 if (isEditProfileLimitAdminBypass()) { 7060 return; 7061 } 7062 var targetIframeSelector = getActiveGroupRegistrationIframeSelector(iframeSelector); 7063 var editingSelections = getEditingUserFieldSelections(editingUserId); 7064 // Retry until iframe DOM / dropdown options are ready (child form loads async) 7065 function waitAndProcess(attempt = 1, maxAttempts = 15) { 7066 try { 7067 // Read options from the active group-registration iframe (#iframe-id or #iframe-id-new) 7068 var $iframeContents = $(targetIframeSelector).contents(); 7069 7070 // Check if iframe content is accessible 7071 if ($iframeContents.length === 0) { 7072 throw new Error("Iframe content not accessible"); 7073 } 7074 7075 // Get the dropdown element by ID within the iframe context 7076 const dropdown = $iframeContents.find(`#${dropdownId}`); 7077 7078 // Check if dropdown exists and has options 7079 if (dropdown.length > 0 && dropdown.find('option').length > 0) { 7080 var currentValue = dropdown.val(); 7081 7082 // Drop iframe options that are not in the calculated limit map (keep placeholder options) 7083 $iframeContents.find(`#${dropdownId} option`).each(function() { 7084 let optionValue = $(this).val(); 7085 7086 if (!optionValue) { 7087 return; 7088 } 7089 7090 // If the option value is not present in the objects, remove it 7091 if (data && !data.hasOwnProperty(optionValue) && !isEditingUserFieldValue(editingSelections, dropdownId, optionValue)) { 7092 $(this).remove(); 7093 } 7094 }); 7095 7096 // Update remaining label, or remove when selectedCount has reached the limit 7097 for (const [key, value] of Object.entries(data)) { 7098 var remainingLimit = value.limit - value.selectedCount; 7099 var isEditingUserValue = isEditingUserFieldValue(editingSelections, dropdownId, key); 7100 7101 if (remainingLimit <= 0 && !isEditingUserValue) { 7102 // Sold out for this session â remove from child dropdown 7103 dropdown.find(`option[value="${key}"]`).remove(); 7104 } else { 7105 var displayLimit = Math.max(0, remainingLimit); 7106 dropdown.find(`option[value="${key}"]`).attr('data-limit-option', displayLimit); 7107 dropdown.find(`option[value="${key}
7107"]`).text(key + ' (' + displayLimit + ')'); 7108 } 7109 } 7110 7111 // Only update labels â do not auto-select an option for the child form 7112 if (currentValue === null || currentValue === undefined || currentValue === '') { 7113 dropdown.val(''); 7114 } else if (dropdown.find('option[value="' + String(currentValue).replace(/"/g, '\\"') + '"]').length) { 7115 dropdown.val(currentValue); 7116 } else { 7117 dropdown.val(''); 7118 } 7119 7120 var editingValue = editingSelections[dropdownId]; 7121 if (editingValue && !Array.isArray(editingValue)) { 7122 if (!dropdown.find('option[value="' + String(editingValue).replace(/"/g, '\\"') + '"]').length) { 7123 dropdown.append($('<option></option>').attr('value', editingValue).text(editingValue)); 7124 } 7125 dropdown.val(editingValue); 7126 } 7127 7128 // Refresh select2 in the child iframe when present so updated labels show 7129 if (dropdown.hasClass('select2-hidden-accessible') || dropdown.hasClass('searchable-select') || dropdown.hasClass('cstm-select')) { 7130 try { 7131 dropdown.trigger('change.select2'); 7132 } catch (select2Err) {} 7133 } 7134 7135 var hasValueOption = false; 7136 dropdown.find('option').each(function () { 7137 if ($(this).val()) { 7138 hasValueOption = true; 7139 return false; 7140 } 7141 }); 7142 7143 var $fieldGroup = dropdown.closest('.form_field_grp'); 7144 if ($fieldGroup.length) { 7145 if (hasValueOption) { 7146 showAvailableLimitedField($fieldGroup); 7147 } else { 7148 markSoldOutLimitedField($fieldGroup, dropdownId); 7149 } 7150 } 7151 7152 } else if (attempt < maxAttempts) { 7153 // Dropdown not ready yet, wait and retry 7154 setTimeout(function() { 7155 waitAndProcess(attempt + 1, maxAttempts); 7156 }, 200); // Wait 200ms between attempts 7157 } 7158 7159 } catch (e) { 7160 // Error accessing iframe, retry if attempts remaining 7161 if (attempt < maxAttempts) { 7162 setTimeout(function() { 7163 waitAndProcess(attempt + 1, maxAttempts); 7164 }, 200); 7165 } 7166 } 7167 } 7168 7169 // Start the waiting and processing 7170 waitAndProcess(); 7171 } 7172 /** 7173 * Apply session limit counts to a limited checkbox group inside the child group-registration iframe. 7174 * Hides sold-out options and rewrites labels as "value (remaining)". 7175 * 7176 * @param {string} groupId Checkbox group name prefix (e.g. fld_12345) 7177 * @param {Object} data Map of optionValue -> { selectedCount, limit } 7178 * @param {string|null} iframeSelector Target iframe selector 7179 * @param {string|null} editingUserId Hidden user_list input id being edited 7180 */ 7181 function removeCheckboxOptionsIfLimitReached(groupId, data, iframeSelector, editingUserId) { 7182 if (isEditProfileLimitAdminBypass()) { 7183 return; 7184 } 7185 var targetIframeSelector = getActiveGroupRegistrationIframeSelector(iframeSelector); 7186 var editingSelections = getEditingUserFieldSelections(editingUserId); 7187 7188 function waitAndProcess(attempt = 1, maxAttempts = 15) { 7189 try { 7190 var $iframeContents = $(targetIframeSelector).contents(); 7191 7192 if ($iframeContents.length === 0) { 7193 throw new Error("Iframe content not accessible"); 7194 } 7195 7196 var $checkboxes = $iframeContents.find('input[type="checkbox"][name="' + groupId + '[]"]'); 7197 7198 if ($checkboxes.length > 0) { 7199 var $fieldGroup = null; 7200 var hasVisibleOption = false;
7201 7202 $checkboxes.each(function () { 7203 var optionValue = $(this).val(); 7204 7205 if (data && optionValue && !data.hasOwnProperty(optionValue) && !isEditingUserFieldValue(editingSelections, groupId, optionValue)) { 7206 $(this).closest('.radio-block-all').remove(); 7207 } 7208 }); 7209 7210 for (const [key, value] of Object.entries(data)) { 7211 var $checkbox = $checkboxes.filter(function () { 7212 return $(this).val() === key; 7213 }); 7214 7215 if (!$checkbox.length) { 7216 continue; 7217 } 7218 7219 if (!$fieldGroup) { 7220 $fieldGroup = $checkbox.closest('.form_field_grp'); 7221 } 7222 7223 var remainingLimit = value.limit - value.selectedCount; 7224 var isEditingUserValue = isEditingUserFieldValue(editingSelections, groupId, key); 7225 7226 if (remainingLimit <= 0 && !isEditingUserValue) { 7227 $checkbox.prop('checked', false); 7228 $checkbox.closest('.radio-block-all').remove(); 7229 } else { 7230 hasVisibleOption = true; 7231 var displayLimit = Math.max(0, remainingLimit); 7232 $checkbox.attr('data-limit-option', displayLimit); 7233 $iframeContents.find('label[for="' + $checkbox.attr('id') + '"]').text(key + ' (' + displayLimit + ')'); 7234 $checkbox.prop('disabled', false); 7235 $checkbox.closest('.radio-block-all').show(); 7236 $checkbox.closest('.form_field_grp').show(); 7237 } 7238 } 7239 7240 if ($fieldGroup) { 7241 if (limitedCheckboxGroupHasSelectableOption($fieldGroup)) { 7242 showAvailableLimitedField($fieldGroup); 7243 } else { 7244 markSoldOutLimitedField($fieldGroup, groupId); 7245 } 7246 } 7247 } else if (attempt < maxAttempts) { 7248 setTimeout(function () { 7249 waitAndProcess(attempt + 1, maxAttempts); 7250 }, 200); 7251 } 7252 } catch (e) { 7253 if (attempt < maxAttempts) { 7254 setTimeout(function () { 7255 waitAndProcess(attempt + 1, maxAttempts); 7256 }, 200); 7257 } 7258 } 7259 } 7260 7261 waitAndProcess(); 7262 } 7263 $(document).ready(function () { 7264 var isEditProfileV2 = window.location.href.indexOf('editProfileV2') !== -1; 7265 var isTicketTop = ''; 7266 if (!isEditProfileV2) { 7267 if (isTicketTop) { 7268 setTimeout(function () { 7269 if ($('.form_field_grp .ticket__content .ticket__item').length == 1) { 7270 $('.form_field_grp .ticket__content .ticket__item .ticketSelbtn').click(); 7271 } 7272 }, 1500); 7273 } else { 7274 setTimeout(function () { 7275 if ($('.ticket__content .ticket__item').length == 1) { 7276 $('.ticket__content .ticket__item .ticketSelbtn').click(); 7277 } 7278 }, 1500); 7279 } 7280 } 7281 var checkMappingPackage = '0'; 7282 var isGroupRegistration = '0'; 7283 var form_type = 'REGISTRATION_FORM'; 7284 var app_id = '20550'; 7285 if (checkMappingPackage != 0) { 7286 $('input[name="email"]').focusout(function () { 7287 var email = $('input[name="email"]').val(); 7288 $("#LoadingBar").show(); 7289 jQuery.ajax({ 7290 url: "https://www.codeseccon.com/en/form/emailDomainPackage", 7291 //url: "http://vjf.local.me/en/form/emailDomainPackage", 7292 data: { 7293 email: email, 7294 isGroupRegistration: isGroupRegistration, 7295 form_type: form_type, 7296 app_id: app_id, 7297 checkMappingPackage: checkMappingPackage, 7298 }, 7299 type: "POST", 7300 success: function (response) { 7301 $('.addonweb').css('display', 'none'); 7302 var response = eval('(' + response + ')'); 7303 if (response.status == true) { 7304 $('.package_list').find('option:not(:first)').remove(); 7305 var list = response.list; 7306 for (var i = 0; i < list.length; i++) { 7307 var limit_count = parseInt(list[i]['limitation']) - parseInt(list[i]['avail_limit']); 7308 console.log(list[i]); 7309 if (parseInt(list[i]['limitation']) == 0) { 7310 console.log('ZERO Unlimited: ' + list[i]['name']); 7311 $('.package_list').append( 7312 '<option value="' + list[i]['id'] 7313 + '" data-cost="' + list[i]['price'] 7314 + '" data-price="' + list[i]['name'] 7315 + '-' + list[i]['price'] + '">' 7316 + list[i]['name'] + ' - ' + list[i]['price'] 7317 + '</option>'); 7318 } else if (list[i]['limitation'] == null) { 7319 console.log('NULL Unlimited: ' + list[i]['name']); 7320 $('.package_list').append( 7321 '<option value="' + list[i]['id'] 7322 + '" data-cost="' + list[i]['price'] 7323 + '" data-price="' + list[i]['name'] 7324 + '-' + list[i]['price'] + '">' 7325 + list[i]['name'] + ' - ' + list[i]['price'] 7326 + '</option>'); 7327 } else if (parseInt(list[i]['limitation']) > parseInt(list[i]['avail_limit'])) { 7328 console.log('Limit Available: ' + list[i]['name']); 7329 $('.package_list').append( 7330 '<option value="' + list[i]['id'] 7331 + '" data-cost="' + list[i]['price'] 7332 + '" data-price="' + list[i]['name'] 7333 + '-' + list[i]['price'] + '">' 7334 + list[i]['name'] + ' - ' + list[i]['price'] + ' (' + limit_count + ')' 7335 + '</option>'); 7336 } 7337 } 7338 } else { 7339 $('.package_list').find('option:not(:first)').remove(); 7340 } 7341 7342 } 7343 }); 7344 $("#LoadingBar").hide(); 7345 7346 }); 7347 } 7348 }); 7349 $(document).ready(function () { 7350 // ADD RED ASTRISK ON REQUIERD FIELD's LABEL 7351 // $('input,select,file').each(function(){ 7352 // if($(this).prop('required')){ 7353 // if($(this).parent().find('.text-danger').length ==0) 7354 // $(this).parent().find('.control-label').append('<i class="text-danger">*</i>'); 7355 // } 7356 // }); 7357 setTimeout(function () { 7358 $('.payment__method > .radio:nth-of-type(1) img').click(); 7359 window.scrollTo(0, 0); 7360 }, 1000); 7361 7362 $('.addonweb').css("display", "none"); 7363 $('.addnopkg').css("display", "none"); 7364 7365 if ($('.addonp').val() != '') { 7366 $('.addonweb').css("display", "block"); 7367 $('.addonp').trigger("change"); 7368 } 7369 7370 $('.pmnt_fld').on('change', function (e) { 7371 if (!isTicket && enableV5ApiDiscount){ 7372 getOldformTicketData(); 7373 } 7374 // var symbol= $('.pmnt_fld option:selected').data('symbol'); 7375 // var price= $('.total-addons-price').data('price'); 7376 // if(price != ''){ 7377 // $('.total-addons-price').html('<strong> Amount</strong>'+ symbol +''+ price +''); 7378 // } 7379 }); 7380 7381 $('.addonp').on('change', function (e) { 7382 var value = $(this).val(); 7383 $('.addonweb').css("display", "none"); 7384 $('.addnopkg').css("display", "none"); 7385 $('.selected-addons-package').remove(); 7386 $('.total-addons-price').remove(); 7387 $('.total-addons-tax').remove(); 7388 $cost = $(this).find(':selected').data('cost'); 7389 if ($cost >= 1000) { 7390 $('#grp_fld_1379629').parent().removeClass("field-hidden"); 7391 $('#grp_fld_1379629').removeClass("field-hidden"); 7392 } else { 7393 $('#grp_fld_1379629').parent().addClass("field-hidden"); 7394 $('#grp_fld_1379629').addClass("field-hidden"); 7395 } 7396 if (value != '') { 7397 $('.addonsvp input[type=checkbox]').each(function () { 7398 $(this).prop("checked", false); 7399 }); 7400 $('.addon-package' + value).css("display", "block"); 7401 $('.addnopkg').css("display", "block"); 7402 } 7403 }); 7404 7405 //$('.addonsvp input[type=checkbox], select[name="group_registration"]').on('change', function (e) { 7406 // payment_section = $('.addonp').val(); 7407 // 7408 // if (payment_section == '') { 7409 // $('.addonweb').css("display", "none"); 7410 // $('.addnopkg').css("display", "none"); 7411 // } else { 7412 // $('.selected-addons-package').remove(); 7413 // $('.total-addons-price').remove(); 7414 // $('.total-addons-tax').remove(); 7415 // // var selected = '<div class="selected-addons-package" style=" margin: 20px 0px; font-size: 17px;"> <strong> Packages Included: </strong> '; 7416 // var price = 0; 7417 // var flag = 0; 7418 // 7419 // var symbol = $('.pmnt_fld option:selected').data('symbol'); 7420 // if (typeof symbol == "undefined") { 7421 // symbol = ''; 7422 // } 7423 // selected += $('.addonp option:selected').text(); 7424 // // price = parseFloat($('.addonp option:selected').data('price')) + parseFloat(price); 7425 // // price = parseFloat($('.addonp option:selected').data('cost')) + parseFloat(price); 7426 // <!-- --> // var selectedValueGroupRegistration = $('select[name="group_registration"]').val(); 7427 // if(selectedValueGroupRegistration != ''){ 7428 // var totalGroupRegistration = parseFloat(price) * parseFloat(selectedValueGroupRegistration); 7429 // price = parseFloat(totalGroupRegistration) + parseFloat(price); 7430 // } 7431 // // $('.addonsvp input[type=checkbox]:checked').each(function () { 7432 // selected += ", " + $(this).data('name'); 7433 // price = parseFloat($(this).data('price')) + parseFloat(price); 7434 // flag = 1; 7435 // }); 7436 // 7437 // selected += ' </div>'; 7438 // if (flag == 1) { 7439 // $('.package_addon_price').text(price); 7440 // $('.pmnt_fld').parent('div').parent('div').before(selected); 7441 // // $(this).parent('div').parent('span').append(selected); 7442 // // var tax_obligation = $('.tax_obligation_price').html(); 7443 // var total_tax = price / 100 * parseFloat(tax_obligation); 7444 // var total_price = parseFloat(total_tax) + parseFloat(price); 7445 // // var total_price = parseFloat(price); 7446 // // 7447 // 7448 // 7449 // $('.pmnt_fld').parent('div').parent('div').before('<div class="total-addons-price" data-price="' + price + '" style="margin: 20px 0px; font-size: 17px;"><strong> Amount: </strong>' + symbol + '' + price + '</div>'); 7450 // // $('.pmnt_fld').parent('div').parent('div').before('<div class="total-addons-tax" style="margin: 20px 0px; font-size: 17px;"><strong> State Tax: </strong>' + symbol + '' + total_tax + '</div>'); 7451 // // $('.pmnt_fld').parent('div').parent('div').before('<div class="total-addons-price" data-price="' + price + '" style="margin: 20px 0px; font-size: 17px;"><strong> Total : </strong>' + symbol + '' + total_price + '</div>'); 7452 // // $(this).parent('div').parent('span').append('<div class="total-addons-price" data-price="'+ price +'" style="margin: 20px 0px; font-size: 17px;"><strong> Total Price: </strong>'+ symbol +''+ price + '</div>'); 7453 // } 7454 // // } 7455 // 7456 // 7457 //}); 7458 7459 $('.addonsvp input[type=checkbox], select[name="group_registration"]').on('change', function () { 7460 const paymentSection = $('.addonp').val(); 7461 const $addonWeb = $('.addonweb'); 7462 const $addnoPkg = $('.addnopkg'); 7463 7464 // Reset the display for empty payment section 7465 if (!paymentSection) { 7466 $addonWeb.hide(); 7467 $addnoPkg.hide(); 7468 return; 7469 } 7470 7471 // console.log('TicketPackages after submit child :',TicketPackages) 7472 if (!isTicket && enableV5ApiDiscount){ 7473 getOldformTicketData(); 7474 } 7475 7476 // Clear previous addon details 7477 $('.selected-addons-package, .total-addons-price, .total-addons-tax').remove(); 7478 7479 const symbol = $('.pmnt_fld option:selected').data('symbol') || ''; 7480 let price = 0; 7481 let hasAddons = false;
7482 7483 // Add package details 7484 let selectedText = `<div class="selected-addons-package" style="margin: 20px 0; font-size: 17px;"> 7485 <strong>Packages Included:</strong> ${$('.addonp option:selected').text()}`; 7486 7487 // Calculate price based on conditions 7488 price += parseFloat($('.addonp option:selected').data('cost') || 0); 7489 7490 // Group registration calculations 7491 // Process selected addons 7492 $('.addonsvp input[type=checkbox]:checked').each(function () { 7493 selectedText += `, ${$(this).data('name')}`; 7494 price += parseFloat($(this).data('price') || 0); 7495 hasAddons = true; 7496 }); 7497 7498 selectedText += '</div>'; 7499 7500 if (hasAddons) { 7501 const $pmntFld = $('.pmnt_fld').closest('div').parent(); 7502 const taxEnabled = false; 7503 const taxRate = parseFloat($('.tax_obligation_price').html() || 0); 7504 const totalTax = taxEnabled ? (price * taxRate) / 100 : 0; 7505 const totalPrice = price + totalTax; 7506 if(!isTicket){ 7507 // Append details to DOM 7508 $pmntFld.before(selectedText); 7509 $pmntFld.before(`<div class="total-addons-price total-addons-price-subtotal" data-price="${price}" style="margin: 20px 0; font-size: 17px;"> 7510 <strong>Amount:</strong> ${symbol}${price}</div>`); 7511 if (taxEnabled) { 7512 $pmntFld.before(`<div class="total-addons-tax" style="margin: 20px 0; font-size: 17px;"> 7513 <strong>State Tax:</strong> ${symbol}${totalTax}</div>`); 7514 } 7515 $pmntFld.before(`<div class="total-addons-price total-addons-price-total" data-price="${totalPrice}" style="margin: 20px 0; font-size: 17px;"> 7516 <strong>Total:</strong> ${symbol}${totalPrice}</div>`); 7517 } 7518 7519 if(enableV5ApiDiscount){ 7520 // console.log('checkbox click'); 7521 // console.log(TicketPackages); 7522 if(!isTicket){ 7523 paymentSummaryObject.getOldFormPaymentSummaryDetails(TicketPackages); 7524 } 7525 } 7526 } 7527 }); 7528 7529 $(function () { 7530 $('[data-toggle="tooltip"]').tooltip( 7531 {template: '<div class="tooltip" style="font-size:10px" role="tooltip"><div class="arrow"></div><div class="tooltip-inner custom-tooltip"></div></div>'} 7532 ); 7533 if(enableV5ApiDiscount && !isTicket){ 7534 var selectedValue = $(".package_list").val(); 7535 if (selectedValue !== "") { 7536 getOldformTicketData(); 7537 } 7538 } 7539 }) 7540 7541 7542 $(document).on("change",".package_list",function(e) { 7543 if(enableV5ApiDiscount){ 7544 getOldformTicketData(); 7545 } 7546 7547 }); 7548 $(document).on("click",".cacl-disc",function(e) { 7549 // $('.cacl-disc').on('click', function (e) { 7550 // console.log('I am in'); 7551 7552 e.preventDefault(); 7553 $('.order-now-button, .order-now-button1').prop('disabled', true); 7554 var addons = ''; 7555 $.each($(".addonsvp input:checked"), function(){ 7556 addons+=$(this).val()+','; 7557 }); 7558 7559 if (isRegistrationForm && pageBreakSummaryCount > 0) { 7560 $('#text_help').remove(); 7561 $('<div>', { 7562 class: 'col-md-12 form-control my-3 alert alert-danger', 7563 id: 'text_help', 7564 role: 'alert', 7565 style: 'width: 100% !important; display: block;', 7566 tabindex: '0', 7567 text: 'Invalid discount code.' 7568 }).insertAfter('.ticket__totalBox.small-discout-box'); 7569 } 7570 7571 7572 var fld = $(this).data('fld').toString(); 7573 $("#text_help").hide().removeClass("alert-success alert-danger"); 7574 $("#text_help").html(""); 7575 $("#price_details").hide(""); 7576 let btn = $(this); 7577 let promo = $('#cpn_fld_' + fld).val(); 7578 let form_id = $('#formId').val(); 7579 var $isGroupRegistration = 0; 7580 data=[]; 7581 var isGroupRegistrationField= ''; 7582 var isTicket= ''; 7583 // if(!isTicket){ 7584 // if (typeof TicketPackages === 'undefined') { 7585 // window.TicketPackages = null; // or an empty object {} 7586 // } 7587 // } 7588 if(isGroupRegistrationField && isTicket){ 7589 7590 }else{ 7591 if ($(".user_list")[0]){ 7592 selected=$('.user_list').val(); 7593 count_value = 0; 7594 7595 var data = $("input[name='user_list[]']").map(function(){ 7596 if($(this).val()){ 7597 count_value++; 7598 return $(this).val(); 7599 } 7600 }).get(); 7601 $("#group-error").remove(); 7602 if(selected != null){ 7603 if(selected != count_value && selected !== undefined){ 7604 console.log('$("#bypass_auto").length'); 7605 console.log($("#bypass_auto").length); 7606 var app_id = 20550; 7607 if($("#bypass_auto").length == 0) { 7608 if (isTicket) { 7609 if (isTicketTop) { 7610 $('.user_list').after('<label id="group-error" class="error" for="group" style="display: block; color: red;">Please assign below tickets to users</label>'); 7611 }else{ 7612 $('.packageBlock').before('<label id="group-error" class="error" for="group" style="display: block; color: red;">Please assign below tickets to users</label>'); 7613 } 7614 7615 } else { 7616 if (app_id == 9185) { 7617 $('.user_list').after('<label id="group-error" class="error" for="group" style="display: block; color: red;">Please add your spouse/partner details by clicking the button below - It is mandatory, if you wish to bring your spouse/partner to any of the events.</label>'); 7618 } else { 7619 $('.user_list').after('<label id="group-error" class="error" for="group" style="display: block; color: red;">Secondary users are required, please add all Secondary user</label>'); 7620 } 7621 } 7622 7623 return false;
7624 } 7625 7626 7627 } 7628 } 7629 } 7630 } 7631 7632 7633 group_package=null; 7634 if (promo != "") { 7635 7636 var ticket= ''; 7637 if(ticket) { 7638 group_package=TicketPackages; 7639 qty= $('.package-block-'+$('#fld_' + fld).val()+' > .ticket__price .qty').val(); 7640 package_qty=qty; 7641 addon_qty=[]; 7642 $('.addon-package-'+$('#fld_' + fld).val()).find("a.addonBtn").each(function () { 7643 addons_key =$(this).data('addons'); 7644 addons_qty =$(this).next().find('.qty').val(); 7645 7646 7647 if(addons_key && addons_key !== "" && addons_qty !==""){ 7648 addon_qty[addons_key]=addons_qty 7649 } 7650 }); 7651 7652 7653 }else{ 7654 package_qty=1; 7655 addon_qty=1; 7656 } 7657 btn.attr("disabled", true); 7658 7659 7660 let discountVerifyUserId = 0; 7661 let discount_data = { 7662 user_id: discountVerifyUserId || '', 7663 package_id: $('#fld_' + fld).val(), 7664 package_qty:package_qty, 7665 ticket:ticket, 7666 discount_code: promo, 7667 addons: addons, 7668 data: data, 7669 group_package: group_package, 7670 is_group_registration: $isGroupRegistration, 7671 form_id: form_id, 7672 app_id:20550, 7673 addon_qty:addon_qty, 7674 is_group_multiple_select:isGroupMultipleSelect, 7675 }; 7676 var app_id = 20550; 7677 if (app_id == 15570 ) { 7678 if(multipleTicketEdit) { 7679 discount_data = { 7680 user_id: discountVerifyUserId || '', 7681 package_id: $('#fld_' + fld).val(), 7682 apply_discount:1, 7683 package_qty:package_qty, 7684 ticket:ticket, 7685 discount_code: promo, 7686 addons: addons, 7687 data: data, 7688 group_package: group_package, 7689 is_group_registration: $isGroupRegistration, 7690 form_id: form_id, 7691 app_id:20550, 7692 addon_qty:addon_qty, 7693 is_group_multiple_select:isGroupMultipleSelect, 7694 }; 7695 } 7696 } 7697 7698 7699 if(enableV5ApiDiscount){ 7700 if(!isTicket){ 7701 getOldformTicketData(); 7702 } 7703 7704 TicketPackages['appId'] = '20550'; 7705 if(promo == undefined){ 7706 promo=""; 7707 } 7708 TicketPackages['discountCode'] = promo; 7709 TicketPackages['discountCodeStatusSuccessText'] = "Promo code is applied"; 7710 TicketPackages['discountCodeStatusErrorText'] = "Invalid Discount Code Entered"; 7711 TicketPackages['discountPriceText'] = 'Your Discounted price is '; 7712 TicketPackages['isUpgradeDowngradeProfile'] = (isUpgradeDowngradeProfile !== null && isUpgradeDowngradeProfile !== '' && (isUpgradeDowngradeProfile == 1 || isUpgradeDowngradeProfile == "1")) ? "1" : "0"; 7713 // console.log('getPaymentSummaryDetails'); 7714 7715 // Add error checks for localStorage and JSON parsing 7716 try { 7717 var storedData = localStorage.getItem('paymentData'); 7718 if (storedData !== null && storedData !== '') { 7719 paymentData = JSON.parse(storedData); 7720 } else { 7721 paymentData = null; 7722 } 7723 } catch (e) { 7724 console.error('Error parsing paymentData from localStorage:', e); 7725 paymentData = null; 7726 } 7727 7728 if (paymentData && paymentData.disc_code == "" && (TicketPackages['isUpgradeDowngradeProfile'] == 1 || TicketPackages['isUpgradeDowngradeProfile'] == "1")) { 7729 TicketPackages['isUpgradeDowngradeProfile']="0"; 7730 } 7731 if(!isTicket){ 7732 paymentSummaryObject.getOldFormPaymentSummaryDetails(TicketPackages); 7733 }else{ 7734 if(upgradeDowngradePaymentMethodDetailId !=null){ 7735 TicketPackages['paymentMethodId'] = upgradeDowngradePaymentMethodDetailId; 7736 } 7737 paymentSummaryObject.getPaymentSummaryDetails(TicketPackages); 7738 } 7739 $('.order-now-button, .order-now-button1').prop('disabled', false); 7740 }else{ 7741 $.post("https://www.codeseccon.com/en/verify_discount_code", discount_data, function (response) { 7742 $.post(window.location.origin + "/en/verify_discount_code", discount_data, function (response) { 7743 // $.post("http://vjf.local.me/en/verify_discount_code", discount_data, function (response) { 7744 let re = /\s\s+/g; 7745 let resp = response.replace(re, ' '); 7746 resp = resp.replace(/^\uFEFF/, ''); 7747 let json = JSON.parse(resp); 7748 let enableVfairsPayment ='0'; 7749 let package_id = (typeof json.package != "undefined" ? json.package.id : 0); 7750 $('.order-now-button, .order-now-button1').prop('disabled', false); 7751 if (json.status) { 7752 $("#text_help").html("Promo code is applied"); 7753 $("#text_help").removeClass("alert-danger").addClass("alert-success").show(); 7754 var selectedcurrencysymbol = $('.pmnt_fld').find(":selected").data('symbol'); 7755 if(selectedcurrencysymbol ==undefined){ 7756 $('.pmnt_fld option:nth-child(2)').attr('selected', 'selected'); 7757 selectedcurrencysymbol = $('.pmnt_fld').find(":selected").data('symbol'); 7758 } 7759 7760 7761 var discount_amount_percentage=0; 7762 if(json.discount.discount_percent !=null){ 7763 discount_amount_percentage=json.discount.discount_percent +" %"; 7764 }else if(json.discount.discount_amount !=null){ 7765 discount_amount_percentage=json.discount.discount_amount; 7766 }else{ 7767 discount_amount_percentage=json.discount.fixed_price; 7768 } 7769 7770 $(".order__summary .price__item > div.booking_fee").attr('data-calculated_amount_arr', JSON.stringify(json.calculatedAmountArr)); 7771 userDetailsEditDiscountAmount=parseFloat(json.discounted_amount).toFixed(2); 7772 if (typeof json.discount.name != "undefined") { 7773 7774 var symbol = $('.pmnt_fld option:selected').data('symbol'); 7775 if(symbol){ 7776 $('.order__summary > div.price__item >
7776 div:nth-of-type(2) > span').text(symbol+''+formatTotal(json.discounted_amount)); 7777 }else{ 7778 $('.order__summary > div.price__item >div:nth-of-type(2) > span').text(formatTotal(json.discounted_amount)); 7779 } 7780 $('.order__summary > div.price__item >div:nth-of-type(2) > span').attr('data-discounted_amount', json.discounted_amount); 7781 sub_total=$('.order__summary .price__item > div:nth-of-type(1) span').attr('data-subtotal'); 7782 7783 // total_price=parseFloat(sub_total,2) - parseFloat(json.discounted_amount,2).toFixed(2); 7784 total_price=parseFloat(json.price,2); 7785 if(total_price == 0){ 7786 7787 data_sub=$('.single-pay').attr('data-sub'); 7788 7789 if (!data_sub) { 7790 data_sub = $('.payn').attr('data-sub'); 7791 } 7792 $('.zerobb').remove(); 7793 7794 if($('#payment_method_count').val() > 1){ 7795 $('.paynbtn.zerob').remove(); 7796 $('.order__payment.order__summary.topp').after('<input class="paynbtn zerobb page_break_step page-break-step-0" type="submit" style="margin-top: 25px" value="'+data_sub+'" tabindex="0">'); 7797 $('.order__payment.order__summary.topp').hide(); 7798 7799 }else{ 7800 $('.paynbtn.zerob').remove(); 7801 $('.single-pay').before(' <input class="paynbtn zerobb page_break_step page-break-step-0" type="submit" style="margin-top: 25px" value="'+data_sub+'" tabindex="0">'); 7802 $('.payment_summary_bottom').hide(); 7803 } 7804 $('.single-pay').hide(); 7805 7806 }else{ 7807 $('.zerobb').remove(); 7808 const isPagebreak = $('.order__payment.order__summary.topp.page_break_step') 7809 .is((_, el) => el.className.match(/page-break-step-\d+$/) !== null); 7810 if(!isPagebreak){ 7811 $('.order__payment.order__summary.topp > input').show(); 7812 $('.order__payment.order__summary.topp').show(); 7813 } 7814 7815 7816 if($('#payment_method_count').val() > 1){ 7817 $('.single-pay').hide(); 7818 }else{ 7819 $('.single-pay').show(); 7820 } 7821 if(enableVfairsPayment && !hasVfairsOfflinePayments){ 7822 $('.single-pay').show(); 7823 } 7824 } 7825 7826 // VFC-14947 - add booking fee 7827 let totalPriceAfterTaxProcessing = (parseInt(json.is_tax_inclusive) == 0)? parseFloat(json.TotalAmountWithoutTax) : total_price; 7828 total_text=$('.totalcountT > p').attr('data-total'); 7829 $('.ticket__pkgprice').text(totalPriceAfterTaxProcessing); // VFC-14947 - add booking fee 7830 if(symbol){ 7831 $('.order__summary .price__item > div:nth-of-type(1) span').text(symbol+''+formatTotal(sub_total)); 7832 $('.order__summary .price__item > div.total__price > span').text(symbol+''+formatTotal(totalPriceAfterTaxProcessing)); 7833 $('.ticketItems .totalcountT p').text(total_text+': '+symbol+''+formatTotal(totalPriceAfterTaxProcessing)); 7834 }else{ 7835 $('.order__summary .price__item >
7835 div:nth-of-type(1) span').text(formatTotal(sub_total)); 7836 $('.order__summary .price__item > div.total__price > span').text(formatTotal(totalPriceAfterTaxProcessing)); 7837 $('.ticketItems .totalcountT p').text(total_text+': '+formatTotal(totalPriceAfterTaxProcessing)); 7838 } 7839 7840 // VFC-14947 - add booking fee 7841 // add additional attributes in total span of summary 7842 $('.order__summary .price__item > div.total__price > span').attr('data-original_total_price', total_price); 7843 sessionStorage.setItem('total_price', total_price); 7844 $('.order__summary .price__item > div.total__price > span').attr('data-is_discount_applied', 1); 7845 $('.order__summary .price__item > div.total__price > span').attr('data-amount_after_discount', json.price); 7846 $('.order__summary .price__item > div.total__price > span').attr('data-is_package_tax_inclusive', json.is_tax_inclusive); 7847 let amountWithoutTax = (parseInt(json.is_tax_inclusive) == 0)? parseFloat(json.TotalAmountWithoutTax) : total_price; 7848 $('.order__summary .price__item > div.total__price > span').attr('data-original_total_price_without_tax', amountWithoutTax-PackageDonationAmountNotIncludeBookingFee); 7849 7850 // $('.total-addons-price').remove(); 7851 // $('.total-addons-tax').remove(); 7852 var package_addon_price = $('.package_addon_price').html(); 7853 total_price_addon=parseFloat(package_addon_price,2) - parseFloat(json.discounted_amount,2).toFixed(2); 7854 7855 $('.package_addon_price').text(total_price_addon); 7856 7857 var tax_obligation = $('.tax_obligation_price').html(); 7858 var total_tax= 0.0; 7859 if(typeof tax_obligation !== "undefined") { 7860 total_tax = total_price_addon / 100 * parseFloat(tax_obligation); 7861 } 7862 var total_price1 = parseInt(total_tax) + parseInt(total_price_addon); 7863 7864 $('.order__summary .price__item > div.total__price > span').text((symbol ? symbol : '') +formatTotal(total_price)); 7865 $('.ticketItems .totalcountT p').text(total_text+': '+ (symbol ? symbol : '') +formatTotal(total_price)); 7866 $('.order__summary .price__item > div.total__tax > span').text((symbol ? symbol : '') +formatTotal(total_price)); 7867 7868 var afterDonationAmountRemove=json.onlyAmount.toFixed(2)-PackageDonationAmount; 7869 $('.order__summary .price__item > div:nth-of-type(1) span').attr('data-subtotal', afterDonationAmountRemove.toFixed(2)); 7870 $('.order__summary .price__item > div:nth-of-type(1) span').text((symbol ? symbol : '') +formatTotal(afterDonationAmountRemove)); 7871 if(json.hasOwnProperty("totalTax") && parseFloat(json.totalTax) > 0) { 7872 var show_tax = 0; 7873 $('.order__summary .price__item > div.total-tax').show(); 7874 if((parseFloat(json.totalTax) !=null)) { 7875 show_tax = parseFloat(json.totalTax); // * parseFloat(json.tax) / 100; 7876 } 7877 $('.order__summary .price__item > div.total-tax > span').text( (symbol ? symbol : '') +formatTotal(show_tax)); 7878 $('.order__summary .price__item > div.total-tax > span').attr("data-total_tax", show_tax); 7879 $('.order__summary .price__item > div.total-tax > span').attr("data-total_tax_no_booking_fee", show_tax); 7880 } else { 7881 $('.order__summary .price__item > div.total-tax').hide(); 7882 } 7883 7884 setTotalIncludingBookingFee(TicketPackages); // VFC-14947 - add booking fee 7885 7886 if(parseInt(isTicket) && (parseInt(isStripeElement) || parseInt(isStripeConnectElement)) && !parseInt(isTicketTop)) { 7887 7888 let emailElm = ("input[type='email']"); 7889 let receiptEmail = $(emailElm).val(); 7890 7891 intent_id= ''; 7892 jQuery.ajax({ 7893 url: "https://www.codeseccon.com/en/form/updatePaymentIntent", 7894 data: { 7895 intent_id: intent_id, 7896 amount: total_price.toFixed(2), 7897 appID: 20550, 7898 receiptEmail: receiptEmail 7899 }, 7900 type: "POST", 7901 success: function (response) { 7902 7903 } 7904 }); 7905 } 7906 7907 // FOR ND2022-11 7908 if(app_id == 7798){ 7909 $("#price_details").html(json.discount.name + " - Registration Total " + json.price).show(); 7910 }else{ 7911 if(!ticket){ 7912 if(json.discount.fixed_price !=null){ 7913 $("#price_details").html(json.discount.name + "<br/> " +json.price+ " Discounted price <br/>" + selectedcurrencysymbol + discount_amount_percentage).show(); 7914 }else{ 7915 $("#price_details").html(json.discount.name + "<br/> " + discount_amount_percentage + " Discounted price <br/>" + selectedcurrencysymbol + json.price).show(); 7916 } 7917 } 7918 } 7919 } 7920 7921 } else { 7922 $(".coupn-code-sec input").val(''); 7923 $("#text_help").html("Invalid Discount Code Entered"); 7924 $("#text_help").removeClass("alert-success").addClass("alert-danger").show(); 7925 } 7926 7927 if(typeof discount_verified_callback !== 'undefined'){ 7928 discount_verified_callback(json); 7929 } 7930 7931 btn.attr("disabled", false); 7932 }); 7933 }); 7934 } 7935 7936 7937 7938 } else { 7939 $("#text_help").html("Please enter a Promo Code"); 7940 $("#text_help").addClass("alert-danger").show(); 7941 }
7942 btn.attr("disabled",false); 7943 }); 7944 7945 7946 $('.verify_registration_code').on('click', function (e) { 7947 e.preventDefault(); 7948 var code= $("input[name=registration_code]").val(); 7949 if (code != "") { 7950 $("#registration_code_message").html(''); 7951 jQuery.ajax({ 7952 url: "https://www.codeseccon.com/en/form/registrationCodeVerification", 7953 data: { 7954 registration_code: code, 7955 ajax_call: 1, 7956 appID: 20550, 7957 }, 7958 type: "POST", 7959 success: function (response) { 7960 if(response.indexOf('verified') != -1){ 7961 7962 $("#registration_code_message").html('<span style="color:green;">'+response.toString().replace(/"/g, "")+'</span>'); 7963 }else{ 7964 $("#registration_code_message").html(response.toString().replace(/"/g, "") ); 7965 } 7966 7967 }}); 7968 7969 } else { 7970 $("#registration_code_message").html("Please Enter Registration Code"); 7971 7972 } 7973 }); 7974 }); 7975 7976 var slice = [].slice; 7977 (function ($, window) { 7978 var Starrr; 7979 window.Starrr = Starrr = (function () { 7980 Starrr.prototype.defaults = { 7981 rating: void 0, 7982 max: 5, 7983 readOnly: false, 7984 emptyClass: 'fa fa-star fa-star-emp', 7985 fullClass: 'fa fa-star', 7986 change: function (e, value) { 7987 } 7988 }; 7989 7990 function Starrr($el, options) { 7991 this.options = $.extend({}, this.defaults, options); 7992 this.$el = $el; 7993 this.createStars(); 7994 this.syncRating(); 7995 if (this.options.readOnly) { 7996 return; 7997 } 7998 this.$el.on('mouseover.starrr', 'a', (function (_this) { 7999 return function (e) { 8000 return _this.syncRating(_this.getStars().index(e.currentTarget) + 1); 8001 }; 8002 })(this)); 8003 this.$el.on('mouseout.starrr', (function (_this) { 8004 return function () { 8005 return _this.syncRating(); 8006 }; 8007 })(this)); 8008 this.$el.on('click.starrr', 'a', (function (_this) { 8009 return function (e) { 8010 return _this.setRating(_this.getStars().index(e.currentTarget) + 1); 8011 }; 8012 })(this)); 8013 this.$el.on('starrr:change', this.options.change); 8014 } 8015 8016 Starrr.prototype.getStars = function () { 8017 return this.$el.find('a'); 8018 }; 8019 8020 Starrr.prototype.createStars = function () { 8021 var j, ref, results; 8022 results = []; 8023 var maxStars = this.options.max; 8024 if(this.options.maxStars) { 8025 maxStars = this.options.maxStars; 8026 } 8027 for (j = 1, ref = maxStars; 1 <= ref ? j <= ref : j >= ref; 1 <= ref ? j++ : j--) { 8028 results.push(this.$el.append("<a href='javascript:;' />")); 8029 } 8030 return results; 8031 }; 8032 8033 Starrr.prototype.setRating = function (rating) { 8034 if (this.options.rating === rating) { 8035 rating = void 0; 8036 } 8037 this.options.rating = rating; 8038 this.syncRating(); 8039 return this.$el.trigger('starrr:change', rating); 8040 }; 8041 8042 Starrr.prototype.getRating = function () { 8043 return this.options.rating; 8044 }; 8045 8046 Starrr.prototype.syncRating = function (rating) { 8047 var $stars, i, j, ref, results; 8048 rating || (rating = this.options.rating); 8049 $stars = this.getStars(); 8050 results = []; 8051 var maxStars = this.options.max; 8052 if(this.options.maxStars) { 8053 maxStars = this.options.maxStars; 8054 } 8055 for (i = j = 1, ref = maxStars; 1 <= ref ? j <= ref : j >= ref; i = 1 <= ref ? ++j : --j) { 8056 results.push($stars.eq(i - 1).removeClass(rating >= i ? this.options.emptyClass : this.options.fullClass).addClass(rating >= i ? this.options.fullClass : this.options.emptyClass)); 8057 } 8058 return results; 8059 }; 8060 8061 return Starrr; 8062 8063 })(); 8064 8065 $.fn.extend({ 8066 starrr: function () { 8067 var args, option; 8068 option = arguments[0], args = 2 <= arguments.length ? slice.call(arguments, 1) : []; 8069 return this.each(function () { 8070 var data; 8071 data = $(this).data('starrr'); 8072 if (!data) { 8073 $(this).data('starrr', (data = new Starrr($(this), option))); 8074 } 8075 if (typeof option === 'string') { 8076 return data[option].apply(data, args); 8077 } 8078 }); 8079 } 8080 }); 8081 8082 function starRatingInit() { 8083 $(".starrr").each(function (index) { 8084 var maxStars = $(this).attr('data-stars'); 8085 $(this).starrr( 8086 { 8087 maxStars: maxStars, 8088 change: function (e, value) {} 8089 }); 8090 }); 8091 8092 $('.starrr').on('starrr:change', function (e, value) { 8093 var id = $(this).attr('data-input'); 8094 id = '#'.concat(id); 8095 var $input = $(id); 8096 8097 // Deselect must clear the value (not "0") so required validation still fails. 8098 if (value) { 8099 $input.val(value); 8100 } else { 8101 $input.val(''); 8102 } 8103 8104 if ($input.length && typeof $input.valid === 'function') { 8105 $input.valid(); 8106 } 8107 }); 8108 } 8109 8110 starRatingInit(); 8111 })($, window); 8112 8113</script>
vendor: 1 bytes, line 8113
8113
8114<script> 8115 //V5 API function for old form 8116 function getOldformTicketData() { 8117 TicketPackages = {}; 8118 if(!isTicket && enableV5ApiDiscount){ 8119 var fld = $(".cacl-disc").data('fld').toString(); 8120 8121 let flag = 0; 8122 8123 if (TicketPackages && Object.keys(TicketPackages).length > 0) { 8124 flag = 1; 8125 } 8126 8127 8128 if (!flag) { 8129 var selectedOption = $('#fld_' + fld+ ' option:selected'); 8130 8131 // Get the data-cost attribute of the selected option 8132 const dataCost =selectedOption.attr("data-cost"); 8133 const dataTax = selectedOption.attr("data-tax"); 8134 const dataTaxValue = selectedOption.attr("data-tax-value"); 8135 const paymentMethodId = $('.pmnt_fld option:selected').attr('data-id') || 1; 8136 8137 8138 // Gather selected addons 8139 const addons = []; 8140 $('.addonsvp input[type=checkbox]:checked').each(function () { 8141 const checkbox = $(this); 8142 console.log("id:", parseInt(checkbox.val(), 10)); 8143 console.log("price:", parseFloat(checkbox.attr('data-price'))); 8144 console.log("name:", checkbox.attr('data-name')); 8145 addons.push({ 8146 id: parseInt(checkbox.val(), 10), // Parse value as integer 8147 price: parseFloat(checkbox.attr('data-price')), // Parse price as float 8148 name: checkbox.attr('data-name'), // Add-on name 8149 qty: 1, // Default quantity 8150 apply_discount: checkbox.attr('data-apply-discount') || 0 // Apply discount flag 8151 }); 8152 }); 8153 8154 // console.log("addons:", addons); 8155 8156 // Build TicketPackages object 8157 TicketPackages = { 8158 packages: [ 8159 { 8160 id: $('#fld_' + fld).val(), 8161 price: dataCost, 8162 tax: dataTaxValue, 8163 qty: 1, 8164 isTaxInclusive: dataTax, 8165 addons: addons 8166 } 8167 ], 8168 discountCode: "", 8169 formId: $('#formId').val(), 8170 appId: 20550, 8171 isGroupRegistration: 0, 8172 isGroupMultipleSelect: 0, 8173 enablePaymentForOnePackage: 0, 8174 paymentMethodId: paymentMethodId 8175 }; 8176 8177 } 8178 8179 var addonsDetails = {}; 8180 var count=0; 8181 8182 $('.addonsvp input[type=checkbox]:checked').each(function () { 8183 if(!isTicket && enableV5ApiDiscount){ 8184 var addonId = $(this).val(); 8185 var addonPrice = parseFloat($(this).data('price')) || 0; 8186 var addonName = $(this).data('name'); 8187 var addonApplyDiscount = $(this).attr('data-apply-discount') || 0; 8188 addonsDetails[count] = { 8189 id: addonId, 8190 price: addonPrice, 8191 name: addonName, 8192 qty: 1, 8193 apply_discount: addonApplyDiscount 8194 }; 8195 count++; 8196 } 8197 }); 8198 if(!isTicket && enableV5ApiDiscount){ 8199 var packageId = $('.package_list').val(); // Assuming package ID is retrieved correctly 8200 8201 // Find the correct package in the JSON structure 8202 TicketPackages.packages.forEach(function (pkg) { 8203 if (pkg.id === packageId) { 8204 pkg.addons = Object.values(addonsDetails); // Add the addons to the package's "addons" array 8205 } 8206 }); 8207 } 8208 8209 8210 const userListElements = document.getElementsByName("user_list[]"); 8211 const userListValues = Array.from(userListElements).map(el => el.value); 8212 8213 updateCartFromUserList(userListValues); 8214 paymentSummaryObject.getOldFormPaymentSummaryDetails(TicketPackages); 8215 8216 8217 8218 8219 } 8220 } 8221 function updateCartFromUserList(userList) { 8222 userList.forEach((userData) => { 8223 if (!userData) { 8224 // Skip if userData is empty or null 8225 return; 8226 } 8227 8228 const userObj = JSON.parse(userData); 8229 const packageDetails = userObj.payment_details; 8230 8231 if (packageDetails && packageDetails.package_id) { 8232 const packageId = packageDetails.package_id; 8233 const packageQty = parseInt(packageDetails.package_qty) || 1; 8234 8235 // Check if the package already exists in the cart 8236 const existingPackage = TicketPackages.packages.find(pkg => pkg.id === packageId); 8237 8238 if (existingPackage) { 8239 // Update quantity 8240 existingPackage.qty += packageQty; 8241 } else { 8242 // Add new package 8243 TicketPackages.packages.push({ 8244 id: packageId, 8245 price: packageDetails.package_amount, 8246 tax: packageDetails.tax, 8247 qty: packageQty, 8248 isTaxInclusive: packageDetails.is_tax, 8249 addons: [] // Addons can be handled separately if needed 8250 }); 8251 } 8252 // debugger; 8253 var fld = $('.cacl-disc').data('fld').toString(); 8254 if (userObj[`pmnt_addons_${packageDetails.fieldID}`]) { 8255 const addonIds = userObj[`pmnt_addons_${packageDetails.fieldID}`]; 8256 8257 addonIds.forEach((addonId) => { 8258 let addonPrice = $(`.addon-package${packageDetails.package_id} input`) 8259 .filter(function() { 8260 return $(this).val() == addonId; // Compare the value 8261 }) 8262 .data('price') || 0; 8263 8264 8265 let addonName = $(`.addon-package${packageDetails.package_id} input`) 8266 .filter(function() { 8267 return $(this).val() == addonId; // Compare the value 8268 }) 8269 .data('name') || 0; 8270 8271 let addonApplyDiscount = $(`.addon-package${packageDetails.package_id} input`) 8272 .filter(function() { 8273 return $(this).val() == addonId; // Compare the value 8274 }) 8275 .attr('data-apply-discount') || 0; 8276 8277 8278 let existingAddon = existingPackage.addons.find(addon =>
8278 addon.id === addonId); 8279 8280 if (existingAddon) { 8281 // Increment addon quantity 8282 existingAddon.qty += 1; 8283 } else { 8284 // Add new addon 8285 existingPackage.addons.push({ 8286 id: addonId, 8287 price: addonPrice, 8288 name: addonName, 8289 qty: 1, 8290 apply_discount: addonApplyDiscount 8291 }); 8292 } 8293 }); 8294 } 8295 } 8296 }); 8297 } 8298 8299 function formValidationMessagePlace(error, element) { 8300 var elementType = element.attr("type"); 8301 if (elementType == 'radio' || elementType == 'checkbox') { 8302 var elementName = element.attr("name"); 8303 var q = $("input[name='" + elementName + "']:last"); 8304 error.insertAfter(q); 8305 } else { 8306 error.insertAfter(element); 8307 } 8308 } 8309 8310 8311 function encodeSpecialCharaters (str) { 8312 if (str instanceof Array) { 8313 str = str.toString(); //convert array to string 8314 if(typeof str !== "undefined" && str !==null) { 8315 var strng = str.replace(/&/g, "&") 8316 .replace(/"/g, """) 8317 .replace(/'/g, "'"); 8318 8319 return strng.split(","); //convert string to array 8320 } 8321 }else { 8322 8323 if (typeof str !== "undefined" && str !== null) { 8324 return str.replace(/&/g, "&") 8325 .replace(/"/g, """) 8326 .replace(/'/g, "'"); 8327 } 8328 } 8329 } 8330 8331 8332 8333 8334 8335 8336 $(document).ready(function () { 8337 var fields = '[]'; 8338 var RegformID = ""; 8339 var rules = { 8340 password: { 8341 policy_reset_arabic_num: false, 8342 policy_reset_roman_lower: false, 8343 policy_reset_roman_upper: false, 8344 policy_reset_special_characters: false, 8345 minlength: 0 8346 } 8347 }; 8348 8349 RegformID = "#form_84537"; 8350 8351 $(RegformID).validate({ 8352 rules: rules, 8353 errorPlacement: formValidationMessagePlace, 8354 }); 8355 // Make file inputs conditionally required based on hidden uploaded URL presence (only for app 19017) 8356 try { 8357 var $formB = $(RegformID); 8358 if ($formB.length && typeof $formB.validate === 'function') { 8359 var vB = $formB.validate(); 8360 $formB.find('input[type="file"][data-ajax-upload="1"]').each(function(){ 8361 var $inp = $(this); 8362 var msg = $inp.attr('data-msg-required') || 'This field is required.'; 8363 if (typeof $inp.rules === 'function') { 8364 // Only apply conditional required rule if the field was originally required 8365 var wasRequired = $inp.is('[required]') || String($inp.attr('data-rule-required')).toLowerCase() === 'true'; 8366 $inp.rules('remove', 'required'); 8367 $inp.removeAttr('required').removeAttr('data-rule-required'); 8368 if (wasRequired) { 8369 $inp.rules('add', { 8370 required: { 8371 depends: function(el){ 8372 var hidden = $(el).siblings('input[type="hidden"][data-uploaded-url="1"]'); 8373 return !(hidden.length && hidden.val()); 8374 } 8375 }, 8376 messages: { required: msg } 8377 }); 8378 } 8379 } 8380 }); 8381 } 8382 } catch(e) {} 8383 8384 // Ensure required validation and error message for phone (tel) fields (intl-tel-input) 8385 $.validator.addMethod("requiredPhone", function(value, element) { 8386 value = (value || "").trim(); 8387 if (value === "") return false;
8388 // Treat only country dial code as empty (e.g. +92, +1, +44) 8389 if (/^\+[0-9]{1,4}\s*$/.test(value)) return false; 8390 return true; 8391 }, "This field is required."); 8392 $(RegformID).find('input.tel-number[required], input[name="phone_number"][required]').each(function() { 8393 var $el = $(this); 8394 if (typeof $el.rules === 'function') { 8395 $el.rules('add', { 8396 requiredPhone: true, 8397 messages: { requiredPhone: 'This field is required.' } 8398 }); 8399 } 8400 }); 8401 8402 // override errors/messages translations 8403 8404 var msg; 8405 $.each(JSON.parse(fields), function (index, value) { 8406 if (index == 'email') { 8407 // debugger; 8408 var nameArr = value.split(',{'); 8409 var obj = nameArr[0]; 8410 obj = obj.split('"').join('"'); 8411 obj = obj.split("'").join("'"); 8412 8413 obj = eval("(" + (obj) + ")"); 8414 8415 $('input[name=' + index + ']').rules('add', obj); 8416 if (typeof nameArr[1] === 'undefined') { 8417 return; 8418 } 8419 var msg = nameArr[1].substring(0, nameArr[1].length - 1); 8420 8421 jQuery.validator.addMethod("allowEmails", function (value, element, param) { 8422 8423 var emails_split = msg.split(':'); 8424 8425 var check_inc = 0 8426 $.each(emails_split, function (email_index, email_value) { 8427 var replace = "regex"; 8428 var re = new RegExp(replace, "g"); 8429 8430 if (value.includes(email_value)) { 8431 check_inc = 1; 8432 } 8433 }); 8434 if (check_inc == 1) { 8435 return true; 8436 } else { 8437 return false; 8438 } 8439 }, "Registration using this domain is not allowed."); 8440 jQuery.validator.addMethod("blockEmails", function (value, element, param) { 8441 8442 var emails_split = msg.split(':'); 8443 8444 var elementId = $(element).attr('id'); 8445 8446 var check_inc = 0 8447 $.each(emails_split, function (email_index, email_value) { 8448 var replace = "regex"; 8449 var re = new RegExp(replace, "g"); 8450 if (value.includes(email_value)) { 8451 check_inc = 1; 8452 } 8453 }); 8454 if (check_inc == 1) { 8455 8456 $('span#'+elementId+'-error').remove(); 8457 return false; 8458 } else { 8459 return true; 8460 } 8461 }, "Registration using this domain is not allowed."); 8462 8463 } else { 8464 var obj = value.toString(); 8465 obj = obj.split('"').join('"'); 8466 obj = obj.split("'").join("'"); 8467 obj = {regex: obj}; 8468 $('input[name=' + index + ']').rules("add", obj); 8469 } 8470 }); 8471 8472 $.validator.addMethod( 8473 "regex", 8474 function(value, element, regexp) { 8475 var re = new RegExp(regexp); 8476 return this.optional(element) || re.test(value); 8477 }, 8478 "Please enter valid data." 8479 ); 8480 }); 8481</script>
8481 8482<link rel="stylesheet" 8483 href="https://vepimg.b8cdn.com/uploads/vjfnew/1157/content/files/1611130253intltelinput-css1611130253.css">
8484<script src="https://vepimg.b8cdn.com/uploads/vjfnew/1157/content/files/1611128901intltelinput-min-js1611128901.js"></script>
8484 8485 8486 8487
8488<script> 8489 8490 window.closeModal = function(){ 8491 $('#videoModal').modal('hide'); 8492 $('.attendeOffcanvas').removeClass('show'); 8493 $('.attendbackdrop').removeClass('show'); 8494 if (typeof refreshSessionLimitedFieldAvailability === 'function') { 8495 refreshSessionLimitedFieldAvailability(null); 8496 } 8497 }; 8498 window.changeIcon = function(last){ 8499 //console.log(last) 8500 $('a.user-num'+last+' i').removeClass('fa-plus'); 8501 $('a.user-num'+last+' i').addClass('fa-check'); 8502 $('a.user-num'+last+' i').attr("aria-label","already added"); 8503 $('a.user-num'+last+' i').attr("aria-polite","live"); 8504 $('a.user-num'+last+' i').removeAttr("aria-hidden"); 8505 $('a.user-num'+last+' i').parent().addClass('btn-success'); 8506 }; 8507 var fields_others = '[]'; 8508 var file_name = '[]'; 8509 var multiSelectPlaceholderMap = [] || {}; 8510 8511 window.initFormSelect2 = function ($select, forceReinit) { 8512 if (!$select || !$select.length) { 8513 return; 8514 } 8515 8516 if ($select.hasClass('select2-hidden-accessible')) { 8517 if (!forceReinit) { 8518 return; 8519 } 8520 $select.select2('destroy'); 8521 } 8522 8523 if (!forceReinit && $select.closest(':hidden').length) { 8524 return; 8525 } 8526 8527 var name = $select.attr('name'); 8528 if (!name) { 8529 return; 8530 } 8531 8532 var fieldId = $select.attr('id') || ''; 8533 var fieldName = name.replace(/^fld_/, '').replace(/\[\]$/, ''); 8534 var $placeholder = $('#multi_placeholder_' + fieldName); 8535 var mappedPlaceholder = multiSelectPlaceholderMap[fieldId] 8536 || multiSelectPlaceholderMap['fld_' + fieldName] 8537 || ''; 8538 var placeholder = mappedPlaceholder 8539 || (($placeholder.length && $placeholder.val()) ? $placeholder.val() : '') 8540 || "Please select all that apply"; 8541 var isMultiple = $select.prop('multiple'); 8542 var $dropdownParent = (fieldId ? $('#grp_fld_' + fieldId.replace(/^fld_/, '')) : $()); 8543 if (!$dropdownParent.length) { 8544 $dropdownParent = $select.closest('.form_field_grp'); 8545 } 8546 if (!$dropdownParent.length) { 8547 $dropdownParent = $select.closest('.event__form, .reg-form-data, form'); 8548 } 8549 if (!$dropdownParent.length) { 8550 $dropdownParent = $(document.body); 8551 } 8552 8553 $select.select2({ 8554 width: '100%', 8555 placeholder: placeholder, 8556 closeOnSelect: !isMultiple, 8557 dropdownParent: $dropdownParent 8558 }); 8559 8560 $select.trigger('change.select2'); 8561 }; 8562 8563 $(document).ready(function () { 8564 8565 if(appId == 20576){ 8566 $("<style>").prop("type", "text/css").html(`#form_88802 strong, #form_88802 p strong {font-weight: bold !important;}`).appendTo("head"); 8567 } 8568 8569 $('#bypass').change(function() { 8570 if(this.checked) { 8571 // $('.user-links').css("display", "none"); 8572 $('.packageBlock').css("visibility", "hidden"); 8573 $('.group_registration_label').css("display", "none"); 8574 $('.group-reg-block').css("height", "0px"); 8575 $('.packageBlock').css({ 8576 height: '0px', // set to your desired height 8577 width: '0px' // set to your desired width 8578 }); 8579 /* VFE-60354 - Group Reg - Hide it when package is one */ 8580 }else{ 8581 // $('.user-links').css("display", "block"); 8582 $('.packageBlock').css("visibility", "visible"); 8583 $('.group_registration_label').css("display", "block"); 8584 $('.group-reg-block').css("height", "auto"); 8585 $('.packageBlock').css({ 8586 height: '', 8587 width: '' 8588 }); 8589 } 8590 if (isTicket) { 8591 // $('.user-links').hide(); 8592 } 8593 }) 8594 8595 $.loadScript = function (url, callback) { 8596 $.ajax({ 8597 url: url,
8598 dataType: 'script', 8599 success: callback, 8600 async: true 8601 }); 8602 } 8603 $.each(multiSelectPlaceholderMap, function (index, value) { 8604 if (index && value) { 8605 window.initFormSelect2($('#' + index)); 8606 } 8607 }); 8608 8609 if ($('.searchable-select').length) { 8610 $('.searchable-select').each(function () { 8611 if (!this || !$(this).length) { 8612 return; 8613 } 8614 window.initFormSelect2($(this)); 8615 }); 8616 } 8617 8618 $(".chkall").click(function () { 8619 var selectID = $(this).data('id'); 8620 if ($(this).is(':checked')) { 8621 $('#' + selectID + " option").prop('selected', 'selected'); 8622 } else { 8623 $('#' + selectID + " option").removeAttr("selected"); 8624 } 8625 8626 $('#' + selectID + " option").trigger("change"); 8627 testOtherOption($('#' + selectID), $("#" + $(this).data('other-option'))); 8628 }); 8629 8630 $(".searchable-select").on("select2:select select2:unselect", function (e) { 8631 testOtherOption($(this)); 8632 }) 8633 8634 $('select').change(function () { 8635 testOtherOption($(this)); 8636 }); 8637 8638 8639 function testOtherOption(element, otherOptionElement = null) { 8640 var vals = element.val(); 8641 if (!otherOptionElement) { 8642 otherOptionElement = $("#" + element.data('other-option')); 8643 } 8644 8645 if (otherOptionElement.length > 0) { 8646 if (vals && vals.indexOf("other") >= 0) { 8647 otherOptionElement.css("display", "block"); 8648 if (element.is(':required')) { 8649 otherOptionElement.find("input").prop('required', true); 8650 otherOptionElement.find("input").addClass("req-chk"); 8651 } 8652 } else { 8653 otherOptionElement.css("display", "none"); 8654 if (element.is(':required')) { 8655 otherOptionElement.find("input").prop('required', false); 8656 otherOptionElement.find("input").removeClass("req-chk"); 8657 } 8658 } 8659 } 8660 } 8661 8662 8663 if ("" == 'viewProfile') { 8664 $(".searchable-select").select2("enable", false); 8665 } 8666 let app_id = 20550; 8667 var intlElement = ''; 8668 var input = document.querySelector(".tel-number"); 8669 if(app_id == 18712){ 8670 excludeCountries = ["il"]; 8671 initialCountry = "kw"; 8672 }else{ 8673 excludeCountries = []; 8674 initialCountry = "auto"; 8675 } 8676 if (input != null) { 8677 intlElement = window.intlTelInput(input, { 8678 initialCountry: initialCountry, 8679 geoIpLookup: function (callback) { 8680 $.get('https://ipinfo.io', function () { 8681 }, "jsonp").always(function (resp) { 8682 var countryCode = (resp && resp.country) ? resp.country : ""; 8683 8684 callback(countryCode); 8685 }); 8686 }, 8687 excludeCountries: excludeCountries, 8688 utilsScript: "https://vepimg.b8cdn.com/uploads/vjfnew/1157/content/files/1611129849utils-js1611129849.js?1585994360633" // just for formatting/placeholders etc 8689 }); 8690 8691 8692 setTimeout(function () { 8693 if(!input.value.includes("+"+intlElement.getSelectedCountryData().dialCode)){ 8694 // console.log("Phone Number: ", "+" + intlElement.getSelectedCountryData().dialCode + input.value); 8695 let dialCode = intlElement.getSelectedCountryData().dialCode; 8696 if(typeof input.value !== 'undefined' && typeof dialCode !== 'undefined' ){ 8697 input.value = "+" + dialCode + input.value; 8698 }else{ 8699 input.value = "+"; 8700 } 8701 } 8702 }, 1500); 8703 8704 // $(".iti.iti--allow-dropdown").addClass('col-8'); 8705 } 8706 8707 8708 $(".reg-form-data").submit(function (e) { 8709
8710 // Trim leading/trailing spaces from text-like inputs before any processing 8711 $(this).find('input[type="text"], input[type="email"], input[type="url"], input[type="search"], input[type="number"], textarea').each(function () { 8712 if (typeof this.value === 'string') { 8713 this.value = this.value.trim(); 8714 } 8715 }); 8716 // Validate .jfif files before any other processing 8717 if (!validateAllFileInputs(this)) { 8718 e.preventDefault(); 8719 e.stopPropagation(); 8720 alert('Form cannot be submitted. Please remove all .jfif files and use JPG, PNG, or PDF format instead.'); 8721 8722 // Scroll to the first file input with error 8723 var firstErrorInput = $(this).find('input[type="file"]').filter(function() { 8724 return hasBlockedFileExtensions(this); 8725 }).first(); 8726 8727 if (firstErrorInput.length > 0) { 8728 firstErrorInput[0].scrollIntoView({ behavior: 'smooth', block: 'center' }); 8729 firstErrorInput.focus(); 8730 } 8731 8732 return false; 8733 } 8734 8735 $(".addonp").attr('disabled', false); 8736 8737 $('.addonsvp input[type=checkbox]').each(function () { 8738 8739 $(this).attr("disabled", false); 8740 8741 }); 8742 var $isGroupRegistration = 0; 8743 var isGroupRegistration = 0; 8744 8745 var $app_id = 20550; 8746 console.log("organizationId:",organizationId); 8747 if($isGroupRegistration && ($app_id == 16692 || $app_id == 17704 || organizationId== 107 ) && !parseInt(isTicket)){ 8748 let email = $('input[name="email"]').val().trim(); 8749 if(email == '') { 8750 let randomEmail = 'user_' + Math.random().toString(36).substring(2, 8) + '@gmail.com'; 8751 $('input[name="email"]').val(randomEmail); 8752 $('input[name="email"]').hide(); 8753 $('label[for="fld_1457939"]').hide(); 8754 $('label[for="fld_1470621"]').hide(); 8755 } 8756 } 8757 var post_url = $(this).attr('action'); 8758 8759 // Check if bypass_auto element exists 8760 var checkUpgradeOrNo=true; 8761 if(userDetailsEditTicket){ 8762 checkUpgradeOrNo=false; 8763 } 8764 8765 // Check if user_list does not exist in post request or if it exists but is empty 8766 var userListInputs = $('input[name="user_list[]"]'); 8767 var hasUserListData = false; 8768 8769 if (userListInputs.length > 0) { 8770 userListInputs.each(function() { 8771 if ($(this).val() && $(this).val().trim() !== '') { 8772 hasUserListData = true; 8773 return false; // break the loop 8774 } 8775 }); 8776 } 8777 8778 // Check and update selected_data if email has changed 8779 var currentEmail = $('input[name="email"]').val(); 8780 if (currentEmail && currentEmail.trim() !== '') { 8781 currentEmail = currentEmail.trim(); 8782 8783 // Check if selected_data already exists in the form 8784 var existingSelectedDataInput = $('input[name="selected_data"]'); 8785 if (existingSelectedDataInput.length > 0 && existingSelectedDataInput.val()) { 8786 try { 8787 var existingSelectedData = JSON.parse(existingSelectedDataInput.val()); 8788 var oldEmail = Object.keys(existingSelectedData)[0]; 8789 8790 // If the email in selected_data doesn't match the current email, update it 8791 if (oldEmail && oldEmail !== currentEmail) { 8792 console.log('Email changed from ' + oldEmail + ' to ' + currentEmail + '. Updating selected_data...'); 8793 8794 // Create new selected_data with the updated email 8795 var updatedSelectedData = {}; 8796 updatedSelectedData[currentEmail] = existingSelectedData[oldEmail]; 8797 8798 // Remove old selected_data input 8799 existingSelectedDataInput.remove(); 8800 8801 // Add new hidden input with updated selected_data 8802 $('.reg-form-data').append('<input type="hidden" name="selected_data" value=\'' + JSON.stringify(updatedSelectedData) + '\'>'); 8803 8804 console.log('Updated Selected Data:', updatedSelectedData); 8805 } 8806 } catch (e) { 8807 console.error('Error parsing existing selected_data:', e); 8808 } 8809 } 8810 } 8811 8812 // If user_list doesn't exist or is empty, create selected_data from TicketPackages 8813 if (!hasUserListData && typeof TicketPackages !== 'undefined' && Object.keys(TicketPackages).length > 0) { 8814 var selected_data = {}; 8815 8816 // Get the email from the form 8817 var userEmail = $('input[name="email"]').val(); 8818 if (userEmail && userEmail.trim() !== '') { 8819 selected_data[userEmail] = {}; 8820 8821 // Process TicketPackages to create the format 8822 $.each(TicketPackages, function (packageId, packageData) { 8823 if (!isNaN(parseFloat(packageId)) && isFinite(packageId)) { 8824 selected_data[userEmail][packageId] = {}; 8825 8826 // Get package quantity 8827 if (packageData.pkg_qty) { 8828 selected_data[userEmail][packageId]['package_qty'] = parseInt(packageData.pkg_qty); 8829 } 8830 8831 // Get field addons 8832 var fieldAddons = []; 8833 $.each(packageData, function (key, item) { 8834 if (key !== 'pkg_price' && key !== 'total_price' && key !== 'tax' &&
8834key !== 'pkg_qty' && key !== 'symbol' && key !== 'isDonation') { 8835 if (item && item.id && item.addons_qty) { 8836 var addonsQty = parseInt(item.addons_qty); 8837 for (var i = 0; i < addonsQty; i++) { 8838 fieldAddons.push(parseInt(item.id)); 8839 } 8840 } 8841 } 8842 }); 8843 8844 if (fieldAddons.length > 0) { 8845 selected_data[userEmail][packageId]['field_addons'] = fieldAddons; 8846 } 8847 } 8848 }); 8849 8850 // Add selected_data to the form by creating a hidden input 8851 if (Object.keys(selected_data[userEmail]).length > 0) { 8852 // Remove existing selected_data input if it exists 8853 $('input[name="selected_data"]').remove(); 8854 8855 // Add new hidden input with selected_data 8856 $('.reg-form-data').append('<input type="hidden" name="selected_data" value=\'' + JSON.stringify(selected_data) + '\'>'); 8857 8858 console.log('Selected Data:', selected_data); 8859 } 8860 } 8861 } 8862 8863 if (($("#bypass_auto").length > 0 || ($("#bypass").length > 0 && $("#bypass").is(":checked")) ) && checkUpgradeOrNo && (!multipleTicketEdit)) { 8864 // Initialize data object 8865 var data = {}; 8866 8867 // Serialize form data 8868 var formDataArray = $('.reg-form-data').serializeArray(); 8869 8870 // Process form data 8871 formDataArray.forEach(function (field) { 8872 if (field.name !== "user_list[]") { 8873 if (field.name.indexOf("[]") !== -1) { 8874 var fieldName = field.name.replace("[]", ""); 8875 if (!data[fieldName]) { 8876 data[fieldName] = []; 8877 } 8878 data[fieldName].push(field.value); 8879 } else { 8880 data[field.name] = field.value; 8881 } 8882 } 8883 }); 8884 8885 var userData = []; 8886 var userDataAddons = []; 8887 8888 // Process TicketPackages data 8889 $.each(TicketPackages, function (packageId, package) { 8890 if(!isNaN(parseFloat(packageId)) && isFinite(packageId)) { 8891 userDataAddons[packageId] = []; 8892 $.each(package, function (key, item) { 8893 if (key === 'pkg_qty') { 8894 userData[packageId] = parseInt(item); 8895 } 8896 if (key !== 'pkg_price' && key !== 'total_price' && key !== 'tax' && key !== 'pkg_qty' && key !== 'symbol') { 8897 if (item.id && item.addons_qty) { 8898 var addonsQty = parseInt(item.addons_qty); 8899 for (var i = 1; i < addonsQty + 1; i++) { 8900 userDataAddons[packageId].push(item.id); 8901 } 8902 } 8903 } 8904 }); 8905 } 8906 }); 8907 var counter = 1; 8908 // Populate user data 8909 $.each(userData, function (packageId, qty) { 8910 if(!isNaN(parseFloat(packageId)) && isFinite(packageId)) { 8911 data.package = packageId; 8912 var firstTimeCounter = 0; 8913 for (var i = 1; i < qty + 1; i++) { 8914 if (userDataAddons && userDataAddons[packageId] && firstTimeCounter === 0) { 8915 data.field_addons = userDataAddons[packageId]; 8916 firstTimeCounter++; 8917 } else { 8918 delete data.field_addons; 8919 } 8920 var value = JSON.stringify(data); 8921 $("#user" + counter).val(value); 8922 counter++; 8923 } 8924 } 8925 }); 8926 } 8927 appId = $('#appId').val(); 8928 var totalTicketCount = 0; 8929 $.each(TicketPackages, function (packageId, package) { 8930 if (!isNaN(parseFloat(packageId)) && isFinite(packageId)) { 8931 if (package['pkg_qty'] != '' && package['pkg_qty'] != undefined && !isNaN(package['pkg_qty'])) { 8932 totalTicketCount += parseInt(package['pkg_qty'], 10); 8933 } 8934 } 8935 }); 8936 if (totalTicketCount > 1) { 8937 $('input[name=partner_tag]').val('0'); 8938 } 8939 if (appId != 13170) { 8940 8941 if ($('input[name=partner_tag]').val() == '1') { 8942 if ($(document).find('.user-info-prev').length) { 8943 $('.packageBlock .aPackage').remove(); 8944 if (assignDropdownFixAppIds.includes(Number(appId))) { 8945 $('.packageContainer__head .dropdown .dropdown-btn').first().click(); 8946 } else { 8947 $(document).find('#dropdown-btn').click(); 8948 } 8949 8950 var isGroupRegistration = 0; 8951 var isMultiTicket = 0; 8952 var packageCount = $('.packageBlock').length; 8953 8954 if (parseInt(isGroupRegistration) === 1 && !parseInt(isMultiTicket) && packageCount === 1) { 8955 // Skip clicking user-info-prev 8956 $('input[name="user_list[]"]').each(function() { 8957 $(this).val(''); 8958 }); 8959 var $packageContainer = $('.user-info-prev').closest('.packageContainer'); 8960 var count = $packageContainer.find('.packageContainer__head').attr("data-count",0); 8961 } 8962 8963 // Add custom data attribute to identify source 8964 $(document).find('.user-info-prev') 8965 .attr('data-click-source', 'partner_tag_section') 8966 .click(); 8967 remaining_addons = $('.packageBlock').attr('data-remaining-addons'); 8968 remaining_addons_ids = $('.packageBlock').attr('data-remaining-addons-ids'); 8969 $('.packageBlock .aPackage').attr('data-addonsname', remaining_addons); 8970 $('.packageBlock .aPackage').attr('data-addons', remaining_addons_ids); 8971 $('.packageBlock').attr('data-remaining-addons', ''); 8972 $('.packageBlock').attr('data-remaining-addons-ids', ''); 8973 } 8974 } 8975 } 8976 // var data = $(this).serialize(); 8977 // debugger; 8978 8979 // Empty remaining addons when both toggles are enabled and only one package is selected 8980 var autoTicketToBuyer = 0; 8981 var requireUniqueEmailsForParentAndChildUsers = 0; 8982 var totalPackagesOnPage = $('.packageBlock').length; 8983 if (parseInt(autoTicketToBuyer) === 1 && parseInt(requireUniqueEmailsForParentAndChildUsers) === 1 && totalPackagesOnPage === 1) { 8984 $('.packageBlock').attr('data-remaining-addons', ''); 8985 } 8986 8987 8988 if (appId == 10693) { 8989 if($('#fld_1385834').val() != ''){ 8990 console.log($('#fld_1385834').val()); 8991 console.log('Guest Tickets'); 8992 console.log($('#fld_1392784').val()); 8993 guestUser=$('#fld_1392784').val() 8994 console.log('ceremonyList'); 8995 console.log(ceremonyList); 8996 var index = ceremonyList.indexOf($('#fld_1385834').val()); 8997 index=index+1; 8998 console.log(index); 8999 ceremonyIndex='ceremony'+index; 9000 console.log('ceremonyIndex: '+ceremonyIndex); 9001 console.log('ceremoniesComparison : '); 9002 console.log(ceremoniesComparison); 9003 // Get the remaining spots for ceremony1 9004 let remaining = ceremoniesComparison[ceremonyIndex]['remaining']; 9005 if(currentUserChild && currentUserChild >0){ 9006 parentChild= currentUserChild + 1; 9007 remaining= remaining + parentChild; 9008 } 9009 console.log('remaining : '+remaining ); 9010 // Append options based on the number of remaining spots 9011 if (remaining == 1) { 9012 // No append when remaining == 1 9013 //alert("Only 1 guest ticket available, no extra options will be added."); 9014 $('#fld_1392784 option:gt(0)').remove(); 9015 9016 if ($('#fld_1392784 option[value="' + guestUser + '"]').length > 0) { 9017 9018 } else { 9019 alert('You cannot select Guest ticket, as have less capacity. You can proceed without it'); 9020 shouldRunStripeSubmit = false; 9021 return false;
9022 } 9023 } else if (remaining == 2) { 9024 // Append only one option when remaining == 2 9025 $('#fld_1392784 option:gt(1)').remove(); 9026 if ($('#fld_1392784 option[value="' + guestUser + '"]').length > 0) { 9027 9028 } else { 9029 alert('Please select Guest ticket, as previous selected is removed due to less capacity'); 9030 shouldRunStripeSubmit = false; 9031 return false; 9032 } 9033 9034 } else if (remaining == 3) { 9035 // remainingOption=remaining-1; 9036 $('#fld_1392784 option:gt(2)').remove(); 9037 if ($('#fld_1392784 option[value="' + guestUser + '"]').length > 0) { 9038 9039 } else { 9040 alert('Please select Guest ticket, as previous selected is removed due to less capacity'); 9041 shouldRunStripeSubmit = false; 9042 return false; 9043 } 9044 } else if (remaining > 3) { 9045 remainingOption=remaining-1; 9046 $('#fld_1392784 option:gt('+remainingOption+')').remove(); 9047 if ($('#fld_1392784 option[value="' + guestUser + '"]').length > 0) { 9048 9049 } else { 9050 alert('Please select Guest ticket, as previous selected is removed due to less capacity'); 9051 shouldRunStripeSubmit = false; 9052 return false; 9053 } 9054 }else{ 9055 alert('We are at capacity'); 9056 $('#fld_182262').prop('disabled', true); 9057 shouldRunStripeSubmit = false; 9058 return false; 9059 } 9060 } 9061 } 9062 9063 9064 var trackedSoldOutOffFields = []; 9065 (function captureTrackedSoldOutOffFields() { 9066 var raw = $('#off_fields').val(); 9067 if (!raw) { 9068 return; 9069 } 9070 if (Array.isArray(raw)) { 9071 trackedSoldOutOffFields = raw.slice(); 9072 return; 9073 } 9074 try { 9075 var parsed = JSON.parse(raw); 9076 if (Array.isArray(parsed)) { 9077 trackedSoldOutOffFields = parsed; 9078 return; 9079 } 9080 } catch (captureErr) {} 9081 trackedSoldOutOffFields = String(raw).split(',').map(function (item) { 9082 return item.trim(); 9083 }).filter(Boolean); 9084 })(); 9085 9086 var off_fields = new Array(); 9087 // Other apps: original off_fields logic (no formHasSteps) 9088 $("form .form_field_grp").each(function (index) { 9089 id = $(this).attr('id'); 9090 if ($('span#' + id).css('display') == "none" || $(this).find(".page-break-fields").css("display") === "none") { 9091 if ($('span#' + id + ' input').attr('id')) { 9092 off_fields.push($('span#' + id + ' input').attr('id')); 9093 } 9094 if ($('span#' + id + ' textarea').attr('id')) { 9095 off_fields.push($('span#' + id + ' textarea').attr('id')); 9096 } 9097 if ($('span#' + id + ' select').attr('id')) { 9098 off_fields.push($('span#' + id + ' select').attr('id')); 9099 } 9100 if ($('span#' + id + ' input[type="checkbox"]').attr('name')) { 9101 let name = $('span#' + id + ' input[type="checkbox"]').attr('name'); 9102 off_fields.push(name.replace('[]', '')); 9103 } 9104 if ($('span#' + id + ' input[type="radio"]').attr('name')) { 9105 let name = $('span#' + id + ' input[type="radio"]').attr('name'); 9106 off_fields.push(name.replace('[]', '')); 9107 } 9108 } 9109 }); 9110 9111 9112 $('.form_field_grp[data-is-limit-field="1"]').each(function () { 9113 var $grp = $(this); 9114 var $column = $grp.closest('div[class*="col-"]'); 9115 if ($grp.is(':visible') && (!$column.length || $column.is(':visible'))) { 9116 return; 9117 } 9118 var $select = $grp.find('select[id]').first(); 9119 if ($select.length) { 9120 off_fields.push($select.attr('id')); 9121 return; 9122 } 9123 var checkboxName = $grp.find('input[type="checkbox"][name]').first().attr('name'); 9124 if (checkboxName) { 9125 off_fields.push(checkboxName.replace(/\[\]$/, '')); 9126 } 9127 }); 9128 if (trackedSoldOutOffFields.length) { 9129 off_fields = off_fields.concat(trackedSoldOutOffFields); 9130 }
9131 off_fields = [...new Set(off_fields.filter(Boolean))]; 9132 $('#off_fields').val(off_fields); 9133 9134 $(".others_check").each(function (index) { 9135 if($(this).find('.col-12 > label:nth-of-type(2)').length){ 9136 error_label= $(this).find('.col-12 > label:nth-of-type(2)').clone(); 9137 $(this).find('.col-12 > label:nth-of-type(2)').remove(); 9138 $(this).after(error_label); 9139 } 9140 }); 9141 9142 9143 e.preventDefault(); 9144 9145 // VFC-17411 - add receiptEmail in payment intent for stripe Element 9146 if(parseInt(isTicket) && (parseInt(isStripeElement)) ) { 9147 // updateStripePaymentIntentInfoBeforeSubmit(total_price); 9148 } 9149 9150 var flag =0; 9151 $.each(JSON.parse(fields_others), function (index, value) { 9152 if ($("#group_" + value).css('display') == 'block') { 9153 if ($("#" + value).val() == '') { 9154 $("#" + value + "-error").remove(); 9155 $("#" + value).after('<label id="' + value + '-error" for="' + value + '" style="display: block; color: red;">This field is required.</label>'); 9156 flag = 1; 9157 } 9158 $("#" + value).on('keyup', function (e) { 9159 if ($("#" + value).val() == '') { 9160 $("#" + value + "-error").remove(); 9161 $("#" + value).after('<label id="' + value + '-error" for="' + value + '" style="display: block; color: red;">This field is required.</label>'); 9162 shouldRunStripeSubmit = false; 9163 return false; 9164 } else { 9165 $("#" + value + "-error").remove(); 9166 } 9167 }); 9168 } 9169 9170 }); 9171 9172 if(flag){ 9173 shouldRunStripeSubmit = false; 9174 return false; 9175 } 9176 9177 if (!$(this).valid()) { 9178 $("input[type=checkbox], input[type=radio]").each(function () { 9179 if ($(this).siblings('.error').length != 0) { 9180 var errorClone = $(this).siblings('label.error').clone(); 9181 $(this).siblings('label.error').remove(); 9182 $(this).parent('div').parent('div').after(errorClone); 9183 errorClone.css('margin-left', '15px'); 9184 } 9185 }); 9186 $(".select2.select2-container").each(function () { 9187 if ($(this).siblings('.error').length != 0) { 9188 var errorClone = $(this).siblings('label.error').clone(); 9189 $(this).siblings('label.error').remove(); 9190 $(this).append(errorClone); 9191 } 9192 }); 9193 shouldRunStripeSubmit = false; 9194 return false; 9195 } 9196 9197 9198 $file_flag=0; 9199 $(JSON.parse(file_name)).each(function (key, val) { 9200 const fi = document.getElementById(val); 9201 // Check if any file is selected. 9202 let app_id = 20550; 9203 let originalSize = 5096; 9204 if (app_id == 12279 || app_id == 13625 || app_id == 15344) { 9205 originalSize = 150000; 9206 } 9207 if (app_id == 10486) { 9208 originalSize = 48830; 9209 } 9210 if (app_id == 16205 || app_id == 15223) { 9211 originalSize = 51200; 9212 } 9213 if (app_id == 16656) { 9214 originalSize = 256000; 9215 } 9216 if (app_id == 15535) { 9217 originalSize = 10240; 9218 } 9219 if (app_id == 1000007457) { 9220 originalSize = 10240; 9221 } 9222 if (app_id == 1000002175) { 9223 originalSize = 1048576; 9224 } 9225 if (app_id == 1000003444) { 9226 originalSize = 2097152; 9227 } 9228 if (app_id == 18921 || app_id == 16729 || app_id == 21402 || app_id == 1000002791) { 9229 originalSize = 48830; 9230 } 9231 if (originalSize == 5096){ 9232 } 9233 if (fi.files.length > 0) { 9234 for (i = 0; i <= fi.files.length - 1; i++) { 9235 const fsize = fi.files.item(i).size; 9236 const file = Math.round((fsize / 1024)); 9237 // The size of the file. 9238 // console.log(file); 9239 if (file >= originalSize) { 9240 $file_flag = 1; 9241 $("#" + val + "-error").remove(); 9242 $("#" + val).after('<label id="' + val + '-error"
9242class="error" for="' + val + '" style="display: block; color: red;">File Size Too Large. Please upload a file up to 5 MB.</label>'); 9243 } else { 9244 $("#" + val + "-error").remove(); 9245 } 9246 } 9247 } 9248 }); 9249 if($file_flag == 1){ 9250 shouldRunStripeSubmit = false; 9251 return false; 9252 } 9253 9254 9255 if ($(".vfarisCaptcha").length) { 9256 if (grecaptcha.getResponse() === "") { 9257 alert('Error: \n Please validate the Captcha test'); 9258 return; 9259 } 9260 } 9261 9262 9263 var syncedPhoneNumber = ''; 9264 var telInput = document.querySelector(".tel-number"); 9265 if (telInput != null) { 9266 syncedPhoneNumber = syncPhoneNumberForSubmit(); 9267 } 9268 var formData = new FormData(this); 9269 if (syncedPhoneNumber) { 9270 formData.set('phone_number', syncedPhoneNumber); 9271 } 9272 var qtyCount = 0; 9273 var $isGroupRegistration = 0; 9274 if ($isGroupRegistration != null && $isGroupRegistration == true) { 9275 var groupEmails = ""; 9276 groupEmails = groupEmails.replace(/ /g, "+"); 9277 var groupEmailsArray = groupEmails.split(','); 9278 formData.append("group_registration_value", $('.user_list').val()); 9279 formData.append("group_registration", true); 9280 formData.append("post_submit", false); 9281 formData.forEach(function(value, key) { 9282 if (key.includes("qty") && value != '') { 9283 qtyCount=parseInt(qtyCount) + parseInt(value); 9284 } 9285 }); 9286 $(".pmnt_fld option[value!='']").first().attr('selected'); 9287 9288 if (isTicket) { 9289 if($('.edit-block-open').length == 0){ 9290 var savedPackage = localStorage.getItem("savedPackage"); 9291 var $packageContainer = $('#packageContainerBlock' + savedPackage, window.parent.document); 9292 // Update data object 9293 var data = {}; 9294 if (typeof $packageContainer !== 'undefined') { 9295 if ($packageContainer.find('> .aPackage').length > 0) { 9296 $packageContainer.find('> .aPackage').each(function () { 9297 var $package = $(this); 9298 var pack_id = $package.attr("data-pack"); 9299 var name = $package.find('.aPackage__detail__cell:nth-of-type(1) p').text(); 9300 var email = $package.find('.aPackage__detail__cell:nth-of-type(2) p').text().replace(/\s/g, ""); 9301 if (!data[email]) { 9302 data[email] = name + ',' + pack_id; 9303 } 9304 }); 9305 current_email = $('input[name=email]').val(); 9306 if (data[current_email] && isUniqueEmail==true) { 9307 $('.email-error').remove(); 9308 $('input[name=email]').after('<label id="email-error" class="email-error" for="group" style="display: block; color: red;">Email already in use</label>'); 9309 shouldRunStripeSubmit = false; 9310 return false; 9311 } 9312 } 9313 } 9314 } 9315 9316 } 9317 9318 9319 9320 9321 } else { 9322 formData.append("group_registration_value", $('.user_list').val()); 9323 formData.append("group_registration", false); 9324 formData.append("post_submit", true); 9325 9326 formData.forEach(function(value, key) { 9327 if (key.includes("qty") && value != '') { 9328 qtyCount=parseInt(qtyCount) + parseInt(value); 9329 } 9330 }); 9331 9332 selected = $('.user_list').val(); 9333 9334 if(isTicket){ 9335 sumTotal=0; 9336 let app_id = 20550; 9337 let excluded_app_ids = [18834,18423, 17033,15625,14838,10401, 10397, 10710, 11778, 11759, 11755, 11772, 11866, 1000200,11866, 14376, 14377, 14525,14172,14838,14853,11561,15461,15741,16644,16279,16782,16783,18414,20463, 1000000441,22682,1000001317,1000001478, 10003234, 10003307, 1000008001]; 9338 let excluded_org_ids = ["78"]; 9339 if(!excluded_app_ids.includes(app_id) && !excluded_org_ids.includes(organizationId)){ 9340 if ($('.packageContainer .packageContainer__head', window.parent.document).length) { 9341 $('.packageContainer .packageContainer__head', window.parent.document).each(function () { 9342 var $package = $(this); 9343 var oriTotal = $package.attr("data-ori-total"); 9344 sumTotal=parseInt(oriTotal)+sumTotal; 9345 }); 9346 selected=sumTotal; 9347 } 9348 }else{ 9349 if ($('.packageContainer .packageContainer__head', window.document).length) { 9350 $('.packageContainer .packageContainer__head', window.document).each(function () { 9351 var $package = $(this); 9352 var oriTotal = $package.attr("data-ori-total"); 9353 sumTotal=parseInt(oriTotal)+sumTotal; 9354 }); 9355 selected=sumTotal; 9356 } 9357 } 9358 9359 } 9360 9361 count_value = 0; 9362 9363 var groupEmailsArray = $("input[name='user_list[]']").map(function () { 9364 if ($(this).val()) { 9365 count_value++; 9366 var obj = jQuery.parseJSON($(this).val()); 9367 if (obj.email) { 9368 return obj.email; 9369 } else { 9370 return; 9371 } 9372 9373 } 9374 }).get(); 9375 groupEmails = groupEmailsArray.join(","); 9376 checkUpgradeOrNo=false; 9377 if(userDetailsEditTicket && isTicket){ 9378 checkUpgradeOrNo=true; 9379 } 9380 9381 var appId = 20550; 9382 // if(appId == 19899 && selected == 50 && count_value == 49 && $("#user100").val() != ""){ 9383 // count_value=50; 9384 // } 9385 $("#group-error").remove(); 9386 9387 // Ticket group max: auto-assign remaining to parent before completeness check 9388 if (typeof validateAndEnforceTicketGroupMaxOnSubmit === 'function' && !validateAndEnforceTicketGroupMaxOnSubmit()) { 9389 shouldRunStripeSubmit = false;
9390 return false; 9391 } 9392 9393 // Recalculate assignment count after possible auto-assign 9394 count_value = 0; 9395 groupEmailsArray = $("input[name='user_list[]']").map(function () { 9396 if ($(this).val()) { 9397 count_value++; 9398 var obj = jQuery.parseJSON($(this).val()); 9399 if (obj.email) { 9400 return obj.email; 9401 } else { 9402 return; 9403 } 9404 } 9405 }).get(); 9406 groupEmails = groupEmailsArray.join(","); 9407 9408 if (!$('.user-links').length == 0) { 9409 if (selected != null && (isTicket ? selected > 1 : selected >= 1)) { 9410 if (selected != count_value && selected !== undefined) { 9411 var app_id = 20550; 9412 // console.log('$("#bypass_auto").length'); 9413 // console.log($("#bypass_auto").length); 9414 // App 3850 upgrade: bypass (checkbox or bypass_auto) skips ticket-vs-user count check when auto-assign does not fill every package row 9415 var bypassSkipsGroupTicketCountCheck3850 = (parseInt(app_id, 10) === 3850 && ($("#bypass_auto").length > 0 || ($("#bypass").length > 0 && $("#bypass").is(":checked")))); 9416 if((($("#bypass_auto").length == 0 && $("#bypass").length == 0) || checkUpgradeOrNo || (app_id == 22243 && $("#bypass").val() == 0)) && !bypassSkipsGroupTicketCountCheck3850){ // 9417 if(isTicket){ 9418 if(isTicketTop){ 9419 $('.user_list').after('<label id="group-error" class="error" for="group" style="display: block; color: red;">Please assign below tickets to user</label>'); 9420 }else{ 9421 $('.packageBlock').after('<label id="group-error" class="error" for="group" style="display: block; color: red;">Please assign below tickets to user</label>'); 9422 } 9423 9424 }else{ 9425 if (app_id == 9185) { 9426 $('.user_list').after('<label id="group-error" class="error" for="group" style="display: block; color: red;">Please add your spouse/partner details by clicking the button below - It is mandatory, if you wish to bring your spouse/partner to any of the events.</label>'); 9427 } else { 9428 $('.user_list').after('<label id="group-error" class="error" for="group" style="display: block; color: red;">Secondary users are required, please add all Secondary user</label>'); 9429 } 9430 } 9431 9432 9433 shouldRunStripeSubmit = false; 9434 return false; 9435 } 9436 } 9437 } 9438 } 9439 $("#group-error").remove(); 9440 $('#edit-profile-extra-addon-error').remove(); 9441 var isGroupRegistrationField= ''; 9442 if(isTicket && isGroupRegistrationField){ 9443 var $packageBlock = $('.packageBlock'); 9444 remainingAddons = ($packageBlock.length && $packageBlock.attr("data-remaining-addons")) || undefined; 9445 if (typeof remainingAddons !== "undefined" && remainingAddons != "") { 9446 // Check if single package with single quantity is selected 9447 // var isSinglePackage = $('.packageContainer').length === 1; 9448 // var packageQty = isSinglePackage ? parseInt($('.packageContainer .packageContainer__head').attr("data-ori-total")) : 0; 9449 9450 // if (isSinglePackage && packageQty === 1) { 9451 // // Single package with single quantity - empty the data-remaining-addons attribute 9452 // $('.packageBlock').attr("data-remaining-addons", ""); 9453 // } else { 9454 // Multiple packages or single package with multiple quantity - show error 9455 if(isTicketTop){ 9456 $('.user_list').after('<label id="group-error" class="error" for="group" style="display: block; color: red;">Please assign the remaining addons: ' + remainingAddons + '</label>'); 9457 }else{ 9458 $('.packageBlock').after('<label id="group-error" class="error" for="group" style="display: block; color: red;">Please assign the remaining addons: ' + remainingAddons + '</label>'); 9459 } 9460 shouldRunStripeSubmit = false;
9461 return false; 9462 // } 9463 } 9464 } 9465 9466 } 9467 var isGroupRegistration = 0; 9468 var isGroupRegistrationField = ''; 9469 var simplifiedTicketAssignment = ''; 9470 // simplifiedTicketAssignment=1; 9471 if (!(parseInt(isGroupRegistrationField) && parseInt(isGroupRegistration))) { 9472 payment_name= $('input[name="optionsRadios"]:checked').data('name'); 9473 price=$('.order__summary .price__item > div.total__price > span').text(); 9474 var priceCheck = price.replace(/[^0-9.]/g, ''); 9475 if (priceCheck != '0.00' && priceCheck != '0') { 9476 9477 9478 9479 9480 if (parseInt(isTicket) && parseInt(isStripeElement) && payment_name == 'Stripe') { 9481 9482 if (!isStripeValidation) { 9483 shouldRunStripeSubmit = true; 9484 return false; 9485 } 9486 } 9487 9488 9489 if (parseInt(isTicket) && parseInt(isStripeConnectElement) && payment_name == 'Stripe connect') { 9490 9491 if (!isStripeValidation) { 9492 shouldRunStripeSubmit = true; 9493 return false; 9494 } 9495 } 9496 } 9497 9498 } 9499 $(".addonp").attr('disabled', false); 9500 id=$('input[type="email"]').attr('id'); 9501 $('#'+id+'-error').remove(); 9502 if(groupEmailsArray.indexOf($('input[type="email"]').val()) !== -1){ 9503 // $('input[type="email"]').after('<label id="'+id+'-error" class="error" for="'+id+'" style="display: block; color: red;">Email must not contain these emails: '+groupEmails+'</label>'); 9504 // return false; 9505 } 9506 9507 9508 9509 payment_name= $('input[name="optionsRadios"]:checked').data('name'); 9510 if (parseInt(isTicket) && parseInt(isStripeElement) && payment_name =='Stripe' ) { 9511 if(client_secret == ''){ 9512 formData.append("stripeToken", ''); 9513 }else{ 9514 formData.append("stripeToken", intent_id); 9515 } 9516 9517 } 9518 9519 9520 if (parseInt(isTicket) && parseInt(isStripeConnectElement) && payment_name == 'Stripe connect') { 9521 if (client_secret == '') { 9522 formData.append("stripeToken", ''); 9523 } else { 9524 formData.append("stripeToken", intent_id); 9525 } 9526 9527 } 9528 9529 9530 $("#LoadingBar").show(); 9531 $("#LoadingBar")[0].scrollIntoView({ behavior: 'smooth', block: 'center' }); 9532 9533 9534 9535 9536 var appID = 20550; 9537 var isNewFormDataEmpty = false; 9538 if (parseInt(isTicket)) { 9539 if (qtyCount == 1) { 9540 var newFormData = new FormData(); 9541 formData.forEach(function (value, key) { 9542 if (key === "user_list[]") { 9543 // Skip adding 'user_list[]' to new FormData if 'qty' is found 9544 } else { 9545 newFormData.append(key, value); 9546 } 9547 }); 9548 isNewFormDataEmpty = true; 9549 } 9550 } 9551 9552 9553 $("input[type=submit]").attr('disabled', true); 9554 var dataToSend = isNewFormDataEmpty ? newFormData : formData; 9555 // Convert FormData to JSON 9556 // OpenReplay disabled 9557 // if (typeof window.OpenReplay !== 'undefined') { 9558 // var jsonOBJ = Object.fromEntries(dataToSend.entries()); 9559 // window.OpenReplay.event( 9560 // 'registrationData', 9561 // jsonOBJ 9562 // ); 9563 // } 9564 if('0' == '0'){ 9565 var filteredUsers = dataToSend.getAll('user_list[]').filter(function(item) { return item && item.length > 0; }); 9566 if (filteredUsers.length !== dataToSend.getAll('user_list[]').length) { 9567 dataToSend.delete('user_list[]');
9568 filteredUsers.forEach(function(item) { dataToSend.append('user_list[]', item); }); 9569 } 9570 } 9571 9572 9573 jQuery.ajax({ 9574 url: post_url, 9575 data: dataToSend, 9576 type: "POST", 9577 cache: false, 9578 contentType: false, 9579 processData: false, 9580 success: function (response) { 9581 9582 var app_id = 20550; 9583 9584 // OpenReplay disabled 9585 // if (typeof window.OpenReplay !== 'undefined') { 9586 // window.OpenReplay.event( 9587 // 'registrationPOSTResponse_Success', 9588 // response 9589 // ); 9590 // } 9591 if($('#custom_registration_form_url').length == 1){ 9592 if (typeof customRegistrationFormCallBack !== 'undefined') { 9593 customRegistrationFormCallBack(response); 9594 return false; 9595 } 9596 } 9597 if($('#custom_registration_booth_form_url').length == 1){ 9598 if (typeof customRegistrationBoothFormCallBack !== 'undefined') { 9599 customRegistrationBoothFormCallBack(response); 9600 return false; 9601 } 9602 } 9603 var response = eval('(' + response + ')'); 9604 var newUserData=null; 9605 9606 9607 if (response.status === true) { 9608 9609 if (enableV5EnhanceAvailabilityApi && !enhancedTicketAvailabilityObject.validatePackageAndAddonQtyAfterFormSubmit(enableV5EnhanceAvailabilityApi, isGroupBypassMember, response)) { 9610 return false; 9611 } 9612 9613 if (response.holdCard) { 9614 $('#cardModal .st-payment-title').text(response.name) 9615 $('#cardModal .st-payment-des').text(response.description) 9616 $('#cardModal .ticket-dec h3').text(response.symbol+''+response.amount) 9617 $('#cardModal #card_success_page').val(response.success_page) 9618 $('#cardModal #card_faliur_page').val(response.faliur_page) 9619 $('#cardModal #card_url').val(response.url) 9620 $('#cardModal #card_name').val(response.name) 9621 $('#cardModal #card_user_type').val(response.user_type) 9622 $('#cardModal #card_payment_method_id').val(response.payment_method_id) 9623 $('#cardModal #card_user_id').val(response.user_id) 9624 $('#cardModal #card_currency').val(response.currency) 9625 $('#cardModal #card_amount').val(response.amount) 9626 $('#cardModal #card_description').val(response.description) 9627 $('#cardModal .card-title').text('Stripe Payment of '+response.amount) 9628 $('#cardModal').modal('show'); 9629 // window.location.replace(response.submitURL); 9630 return false; 9631 } 9632 if (response.stripeInForm) { 9633 window.location.replace(response.submitURL); 9634 return false; 9635 } 9636 if ($isGroupRegistration) { 9637 var group = ""; 9638 var user_id = group.substring(4); 9639 9640 if (response.post_data) { 9641 var syncedPhone = syncPhoneNumberForSubmit(); 9642 if (syncedPhone) { 9643 response.post_data.phone_number = syncedPhone; 9644 } 9645 var phoneTelInput = document.querySelector('.tel-number, input[name="phone_number"]'); 9646 var phoneIti = phoneTelInput ? getIntlTelInputInstance(phoneTelInput) : null; 9647 if (phoneIti && typeof phoneIti.getSelectedCountryData === 'function') { 9648 var phoneCountryData = phoneIti.getSelectedCountryData(); 9649 if (phoneCountryData && phoneCountryData.iso2) { 9650 response.post_data.phone_country_iso = phoneCountryData.iso2; 9651 } 9652 } 9653 } 9654 9655 if (isTicket) { 9656 var savedPackage = localStorage.getItem("savedPackage"); 9657 var TicketPackages = localStorage.getItem("TicketPackages"); 9658 var TicketPackages = JSON.parse(TicketPackages); 9659 var all_addons_name=""; 9660 var all_addons_name_box=""; 9661 response.post_data.package = savedPackage; 9662 if(response.post_data.field_addons){ 9663 var jsonfield_addons = response.post_data.field_addons; 9664 $.each(jsonfield_addons,function (packageId, package) { 9665 if(!isNaN(parseFloat(packageId)) && isFinite(packageId)) { 9666 if(TicketPackages[savedPackage][package]['addons_name']){ 9667 if(all_addons_name == ''){ 9668 all_addons_name=TicketPackages[savedPackage][package]['addons_name']; 9669 all_addons_name_box+='<span>'+TicketPackages[savedPackage][package]['addons_name']+'</span>'; 9670 }else{ 9671 all_addons_name+=', '+TicketPackages[savedPackage][package]['addons_name']; 9672 all_addons_name_box+='<span>'+TicketPackages[savedPackage][package]['addons_name']+'</span>'; 9673 } 9674 } 9675 } 9676 9677 9678 }); 9679 9680 9681 }else{ 9682 var jsonfield_addons = ''; 9683 } 9684 9685 } 9686 9687 // Save this child to user_list[] BEFORE recalculating limits so the current selection is included 9688 window.parent.document.getElementById(group).value = JSON.stringify(response.post_data); 9689 9690 if (window.parent && typeof window.parent.refreshSessionLimitedFieldAvailability === 'function') { 9691 window.parent.refreshSessionLimitedFieldAvailability(null); 9692 } else if (window.parent && typeof window.parent.dynamicLimitDropdown === 'function') { 9693 var parentDropdownIds = window.parent.collectLimitedDropdownIds(window.parent.$(window.parent.document)); 9694 window.parent.dynamicLimitDropdown(parentDropdownIds, 1); 9695 } 9696 9697 window.parent.closeModal(); 9698 var ret = group.replace('user', ''); 9699 const last = ret; 9700 window.parent.changeIcon(last); 9701 9702 /* JIRA Ticket - VFC-19349 */ 9703 9704 9705 var appID = 20550; 9706 if (appID == 10084) { 9707 var post_of_secondary_user = response.post_data; 9708 var addonPrices = 0; 9709 var packageAmount = parseFloat(post_of_secondary_user.payment_details?.package_amount) || 0; 9710 9711 for (var prop in post_of_secondary_user) { 9712 if (prop.startsWith('pmnt_addons_')) { 9713 var addonID = prop.replace('pmnt_addons_', ''); 9714 var fieldName = "pmnt_addons_" + addonID + "[]"; 9715 var fieldValues = post_of_secondary_user[prop] || [];
9716 fieldValues.forEach(function (item) { 9717 var addonPrice = parseFloat(document.querySelector('input[type="checkbox"][name="' + fieldName + '"][value="' + item + '"]')?.getAttribute('data-price')) || 0; 9718 addonPrices += addonPrice; 9719 }); 9720 } 9721 } 9722 9723 var totalAmount = packageAmount + addonPrices; 9724 var parentWindow = window.parent; 9725 if (parentWindow && parentWindow.document) { 9726 var childDocument = parentWindow.document; 9727 var elements = childDocument.getElementsByClassName('show_payment_response'); 9728 var pmnt_fld_name = $('.pmnt_fld').attr('name'); 9729 var symbol = $("select[name=" + pmnt_fld_name + "]").find(':selected').attr('data-symbol'); 9730 if (elements.length > 0) { 9731 var user_number = parseFloat(ret) + parseFloat(1); 9732 elements[0].innerHTML += "<p><strong>Price for User " + user_number + ":</strong> " + totalAmount + " " + symbol + "</p>"; 9733 } 9734 } 9735 9736 } 9737 if (!isTicket && enableV5ApiDiscount){ 9738 window.parent.getOldformTicketData(); 9739 } 9740 // window.parent.getOldformTicketData(); 9741 if (isTicket) { 9742 var selector = '.user-num' + user_id; 9743 var packageContainer = $('#packageContainerBlock' + savedPackage, window.parent.document); 9744 var packageExists = $('.aPackage' + user_id, packageContainer).length > 0; 9745 // EDIT SECTION 9746 if (packageExists) { 9747 if(simplifiedTicketAssignment){ 9748 packageContainer.find('.aPackage' + user_id + ' .aPackage__detail .aPackage__detail__cell:nth-of-type(2) p').text(response.post_data.first_name + ' ' + response.post_data.last_name); 9749 packageContainer.find('.aPackage' + user_id + ' .aPackage__detail .aPackage__detail__cell:nth-of-type(3) p').text(response.post_data.email); 9750 }else{ 9751 packageContainer.find('.aPackage' + user_id + ' .aPackage__detail .aPackage__detail__cell:nth-of-type(1) p').text(response.post_data.first_name + ' ' + response.post_data.last_name); 9752 packageContainer.find('.aPackage' + user_id + ' .aPackage__detail .aPackage__detail__cell:nth-of-type(2) p').text(response.post_data.email); 9753 } 9754 9755 if($('.edit-block-open').length > 0) { 9756 $('.packageContainer .aPackage', window.parent.document).each(function () { 9757 var $package = $(this); 9758 var block_id = $(this).attr("data-pack"); 9759 var package_id = $(this).attr("data-package"); 9760 if(simplifiedTicketAssignment){ 9761 var name = $package.find('.aPackage__detail__cell:nth-of-type(2) p').text(); 9762 var email = $package.find('.aPackage__detail__cell:nth-of-type(3) p').text().replace(/\s/g, ""); 9763 }else{ 9764 var name = $package.find('.aPackage__detail__cell:nth-of-type(1) p').text(); 9765 var email = $package.find('.aPackage__detail__cell:nth-of-type(2) p').text().replace(/\s/g, ""); 9766 } 9767 9768 if (response.post_data.email == email) { 9769 if(block_id == user_id){ 9770 $(this).attr("data-addons",jsonfield_addons); 9771 $(this).attr("data-addonsname",all_addons_name); 9772 $(this).find(".addons").html(all_addons_name_box); 9773 } 9774 current_user_data = $('#user' + user_id, window.parent.document).val(); 9775 if (current_user_data) { 9776 var jsonObject = JSON.parse(current_user_data); 9777 jsonObject.package = package_id; 9778 first_name = jsonObject.first_name; 9779 last_name = jsonObject.last_name; 9780 email = jsonObject.email; 9781 9782 9783 replacing_block=$('#user' + block_id, window.parent.document).val(); 9784 var replacingJsonObject = JSON.parse(replacing_block); 9785 if(block_id != user_id) { 9786 jsonObject.field_addons=replacingJsonObject.field_addons; 9787 } 9788 9789 jsonObject = JSON.stringify(jsonObject); 9790 $('#user' + block_id, window.parent.document).val(jsonObject); 9791 if(simplifiedTicketAssignment){ 9792 $package.find('.aPackage__detail__cell:nth-of-type(2) p').text(first_name + ' ' + last_name); 9793 $package.find('.aPackage__detail__cell:nth-of-type(3) p').text(email); 9794 }else{ 9795 $package.find('.aPackage__detail__cell:nth-of-type(1) p').text(first_name + ' ' + last_name); 9796 $package.find('.aPackage__detail__cell:nth-of-type(2) p').text(email); 9797 } 9798 9799 } 9800 } 9801 }); 9802 9803 // Update data object 9804 var data = {}; 9805 packageContainer.find('> .aPackage').each(function () { 9806 var $package = $(this); 9807 var pack_id = $package.attr("data-pack"); 9808 if(simplifiedTicketAssignment){ 9809 var name = $package.find('.aPackage__detail__cell:nth-of-type(2) p').text(); 9810 var email = $package.find('.aPackage__detail__cell:nth-of-type(3) p').text().replace(/\s/g, ""); 9811 }else{ 9812 var name = $package.find('.aPackage__detail__cell:nth-of-type(1) p').text(); 9813 var email = $package.find('.aPackage__detail__cell:nth-of-type(2) p').text().replace(/\s/g, ""); 9814 } 9815 9816 if (!data[email]) { 9817 data[email] = name + ',' + pack_id; 9818 } 9819 }); 9820 9821 // Update dropdown menu 9822 var $dropdownMenu = packageContainer.find('.packageContainer__head .dropdown-menu-main'); 9823 $dropdownMenu.find("li").slice(3).remove(); 9824 9825 var flag=0; 9826 packageContainer.find('.dropdown-menu > li a').each(function () { 9827 var buyer= $(this).attr("data-buyer"); 9828 var user= $(this).attr("data-user"); 9829 if(buyer == 1){ 9830 flag=1; 9831 } 9832 }); 9833 /* JIRA Ticket - VFC-19349 */ 9834 // 3 9835 Object.entries(data).forEac
9835h(function ([key, value]) { 9836 value = value.split(","); 9837 buyer=0; 9838 if(key == $('input[name="email"]').val().trim()){ 9839 buyer=1; 9840 value[0]=value[0]+' (Buyer)'; 9841 } 9842 if ((buyer == 1 && flag == 1) || assignDropdownAlreadyHasEmail($dropdownMenu, key)) { 9843 return; 9844 } 9845 $dropdownMenu.append('<li><a href="javascript:void(0)" class="user-info-prev" data-buyer="'+buyer+'" data-user="user' + value[1] + '"><p>' + value[0] + '</p><span>' + key + '</span></a></li>'); 9846 // $dropdownMenu.append('<li><a href="javascript:void(0)" class="user-info-prev" data-user="user' + value[1] + '"><p>' + value[0] + '</p><span>' + key + '</span></a></li>'); 9847 }); 9848 } 9849 } else { 9850 var ori_total = packageContainer.find('.packageContainer__head').data("ori-total"); 9851 var total = packageContainer.find('.packageContainer__head').data("total"); 9852 var count = parseInt(packageContainer.find('.packageContainer__head').data("count")) + 1; 9853 9854 if (total == count) { 9855 packageContainer.find('.packageContainer__head .dropdown').hide(); 9856 } 9857 9858 packageContainer.find('.packageContainer__head').attr("data-count", count); 9859 9860 // var package_name = packageContainer.find('.packageContainer__head > h3').text(); 9861 // var package_name = package_name.substring(0, package_name.length - 5); 9862 var size = packageContainer.find('> .aPackage').length + 1; 9863 // package_name = package_name + ' (' + lenght + '/' + ori_total + ')'; 9864 if (simplifiedTicketAssignment) { 9865 var package_name = packageContainer.find('> span.assigned-tickets').text().replace(/\d+\/\d+ tickets assigned/, '') + ' ' + size + '/' + ori_total + ' tickets assigned'; 9866 packageContainer.find('> span.assigned-tickets').text(package_name); 9867 }else{ 9868 var package_name = packageContainer.find('.packageContainer__head > h3').text().replace(/\s*\(\d+\/\d+\)/, '') + ' (' + size + '/' + ori_total + ')'; 9869 packageContainer.find('.packageContainer__head > h3').text(package_name); 9870 } 9871 9872 9873 9874 ticketName=''; 9875 ticketButtons=''; 9876 9877 if (simplifiedTicketAssignment) { 9878 ticketName='<div class="aPackage__detail__cell aPackage__detail__width" style="width: 80px !important"><span></span><p>Ticket ' + user_id + '</p></div>'; 9879 ticketButtons='<a href="javascript:void(0)" data-selector="'+selector+'" class="btn action-btn update-user-to-package"><i class="fa fa-pencil"></i>Edit</a>' + 9880 '<a href="javascript:void(0)" class="btn action-btn remove-block"><i class="fa fa-times"></i>Remove</a>'; 9881 }else{ 9882 ticketButtons = '<div class="dropdown"><a href="#" class="btn action-btn" data-toggle="dropdown"><i class="fa fa-pencil"></i> Edit</a>' + 9883 '<ul class="dropdown-menu dropdown-menu-edit dropdown-menu-right" role="menu"> ' + 9884 '<li><a href="javascript:void(0)" data-selector="'+selector+'" class="btn action-btn update-user-to-package"><i class="fa fa-pencil-alt"></i> Edit</a></li>' + 9885 '<li><a href="javascript:void(0)" class="btn action-btn remove-block"><i class="fa fa-pencil-alt"></i> Remove</a></li>' + 9886 '</ul></div>'; 9887 } 9888 9889 var newPackage='<div class="aPackage aPackage' + user_id + '" data-pack="' + user_id + '" data-buyer="0" data-addonsname="'+all_addons_name+'" data-package="' + s
9889avedPackage + '" data-addons="' + jsonfield_addons + '">' + 9890 '<div class="aPackage__detail">' + 9891 ticketName + 9892 '<div class="aPackage__detail__cell aPackage__detail__width"><span>Name</span> <p>' + response.post_data.first_name + ' ' + response.post_data.last_name + '</p> </div> ' + 9893 '<div class="aPackage__detail__cell aPackage__detail__width"> <span>Email</span> <p> ' + response.post_data.email + '</p> </div>' + 9894 '<div class="aPackage__detail__cell"><span>Addons</span><div class="addons">'+all_addons_name_box+'</div></div></div>' + 9895 '<div class="aPackage__actions">' + 9896 ticketButtons + 9897 '</div></div>'; 9898 9899 /* JIRA Ticket - VFC-19349 */ 9900 9901 if (simplifiedTicketAssignment) { 9902 var fakePackage=".fakePackage"+user_id; 9903 packageContainer.find(fakePackage).after(newPackage); 9904 packageContainer.find(fakePackage).remove(); 9905 }else{ 9906 packageContainer.append(newPackage); 9907 9908 /* JIRA Ticket - VFC-19349 */ 9909 /* Only add new user to assign list if duplicate email validation is off as user is already assigned to package after creation */ 9910 packageContainer.find('.dropdown-menu-main').append('<li><a href="javascript:void(0)" class="user-info-prev" data-user="user' + user_id + '"> <p>' + response.post_data.first_name + ' ' + response.post_data.last_name + '</p> <span>' + response.post_data.email + '</span></a></li>'); 9911 9912 newUserData = '<li><a href="javascript:void(0)" class="user-info-prev" data-user="user' + user_id + '">' + 9913 '<p>' + response.post_data.first_name + ' ' + response.post_data.last_name + '</p>' + 9914 '<span>' + response.post_data.email + '</span></a></li>'; 9915 9916 } 9917 9918 } 9919 9920 //Check remaining Data 9921 var total_data={}; 9922 $.each(TicketPackages, function (packageId, package) { 9923 if(!isNaN(parseFloat(packageId)) && isFinite(packageId)) { 9924 total_data[packageId] = {}; 9925 // Iterate through each item/package addon 9926 $.each(package, function (key, item) { 9927 if (key !== 'pkg_price' && key !== 'total_price' && key !== 'tax' && key !== 'pkg_qty' && key !== 'symbol') { 9928 if (item.id && item.addons_qty) { 9929 total_data[packageId][item.id] = item.addons_qty; 9930 } 9931 } 9932 }); 9933 } 9934 }); 9935 9936 9937 9938 const used_data = Object.assign({}, total_data); 9939 $('.packageContainer .aPackage', window.parent.document).each(function () { 9940 var $package = $(this); 9941 var package_id = $package.attr("data-package"); 9942 var addonsArray = $package.attr("data-addons"); 9943 if (appID == 10004234 && !addonsArray) return true; 9944 // if(package_id == savedPackage){ 9945 addonsArray = addonsArray.split(','); 9946 9947 $.each(addonsArray, function (key, value){ 9948 value=parseInt(value); 9949 used_data[package_id][value]=parseInt(used_data[package_id][value]) - 1; 9950 9951 }); 9952 // } 9953 9954 9955 }); 9956 var remaining_addons=""; 9957 var remaining_ids=""; 9958 $.each(used_data, function (packageId, package) { 9959 if(!isNaN(parseFloat(packageId)) && isFinite(packageId)) { 9960 $.each(package, function (key, item) { 9961 for (i = 0; i < parseInt(item); i++) { 9962 if (remaining_addons == '') { 9963 remaining_addons = TicketPackages[packageId][key]['addons_name']; 9964 remaining_ids = TicketPackages[packageId][key]['id']; 9965 } else { 9966 remaining_addons += ', ' + TicketPackages[packageId][key]['addons_name']; 9967 remaining_ids += ', ' + TicketPackages[packageId][key]['id']; 9968 } 9969 } 9970 9971 }); 9972 } 9973 }); 9974 9975 $('.packageBlock', window.parent.document).attr('data-remaining-addons',remaining_addons); 9976 $('.packageBlock', window.parent.document).attr('data-remaining-addons-ids',remaining_ids); 9977 9978 /* JIRA Ticket - VFC-19349 */ 9979 /* Only add new user to assign list if duplicate email validation is off as user is already assigned to package after creation */ 9980 setAssignUserData(newUserData ,savedPackage); 9981 9982 // Ticket group max: update assign UI after new other attendee is created/assigned (1 ticket only) 9983 if (typeof afterTicketAssignmentApplyGroupMaxRules === 'function' && response.post_data && response.post_data.email) { 9984 afterTicketAssignmentApplyGroupMaxRules(response.post_data.email); 9985 } 9986 } 9987 9988 return false;
9989 } 9990 if (response.processPayment) { 9991 var message = "Payment Required, You will Be Redirected Shortly"; 9992 paymentRedirectionMessage(message); 9993 9994 if (response.paymentResultForPayPal) { 9995 processPaypal(response.paymentResultForPayPal); 9996 } else if (response.paymentResultForAuthorizenet) { 9997 // {{-- This code is use for authorize.net payment method using checkout page mode --}} 9998 //response.paymentResultForAuthorizenet.stripe_element it contain the value checkout or card 9999 // if(20550 == 15208 || (response.paymentResultForAuthorizenet.hasOwnProperty('stripe_element') && response.paymentResultForAuthorizenet.stripe_element == '1')) { 10000 processAuthorizenetCheckout(response.paymentResultForAuthorizenet) 10001 // } else { 10002 // processAuthorizenet(response.paymentResultForAuthorizenet) 10003 // } 10004 } else if (response.paymentResultForPayMaya) { 10005 processPaymaya(response.paymentResultForPayMaya); 10006 } else if (response.paymentResultForFatora) { 10007 processFatora(response.paymentResultForFatora); 10008 } else if (response.paymentResultForFlutterwave) { 10009 processFlutterwave(response.paymentResultForFlutterwave); 10010 } else if (response.paymentResultForMoyasar) { 10011 processMoyasar(response.paymentResultForMoyasar); 10012 } else if (response.paymentResultForPayGate) { 10013 processPayGate(response.paymentResultForPayGate); 10014 } else if (response.paymentResultForTouchnet) { 10015 processTouchnet(response.paymentResultForTouchnet); 10016 } else if (response.paymentResultForTransact) { 10017 processTransact(response.paymentResultForTransact); 10018 } else if (response.paymentResultForBlueSnap) { 10019 processBlueSnap(response.paymentResultForBlueSnap); 10020 } else if (response.paymentResultForSensePass) { 10021 processSensePass(response.paymentResultForSensePass); 10022 } else if (response.paymentResultForNelNet) { 10023 processNelNet(response.paymentResultForNelNet); 10024 }else if (response.paymentResultForAffiniPay) { 10025 var lang= '/en/'; 10026 processAffiniPay(response.paymentResultForAffiniPay,lang); 10027 }else if (response.paymentResultForBraintree) { 10028 processBraintree(response.paymentResultForBraintree); 10029 }else if (response.paymentResultForShuttle) { 10030 processShuttle(response.paymentResultForShuttle); 10031 }else if (response.paymentResultForTapPayment) { 10032 processTapPayment(response.paymentResultForTapPayment); 10033 }else if (response.paymentResultForStripeConnect) { 10034 location.replace(response.sessRet.url); 10035 }else if(response.paymentResultForSnapPayPayment){ 10036 processSnapPayment(response.paymentResultForSnapPayPayment); 10037 10038 } else if (typeof someObject == 'undefined') $.loadScript('https://js.stripe.com/v3/', function () { 10039 try { 10040 var stripe = Stripe(response.pub_key);
10041 stripe.redirectToCheckout({ 10042 sessionId: response.sessRet.sessionId, 10043 }).then(handleResult); 10044 10045 } catch (e) { 10046 message = 'Some thing went wrong while redirecting you to payment please try again.'; 10047 paymentRedirectionMessage(message); 10048 } 10049 }) 10050 }else if(response.processCheckout){ 10051 $('.row-content').html(response.html); 10052 }else if(response.refundPayment){ 10053 location.replace(response.refundUrl); 10054 } else { 10055 message = '<div class="alert alert-success" role="alert" style=" width: 100%; font-size: 15px;"> Form is Successfully Submitted </div>'; 10056 $('form.reg-form-data').before(message); 10057 $("html, body").animate({scrollTop: 0}, "slow"); 10058 var origin = window.location.origin; 10059 10060 let appID = 20550; 10061 let isEditProfile = false; 10062 let isPasskeyAppEnabled = false; 10063 10064 if (response.url) { 10065 if (response.url == 'home-page' || response.url == 'home') { 10066 location.replace(origin + '/en/'); 10067 } else if(isPasskeyAppEnabled && !isEditProfile){ 10068 location.replace(response.url); 10069 }else if( response.redirctType && response.redirctType == 'abstract'){ 10070 parent.location.href = response.url; 10071 return true; 10072 } else { 10073 var currentUrl = window.location.href; 10074 if (currentUrl.includes("editProfileV2")) { 10075 var urlParams = new URLSearchParams(window.location.search); 10076 var adminAccess = urlParams.get('admin_access'); 10077 if (adminAccess === null || adminAccess === "") { 10078 var uniqueToken = $('#unique_token').val(); 10079 if (uniqueToken && uniqueToken !== '') { 10080 const path = '/al/'; 10081 const langPath = '/en'; 10082 const fullPath = origin + langPath + path + uniqueToken; 10083 if (new URLSearchParams(window.parent.location.search).has('isMainManageAccount')) { 10084 window.location.reload(); 10085 } else { 10086 window.parent.location.href = fullPath; 10087 } 10088 } 10089 } 10090 } 10091 10092 // if(response.show_survey_in_popup == false){ 10093 // window.parent.$('#vjfModal').modal('hide'); // Close the parent modal 10094 // window.parent.$("#vjfWebinarModal").modal("hide"); 10095 // }else{ 10096 var loc = origin + '/en/' + response.url; 10097 location.replace(loc); 10098 // } 10099 } 10100 } else { 10101 10102 var loc = origin + '/en/'; 10103 location.replace(loc); 10104 } 10105 10106 setTimeout(function () { 10107 $('.fancybox-overlay').css("display", 'none'); 10108 }, 3000); 10109 } 10110 } else { 10111 if (response.token_csrf_hash !== undefined) { 10112 $('input[name="ci_csrf_token"]').val(response.token_csrf_hash); 10113 } 10114 if (response.errors !== undefined) { 10115 if(response.errors.csrf_validation !== undefined){ 10116 message = '<div class="alert alert-danger" role="alert" style=" width: 100%; font-size: 15px;">'+response.errors.csrf_validation+'</div>'; 10117 }else{ 10118 if(response.sold !== undefined){ 10119 10120 var userResponse = confirm("Package Sold Out. Unfortunately, the selected package(s) are no longer available for purchase. Please return to the previous page and select another package."); 10121 if (userResponse) { 10122 location.reload(); 10123 } else { 10124 10125 } 10126 } else if(response.limit !== undefined) { 10127 // Get first message from limit response object 10128 var limitMessage = Object.values(response.errors)[0][0]; 10129 var userResponse = confirm(limitMessage); 10130 if (userResponse) { 10131 location.reload(); 10132 } else { 10133 10134 } 10135 }else{ 10136 message = '<div class="alert alert-danger" role="alert" style=" width: 100%; font-size: 15px;"> Please check validation errors </div>'; 10137 10138 if (response && response.errors && app_id === 1000001481) { 10139 const errorKeys = Object.keys(response.errors); 10140 10141 // Existing SSO hidden/locked field errors 10142 const ssoErrorKeys = new Set([ 10143 'fld_1618685', 10144 'fld_1618686', 10145 'email', 10146 'fld_1607356', 10147 'fld_1621761', 10148 'fld_1627759' 10149 ]); 10150 10151 // Hidden fields whose errors should also be shown globally 10152 const hiddenGlobalErrorKeys = new Set([ 10153 'fld_1618615', // ticket validation 10154 'fld_1635355' // discount code validation 10155 ]); 10156 10157 const hasSsoError = errorKeys.some(k => ssoErrorKeys.has(k)); 10158 const hasHiddenValidationError = errorKeys.some(k => hiddenGlobalErrorKeys.has(k)); 10159 10160 if (hasSsoError && !document.getElementById('sso_generic_error')) { 10161 message += '<div id="sso_generic_error" class="alert alert-danger" role="alert" style="width:100%;font-size:15px;">SSO Validation Failed, Please Refresh</div>'; 10162 } 10163 10164 if (hasHiddenValidationError && !document.getElementById('registration_hidden_validation_error')) { 10165 let hiddenErrorMessage = ''; 10166 10167 if (response.errors['fld_1618615']) { 10168 hiddenErrorMessage = response.errors['fld_1618615']; 10169 } else if (response.errors['fld_1635355']) { 10170 hiddenErrorMessage = response.errors['fld_1635355']; 10171 } 10172 10173 if (hiddenErrorMessage) { 10174 message += '<div id="registration_hidden_validation_error" class="alert alert-danger" role="alert" style="width:100%;font-size:15px;">' + hiddenErrorMessage + '</div>'; 10175 } 10176 } 10177 } 10178 } 10179 } 10180 if(response.errors.registration_code !== undefined){ 10181 message = '<div class="alert alert-danger" role="alert" style=" width: 100%; font-size: 15px;">'+response.errors.registration_code+'</div>'; 10182 } 10183 if(response.errors.rc_anchor_alert !== undefined){ 10184 message = '<div class="alert alert-danger" role="alert" style=" width: 100%; font-size: 15px;">'+response.errors.rc_anchor_alert+'</div>'; 10185 } 10186 10187 $(".alert-danger").remove(); 10188 $('form.reg-form-data').before(message); 10189 10190 $.each(response.errors, function (key, val) { 10191 if(key == 'email' || key == 'card_month') { 10192 $error_name = $('input[name="' + key + '"]').attr("id") + "-error"; 10193 var strippedString = val.replace(/<p>/g, '').replace(/<\/p>/g, ''); 10194 var newText = $("<span id='" + $error_name + "' class='error' for='email'>").text(strippedString); 10195 $('input[name="' + key + '"]').parent().find(".error").remove(); 10196 $('input[name="' + key + '"]').parent().find(".error").attr("id", "'" + $('input[name="' + key + '"]').attr("id") + "-error'"); 10197 $('#' + $('input[name="' + key + '"]').attr("id")).attr("aria-describedby", "" + $('input[name="' + key + '"]').attr("id") + "-error"); 10198 10199 $('input[name="' + key + '"]').parent().append(newText); 10200 $('input[name="' + key + '"]').addClass('has-error'); 10201 $('input[name="' + key + '"]').addClass('error').removeClass("val
10201id"); 10202 $('input[name="' + key + '"]').focus(); 10203 } else if (key == 'profile_picture') { 10204 $('input[name="profile_picture"]').nextAll().eq(1).html(val).addClass('has-error'); 10205 }else{ 10206 //removeing HTML Tags 10207 val = val.replace(/(<([^>]+)>)/gi, ""); 10208 $('input[name="' + key + '"]').addClass('has-error'); 10209 $('input[name="' + key + '"]').removeClass("valid"); 10210 $('input[name="' + key + '"]').next("span.text-danger").text(val).addClass('has-error'); 10211 $('input[name="' + key + '"]').focus(); 10212 $('select[name="' + key + '"]').addClass('has-error'); 10213 $('select[name="' + key + '"]').removeClass("valid"); 10214 $('select[name="' + key + '"]').next("span.text-danger").text(val).addClass('has-error'); 10215 $('input[name="' + key + '"]').focus(); 10216 } 10217 }); 10218 } else { 10219 message = '<div class="alert alert-danger" role="alert" style=" width: 100%; font-size: 15px;">' + response.error + '</div>'; 10220 $(".alert-danger").remove(); 10221 $('form.reg-form-data').before(message); 10222 } 10223 $("html, body").animate({scrollTop: 0}, "slow"); 10224 } 10225 //$('.alert').fadeOut(4000); 10226 }, 10227 error: function (response, status, error) { 10228 // OpenReplay disabled 10229 // if (typeof window.OpenReplay !== 'undefined') { 10230 // window.OpenReplay.event( 10231 // 'registrationPOSTResponse_error', 10232 // { 10233 // "response":response, 10234 // "status":status, 10235 // "error":error, 10236 // } 10237 // ); 10238 // } 10239 message = '<div class="alert alert-danger" role="alert" style=" width: 100%; font-size: 15px;"> ' + response.message + '</div>'; 10240 $(".alert-danger").remove(); 10241 $('form.reg-form-data').before(message); 10242 //$('.alert').fadeOut(4000); 10243 if($('.pagebreak-steps-main').length >0 ) { 10244 showPageBreakError(); 10245 } 10246 }, 10247 complete: function () { 10248 $("#LoadingBar").hide(); 10249 $("input[type=submit]").attr('disabled', false); 10250 if($('.pagebreak-steps-main').length >0 ) { 10251 showPageBreakError(); 10252 } 10253 } 10254 }); 10255 // } 10256 return false 10257 }); 10258 setTimeout(function () { 10259 var pmnt_fld_name = $('.pmnt_fld').attr('name'); 10260 if (pmnt_fld_name) { 10261 var symbol = $("select[name=" + pmnt_fld_name + "]").find(':selected').attr('data-symbol'); 10262 if (symbol) { 10263 // console.log(symbol); 10264 var id = pmnt_fld_name.substr(pmnt_fld_name.length - 5); 10265 id = id.replace('_', ''); 10266 id = id.replace('d', ''); 10267 id = id.replace('l', ''); 10268 // console.log(id); 10269 $("#fld_" + id + " > option").each(function () { 10270 10271 var dataprice = $(this).attr('data-price'); 10272 if (dataprice) { 10273 $(this).text(dataprice + '' + symbol); 10274 } 10275 }); 10276 } 10277 } 10278 10279 }, 1000); 10280 10281 10282 $("input[type=radio], select").on('change', function () { 10283 // debugger; 10284 var elementName = $(this).attr('name'); 10285 var elementValue = $(this).val(); 10286 var id = elementName.substr(elementName.length - 5); 10287 10288 if (elementName.indexOf("pmnt_fld") >= 0) { 10289 id = id.replace('_', ''); 10290 id = id.replace('d', ''); 10291 id = id.replace('l', ''); 10292 // console.log(ild); 10293 // console.log('yes'); 10294 if (elementValue != '') { 10295 var symbol = $(this).find(':selected').attr('data-symbol'); 10296 10297 $("#fld_" + id + " > option").each(function () { 10298 10299 var dataprice = $(this).attr('data-price'); 10300 if (dataprice) { 10301 $(this).text(dataprice + '' + symbol); 10302 } 10303 // console.log(this.text + ' ' + this.value+ ' '+ dataprice); 10304 10305 }); 10306 10307 } else { 10308 $("#fld_" + id + " > option").each(function () { 10309 var dataprice = $(this).attr('data-price'); 10310 $(this).text(dataprice) 10311 }); 10312 } 10313 } else { 10314 // console.log('no'); 10315 } 10316 10317 var otherElementName = elementName.replace('[]', '_other'); 10318 10319 10320 // console.log(elementValue); 10321 10322 // if ($("#" + otherElementName).length == 0) { 10323 // return true; 10324 // } 10325 if ($.isArray(elementValue)) { 10326 // Handle multi-select dropdowns 10327 if (elementValue && elementValue.length > 0) { 10328 // Check if 'other' is in the selected values 10329 var hasOther = elementValue.some(function(value) { 10330 return value && value.toLowerCase() === 'other'; 10331 }); 10332 10333 if (hasOther) { 10334 $("#group_" + otherElementName).show(); 10335 } else { 10336 $("#group_" + otherElementName).hide(); 10337 // $("#"+otherElementName).val(''); 10338 } 10339 } else { 10340 // No values selected, hide other field 10341 $("#group_" + otherElementName).hide(); 10342 // $("#"+otherElementName).val(''); 10343 } 10344 } else { 10345 // Handle single-select dropdowns 10346 if (elementValue && elementValue.toLowerCase() == 'other') { 10347 $("#group_" + otherElementName).show(); 10348 } else { 10349 $("#group_" + otherElementName).hide(); 10350 // $("#"+otherElementName).val(''); 10351 } 10352 } 10353 10354 }); 10355 10356 if (window.location.href.indexOf("saregistration.sport/en/form/editProfileV2") < 0) { 10357 $("input[type=checkbox]").on('change', function () { 10358 var elementName = $(this).attr('name'); 10359 var otherElementName = elementName.replace('[]', '_other'); 10360 var elementValue = $(this).val(); 10361 10362 if (elementValue && elementValue.toLowerCase() == 'other') { 10363 if ($(this).is(':checked')) { 10364 $("#group_" + otherElementName).show(); 10365 } else { 10366 $("#group_" + otherElementName).hide(); 10367 $("#" + otherElementName).val(''); 10368 } 10369 } 10370 }); 10371 } else {
10372 /////////////////////////////////////////////// 10373 10374 //FOR DURING-EVENT 10375 // Get references to the checkboxes 10376 var $duringevent1 = $('#duringevent1'); 10377 var $duringevent2 = $('#duringevent2'); 10378 var $duringevent3 = $('#duringevent3'); 10379 10380 // Add a click event handler to duringevent1 checkbox 10381 // $duringevent1.click(function() { 10382 $(document).on('click', '#duringevent1', function () { 10383 if ($duringevent1.is(':checked')) { 10384 10385 10386 //$(".addnopkg input[type='checkbox']").prop("checked", false); 10387 //$(".addnopkg input[type='checkbox']:eq(3)").prop("checked", false); 10388 //$(".addnopkg input[type='checkbox']:eq(4)").prop("checked", false); 10389 //$(".addnopkg input[type='checkbox']:eq(5)").prop("checked", false); 10390 10391 var textToCheck = "Cultural activities â F1 Arcade"; 10392 $("input[type='checkbox']").filter(function () { 10393 return $(this).attr("data-name") === textToCheck; 10394 }).prop("checked", true).trigger("change"); 10395 10396 //$duringevent2.prop('disabled', true); 10397 // $duringevent3.prop('disabled', true); 10398 } else { 10399 10400 10401 //$duringevent2.prop('disabled', false); 10402 //$duringevent3.prop('disabled', false); 10403 10404 var textToCheck = "Cultural activities â F1 Arcade"; 10405 $("input[type='checkbox']").filter(function () { 10406 return $(this).attr("data-name") === textToCheck; 10407 }).prop("checked", false).trigger("change"); 10408 } 10409 }); 10410 10411 // Add a click event handler to duringevent2 checkbox 10412 $duringevent2.click(function () { 10413 // $(document).on('click', '#duringevent2', function(){ 10414 if ($duringevent2.is(':checked')) { 10415 10416 10417 //$(".addnopkg input[type='checkbox']").prop("checked", false); 10418 // $(".addnopkg input[type='checkbox']:eq(3)").prop("checked", false); 10419 // $(".addnopkg input[type='checkbox']:eq(4)").prop("checked", false); 10420 // $(".addnopkg input[type='checkbox']:eq(5)").prop("checked", false); 10421 10422 var textToCheck = "Cultural activities â Guided Tour of Villa Park"; 10423 $("input[type='checkbox']").filter(function () { 10424 return $(this).attr("data-name") === textToCheck; 10425 }).prop("checked", true).trigger("change"); 10426 10427 //$duringevent1.prop('disabled', true); 10428 //$duringevent3.prop('disabled', true); 10429 } else { 10430 10431 var textToCheck = "Cultural activities â Guided Tour of Villa Park"; 10432 $("input[type='checkbox']").filter(function () { 10433 return $(this).attr("data-name") === textToCheck; 10434 }).prop("checked", false).trigger("change"); 10435 10436 //$duringevent1.prop('disabled', false); 10437 //$duringevent3.prop('disabled', false); 10438 } 10439 }); 10440 10441 // Add a click event handler to duringevent3 checkbox 10442 $duringevent3.click(function () { 10443 if ($duringevent3.is(':checked')) { 10444 10445 10446 //$(".addnopkg input[type='checkbox']").prop("checked", false); 10447 // $(".addnopkg input[type='checkbox']:eq(3)").prop("checked", false); 10448 // $(".addnopkg input[type='checkbox']:eq(4)").prop("checked", false); 10449 // $(".addnopkg input[type='checkbox']:eq(5)").prop("checked", false); 10450 10451 var textToCheck = "Cultural activities â Jewellery Quarter Sports Heritage Tour1"; 10452 $("input[type='checkbox']").filter(function () { 10453 return $(this).attr("data-name") === textToCheck; 10454 }).prop("checked", true).trigger("change"); 10455 10456 // $duringevent1.prop('disabled', true); 10457 // $duringevent2.prop('disabled', true); 10458 } else { 10459 10460 var textToCheck = "Cultural activities â Jewellery Quarter Sports Heritage Tour1"; 10461 $("input[type='checkbox']").filter(function () { 10462 return $(this).attr("data-name") === textToCheck; 10463 }).prop("checked", false).trigger("change"); 10464 $duringevent1.prop('disabled', false); 10465 $duringevent2.prop('disabled', false); 10466 } 10467 }); 10468 10469 $("#fld_1304371, #fld_1304372").on("change", function () { 10470 10471 var checkInDate = new Date($("#fld_1304371").val()); 10472 var checkOutDate = new Date($("#fld_1304372").val()); 10473//console.log(checkInDate); 10474//$("#grp_fld_1304372 .text-danger").text(''); 10475 $(".error-message-dateDif").remove(); 10476 /* if (checkInDate >= checkOutDate) { 10477 10478 console.log("if"); 10479 $("#fld_1304372").val(''); 10480 10481 if ($(".error-message-dateDif").length === 0 && checkInDate >= checkOutDate) { 10482 console.log("if2"); 10483 //var errorMessage = $('<span>').attr('class', 'error-message-dateDif').text('Checkout date must be greater than check-in date').css('color', 'red'); 10484 var errorMessage = '<span class="error-message-dateDif">Checkout date must be greater than check-in date</span>'; 10485 //$(".error-message-dateDif").show(); 10486 console.log(errorMessage); 10487 $("#grp_fld_1304372 .text-danger").text('Checkout date must be greater than check-in date'); 10488 return false;
10489 } 10490 return false; 10491 } 10492 10493 else if (checkInDate < checkOutDate) { 10494 console.log("else"); 10495 var errorMessage = $('<span>').attr('class', 'error-message-dateDif').text('').css('color', 'red'); 10496 $("#fld_1304372").after(errorMessage); 10497 $("#grp_fld_1304372 .text-danger").text(''); 10498 } 10499 */ 10500 // console.log("inside the days diff") 10501 10502 var checkInDate = $("#fld_1304371").val(); 10503 var checkOutDate = $("#fld_1304372").val(); 10504 10505 if (checkInDate && checkOutDate) { 10506 /*var startDate = new Date(checkInDate); 10507 var endDate = new Date(checkOutDate); 10508 10509 var timeDifference = Math.abs(endDate.getTime() - startDate.getTime()); 10510 var daysDifference = Math.ceil(timeDifference / (1000 * 3600 * 24));*/ 10511// Split the date string into day, month, and year 10512 var checkInParts = checkInDate.split('/'); 10513 var checkOutParts = checkOutDate.split('/'); 10514 10515// Create a new Date object using the correct format (MM/DD/YYYY) 10516 var startDate = new Date(checkInParts[2], checkInParts[1] - 1, checkInParts[0]); 10517 var endDate = new Date(checkOutParts[2], checkOutParts[1] - 1, checkOutParts[0]); 10518 10519// Calculate the time difference 10520 var timeDifference = Math.abs(endDate.getTime() - startDate.getTime()); 10521 10522// Convert time difference to days 10523 var daysDifference = Math.ceil(timeDifference / (1000 * 3600 * 24)); 10524 10525 var tDifference = endDate.getTime() - startDate.getTime(); 10526 console.log(tDifference); 10527 $("#grp_fld_1304372 .text-danger").text(''); 10528 if (tDifference < 0) { 10529 $("#fld_1304372").val(''); 10530 $("#grp_fld_1304372 .text-danger").text('Checkout date must be greater than check-in date'); 10531 return false; 10532 } 10533 if ($("#dayDifference").length === 0) { 10534 // Create the new div and add it below "Check Out" 10535 $('#nightslabel').remove(); 10536 $("<p id='nightslabel'> <b> No. of nights to be reserved:</b> </p><div id='dayDifference' style='color: red;'>").insertAfter("#grp_fld_1304372"); 10537 } 10538 10539//////////////////////////////////////////////////////////4,5,13,14 days checks////////////////////////////////////////////////////// 10540 10541 10542 if (shoulderdatesNew.includes(parseInt($('#fld_1304368').val()))) { 10543 10544 var allDates = []; 10545 10546 if ($('#shoulderapril4').is(':checked')) { 10547 $('#shoulderapril4').trigger('click'); 10548 } 10549 if ($('#shoulderapril5').is(':checked')) { 10550 $('#shoulderapril5').trigger('click'); 10551 } 10552 if ($('#shoulderapril13').is(':checked')) { 10553 $('#shoulderapril13').trigger('click'); 10554 } 10555 if ($('#shoulderapril14').is(':checked')) { 10556 $('#shoulderapril14').trigger('click'); 10557 } 10558 10559 10560 //for (var i = 1; i <= daysDifference + 1; i++) { 10561 for (var i = 1; i <= daysDifference; i++) { 10562 var currentDate = new Date(startDate); 10563 currentDate.setDate(startDate.getDate() + i); 10564 allDates.push(currentDate.toISOString().split('T')[0]); // Store the date in 'YYYY-MM-DD' format 10565 var dayOfMonth = currentDate.getDate(); 10566 // console.log("Day of Month", dayOfMonth) 10567 } 10568 // console.log("All Dates:", allDates); 10569 10570 $.each(allDates, function (index, date) { 10571 var dayOfMonth = new Date(date).getDate(); 10572 switch (dayOfMonth) { 10573 case 4: 10574// $("#shoulderapril4").prop("checked", true); 10575//$("#shoulderapril4").click(); 10576 10577 $("#shoulderapril4").trigger("click"); 10578 10579 break; 10580 case 5: 10581// $("#shoulderapril5").prop("checked", true); 10582//$("#shoulderapril5").click(); 10583 $("#shoulderapril5").trigger("click"); 10584 break; 10585 case 12: 10586 //$("#shoulderapril13").prop("checked", true); 10587//$("#shoulderapril13").click(); 10588 $("#shoulderapril13").trigger("click"); 10589 break; 10590 case 13: 10591 //$("#shoulderapril14").prop("checked", true);
10592//$("#shoulderapril14").click(); 10593 $("#shoulderapril14").trigger("click"); 10594 break; 10595 } 10596 }); 10597 10598 } 10599//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 10600 $("#dateDifference").text(daysDifference); 10601 $("#dayDifference").text(daysDifference); 10602 10603 10604 } else { 10605 // Remove the "Day Difference" div if dates are not filled 10606 $("#dayDifference").remove(); 10607 $('#fld_1304410').on('change', function () { 10608 if ($(this).val() === 'No') { 10609 $("#dayDifference").remove(); 10610 $("#nightslabel").remove(); 10611 10612 } 10613 10614 10615 }); 10616 10617 } 10618 }); 10619 10620 10621 //FOR DAY 1 10622 $("#day1s").click(function () { 10623 var checkedValues = []; 10624 $("input[type='checkbox'][id^='day1s']").each(function () { 10625 if ($(this).is(":checked")) { 10626 checkedValues.push($(this).val()); 10627 } 10628 }); 10629 $("#grp_fld_17303 input").val(checkedValues.join(',')); 10630 console.log($("#grp_fld_17303 input").val()) 10631 }); 10632//FOR DAY 2 10633 $("#day2s").click(function () { 10634 var checkedValues = []; 10635 $("input[type='checkbox'][id^='day2']").each(function () { 10636 if ($(this).is(":checked")) { 10637 checkedValues.push($(this).val()); 10638 } 10639 }); 10640 $("#grp_fld_17304 input").val(checkedValues.join(',')); 10641 console.log($("#grp_fld_17304 input").val()) 10642 }); 10643//FOR DAY 3 10644 $("#day3s").click(function () { 10645 var checkedValues = []; 10646 $("input[type='checkbox'][id^='day3']").each(function () { 10647 if ($(this).is(":checked")) { 10648 checkedValues.push($(this).val()); 10649 } 10650 }); 10651 $("#grp_fld_17305 input").val(checkedValues.join(',')); 10652 console.log($("#grp_fld_17305 input").val()) 10653 }); 10654//FOR DAY 4 10655 $("#day4s").click(function () { 10656 var checkedValues = []; 10657 $("input[type='checkbox'][id^='day4']").each(function () { 10658 if ($(this).is(":checked")) { 10659 checkedValues.push($(this).val()); 10660 } 10661 }); 10662 $("#grp_fld_17306 input").val(checkedValues.join(',')); 10663 console.log($("#grp_fld_17306 input").val()) 10664 }); 10665//FOR DAY 5 10666 $("#day5s").click(function () { 10667 var checkedValues = []; 10668 $("input[type='checkbox'][id^='day5']").each(function () { 10669 if ($(this).is(":checked")) { 10670 checkedValues.push($(this).val()); 10671 } 10672 }); 10673 $("#grp_fld_17307 input").val(checkedValues.join(',')); 10674 console.log($("#grp_fld_17307 input").val()) 10675 }); 10676 10677/////////////////////////////////////////////// 10678 10679//FOR PRE-EVENT 10680 // Get references to the checkboxes 10681 var $preevent1 = $('#preevent1'); 10682 var $preevent2 = $('#preevent2'); 10683 var $preevent3 = $('#preevent3'); 10684 10685 // Add a click event handler to preevent1 checkbox 10686 $preevent1.click(function () { 10687 if ($preevent1.is(':checked')) { 10688 10689 var textToCheck = "Cultural activities â Travel back in time to the industrial revolution1"; 10690 $("input[type='checkbox']").filter(function () { 10691 return $(this).attr("data-name") === textToCheck; 10692 }).prop("checked", true).trigger("change"); 10693 10694 } else { 10695 var textToCheck = "Cultural activities â Travel back in time to the industrial revolution1"; 10696 $("input[type='checkbox']").filter(function () { 10697 return $(this).attr("data-name") === textToCheck; 10698 }).prop("checked", false).trigger("change"); 10699 10700 } 10701 }); 10702 10703 // Add a click event handler to preevent2 checkbox 10704 $preevent2.click(function () { 10705 if ($preevent2.is(':checked')) { 10706 10707 var textToCheck = "Cultural activities â Discover Shakespeare England1"; 10708 $("input[type='checkbox']").filter(function () { 10709 return $(this).attr("data-name") === textToCheck; 10710 }).prop("checked", true).trigger("change"); 10711 10712 10713 } else { 10714 var textToCheck = "Cultural activities â Discover Shakespeare England1"; 10715 $("input[type='checkbox']").filter(function () { 10716 return $(this).attr("data-name") === textToCheck; 10717 }).prop("checked", false).trigger("change"); 10718 10719 } 10720 }); 10721 10722 // Add a click event handler to preevent3 checkbox 10723 $preevent3.click(function () { 10724 if ($preevent3.is(':checked')) { 10725 10726 var textToCheck = "Cultural activities â History of Sport1"; 10727 $("input[type='checkbox']").filter(function () { 10728 return $(this).attr("data-name") === textToCheck; 10729 }).prop("checked", true).trigger("change"); 10730 10731 10732 } else { 10733 var textToCheck = "Cultural activities â History of Sport1"; 10734 $("input[type='checkbox']").filter(function () { 10735 return $(this).attr("data-name") === textToCheck; 10736 }).prop("checked", false).trigger("change"); 10737 10738 } 10739 }); 10740/////////////////////////////////////////////// 10741
10742/////////////////////////////////////////////// 10743 10744//FOR DURING-EVENT 10745 // Get references to the checkboxes 10746 var $duringevent1 = $('#duringevent1'); 10747 var $duringevent2 = $('#duringevent2'); 10748 var $duringevent3 = $('#duringevent3'); 10749 10750 // Add a click event handler to duringevent1 checkbox 10751 // $duringevent1.click(function() { 10752 $(document).on('click', '#duringevent1', function () { 10753 if ($duringevent1.is(':checked')) { 10754 10755 10756 //$(".addnopkg input[type='checkbox']").prop("checked", false); 10757 //$(".addnopkg input[type='checkbox']:eq(3)").prop("checked", false); 10758 //$(".addnopkg input[type='checkbox']:eq(4)").prop("checked", false); 10759 //$(".addnopkg input[type='checkbox']:eq(5)").prop("checked", false); 10760 10761 var textToCheck = "Cultural activities â F1 Arcade"; 10762 $("input[type='checkbox']").filter(function () { 10763 return $(this).attr("data-name") === textToCheck; 10764 }).prop("checked", true).trigger("change"); 10765 10766 //$duringevent2.prop('disabled', true); 10767 // $duringevent3.prop('disabled', true); 10768 } else { 10769 10770 10771 //$duringevent2.prop('disabled', false); 10772 //$duringevent3.prop('disabled', false); 10773 10774 var textToCheck = "Cultural activities â F1 Arcade"; 10775 $("input[type='checkbox']").filter(function () { 10776 return $(this).attr("data-name") === textToCheck; 10777 }).prop("checked", false).trigger("change"); 10778 } 10779 }); 10780 10781 // Add a click event handler to duringevent2 checkbox 10782 $duringevent2.click(function () { 10783// $(document).on('click', '#duringevent2', function(){ 10784 if ($duringevent2.is(':checked')) { 10785 10786 10787 //$(".addnopkg input[type='checkbox']").prop("checked", false); 10788 // $(".addnopkg input[type='checkbox']:eq(3)").prop("checked", false); 10789 // $(".addnopkg input[type='checkbox']:eq(4)").prop("checked", false); 10790 // $(".addnopkg input[type='checkbox']:eq(5)").prop("checked", false); 10791 10792 var textToCheck = "Cultural activities â Guided Tour of Villa Park"; 10793 $("input[type='checkbox']").filter(function () { 10794 return $(this).attr("data-name") === textToCheck; 10795 }).prop("checked", true).trigger("change"); 10796 10797 //$duringevent1.prop('disabled', true); 10798 //$duringevent3.prop('disabled', true); 10799 } else { 10800 10801 var textToCheck = "Cultural activities â Guided Tour of Villa Park"; 10802 $("input[type='checkbox']").filter(function () { 10803 return $(this).attr("data-name") === textToCheck; 10804 }).prop("checked", false).trigger("change"); 10805 10806 //$duringevent1.prop('disabled', false); 10807 //$duringevent3.prop('disabled', false); 10808 } 10809 }); 10810 10811 // Add a click event handler to duringevent3 checkbox 10812 $duringevent3.click(function () { 10813 if ($duringevent3.is(':checked')) { 10814 10815 10816 //$(".addnopkg input[type='checkbox']").prop("checked", false); 10817 // $(".addnopkg input[type='checkbox']:eq(3)").prop("checked", false); 10818 // $(".addnopkg input[type='checkbox']:eq(4)").prop("checked", false); 10819 // $(".addnopkg input[type='checkbox']:eq(5)").prop("checked", false); 10820 10821 var textToCheck = "Cultural activities â Jewellery Quarter Sports Heritage Tour1"; 10822 $("input[type='checkbox']").filter(function () { 10823 return $(this).attr("data-name") === textToCheck; 10824 }).prop("checked", true).trigger("change"); 10825 10826 // $duringevent1.prop('disabled', true); 10827 // $duringevent2.prop('disabled', true); 10828 } else { 10829 10830 var textToCheck = "Cultural activities â Jewellery Quarter Sports Heritage Tour1"; 10831 $("input[type='checkbox']").filter(function () { 10832 return $(this).attr("data-name") === textToCheck; 10833 }).prop("checked", false).trigger("change"); 10834 $duringevent1.prop('disabled', false); 10835 $duringevent2.prop('disabled', false); 10836 } 10837 }); 10838/////////////////////////////////////////////// 10839 10840 10841/////////////////////////////////////////////// 10842 10843//FOR POST-EVENT 10844 // Get references to the checkboxes 10845 var $postevent1 = $('#postevent1'); 10846 10847 // Add a click event handler to postevent1 checkbox 10848 $postevent1.click(function () { 10849 if ($postevent1.is(':checked')) { 10850 10851 10852 var textToCheck = "Cultural activities â City of a thous
10852and trades1"; 10853 $("input[type='checkbox']").filter(function () { 10854 return $(this).attr("data-name") === textToCheck; 10855 }).prop("checked", true).trigger("change"); 10856 10857 } else { 10858 var textToCheck = "Cultural activities â City of a thousand trades1"; 10859 $("input[type='checkbox']").filter(function () { 10860 return $(this).attr("data-name") === textToCheck; 10861 }).prop("checked", false).trigger("change"); 10862 10863 } 10864 }); 10865 10866///////////////For Day Passes///////////////// 10867 10868 // Get references to the checkboxes April 7 10869 var $april7 = $('#april7'); 10870 10871 // Add a click event handler to postevent1 checkbox 10872 $april7.click(function () { 10873 $("#fld_16687-error").remove(); 10874 if ($april7.is(':checked')) { 10875 10876 var textToCheck = "Day pass â 7 April 2024"; 10877 $("input[type='checkbox']").filter(function () { 10878 return $(this).attr("data-name") === textToCheck; 10879 }).prop("checked", true).trigger("change"); 10880 10881 } else { 10882 10883 var textToCheck = "Day pass â 7 April 2024"; 10884 $("input[type='checkbox']").filter(function () { 10885 return $(this).attr("data-name") === textToCheck; 10886 }).prop("checked", false).trigger("change"); 10887 } 10888 }); 10889 10890 // Get references to the checkboxes April 8 10891 var $april8 = $('#april8'); 10892 10893 // Add a click event handler to postevent1 checkbox 10894 $april8.click(function () { 10895 $("#fld_16687-error").remove(); 10896 if ($april8.is(':checked')) { 10897 10898 10899 var textToCheck = "Day pass â 8 April 2024"; 10900 $("input[type='checkbox']").filter(function () { 10901 return $(this).attr("data-name") === textToCheck; 10902 }).prop("checked", true).trigger("change"); 10903 10904 } else { 10905 10906 var textToCheck = "Day pass â 8 April 2024"; 10907 $("input[type='checkbox']").filter(function () { 10908 return $(this).attr("data-name") === textToCheck; 10909 }).prop("checked", false).trigger("change"); 10910 10911 } 10912 }); 10913 10914// Get references to the checkboxes April 9 10915 var $april9 = $('#april9'); 10916 10917 // Add a click event handler to postevent1 checkbox 10918 $april9.click(function () { 10919 10920 $("#fld_16687-error").remove(); 10921 if ($april9.is(':checked')) { 10922 var textToCheck = "Day pass â 9 April 2024"; 10923 $("input[type='checkbox']").filter(function () { 10924 return $(this).attr("data-name") === textToCheck; 10925 }).prop("checked", true).trigger("change"); 10926 10927 } else { 10928 var textToCheck = "Day pass â 9 April 2024"; 10929 $("input[type='checkbox']").filter(function () { 10930 return $(this).attr("data-name") === textToCheck; 10931 }).prop("checked", false).trigger("change"); 10932 10933 } 10934 }); 10935 10936// Get references to the checkboxes April 10 10937 var $april10 = $('#april10'); 10938 10939 // Add a click event handler to postevent1 checkbox 10940 $april10.click(function () { 10941 $("#fld_16687-error").remove(); 10942 if ($april10.is(':checked')) { 10943 var textToCheck = "Day pass â 10 April 2024"; 10944 $("input[type='checkbox']").filter(function () { 10945 return $(this).attr("data-name") === textToCheck; 10946 }).prop("checked", true).trigger("change"); 10947 10948 } else { 10949 10950 var textToCheck = "Day pass â 10 April 2024"; 10951 $("input[type='checkbox']").filter(function () { 10952 return $(this).attr("data-name") === textToCheck; 10953 }).prop("checked", false).trigger("change"); 10954 } 10955 }); 10956 10957// Get references to the checkboxes April 11 10958 var $april11 = $('#april11'); 10959 10960 // Add a click event handler to postevent1 checkbox 10961 $april11.click(function () { 10962 $("#fld_16687-error").remove(); 10963 if ($april11.is(':checked')) { 10964 10965 10966 var textToCheck = "Day pass â 11 April 2024"; 10967 $("input[type='checkbox']").filter(function () { 10968 return $(this).attr("data-name") === textToCheck; 10969 }).prop("checked", true).trigger("change"); 10970 10971 } else { 10972 10973 var textToCheck = "Day pass â 11 April 2024"; 10974 $("input[type='checkbox']").filter(function () { 10975 return $(this).attr("data-name") === textToCheck; 10976 }).prop("checked", false).trigger("change"); 10977 } 10978 }); 10979 10980/////////////////////////////////////////////// 10981
10982///////////////For Day Passes///////////////// 10983 10984 // Get references to the checkboxes April 4 10985 var $shoulderapril4 = $('#shoulderapril4'); 10986 10987 // Add a click event handler to postevent1 checkbox 10988 $shoulderapril4.click(function () { 10989 if ($shoulderapril4.is(':checked')) { 10990 10991 var textToCheck = "Additional night - April 4"; 10992 $("input[type='checkbox']").filter(function () { 10993 return $(this).attr("data-name") === textToCheck; 10994 }).prop("checked", true).trigger("change"); 10995 10996 } else { 10997 10998 var textToCheck = "Additional night - April 4"; 10999 $("input[type='checkbox']").filter(function () { 11000 return $(this).attr("data-name") === textToCheck; 11001 }).prop("checked", false).trigger("change"); 11002 } 11003 }); 11004 11005 // Get references to the checkboxes April 5 11006 var $shoulderapril5 = $('#shoulderapril5'); 11007 11008 // Add a click event handler to postevent1 checkbox 11009 $shoulderapril5.click(function () { 11010 if ($shoulderapril5.is(':checked')) { 11011 11012 var textToCheck = "Additional night - April 5"; 11013 $("input[type='checkbox']").filter(function () { 11014 return $(this).attr("data-name") === textToCheck; 11015 }).prop("checked", true).trigger("change"); 11016 11017 } else { 11018 11019 var textToCheck = "Additional night - April 5"; 11020 $("input[type='checkbox']").filter(function () { 11021 return $(this).attr("data-name") === textToCheck; 11022 }).prop("checked", false).trigger("change"); 11023 11024 } 11025 }); 11026 11027// Get references to the checkboxes April 13 11028 var $shoulderapril13 = $('#shoulderapril13'); 11029 11030 // Add a click event handler to postevent1 checkbox 11031 $shoulderapril13.click(function () { 11032 if ($shoulderapril13.is(':checked')) { 11033 11034 var textToCheck = "Additional night - April 13"; 11035 $("input[type='checkbox']").filter(function () { 11036 return $(this).attr("data-name") === textToCheck; 11037 }).prop("checked", true).trigger("change"); 11038 11039 } else { 11040 var textToCheck = "Additional night - April 13"; 11041 $("input[type='checkbox']").filter(function () { 11042 return $(this).attr("data-name") === textToCheck; 11043 }).prop("checked", false).trigger("change"); 11044 11045 } 11046 }); 11047 11048// Get references to the checkboxes April 14 11049 var $shoulderapril14 = $('#shoulderapril14'); 11050 11051 // Add a click event handler to postevent1 checkbox 11052 $shoulderapril14.click(function () { 11053 if ($shoulderapril14.is(':checked')) { 11054 11055 var textToCheck = "Additional night - April 14"; 11056 $("input[type='checkbox']").filter(function () { 11057 return $(this).attr("data-name") === textToCheck; 11058 }).prop("checked", true).trigger("change"); 11059 11060 } else { 11061 11062 var textToCheck = "Additional night - April 14"; 11063 $("input[type='checkbox']").filter(function () { 11064 return $(this).attr("data-name") === textToCheck; 11065 }).prop("checked", false).trigger("change"); 11066 } 11067 }); 11068 11069 11070 $('#grp_fld_1304376 input[name="fld_1304376[]"]').click(function () { 11071 $('input[data-name="April 7, 2024"]').each(function () { 11072 $(this).click(); 11073 // $(this).prop("checked",true); 11074 }); 11075 }); 11076 11077 $('#grp_fld_1304377 input[name="fld_1304377[]"]').click(function () { 11078 $('input[data-name="April 8, 2024"]').each(function () { 11079 $(this).click(); 11080 // $(this).prop("checked",true); 11081 }); 11082 }); 11083 11084 $('#grp_fld_1304378 input[name="fld_1304378[]"]').click(function () { 11085 $('input[data-name="April 9, 2024"]').each(function () { 11086 $(this).click(); 11087 // $(this).prop("checked",true); 11088 }); 11089 }); 11090 11091 $('#grp_fld_1304379 input[name="fld_1304379[]"]').click(function () { 11092 $('input[data-name="April 10, 2024"]').each(function () { 11093 $(this).click(); 11094 // $(this).prop("checked",true); 11095 }); 11096 }); 11097 11098 11099 $('#grp_fld_1304380 input[name="fld_1304380[]"]').click(function () { 11100 $('input[data-name="April 11, 2024"]').each(function () { 11101 $(this).click(); 11102 // $(this).prop("checked",true); 11103 }); 11104 }); 11105 11106
11107////////////////////New Checkin and Checkout/////////////////////// 11108 11109 11110 $(document).on('change', '#fld_1304052', function () { 11111 11112 var partner_min_date = "04/04/2024"; 11113 var partner_max_date = "12/04/2024"; 11114 11115 var partnerout_min_date = "04/04/2024"; 11116 var partnerout_max_date = "12/04/2024"; 11117 11118 11119 $('#fld_1304371').datepicker('remove'); 11120 $('#fld_1304371').datepicker({ 11121 format: $('#fld_1304371').data('date-format'), 11122 todayHighlight: true, 11123 language: 'EN', 11124 autoclose: true, 11125 startDate: partner_min_date, 11126 endDate: partner_max_date, 11127 }); 11128 11129 $('#fld_1304372').datepicker('remove'); 11130 $('#fld_1304372').datepicker({ 11131 //format: $('#fld_1304372').data('date-format'), 11132 format: "dd/mm/yyyy", 11133 todayHighlight: true, 11134 language: 'EN', 11135 autoclose: true, 11136 startDate: partnerout_min_date, 11137 endDate: partnerout_max_date, 11138 }); 11139 11140 11141 }); 11142 11143 $(document).on('change', '#fld_1304052', function () { 11144 11145 var partner_min_date = "06/04/2024"; 11146 var partner_max_date = "12/04/2024"; 11147 11148 var partnerout_min_date = "06/04/2024"; 11149 var partnerout_max_date = "12/04/2024"; 11150 11151 11152 $('#fld_1304371').datepicker('remove'); 11153 $('#fld_1304371').datepicker({ 11154 format: $('#fld_1304371').data('date-format'), 11155 todayHighlight: true, 11156 language: 'EN', 11157 autoclose: true, 11158 startDate: partner_min_date, 11159 endDate: partner_max_date, 11160 }); 11161 11162 $('#fld_1304372').datepicker('remove'); 11163 $('#fld_1304372').datepicker({ 11164 //format: $('#fld_1304372').data('date-format'), 11165 format: "dd/mm/yyyy", 11166 todayHighlight: true, 11167 language: 'EN', 11168 autoclose: true, 11169 startDate: partnerout_min_date, 11170 endDate: partnerout_max_date, 11171 }); 11172 11173 11174 }); 11175 11176 var selectEBDate = [918, 921, 768]; 11177 11178 $('#fld_1304571, #fld_1304367').on('change', function () { 11179 if ($('#fld_1304052').val() == 'Silver partner') { 11180 return false; 11181 } 11182 11183 var checkinEB_min_date = "14/04/2024"; 11184 var checkinEB_max_date = "14/04/2024"; 11185 11186 var checkoutEB_min_date = "14/04/2024"; 11187 var checkoutEB_max_date = "14/04/2024"; 11188 11189 if ($('#fld_1304373').val() == 'IOC EB and Staff' && selectEBDate.includes(parseInt($('#fld_1304367').val()))) { 11190 11191 11192 checkinEB_min_date = "06/04/2024"; 11193 checkinEB_max_date = "12/04/2024"; 11194 11195 checkoutEB_min_date = "06/04/2024"; 11196 checkoutEB_max_date = "12/04/2024"; 11197 } else { 11198 11199 checkinEB_min_date = "04/04/2024"; 11200 checkinEB_max_date = "14/04/2024"; 11201 11202 checkoutEB_min_date = "04/04/2024"; 11203 checkoutEB_max_date = "14/04/2024"; 11204 } 11205 11206 $('#fld_1304371').datepicker('remove'); 11207 $('#fld_1304371').datepicker({ 11208 format: $('#fld_1304371').data('date-format'), 11209 todayHighlight: true, 11210 language: 'EN', 11211 autoclose: true, 11212 startDate: checkinEB_min_date, 11213 endDate: checkinEB_max_date, 11214 }); 11215 11216 $('#fld_1304372').datepicker('remove'); 11217 $('#fld_1304372').datepicker({ 11218 //format: $('#fld_1304372').data('date-format'), 11219 format: "dd/mm/yyyy", 11220 todayHighlight: true, 11221 language: 'EN', 11222 autoclose: true, 11223 startDate: checkoutEB_min_date, 11224 endDate: checkoutEB_max_date, 11225 }); 11226 11227 }); 11228 11229 $(document).on('change', '#fld_1304059', function () { 11230 var _selectedCategoryVal = $(this).val(); 11231 11232 var checkin_min_date = "03/01/2023"; 11233 var checkin_max_date = "04/01/2023"; 11234 11235 var checkout_min_date = "03/01/2023"; 11236 var checkout_max_date = "04/01/2023"; 11237 11238 if (_selectedCategoryVal == "Conference Delegate") { 11239 checkin_min_date = "04/04/2024"; 11240 checkin_max_date = "14/04/2024"; 11241 11242 checkout_min_date = "04/04/2024"; 11243 checkout_max_date = "14/04/2024"; 11244 11245 } else if (_selectedCategoryVal == "International Olympic Committee - IOC Member") { 11246 checkin_min_date = "04/04/2024"; 11247 checkin_max_date = "14/04/2024"; 11248 11249 checkout_min_date = "04/04/2024"; 11250 checkout_max_date = "14/04/2024"; 11251 } else if (_selectedCategoryVal == "National Olympic Committee (NOC) Delegate") { 11252 checkin_min_date = "04/04/2024"; 11253 checkin_max_date = "14/04/2024"; 11254 11255 checkout_min_date = "04/04/2024"; 11256 checkout_max_date = "14/04/2024"; 11257 } else if (_selectedCategoryVal == "Media Accreditation") { 11258 checkin_min_date = "04/04/2024"; 11259 checkin_max_date = "14/04/2024"; 11260 11261 checkout_min_date = "04/04/2024"; 11262 checkout_max_date = "14/04/2024"; 11263 } 11264 11265 $('#fld_1304371').datepicker('remove'); 11266 $('#fld_1304371').datepicker({ 11267 //format: $('#fld_1304371').data('date-format'), 11268 format: "dd/mm/yyyy", 11269 todayHighlight: true, 11270 language: 'EN', 11271 autoclose: true, 11272 startDate: checkin_min_date, 11273 endDate: checkin_max_date, 11274 }); 11275 11276 $('#fld_1304372').datepicker('remove'); 11277 $('#fld_1304372').datepicker({ 11278 //format: $('#fld_1304372').data('date-format'), 11279 format: "dd/mm/yyyy", 11280 todayHighlight: true, 11281 language: 'EN', 11282 autoclose: true, 11283 startDate: checkout_min_date, 11284 endDate: checkout_max_date, 11285 }); 11286 11287 }); 11288
11289/////////////////Passport Min Max date//////////////// 11290 11291 $(document).on('change', '#fld_1304023', function () { 11292 11293 var passport_min_date = "05/10/2024"; 11294 var passport_max_date = ""; 11295 11296 $('#fld_1304030').datepicker('remove'); 11297 $('#fld_1304030').datepicker({ 11298 format: $('#fld_1304030').data('date-format'), 11299 todayHighlight: true, 11300 language: 'EN', 11301 autoclose: true, 11302 startDate: passport_min_date, 11303 endDate: passport_max_date, 11304 11305 }); 11306 11307 }); 11308 11309///////////////////IFs on Hotel Change///////////////////// 11310 11311 11312 $(document).on('change', '#fld_1304368', function () { 11313 var _selectedCategoryVal = $(this).val(); 11314 if ($('#fld_1304052').val() == 'Silver partner') { 11315 return false; 11316 } 11317 var checkin_min_date = "04/04/2024"; 11318 var checkin_max_date = "14/04/2024"; 11319 11320 var checkout_min_date = "04/04/2024"; 11321 var checkout_max_date = "14/04/2024"; 11322 11323 if (roomSelectGrandGuest.includes(parseInt(_selectedCategoryVal))) { 11324 checkin_min_date = "04/04/2024"; 11325 checkin_max_date = "14/04/2024"; 11326 11327 checkout_min_date = "04/04/2024"; 11328 checkout_max_date = "14/04/2024"; 11329 11330 } 11331 11332 $('#fld_1304371').datepicker('remove'); 11333 $('#fld_1304371').datepicker({ 11334 format: $('#fld_1304371').data('date-format'), 11335 todayHighlight: true, 11336 language: 'EN', 11337 autoclose: true, 11338 startDate: checkin_min_date, 11339 endDate: checkin_max_date, 11340 }); 11341 11342 $('#fld_1304372').datepicker('remove'); 11343 $('#fld_1304372').datepicker({ 11344 //format: $('#fld_1304372').data('date-format'), 11345 format: "dd/mm/yyyy", 11346 todayHighlight: true, 11347 language: 'EN', 11348 autoclose: true, 11349 startDate: checkout_min_date, 11350 endDate: checkout_max_date, 11351 }); 11352 11353 }); 11354 11355 11356 11357 11358///////////////////////////////////////////////////////////////////////////////////////////////// 11359 11360 11361 $('#fld_1304371, #fld_1304372, #fld_1304368, #fld_1304373').on('change', function () { 11362 11363 11364 console.log($('#dayDifference').text()); 11365 console.log($('#fld_1304367').val()); //Hotel name 11366 console.log($('#fld_1304368').val()); //Room type 11367 console.log($('#fld_1304373').val()); //Room Sharing 11368 11369 11370////////////////////////////Sharing is Yes/////////////////////////////// 11371 11372 $(".addnopkg input[data-name='Grand Hotel Birmingham â Grand Guest Room, 1 Night']").parent("div.addnopkg").nextAll().find("input").prop("checked", false); 11373 11374 if ($('#dayDifference').text() == 1 && roomSelectGrandGuest.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11375 checkAddonBasedOnHotels("Grand Hotel Birmingham â Grand Guest Room, 1 Night", "Grand Hotel Birmingham â Sharing person charge, 1 Night"); 11376 } else if ([2, 3, 4, 5, 6, 7, 8, 9, 10].includes(parseInt($('#dayDifference').text())) && roomSelectGrandGuest.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11377 checkAddonBasedOnHotels("Grand Hotel Birmingham â Grand Guest Room, " + $('#dayDifference').text() + " Nights", "Grand Hotel Birmingham â Sharing person charge, " + $('#dayDifference').text() + " Nights"); 11378 } 11379 11380///////////////////Hyaatt Standard Guest Room/////////////////////// 11381 11382 else if ($('#dayDifference').text() == 1 && roomSelectStandardGuestRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11383 11384 $("input[type='checkbox']").filter(function () { 11385 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Standard Guest Room, 1 Night"; 11386 }).prop("checked", true).trigger('change'); 11387 11388 $("input[type='checkbox']").filter(function () { 11389 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 1 Night"; 11390 }).prop("checked", true).trigger('change'); 11391 } else if ($('#dayDifference').text() == 2 && roomSelectStandardGuestRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11392 11393 11394 $("input[type='checkbox']").filter(function () { 11395 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Standard Guest Room, 2 Nights"; 11396 }).prop("checked", true).trigger('change'); 11397 11398 $("input[type='checkbox']").filter(function () { 11399 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 2 Nights"; 11400 }).prop("checked", true).trigger('change'); 11401 } else if ($('#dayDifference').text() == 3 && roomSelectStandardGuestRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11402 11403 11404 $("input[type='checkbox']").filter(function () { 11405 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Standard Guest Room, 3 Nights"; 11406 }).prop("checked", true).trigger('change'); 11407 11408 $("input[type='checkbox']").filter(function () { 11409 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 3 Nights"; 11410 }).prop("checked", true).trigger('change'); 11411 } else if ($('#dayDifference').text() == 4 && roomSelectStandardGuestRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11412 11413 11414 $("input[type='checkbox']").filter(function () { 11415 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Standard Guest Room, 4 Nights"; 11416 }).prop("checked", true).trigger('change'); 11417 11418 $("input[type='checkbox']").filter(function () { 11419 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 4 Nights"; 11420 }).prop("checked", true).trigger('change'); 11421 } else if ($('#dayDifference').text() == 5 && roomSelectStandardGuestRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11422 11423 11424 $("input[type='checkbox']").filter(function () { 11425 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Standard Guest Room, 5 Nights"; 11426 }).prop("checked", true).trigger('change'); 11427 11428 $("input[type='checkbox']").filter(function () { 11429 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 5 Nights"; 11430 }).prop("checked", true).trigger('change'); 11431 } else if ($('#dayDifference').text() == 6 && roomSelectStandardGuestRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11432 11433 11434 $("input[type='checkbox']").filter(function () { 11435 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Standard Guest Room, 6 Nights"; 11436 }).prop("checked", true).trigger('change'); 11437 11438 $("input[type='checkbox']").filter(function () { 11439 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 6 Nights"; 11440 }).prop("checked", true).trigger('change'); 11441 } else if ($('#dayDifference').text() == 7 && roomSelectStandardGuestRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11442 11443 11444 $("input[type='checkbox']").filter(function () { 11445 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Standard Guest Room, 7 Nights"; 11446 }).prop("checked", true).trigger('change'); 11447 11448 $("input[type='checkbox']").filter(function () { 11449 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 7 Nights"; 11450 }).prop("checked", true).trigger('change'); 11451 } else if ($('#dayDifference').text() == 8 && roomSelectStandardGuestRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11452 11453 11454 $("input[type='checkbox']").filter(function () { 11455 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Standard Guest Room, 8 Nights"; 11456 }).prop("checked", true).trigger('change'); 11457 11458 $("input[type='checkbox']").filter(function () { 11459 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 8 Nights"; 11460 }).prop("checked", true).trigger('change'); 11461 } else if ($('#dayDifference').text() == 9 && roomSelectStandardGuestRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11462 11463 11464 $("input[type='checkbox']").filter(function () { 11465 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Standard Guest Room, 9 Nights"; 11466 }).prop("checked", true).trigger('change'); 11467 11468 $("input[type='checkbox']").filter(function () { 11469 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 9 Nights"; 11470 }).prop("checked", true).trigger('change'); 11471 } else if ($('#dayDifference').text() == 10 && roomSelectStandardGuestRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11472 11473 11474 $("input[type='checkbox']").filter(function () { 11475 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Standard Guest Room, 10 Nights"; 11476 }).prop("checked", true).trigger('change'); 11477 11478 $("input[type='checkbox']").filter(function () { 11479 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 10 Nights"; 11480 }).prop("checked", true).trigger('change'); 11481 } 11482
11483/////////////////////ViewRoomComp///////////////////// 11484 else if ($('#dayDifference').text() == 1 && selectStandardGuestRoomComp.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11485 11486 11487 $("input[type='checkbox']").filter(function () { 11488 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 1 Night"; 11489 }).prop("checked", true).trigger('change'); 11490 } else if ($('#dayDifference').text() == 2 && selectStandardGuestRoomComp.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11491 11492 11493 $("input[type='checkbox']").filter(function () { 11494 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 2 Nights"; 11495 }).prop("checked", true).trigger('change'); 11496 } else if ($('#dayDifference').text() == 3 && selectStandardGuestRoomComp.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11497 11498 11499 $("input[type='checkbox']").filter(function () { 11500 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 3 Nights"; 11501 }).prop("checked", true).trigger('change'); 11502 } else if ($('#dayDifference').text() == 4 && selectStandardGuestRoomComp.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11503 11504 11505 $("input[type='checkbox']").filter(function () { 11506 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 4 Nights"; 11507 }).prop("checked", true).trigger('change'); 11508 } else if ($('#dayDifference').text() == 5 && selectStandardGuestRoomComp.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11509 11510 11511 $("input[type='checkbox']").filter(function () { 11512 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 5 Nights"; 11513 }).prop("checked", true).trigger('change'); 11514 } else if ($('#dayDifference').text() == 6 && selectStandardGuestRoomComp.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11515 11516 11517 $("input[type='checkbox']").filter(function () { 11518 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 6 Nights"; 11519 }).prop("checked", true).trigger('change'); 11520 } else if ($('#dayDifference').text() == 7 && selectStandardGuestRoomComp.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11521 11522 11523 $("input[type='checkbox']").filter(function () { 11524 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 7 Nights"; 11525 }).prop("checked", true).trigger('change'); 11526 } else if ($('#dayDifference').text() == 8 && selectStandardGuestRoomComp.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11527 11528 11529 $("input[type='checkbox']").filter(function () { 11530 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 8 Nights"; 11531 }).prop("checked", true).trigger('change'); 11532 } else if ($('#dayDifference').text() == 9 && selectStandardGuestRoomComp.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11533 11534 11535 $("input[type='checkbox']").filter(function () { 11536 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 9 Nights"; 11537 }).prop("checked", true).trigger('change'); 11538 } else if ($('#dayDifference').text() == 10 && selectStandardGuestRoomComp.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11539 11540 11541 $("input[type='checkbox']").filter(function () { 11542 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 10 Nights"; 11543 }).prop("checked", true).trigger('change'); 11544 } else if ($('#dayDifference').text() == 1 && selectStandardGuestRoomComp.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 11545 11546 11547 $("input[type='checkbox']").filter(function () { 11548 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 1 Night"; 11549 }).prop("checked", false).trigger('change'); 11550 } else if ($('#dayDifference').text() == 2 && selectStandardGuestRoomComp.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 11551 11552 11553 $("input[type='checkbox']").filter(function () { 11554 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 2 Nights"; 11555 }).prop("checked", false).trigger('change'); 11556 } else if ($('#dayDifference').text() == 3 && selectStandardGuestRoomComp.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 11557 11558 11559 $("input[type='checkbox']").filter(function () { 11560 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 3 Nights"; 11561 }).prop("checked", false).trigger('change'); 11562 } else if ($('#dayDifference').text() == 4 && selectStandardGuestRoomComp.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 11563 11564 11565 $("input[type='checkbox']").filter(function () { 11566 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 4 Nights"; 11567 }).prop("checked", false).trigger('change'); 11568 } else if ($('#dayDifference').text() == 5 && selectStandardGuestRoomComp.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 11569 11570 11571 $("input[type='checkbox']").filter(function () { 11572 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 5 Nights"; 11573 }).prop("checked", false).trigger('change'); 11574 } else if ($('#dayDifference').text() == 6 && selectStandardGuestRoomComp.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 11575 11576 11577 $("input[type='checkbox']").filter(function () { 11578 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 6 Nights"; 11579 }).prop("checked", false).trigger('change'); 11580 } else if ($('#dayDifference').text() == 7 && selectStandardGuestRoomComp.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 11581 11582 11583 $("input[type='checkbox']").filter(function () { 11584 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 7 Nights"; 11585 }).prop("checked", false).trigger('change'); 11586 } else if ($('#dayDifference').text() == 8 && selectStandardGuestRoomComp.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 11587 11588 11589 $("input[type='checkbox']").filter(function () { 11590 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 8 Nights"; 11591 }).prop("checked", false).trigger('change'); 11592 } else if ($('#dayDifference').text() == 9 && selectStandardGuestRoomComp.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 11593 11594 11595 $("input[type='checkbox']").filter(function () { 11596 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 9 Nights"; 11597 }).prop("checked", false).trigger('change'); 11598 } else if ($('#dayDifference').text() == 10 && selectStandardGuestRoomComp.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 11599 11600 11601 $("input[type='checkbox']").filter(function () { 11602 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 10 Nights"; 11603 }).prop("checked", false).trigger('change'); 11604 } 11605 11606///////////////////Hyaatt View Standard Room/////////////////////// 11607 11608 else if ($('#dayDifference').text() == 1 && selectViewRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11609 11610 11611 $("input[type='checkbox']").filter(function () { 11612 return $(this).attr("data-name") === "Hyatt Regency Birmingham â View Room, 1 Night"; 11613 }).prop("checked", true).trigger('change'); 11614 11615 $("input[type='checkbox']").filter(function () { 11616 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 1 Night"; 11617 }).prop("checked", true).trigger('change'); 11618 } else if ($('#dayDifference').text() == 2 && selectViewRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11619 11620 11621 $("input[type='checkbox']").filter(function () { 11622 return $(this).attr("data-name") === "Hyatt Regency Birmingham â View Room, 2 Nights"; 11623 }).prop("checked", true).trigger('change'); 11624 11625 $("input[type='checkbox']").filter(function () { 11626 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 2 Nights"; 11627 }).prop("checked", true).trigger('change'); 11628 } else if ($('#dayDifference').text() == 3 && selectViewRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11629 11630 11631 $("input[type='checkbox']").filter(function () { 11632 return $(this).attr("data-name") === "Hyatt Regency Birmingham â View Room, 3 Nights"; 11633 }).prop("checked", true).trigger('change'); 11634 11635 $("input[type='checkbox']").filter(function () { 11636 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 3 Nights"; 11637 }).prop("checked", true).trigger('change'); 11638 } else if ($('#dayDifference').text() == 4 && selectViewRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11639 11640 11641 $("input[type='checkbox']").filter(function () { 11642 return $(this).attr("data-name") === "Hyatt Regency Birmingham â View Room, 4 Nights"; 11643 }).prop("checked", true).trigger('change'); 11644 11645 $("input[type='checkbox']").filter(function () { 11646 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 4 Nights"; 11647 }).prop("checked", true).trigger('change'); 11648 } else if ($('#dayDifference').text() == 5 && selectViewRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11649 11650 11651 $("input[type='checkbox']").filter(function () { 11652 return $(this).attr("data-name") === "Hyatt Regency Birmingham â View Room, 5 Nights"; 11653 }).prop("checked", true).trigger('change'); 11654 11655 $("input[type='checkbox']").filter(function () { 11656 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 5 Nights"; 11657 }).prop("checked", true).trigger('change'); 11658 } else if ($('#dayDifference').text() == 6 && selectViewRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11659 11660 11661 $("input[type='checkbox']").filter(function () { 11662 return $(this).attr("data-name") === "Hyatt Regency Birmingham â View Room, 6 Nights"; 11663 }).prop("checked", true).trigger('change'); 11664 11665 $("input[type='checkbox']").filter(function () { 11666 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 6 Nights"; 11667 }).prop("checked", true).trigger('change'); 11668 } else if ($('#dayDifference').text() == 7 && selectViewRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11669 11670 11671 $("input[type='checkbox']").filter(function () { 11672 return $(this).attr("data-name") === "Hyatt Regency Birmingham â View Room, 7 Nights"; 11673 }).prop("checked", true).trigger('change'); 11674 11675 $("input[type='checkbox']").filter(function () { 11676 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 7 Nights"; 11677 }).prop("checked", true).trigger('change'); 11678 } else if ($('#dayDifference').text() == 8 && selectViewRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11679 11680 11681 $("input[type='checkbox']").filter(function () { 11682 return $(this).attr("data-name") === "Hyatt Regency Birmingham â View Room, 8 Nights"; 11683 }).prop("checked", true).trigger('change'); 11684 11685 $("input[type='checkbox']").filter(function () { 11686 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 8 Nights"; 11687 }).prop("checked", true).trigger('change'); 11688 } else if ($('#dayDifference').text() == 9 && selectViewRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11689 11690 11691 $("input[type='checkbox']").filter(function () { 11692 return $(this).attr("data-name") === "Hyatt Regency Birmingham â View Room, 9 Nights"; 11693 }).prop("checked", true).trigger('change'); 11694 11695 $("input[type='checkbox']").filter(function () { 11696 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 9 Nights"; 11697 }).prop("checked", true).trigger('change'); 11698 } else if ($('#dayDifference').text() == 10 && selectViewRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11699 11700 11701 $("input[type='checkbox']").filter(function () { 11702 return $(this).attr("data-name") === "Hyatt Regency Birmingham â View Room, 10 Nights"; 11703 }).prop("checked", true).trigger('change'); 11704 11705 $("input[type='checkbox']").filter(function () { 11706 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 10 Nights"; 11707 }).prop("checked", true).trigger('change'); 11708 } 11709 11710///////////////////Hilton Standard King Room/////////////////////// 11711 11712 else if ($('#dayDifference').text() == 1 && selectStandardKing.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11713 11714 11715 $("input[type='checkbox']").filter(function () { 11716 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard King, 1 Night"; 11717 }).prop("checked", true).trigger('change'); 11718 11719 $("input[type='checkbox']").filter(function () { 11720 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 1 Night"; 11721 }).prop("checked", true).trigger('change'); 11722 } else if ($('#dayDifference').text() == 2 && selectStandardKing.includes(parseInt($('#fld_1304368'
11722).val())) && $('#fld_1304373').val() == 'Yes') { 11723 // 11724 uncheckCheckboxesByText(".addnopkg.addonsvp.addon-package", textsToUncheck); 11725 11726 $("input[type='checkbox']").filter(function () { 11727 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard King, 2 Nights"; 11728 }).prop("checked", true).trigger('change'); 11729 11730 $("input[type='checkbox']").filter(function () { 11731 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 2 Nights"; 11732 }).prop("checked", true).trigger('change'); 11733 } else if ($('#dayDifference').text() == 3 && selectStandardKing.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11734 11735 11736 $("input[type='checkbox']").filter(function () { 11737 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard King, 3 Nights"; 11738 }).prop("checked", true).trigger('change'); 11739 11740 $("input[type='checkbox']").filter(function () { 11741 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 3 Nights"; 11742 }).prop("checked", true).trigger('change'); 11743 } else if ($('#dayDifference').text() == 4 && selectStandardKing.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11744 11745 11746 $("input[type='checkbox']").filter(function () { 11747 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard King, 4 Nights"; 11748 }).prop("checked", true).trigger('change'); 11749 11750 $("input[type='checkbox']").filter(function () { 11751 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 4 Nights"; 11752 }).prop("checked", true).trigger('change'); 11753 } else if ($('#dayDifference').text() == 5 && selectStandardKing.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11754 11755 11756 $("input[type='checkbox']").filter(function () { 11757 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard King, 5 Nights"; 11758 }).prop("checked", true).trigger('change'); 11759 11760 $("input[type='checkbox']").filter(function () { 11761 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 5 Nights"; 11762 }).prop("checked", true).trigger('change'); 11763 } else if ($('#dayDifference').text() == 6 && selectStandardKing.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11764 11765 11766 $("input[type='checkbox']").filter(function () { 11767 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard King, 6 Nights"; 11768 }).prop("checked", true).trigger('change'); 11769 11770 $("input[type='checkbox']").filter(function () { 11771 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 6 Nights"; 11772 }).prop("checked", true).trigger('change'); 11773 } else if ($('#dayDifference').text() == 7 && selectStandardKing.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11774 11775 11776 $("input[type='checkbox']").filter(function () { 11777 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard King, 7 Nights"; 11778 }).prop("checked", true).trigger('change'); 11779 11780 $("input[type='checkbox']").filter(function () { 11781 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 7 Nights"; 11782 }).prop("checked", true).trigger('change'); 11783 } else if ($('#dayDifference').text() == 8 && selectStandardKing.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11784 11785 11786 $("input[type='checkbox']").filter(function () { 11787 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard King, 8 Nights"; 11788 }).prop("checked", true).trigger('change'); 11789 11790 $("input[type='checkbox']").filter(function () { 11791 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 8 Nights"; 11792 }).prop("checked", true).trigger('change'); 11793 } else if ($('#dayDifference').text() == 9 && selectStandardKing.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11794 11795 11796 $("input[type='checkbox']").filter(function () { 11797 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard King, 9 Nights"; 11798 }).prop("checked", true).trigger('change'); 11799 11800 $("input[type='checkbox']").filter(function () { 11801 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 9 Nights"; 11802 }).prop("checked", true).trigger('change'); 11803 } else if ($('#dayDifference').text() == 10 && selectStandardKing.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11804 11805 11806 $("input[type='checkbox']").filter(function () { 11807 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard King, 10 Nights"; 11808 }).prop("checked", true).trigger('change'); 11809 11810 $("input[type='checkbox']").filter(function () { 11811 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 10 Nights"; 11812 }).prop("checked", true).trigger('change'); 11813 } 11814 11815///////////////////Hilton Standard Twin Room/////////////////////// 11816 11817 else if ($('#dayDifference').text() == 1 && selectStandardTwin.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11818 11819 11820 $("input[type='checkbox']").filter(function () { 11821 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Twin, 1
11821Night"; 11822 }).prop("checked", true).trigger('change'); 11823 11824 $("input[type='checkbox']").filter(function () { 11825 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 1 Night"; 11826 }).prop("checked", true).trigger('change'); 11827 } else if ($('#dayDifference').text() == 2 && selectStandardTwin.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11828 11829 11830 $("input[type='checkbox']").filter(function () { 11831 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Twin, 2 Nights"; 11832 }).prop("checked", true).trigger('change'); 11833 11834 $("input[type='checkbox']").filter(function () { 11835 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 2 Nights"; 11836 }).prop("checked", true).trigger('change'); 11837 } else if ($('#dayDifference').text() == 3 && selectStandardTwin.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11838 11839 11840 $("input[type='checkbox']").filter(function () { 11841 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Twin, 3 Nights"; 11842 }).prop("checked", true).trigger('change'); 11843 11844 $("input[type='checkbox']").filter(function () { 11845 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 3 Nights"; 11846 }).prop("checked", true).trigger('change'); 11847 } else if ($('#dayDifference').text() == 4 && selectStandardTwin.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11848 11849 11850 $("input[type='checkbox']").filter(function () { 11851 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Twin, 4 Nights"; 11852 }).prop("checked", true).trigger('change'); 11853 11854 $("input[type='checkbox']").filter(function () { 11855 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 4 Nights"; 11856 }).prop("checked", true).trigger('change'); 11857 } else if ($('#dayDifference').text() == 5 && selectStandardTwin.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11858 11859 11860 $("input[type='checkbox']").filter(function () { 11861 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Twin, 5 Nights"; 11862 }).prop("checked", true).trigger('change'); 11863 11864 $("input[type='checkbox']").filter(function () { 11865 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 5 Nights"; 11866 }).prop("checked", true).trigger('change'); 11867 } else if ($('#dayDifference').text() == 6 && selectStandardTwin.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11868 11869 11870 $("input[type='checkbox']").filter(function () { 11871 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Twin, 6 Nights"; 11872 }).prop("checked", true).trigger('change'); 11873 11874 $("input[type='checkbox']").filter(function () { 11875 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 6 Nights"; 11876 }).prop("checked", true).trigger('change'); 11877 } else if ($('#dayDifference').text() == 7 && selectStandardTwin.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11878 11879 11880 $("input[type='checkbox']").filter(function () { 11881 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Twin, 7 Nights"; 11882 }).prop("checked", true).trigger('change'); 11883 11884 $("input[type='checkbox']").filter(function () { 11885 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 7 Nights"; 11886 }).prop("checked", true).trigger('change'); 11887 } else if ($('#dayDifference').text() == 8 && selectStandardTwin.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11888 11889 11890 $("input[type='checkbox']").filter(function () { 11891 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Twin, 8 Nights"; 11892 }).prop("checked", true).trigger('change'); 11893 11894 $("input[type='checkbox']").filter(function () { 11895 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 8 Nights"; 11896 }).prop("checked", true).trigger('change'); 11897 } else if ($('#dayDifference').text() == 9 && selectStandardTwin.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11898 11899 11900 $("input[type='checkbox']").filter(function () { 11901 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Twin, 9 Nights"; 11902 }).prop("checked", true).trigger('change'); 11903 11904 $("input[type='checkbox']").filter(function () { 11905 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 9 Nights"; 11906 }).prop("checked", true).trigger('change'); 11907 } else if ($('#dayDifference').text() == 10 && selectStandardTwin.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11908 11909 11910 $("input[type='checkbox']").filter(function () { 11911 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Twin, 10 Nights"; 11912 }).prop("checked", true).trigger('change'); 11913 11914 $("input[type='checkbox']").filter(function () { 11915 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 10 Nights"; 11916 }).prop("checked", true).trigger('change'); 11917 } 11918 11919///////////////////Hilton Standard Queen Room/////////////////////// 11920 11921 else if ($('#dayDifference').text() == 1 && selectStandardQueen.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11922 11923 11924 $("input[type='checkbox']").filter(function () { 11925 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Queen, 1 Nights"; 11926 }).prop("checked", true).trigger('change'); 11927 11928 $("input[type='checkbox']").filter(function () { 11929 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 1 Night"; 11930 }).prop("checked", true).trigger('change'); 11931 } else if ($('#dayDifference').text() == 2 && selectStandardQueen.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11932 11933 11934 $("input[type='checkbox']").filter(function () { 11935 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Queen, 2 Nights"; 11936 }).prop("checked", true).trigger('change'); 11937 11938 $("input[type='checkbox']").filter(function () { 11939 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 2 Nights"; 11940 }).prop("checked", true).trigger('change'); 11941 } else if ($('#dayDifference').text() == 3 && selectStandardQueen.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11942 11943 11944 $("input[type='checkbox']").filter(function () { 11945 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Queen, 3 Nights"; 11946 }).prop("checked", true).trigger('change'); 11947 11948 $("input[type='checkbox']").filter(function () { 11949 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 3 Nights"; 11950 }).prop("checked", true).trigger('change'); 11951 } else if ($('#dayDifference').text() == 4 && selectStandardQueen.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11952 11953 11954 $("input[type='checkbox']").filter(function () { 11955 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Queen, 4 Nights"; 11956 }).prop("checked", true).trigger('change'); 11957 11958 $("input[type='checkbox']").filter(function () { 11959 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 4 Nights"; 11960 }).prop("checked", true).trigger('change'); 11961 } else if ($('#dayDifference').text() == 5 && selectStandardQueen.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11962 11963 11964 $("input[type='checkbox']").filter(function () { 11965 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Queen, 5 Nights"; 11966 }).prop("checked", true).trigger('change'); 11967 11968 $("input[type='checkbox']").filter(function () { 11969 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 5 Nights"; 11970 }).prop("checked", true).trigger('change'); 11971 } else if ($('#dayDifference').text() == 6 && selectStandardQueen.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11972 11973 11974 $("input[type='checkbox']").filter(function () { 11975 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Queen, 6 Nights"; 11976 }).prop("checked", true).trigger('change'); 11977 11978 $("input[type='checkbox']").filter(function () { 11979 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 6 Nights"; 11980 }).prop("checked", true).trigger('change'); 11981 } else if ($('#dayDifference').text() == 7 && selectStandardQueen.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11982 11983 11984 $("input[type='checkbox']").filter(function () { 11985 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Queen, 7 Nights"; 11986 }).prop("checked", true).trigger('change'); 11987 11988 $("input[type='checkbox']").filter(function () { 11989 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 7 Nights"; 11990 }).prop("checked", true).trigger('change'); 11991 } else if ($('#dayDifference').text() == 8 && selectStandardQueen.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 11992 11993 11994 $("input[type='checkbox']").filter(function () { 11995 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Queen, 8 Nights"; 11996 }).prop("checked", true).trigger('change'); 11997 11998 $("input[type='checkbox']").filter(function () { 11999 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 8 Nights"; 12000 }).prop("checked", true).trigger('change'); 12001 } else if ($('#dayDifference').text() == 9 && selectStandardQueen.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 12002 12003 12004 $("input[type='checkbox']").filter(function () { 12005 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Queen, 9 Nights"; 12006 }).prop("checked", true).trigger('change'); 12007 12008 $("input[type='checkbox']").filter(function () { 12009 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 9 Nights"; 12010 }).prop("checked", true).trigger('change'); 12011 } else if ($('#dayDifference').text() == 10 && selectStandardQueen.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'Yes') { 12012 12013 12014 $("input[type='checkbox']").filter(function () { 12015 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Queen, 10 Nights"; 12016 }).prop("checked", true).trigger('change'); 12017 12018 $("input[type='checkbox']").filter(function () { 12019 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 10 Nights"; 12020 }).prop("checked", true).trigger('change'); 12021 } 12022
12023////////////////////No Sharing//////////////////////// 12024 12025 else if ($('#dayDifference').text() == 1 && roomSelectGrandGuest.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12026 checkAddonBasedOnHotelsNoSharing("Grand Hotel Birmingham â Grand Guest Room, " + $('#dayDifference').text() + " Night", "Grand Hotel Birmingham â Sharing person charge, " + $('#dayDifference').text() + " Night"); 12027 } else if ([2, 3, 4, 5, 6, 7, 8, 9, 10].includes(parseInt($('#dayDifference').text())) && roomSelectGrandGuest.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12028 checkAddonBasedOnHotelsNoSharing("Grand Hotel Birmingham â Grand Guest Room, " + $('#dayDifference').text() + " Nights", "Grand Hotel Birmingham â Sharing person charge, " + $('#dayDifference').text() + " Nights"); 12029 } 12030 12031 12032 12033///////////////////Hyaatt Standard Guest Room/////////////////////// 12034 12035 else if ($('#dayDifference').text() == 1 && roomSelectStandardGuestRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12036 12037 12038 $("input[type='checkbox']").filter(function () { 12039 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Standard Guest Room, 1 Night"; 12040 }).prop("checked", true).trigger('change'); 12041 12042 $("input[type='checkbox']").filter(function () { 12043 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 1 Night"; 12044 }).prop("checked", false).trigger('change'); 12045 } else if ($('#dayDifference').text() == 2 && roomSelectStandardGuestRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12046 12047 12048 $("input[type='checkbox']").filter(function () { 12049 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Standard Guest Room, 2 Nights"; 12050 }).prop("checked", true).trigger('change'); 12051 12052 $("input[type='checkbox']").filter(function () { 12053 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 2 Nights"; 12054 }).prop("checked", false).trigger('change'); 12055 } else if ($('#dayDifference').text() == 3 && roomSelectStandardGuestRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12056 12057 12058 $("input[type='checkbox']").filter(function () { 12059 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Standard Guest Room, 3 Nights"; 12060 }).prop("checked", true).trigger('change'); 12061 12062 $("input[type='checkbox']").filter(function () { 12063 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 3 Nights"; 12064 }).prop("checked", false).trigger('change'); 12065 } else if ($('#dayDifference').text() == 4 && roomSelectStandardGuestRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12066 12067 12068 $("input[type='checkbox']").filter(function () { 12069 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Standard Guest Room, 4 Nights"; 12070 }).prop("checked", true).trigger('change'); 12071 12072 $("input[type='checkbox']").filter(function () { 12073 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 4 Nights"; 12074 }).prop("checked", false).trigger('change'); 12075 } else if ($('#dayDifference').text() == 5 && roomSelectStandardGuestRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12076 12077 12078 $("input[type='checkbox']").filter(function () { 12079 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Standard Guest Room, 5 Nights"; 12080 }).prop("checked", true).trigger('change'); 12081 12082 $("input[type='checkbox']").filter(function () { 12083 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 5 Nights"; 12084 }).prop("checked", false).trigger('change'); 12085 } else if ($('#dayDifference').text() == 6 && roomSelectStandardGuestRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12086 12087 12088 $("input[type='checkbox']").filter(function () { 12089 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Standard Guest Room, 6 Nights"; 12090 }).prop("checked", true).trigger('change'); 12091 12092 $("input[type='checkbox']").filter(function () { 12093 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 6 Nights"; 12094 }).prop("checked", false).trigger('change'); 12095 } else if ($('#dayDifference').text() == 7 && roomSelectStandardGuestRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12096 12097 12098 $("input[type='checkbox']").filter(function () { 12099 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Standard Guest Room, 7 Nights"; 12100 }).prop("checked", true).trigger('change'); 12101 12102 $("input[type='checkbox']").filter(function () { 12103 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 7 Nights"; 12104 }).prop("checked", false).trigger('change'); 12105 } else if ($('#dayDifference').text() == 8 && roomSelectStandardGuestRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12106 12107 12108 $("input[type='checkbox']").filter(function () { 12109 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Standard Guest Room, 8 Nights"; 12110 }).prop("checked", true).trigger('change'); 12111 12112 $("input[type='checkbox']").filter(function () { 12113 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 8 Nights"; 12114 }).prop("checked", false).trigger('change'); 12115 } else if ($('#dayDifference').text() == 9 && roomSelectStandardGuestRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12116 12117 12118 $("input[type='checkbox']").filter(function () { 12119 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Standard Guest Room, 9 Nights"; 12120 }).prop("checked", true).trigger('change'); 12121 12122 $("input[type='checkbox']").filter(function () { 12123 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 9 Nights"; 12124 }).prop("checked", false).trigger('change'); 12125 } else if ($('#dayDifference').text() == 10 && roomSelectStandardGuestRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12126 12127 12128 $("input[type='checkbox']").filter(function () { 12129 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Standard Guest Room, 10 Nights"; 12130 }).prop("checked", true).trigger('change'); 12131 12132 $("input[type='checkbox']").filter(function () { 12133 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 10 Nights"; 12134 }).prop("checked", false).trigger('change'); 12135 }
12136///////////////////Hyaatt View Standard Room/////////////////////// 12137 12138 else if ($('#dayDifference').text() == 1 && selectViewRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12139 12140 12141 $("input[type='checkbox']").filter(function () { 12142 return $(this).attr("data-name") === "Hyatt Regency Birmingham â View Room, 1 Night"; 12143 }).prop("checked", true).trigger('change'); 12144 12145 $("input[type='checkbox']").filter(function () { 12146 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 1 Night"; 12147 }).prop("checked", false).trigger('change'); 12148 } else if ($('#dayDifference').text() == 2 && selectViewRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12149 12150 12151 $("input[type='checkbox']").filter(function () { 12152 return $(this).attr("data-name") === "Hyatt Regency Birmingham â View Room, 2 Nights"; 12153 }).prop("checked", true).trigger('change'); 12154 12155 $("input[type='checkbox']").filter(function () { 12156 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 2 Nights"; 12157 }).prop("checked", false).trigger('change'); 12158 } else if ($('#dayDifference').text() == 3 && selectViewRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12159 12160 12161 $("input[type='checkbox']").filter(function () { 12162 return $(this).attr("data-name") === "Hyatt Regency Birmingham â View Room, 3 Nights"; 12163 }).prop("checked", true).trigger('change'); 12164 12165 $("input[type='checkbox']").filter(function () { 12166 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 3 Nights"; 12167 }).prop("checked", false).trigger('change'); 12168 } else if ($('#dayDifference').text() == 4 && selectViewRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12169 12170 12171 $("input[type='checkbox']").filter(function () { 12172 return $(this).attr("data-name") === "Hyatt Regency Birmingham â View Room, 4 Nights"; 12173 }).prop("checked", true).trigger('change'); 12174 12175 $("input[type='checkbox']").filter(function () { 12176 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 4 Nights"; 12177 }).prop("checked", false).trigger('change'); 12178 } else if ($('#dayDifference').text() == 5 && selectViewRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12179 12180 12181 $("input[type='checkbox']").filter(function () { 12182 return $(this).attr("data-name") === "Hyatt Regency Birmingham â View Room, 5 Nights"; 12183 }).prop("checked", true).trigger('change'); 12184 12185 $("input[type='checkbox']").filter(function () { 12186 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 5 Nights"; 12187 }).prop("checked", false).trigger('change'); 12188 } else if ($('#dayDifference').text() == 6 && selectViewRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12189 12190 12191 $("input[type='checkbox']").filter(function () { 12192 return $(this).attr("data-name") === "Hyatt Regency Birmingham â View Room, 6 Nights"; 12193 }).prop("checked", true).trigger('change'); 12194 12195 $("input[type='checkbox']").filter(function () { 12196 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 6 Nights"; 12197 }).prop("checked", false).trigger('change'); 12198 } else if ($('#dayDifference').text() == 7 && selectViewRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12199 12200 12201 $("input[type='checkbox']").filter(function () { 12202 return $(this).attr("data-name") === "Hyatt Regency Birmingham â View Room, 7 Nights"; 12203 }).prop("checked", true).trigger('change'); 12204 12205 $("input[type='checkbox']").filter(function () { 12206 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 7 Nights"; 12207 }).prop("checked", false).trigger('change'); 12208 } else if ($('#dayDifference').text() == 8 && selectViewRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12209 12210 12211 $("input[type='checkbox']").filter(function () { 12212 return $(this).attr("data-name") === "Hyatt Regency Birmingham â View Room, 8 Nights"; 12213 }).prop("checked", true).trigger('change'); 12214 12215 $("input[type='checkbox']").filter(function () { 12216 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 8 Nights"; 12217 }).prop("checked", false).trigger('change'); 12218 } else if ($('#dayDifference').text() == 9 && selectViewRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12219 12220 12221 $("input[type='checkbox']").filter(function () { 12222 return $(this).attr("data-name") === "Hyatt Regency Birmingham â View Room, 9 Nights"; 12223 }).prop("checked", true).trigger('change'); 12224 12225 $("input[type='checkbox']").filter(function () { 12226 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 9 Nights"; 12227 }).prop("checked", false).trigger('change'); 12228 } else if ($('#dayDifference').text() == 10 && selectViewRoom.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12229 12230 12231 $("input[type='checkbox']").filter(function () { 12232 return $(this).attr("data-name") === "Hyatt Regency Birmingham â View Room, 10 Nights"; 12233 }).prop("checked", true).trigger('change'); 12234 12235 $("input[type='checkbox']").filter(function () { 12236 return $(this).attr("data-name") === "Hyatt Regency Birmingham â Sharing person charge, 10 Nights"; 12237 }).prop("checked", false).trigger('change'); 12238 } 12239 12240 12241///////////////////Hilton Standard King Room/////////////////////// 12242 12243 else if ($('#dayDifference').text() == 1 && selectStandardKing.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12244 12245 12246 $("input[type='checkbox']").filter(function () { 12247 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard King, 1 Night"; 12248 }).prop("checked", true).trigger('change'); 12249 12250 $("input[type='checkbox']").filter(function () { 12251 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 1 Night"; 12252 }).prop("checked", false).trigger('change'); 12253 } else if ($('#dayDifference').text() == 2 && selectStandardKing.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12254 // 12255 uncheckCheckboxesByText(".addnopkg.addonsvp.addon-package", textsToUncheck); 12256 12257 $("input[type='checkbox']").filter(function () { 12258 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard King, 2 Nights"; 12259 }).prop("checked", true).trigger('change'); 12260 12261 $("input[type='checkbox']").filter(function () { 12262 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 2 Nights"; 12263 }).prop("checked", false).trigger('change'); 12264 } else if ($('#dayDifference').text() == 3 && selectStandardKing.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12265 12266 12267 $("input[type='checkbox']").filter(function () { 12268 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard King, 3 Nights"; 12269 }).prop("checked", true).trigger('change'); 12270 12271 $("input[type='checkbox']").filter(function () { 12272 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 3 Nights"; 12273 }).prop("checked", false).trigger('change'); 12274 } else if ($('#dayDifference').text() == 4 && selectStandardKing.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12275 12276 12277 $("input[type='checkbox']").filter(function () { 12278 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard King, 4 Nights"; 12279 }).prop("checked", true).trigger('change'); 12280 12281 $("input[type='checkbox']").filter(function () { 12282 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 4 Nights"; 12283 }).prop("checked", false).trigger('change'); 12284 } else if ($('#dayDifference').text() == 5 && selectStandardKing.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12285 12286 12287 $("input[type='checkbox']").filter(function () { 12288 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard King, 5 Nights"; 12289 }).prop("checked", true).trigger('change'); 12290 12291 $("input[type='checkbox']").filter(function () { 12292 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 5 Nights"; 12293 }).prop("checked", false).trigger('change'); 12294 } else if ($('#dayDifference').text() == 6 && selectStandardKing.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12295 12296 12297 $("input[type='checkbox']").filter(function () { 12298 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard King, 6 Nights"; 12299 }).prop("checked", true).trigger('change'); 12300 12301 $("input[type='checkbox']").filter(function () { 12302 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 6 Nights"; 12303 }).prop("checked", false).trigger('change'); 12304 } else if ($('#dayDifference').text() == 7 && selectStandardKing.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12305 12306 12307 $("input[type='checkbox']").filter(function () { 12308 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard King, 7 Nights"; 12309 }).prop("checked", true).trigger('change'); 12310 12311 $("input[type='checkbox']").filter(function () { 12312 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 7 Nights"; 12313 }).prop("checked", false).trigger('change'); 12314 } else if ($('#dayDifference').text() == 8 && selectStandardKing.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12315 12316 12317 $("input[type='checkbox']").filter(function () { 12318 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard King, 8 Nights"; 12319 }).prop("checked", true).trigger('change'); 12320 12321 $("input[type='checkbox']").filter(function () { 12322 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 8 Nights"; 12323 }).prop("checked", false).trigger('change'); 12324 } else if ($('#dayDifference').text() == 9 && selectStandardKing.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12325 12326 12327 $("input[type='checkbox']").filter(function () { 12328 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard King, 9 Nights"; 12329 }).prop("checked", true).trigger('change'); 12330 12331 $("input[type='checkbox']").filter(function () { 12332 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 9 Nights"; 12333 }).prop("checked", false).trigger('change'); 12334 } else if ($('#dayDifference').text() == 10 && selectStandardKing.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12335 12336 12337 $("input[type='checkbox']").filter(function () { 12338 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard King, 10 Nights"; 12339 }).prop("checked", true).trigger('change'); 12340 12341 $("input[type='checkbox']").filter(function () { 12342 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 10 Nights"; 12343 }).prop("checked", false).trigger('change'); 12344 } 12345 12346///////////////////Hilton Standard Twin Room/////////////////////// 12347 12348 else if ($('#dayDifference').text() == 1 && selectStandardTwin.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12349 12350 12351 $("input[type='checkbox']").filter(function () { 12352 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Twin, 1
12352Night"; 12353 }).prop("checked", true).trigger('change'); 12354 12355 $("input[type='checkbox']").filter(function () { 12356 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 1 Night"; 12357 }).prop("checked", false).trigger('change'); 12358 } else if ($('#dayDifference').text() == 2 && selectStandardTwin.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12359 12360 12361 $("input[type='checkbox']").filter(function () { 12362 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Twin, 2 Nights"; 12363 }).prop("checked", true).trigger('change'); 12364 12365 $("input[type='checkbox']").filter(function () { 12366 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 2 Nights"; 12367 }).prop("checked", false).trigger('change'); 12368 } else if ($('#dayDifference').text() == 3 && selectStandardTwin.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12369 12370 12371 $("input[type='checkbox']").filter(function () { 12372 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Twin, 3 Nights"; 12373 }).prop("checked", true).trigger('change'); 12374 12375 $("input[type='checkbox']").filter(function () { 12376 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 3 Nights"; 12377 }).prop("checked", false).trigger('change'); 12378 } else if ($('#dayDifference').text() == 4 && selectStandardTwin.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12379 12380 12381 $("input[type='checkbox']").filter(function () { 12382 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Twin, 4 Nights"; 12383 }).prop("checked", true).trigger('change'); 12384 12385 $("input[type='checkbox']").filter(function () { 12386 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 4 Nights"; 12387 }).prop("checked", false).trigger('change'); 12388 } else if ($('#dayDifference').text() == 5 && selectStandardTwin.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12389 12390 12391 $("input[type='checkbox']").filter(function () { 12392 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Twin, 5 Nights"; 12393 }).prop("checked", true).trigger('change'); 12394 12395 $("input[type='checkbox']").filter(function () { 12396 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 5 Nights"; 12397 }).prop("checked", false).trigger('change'); 12398 } else if ($('#dayDifference').text() == 6 && selectStandardTwin.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12399 12400 12401 $("input[type='checkbox']").filter(function () { 12402 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Twin, 6 Nights"; 12403 }).prop("checked", true).trigger('change'); 12404 12405 $("input[type='checkbox']").filter(function () { 12406 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 6 Nights"; 12407 }).prop("checked", false).trigger('change'); 12408 } else if ($('#dayDifference').text() == 7 && selectStandardTwin.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12409 12410 12411 $("input[type='checkbox']").filter(function () { 12412 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Twin, 7 Nights"; 12413 }).prop("checked", true).trigger('change'); 12414 12415 $("input[type='checkbox']").filter(function () { 12416 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 7 Nights"; 12417 }).prop("checked", false).trigger('change'); 12418 } else if ($('#dayDifference').text() == 8 && selectStandardTwin.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12419 12420 12421 $("input[type='checkbox']").filter(function () { 12422 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Twin, 8 Nights"; 12423 }).prop("checked", true).trigger('change'); 12424 12425 $("input[type='checkbox']").filter(function () { 12426 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 8 Nights"; 12427 }).prop("checked", false).trigger('change'); 12428 } else if ($('#dayDifference').text() == 9 && selectStandardTwin.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12429 12430 12431 $("input[type='checkbox']").filter(function () { 12432 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Twin, 9 Nights"; 12433 }).prop("checked", true).trigger('change'); 12434 12435 $("input[type='checkbox']").filter(function () { 12436 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 9 Nights"; 12437 }).prop("checked", false).trigger('change'); 12438 } else if ($('#dayDifference').text() == 10 && selectStandardTwin.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12439 12440 12441 $("input[type='checkbox']").filter(function () { 12442 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Twin, 10 Nights"; 12443 }).prop("checked", true).trigger('change'); 12444 12445 $("input[type='checkbox']").filter(function () { 12446 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 10 Nights"; 12447 }).prop("checked", false).trigger('change'); 12448 } 12449 12450///////////////////Hilton Standard Queen Room/////////////////////// 12451 12452 else if ($('#dayDifference').text() == 1 && selectStandardQueen.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12453 12454 12455 $("input[type='checkbox']").filter(function () { 12456 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Queen, 1 Nights"; 12457 }).prop("checked", true).trigger('change'); 12458 12459 $("input[type='checkbox']").filter(function () { 12460 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 1 Night"; 12461 }).prop("checked", false).trigger('change'); 12462 } else if ($('#dayDifference').text() == 2 && selectStandardQueen.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12463 12464 12465 $("input[type='checkbox']").filter(function () { 12466 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Queen, 2 Nights"; 12467 }).prop("checked", true).trigger('change'); 12468 12469 $("input[type='checkbox']").filter(function () { 12470 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 2 Nights"; 12471 }).prop("checked", false).trigger('change'); 12472 } else if ($('#dayDifference').text() == 3 && selectStandardQueen.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12473 12474 12475 $("input[type='checkbox']").filter(function () { 12476 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Queen, 3 Nights"; 12477 }).prop("checked", true).trigger('change'); 12478 12479 $("input[type='checkbox']").filter(function () { 12480 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 3 Nights"; 12481 }).prop("checked", false).trigger('change'); 12482 } else if ($('#dayDifference').text() == 4 && selectStandardQueen.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12483 12484 12485 $("input[type='checkbox']").filter(function () { 12486 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Queen, 4 Nights"; 12487 }).prop("checked", true).trigger('change'); 12488 12489 $("input[type='checkbox']").filter(function () { 12490 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 4 Nights"; 12491 }).prop("checked", false).trigger('change'); 12492 } else if ($('#dayDifference').text() == 5 && selectStandardQueen.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12493 12494 12495 $("input[type='checkbox']").filter(function () { 12496 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Queen, 5 Nights"; 12497 }).prop("checked", true).trigger('change'); 12498 12499 $("input[type='checkbox']").filter(function () { 12500 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 5 Nights"; 12501 }).prop("checked", false).trigger('change'); 12502 } else if ($('#dayDifference').text() == 6 && selectStandardQueen.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12503 12504 12505 $("input[type='checkbox']").filter(function () { 12506 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Queen, 6 Nights"; 12507 }).prop("checked", true).trigger('change'); 12508 12509 $("input[type='checkbox']").filter(function () { 12510 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 6 Nights"; 12511 }).prop("checked", false).trigger('change'); 12512 } else if ($('#dayDifference').text() == 7 && selectStandardQueen.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12513 12514 12515 $("input[type='checkbox']").filter(function () { 12516 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Queen, 7 Nights"; 12517 }).prop("checked", true).trigger('change'); 12518 12519 $("input[type='checkbox']").filter(function () { 12520 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 7 Nights"; 12521 }).prop("checked", false).trigger('change'); 12522 } else if ($('#dayDifference').text() == 8 && selectStandardQueen.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12523 12524 12525 $("input[type='checkbox']").filter(function () { 12526 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Queen, 8 Nights"; 12527 }).prop("checked", true).trigger('change'); 12528 12529 $("input[type='checkbox']").filter(function () { 12530 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 8 Nights"; 12531 }).prop("checked", false).trigger('change'); 12532 } else if ($('#dayDifference').text() == 9 && selectStandardQueen.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12533 12534 $("input[type='checkbox']").filter(function () { 12535 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Queen, 9 Nights"; 12536 }).prop("checked", true).trigger('change'); 12537 12538 $("input[type='checkbox']").filter(function () { 12539 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 9 Nights"; 12540 }).prop("checked", false).trigger('change'); 12541 } else if ($('#dayDifference').text() == 10 && selectStandardQueen.includes(parseInt($('#fld_1304368').val())) && $('#fld_1304373').val() == 'No') { 12542 12543 $("input[type='checkbox']").filter(function () { 12544 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Standard Queen, 10 Nights"; 12545 }).prop("checked", true).trigger('change'); 12546 12547 $("input[type='checkbox']").filter(function () { 12548 return $(this).attr("data-name") === "Hilton Garden Inn Birmingham Brindley Place â Sharing person charge, 10 Nights"; 12549 }).prop("checked", false).trigger('change'); 12550 } else { 12551 12552 12553 } 12554 12555 12556 }); 12557 12558 $('.addonsvp input[type=checkbox]').on('change', function (e) { 12559 payment_section = $('.addonp').val(); 12560 if (payment_section == '') { 12561 $('.addonweb').css("display", "none"); 12562 $('.addnopkg').css("display", "none"); 12563 } else { 12564 $('.selected-addons-package').remove(); 12565 $('.total-addons-price').remove(); 12566 var selected = 12567 '<div class="selected-addons-package" style=" margin: 20px 0px; font-size: 17px;"> <strong> Packages Included: </strong><br>'; 12568 var price = 0; 12569 var flag = 0; 12570 12571 var symbol = $('.pmnt_fld option:selected').data('symbol'); 12572 if (typeof symbol == "undefined") { 12573 symbol = ''; 12574 } 12575 selected += "<li class='addonpackagebullets'>" + $('.addonp option:selected').text() + " - CHF " + parseInt($('.addonp option:selected').data('price')) + "</li>"; 12576 //console.log("Selected: " + $('.addonp option:selected').text()); 12577 //console.log("Selected Price: " + parseInt($('.addonp option:selected').data('cost'))); 12578 price = parseFloat($('.addonp option:selected').data('cost')) + parseFloat(price); 12579 var individualPrice = parseFloat($('.addonp option:selected').data('price')); 12580 $('.addonsvp input[type=checkbox]:checked').each(function () { 12581 selected += "<li class='addonpackagebullets'>" + $(this).data('name'); 12582 //console.log("Price: "+parseInt($(this).data('price'))); 12583 //console.log("Variable Price: "+parseInt(price)); 12584 price = parseFloat($(this).data('price')) + parseFloat(price); 12585 individualPrice = parseFloat($(this).data('price')); 12586 selected += " - CHF " + individualPrice + "</li>"; 12587 flag = 1; 12588 }); 12589 selected += ' </div>'; 12590 if (flag == 1) { 12591 $('.pmnt_fld').parent('div').parent('div').before(selected);
12592 // $(this).parent('div').parent('span').append(selected); 12593 // $('.pmnt_fld').parent('div').parent('div').before( 12594 // '<div class="total-addons-price" data-price="' + price + 12595 // '" style="margin: 20px 0px; font-size: 17px;"><strong> Total Price: </strong>' + 12596 // symbol + '' + price + '</div>'); 12597 $('.pmnt_fld').parent('div').parent('div').before( 12598 '<div class="total-addons-price" data-price="' + price + 12599 '" style="margin: 20px 0px; font-size: 17px;"><strong> Total Price: </strong>CHF ' + price + '</div>'); 12600 } 12601 } 12602 }); 12603 12604 } 12605 12606 12607 }) 12608 12609 12610 var handleResult = function (result) { 12611 if (result.error) { 12612 alert(result.error.message); 12613 } 12614 }; 12615 12616 function paymentRedirectionMessage(message) 12617 { 12618 var messageDiv = '<div class="alert alert-success success-message" role="alert" style=" width: 100%; font-size: 15px;">' + message + '</div>'; 12619 $('form.reg-form-data').before(messageDiv); 12620 $("html, body").animate({scrollTop: 0}, "slow"); 12621 } 12622 12623 function paymentRedirectionErrorMessage() 12624 { 12625 $(".success-message").hide(); 12626 const message = 'Some thing went wrong while redirecting you to payment please contact event admin.'; 12627 var messageDiv = '<div class="alert alert-danger" role="alert" style=" width: 100%; font-size: 15px;">' + message + '</div>'; 12628 $('form.reg-form-data').before(messageDiv); 12629 $("html, body").animate({scrollTop: 0}, "slow"); 12630 } 12631 12632 </script>
12632 12633 12634 12635 12636
12637<script> 12638 function processPaymaya(paymentResultForPayMaya) { 12639 var sessionData = paymentResultForPayMaya.sessRet; 12640 if (typeof sessionData.redirectUrl !== 'undefined' && sessionData.redirectUrl) { 12641 window.location.href = sessionData.redirectUrl; 12642 } else { 12643 paymentRedirectionErrorMessage(); 12644 } 12645 } 12646 12647 //custom limit value 12648 function getFieldLimit(field_type,field_id,submitted_value,registration_field_id) { 12649 var post_url = '/en/form/getAvailableLimitOfFormFied/'; 12650 $.post(post_url, 12651 { 12652 field_type: field_type, 12653 field_id: field_id, 12654 submitted_value: submitted_value, 12655 registration_field_id: registration_field_id 12656 }, 12657 function(data){ 12658 // console.log(data); 12659 //ENTER THE DIV WHERE YOU WANT TO SHOW THE LIMIT 12660 $('#grp_fld_1279120').html(data); 12661 }); 12662 $.post('/en/form/getEventAttendees/', 12663 function(data){ 12664 //ENTER THE DIV WHERE YOU WANT TO SHOW THE TOTAL ATTENDEES 12665 $('#grp_fld_1279121').html(data); 12666 }); 12667 } 12668 function processFatora(paymentResultForFatora) { 12669 var sessionData = paymentResultForFatora.sessRet; 12670 if (typeof sessionData.redirectUrl !== 'undefined' && sessionData.redirectUrl) { 12671 window.location.href = sessionData.redirectUrl; 12672 } else { 12673 paymentRedirectionErrorMessage(); 12674 } 12675 } 12676 12677 function processFlutterwave(paymentResultForFlutterwave) { 12678 var success_url = 'https://codeseccon.com/en/form/processFlutterwaveSuccess'; 12679 var fail_url = 'https://codeseccon.com/en/form/processFlutterwaveFailure'; 12680 FlutterwaveCheckout({ 12681 public_key: paymentResultForFlutterwave.public_key, 12682 tx_ref: paymentResultForFlutterwave.session_id + '_' + paymentResultForFlutterwave.userId, 12683 amount: paymentResultForFlutterwave.amount, 12684 currency: paymentResultForFlutterwave.currency, 12685 payment_options: "card, banktransfer, ussd, mpesa", 12686 redirect_url: success_url + '/' + btoa(paymentResultForFlutterwave.userId) + '/att', 12687 customer: { 12688 email: paymentResultForFlutterwave.email, 12689 name: paymentResultForFlutterwave.first_name, 12690 }, 12691 onclose: function (incomplete) { 12692 if (incomplete === true) { 12693 location.replace(fail_url + '/' + btoa(paymentResultForFlutterwave.userId)); 12694 } 12695 } 12696 }); 12697 12698 } 12699 12700 function processSensePass(paymentResultForSensePass) { 12701 12702 console.log(paymentResultForSensePass); 12703 var CheckOutPageURL = paymentResultForSensePass.CheckOutPageURL; 12704 if (typeof CheckOutPageURL!== 'undefined' && CheckOutPageURL) { 12705 window.location.href = CheckOutPageURL; 12706 } else { 12707 paymentRedirectionErrorMessage(); 12708 } 12709 } 12710 function processNelNet(paymentResultForNelNet) { 12711 12712 console.log(paymentResultForNelNet); 12713 var CheckOutPageURL = paymentResultForNelNet.CheckOutPageURL; 12714 if (typeof CheckOutPageURL!== 'undefined' && CheckOutPageURL) { 12715 window.location.href = CheckOutPageURL; 12716 } else { 12717 paymentRedirectionErrorMessage(); 12718 } 12719 } 12720 function processAffiniPay(paymentResultForNelNet,language) { 12721 var lang= '/en/'; 12722 if (lang.length === 0) { 12723 lang=language; 12724 } 12725 var script = document.createElement('script'); 12726 script.src = 'https://cdn.affinipay.com/hostedfields/1.4.0/fieldGen_1.4.0.js'; 12727 script.onload = function () { 12728 openPaymentModal(paymentResultForNelNet,lang); 12729 }; 12730 document.head.appendChild(script); 12731 } 12732 function checkDateTime( current_datetime, slot_id ) 12733 { 12734 let all_dates_start_time = []; 12735 let all_dates_end_time = []; 12736 let all_chat_slot_intervals = []; 12737 12738 if( $('#chatslot_start_date').val() === undefined || $('#chatslot_end_date').val() === undefined || $('#chatslot_interval').val() === undefined ) return false; 12739 12740 for(let i = 0; i < $('#chatslot_start_time').val().split(',').length; i++) { 12741 // creating datetime timestamps for all available time slots 12742 all_dates_start_time.push( moment($('#chatslot_start_date').val().split(',')[i] + ' ' + $('#chatslot_start_time').val().split(',')[i], 'YYYY-MM-DD HH:mm').format('YYYY-MM-DD HH:mm') ); 12743 all_dates_end_time.push( moment($('#chatslot_end_date').val().split(',')[i] + ' ' + $('#chatslot_end_time').val().split(',')[i], 'YYYY-MM-DD HH:mm').format('YYYY-MM-DD HH:mm') ); 12744 all_chat_slot_intervals.push( moment($('#chatslot_interval').val().split(',')[i] + ' ' + $('#chatslot_interval').val().split(',')[i], 'HH:mm').format('HH:mm') ); 12745 } 12746 let is_found = false;
12747 12748 $.each( all_dates_start_time ,function( index, value ){ 12749 // checking if provided chat slot is amongs any available time slot 12750 if 12751 ( 12752 ( moment(current_datetime['start']).isBetween( moment( all_dates_start_time[index] ).subtract(1,'seconds'), moment( all_dates_end_time[index] ).add(1,'seconds') ) ) 12753 && ( moment(current_datetime['end']).isBetween( moment( all_dates_start_time[index] ).subtract(1, 'seconds'), moment( all_dates_end_time[index] ).add(1,'seconds') ) ) 12754 && current_datetime['start'] < current_datetime['end'] 12755 ) 12756 { 12757 $(`#chat_slot_interval_0_${slot_id}`).val( all_chat_slot_intervals[ index ] ); 12758 is_found = true; 12759 } 12760 }) 12761 return is_found; 12762 12763 } 12764 function validateDateTime(slot_id, element) 12765 { 12766 12767 if( $('#chatslot_start_date').val() === '' ) return true; 12768 12769 let start_date_element_id = `#start_date_0_${slot_id}`; 12770 let end_date_element_id = `#end_date_0_${slot_id}`; 12771 let start_time_element_id = `#start_time_0_${slot_id}`; 12772 let end_time_element_id = `#end_time_0_${slot_id}`; 12773 12774 if($(`#start_date_0_${slot_id}`).val() === undefined){ 12775 12776 start_date_element_id = `#start_date_${slot_id}`; 12777 end_date_element_id = `#end_date_${slot_id}`; 12778 start_time_element_id = `#start_time_${slot_id}`; 12779 end_time_element_id = `#end_time_${slot_id}`; 12780 12781 } 12782 12783 const start_date = $(start_date_element_id).val() 12784 const end_date = $(end_date_element_id).val() 12785 const start_time = $(start_time_element_id).val() !== '' ? moment($(start_time_element_id).val(), 'HHmm').format('HH:mm:ss') : ''; 12786 const end_time = $(end_time_element_id).val() !== '' ? moment($(end_time_element_id).val(),'HHmm').format('HH:mm:ss') : ''; 12787 12788 if( start_date !== '' && end_date !== '' && start_time !== '' && end_time != '' ) 12789 { 12790 let current_datetime = []; 12791 current_datetime['start'] = moment(start_date + ' ' + start_time, 'YYYY-MM-DD HH:mm').format('YYYY-MM-DD HH:mm') 12792 current_datetime['end'] = moment(end_date + ' ' + end_time, 'YYYY-MM-DD HH:mm').format('YYYY-MM-DD HH:mm') 12793 if(!checkDateTime( current_datetime, slot_id )) 12794 { 12795 $(`#${element}`).val(''); 12796 Swal.fire({ 12797 title: 'Please add your timings as per the available meeting times provided above.', 12798 icon: 'error', 12799 position: 'top' 12800 }); 12801 } 12802 } 12803 } 12804 12805 //Chat Slot Validations 12806 $(function(){ 12807 12808 12809 $(document).on('change', '#chat-slot-cont .dates', function () { 12810 const slot_id = $(this).attr('id').split('_').pop(); 12811 const element = $(this).attr('id'); 12812 validateDateTime(slot_id, element) 12813 }) 12814 12815 12816 $(document).on('change', '#chat-slot-cont .app-time', function () { 12817 const slot_id = $(this).attr('id').split('_').pop(); 12818 const element = $(this).attr('id'); 12819 validateDateTime(slot_id, element) 12820 }) 12821 12822 12823 12824 12825 //Start Date 12826 /*$(document).on('change', '.slt_start_date', function () { 12827 const slot_id = $(this).attr('id').split('_').pop(); 12828 var current_val = new Date($(this).val()); 12829 12830 let all_dates_start = []; 12831 let all_dates_end = []; 12832 let all_chat_slot_intervals = []; 12833 12834 if( $('#chatslot_start_date').val() === undefined || $('#chatslot_end_date').val() === undefined || $('#chatslot_interval').val() === undefined ) return false; 12835 12836 for(let i = 0; i < $('#chatslot_start_time').val().split(',').length; i++) { 12837 // creating datetime timestamps for all available time slots 12838 all_dates_start.push( new Date($('#chatslot_start_date').val().split(',')[i])); 12839 all_dates_end.push( new Date($('#chatslot_end_date').val().split(',')[i])); 12840 all_chat_slot_intervals.push($('#chatslot_interval').val().split(',')[i]); 12841 } 12842 let is_found = false; 12843 $.each(all_dates_start, function(index, value) { 12844 if (current_val >= all_dates_start[index] && current_val <= all_dates_end[index]) { 12845 is_found = true; 12846 $(`#duration_${slot_id}`).val(all_chat_slot_intervals[index]); 12847 return false; // exit the loop if a date is found that is greater than the single date 12848 } 12849 });
12850 if(is_found==true){ 12851 $(`#start_date_${slot_id}`).val($(this).val()); 12852 $(".chot_slot_errors").html(''); 12853 $(`#end_date_${slot_id}`).val($(this).val()); 12854 $("input[type=submit]").attr('disabled', false); 12855 } else { 12856 $(this).val(''); 12857 $(`#end_date_${slot_id}`).val(''); 12858 $("input[type=submit]").attr('disabled', true); 12859 $(".chot_slot_errors").html('<span class="alert alert-danger">Please add your timings as per the available meeting times provided above and Start Date/Time should be less than End Date/Time</span>'); 12860 return false; 12861 } 12862 }); 12863 //Start Time 12864 $(document).on('change', '.slt_start_time', function () { 12865 const slot_id = $(this).attr('id').split('_').pop(); 12866 var current_val = $(this).val(); 12867 var start_date_time = new Date($(`#start_date_${slot_id}`).val()+' '+current_val); 12868 12869 let all_times_start = []; 12870 let all_times_end = []; 12871 let all_chat_slot_intervals = []; 12872 12873 if( $('#chatslot_start_time').val() === undefined || $('#chatslot_end_time').val() === undefined) return false; 12874 12875 for(let i = 0; i < $('#chatslot_start_time').val().split(',').length; i++) { 12876 // creating datetime timestamps for all available time slots 12877 // all_times_start.push($('#chatslot_start_time').val().split(',')[i]); 12878 all_times_start.push(new Date($('#chatslot_start_date').val().split(',')[i] + ' ' + $('#chatslot_start_time').val().split(',')[i])); 12879 all_times_end.push(new Date($('#chatslot_end_date').val().split(',')[i] + ' ' + $('#chatslot_end_time').val().split(',')[i])); 12880 all_chat_slot_intervals.push($('#chatslot_interval').val().split(',')[i]); 12881 } 12882 let is_found = false; 12883 $.each(all_times_start, function(index, value) { 12884 if (start_date_time >= all_times_start[index] && start_date_time <= all_times_end[index] && (current_val.split(':')[1]) % 5 == 0 ) { 12885 $(`#duration_${slot_id}`).val(all_chat_slot_intervals[index]); 12886 is_found = true; 12887 return false; // exit the loop if a date is found that is greater than the single date 12888 } 12889 }); 12890 if(is_found==true){ 12891 $(`#start_time_${slot_id}`).val($(this).val()); 12892 $(".chot_slot_errors").html(''); 12893 12894 var time = current_val; 12895 var date = new Date('2000-01-01T' + time); 12896 date.setMinutes(date.getMinutes() + 5); 12897 var newTime = date.toTimeString().split(' ')[0]; 12898 12899 $(`#end_time_${slot_id}`).val(newTime); 12900 $("input[type=submit]").attr('disabled', false); 12901 } else { 12902 $(this).val(''); 12903 $(`#end_time_${slot_id}`).val(''); 12904 $("input[type=submit]").attr('disabled', true); 12905 $(".chot_slot_errors").html('<span class="alert alert-danger">Please add your timings as per the available meeting times provided above and Start Date/Time should be less than End Date/Time</span>'); 12906 return false; 12907 } 12908 }); 12909 //End Date 12910 $(document).on('change', '.slt_end_date', function () { 12911 const slot_id = $(this).attr('id').split('_').pop(); 12912 var current_val = new Date($(this).val()); 12913 var start_date = new Date($(`#start_date_${slot_id}`).val()); 12914 12915 let all_dates_start = []; 12916 let all_dates_end = []; 12917 let all_chat_slot_intervals = []; 12918 12919 if( $('#chatslot_start_date').val() === undefined || $('#chatslot_end_date').val() === undefined || $('#chatslot_interval').val() === undefined ) return false; 12920 12921 for(let i = 0; i < $('#chatslot_start_time').val().split(',').length; i++) { 12922 // creating datetime timestamps for all available time slots 12923 all_dates_start.push( new Date($('#chatslot_start_date').val().split(',')[i])); 12924 all_dates_end.push( new Date($('#chatslot_end_date').val().split(',')[i])); 12925 } 12926 let is_found = false;
12927 $.each(all_dates_start, function(index, value) { 12928 if (current_val >= all_dates_start[index] && current_val <= all_dates_end[index] && current_val >=start_date ) { 12929 is_found = true; 12930 return false; // exit the loop if a date is found that is greater than the single date 12931 } 12932 }); 12933 if(is_found==true){ 12934 $(`#end_date_${slot_id}`).val($(this).val()); 12935 $(".chot_slot_errors").html(''); 12936 $("input[type=submit]").attr('disabled', false); 12937 } else { 12938 $(this).val(''); 12939 $("input[type=submit]").attr('disabled', true); 12940 $(".chot_slot_errors").html('<span class="alert alert-danger">Please add your timings as per the available meeting times provided above and Start Date/Time should be less than End Date/Time</span>'); 12941 return false; 12942 } 12943 }); 12944 //End Time 12945 $(document).on('change', '.slt_end_time', function () { 12946 const slot_id = $(this).attr('id').split('_').pop(); 12947 var current_val_time = $(this).val(); 12948 var current_val = new Date($(`#end_date_${slot_id}`).val() + ' ' + $(this).val()); 12949 var start_date_time = new Date($(`#start_date_${slot_id}`).val()+' '+$(`#start_time_${slot_id}`).val()); 12950 12951 let all_times_start = []; 12952 let all_times_end = []; 12953 12954 if( $('#chatslot_start_time').val() === undefined || $('#chatslot_end_time').val() === undefined) return false; 12955 12956 for(let i = 0; i < $('#chatslot_end_time').val().split(',').length; i++) { 12957 // creating datetime timestamps for all available time slots 12958 // all_times_start.push(new Date($('#chatslot_start_date').val().split(',')[i] + ' ' + $('#chatslot_end_time').val().split(',')[i])); 12959 all_times_end.push(new Date($('#chatslot_end_date').val().split(',')[i] + ' ' + $('#chatslot_end_time').val().split(',')[i])); 12960 all_times_start.push($('#chatslot_start_time').val().split(',')[i]); 12961 // all_times_end.push($('#chatslot_end_time').val().split(',')[i]); 12962 } 12963 let is_found = false; 12964 let current_val_full = new Date($(`#end_date_${slot_id}`).val()+' '+$(this).val()); 12965 12966 $.each(all_times_start, function(index, value) { 12967 if ( 12968 // current_val >= all_times_start[index] 12969 // && 12970 current_val <= all_times_end[index] 12971 && (current_val_time.split(':')[1]) % 5 == 0 12972 && current_val_full>start_date_time 12973 ) { 12974 is_found = true; 12975 return false; // exit the loop if a date is found that is greater than the single date 12976 } 12977 }); 12978 if(is_found==true){ 12979 $(".chot_slot_errors").html(''); 12980 $("input[type=submit]").attr('disabled', false); 12981 } else { 12982 $(this).val(''); 12983 $("input[type=submit]").attr('disabled', true); 12984 $(".chot_slot_errors").html('<span class="alert alert-danger">Please add your timings as per the available meeting times provided above and Start Date/Time should be less than End Date/Time</span>'); 12985 return false; 12986 } 12987 }); 12988 */ 12989 12990 // $(document).on('change', '.slt_end_date', function () { 12991 // $('input[name="slt_end_date[]"]').each(function(index, obj) { 12992 // var current_val = new Date($('input[name="slt_end_date[]"]').eq(index).val()); 12993 // var current_start_val = new Date($('input[name="slt_start_date[]"]').eq(index).val()); 12994 // var start_date_invitation = new Date($('#start_date_chat_slot').val()); 12995 // if(current_val>=start_date_invitation && current_val>=current_start_val){ 12996 // // $('input[name="slt_end_date[]"]').eq(index).val($('input[name="slt_start_date[]"]').eq(index).val()); 12997 // $(".chot_slot_errors").html(""); 12998 // $('input[name="slt_end_date[]"]').eq(index).css("border", "1px solid #DCDBFF"); 12999 // $("input[type=submit]").attr('disabled', false); 13000 // } else { 13001 // $('input[name="slt_end_date[]"]').eq(index).css("border", "3px solid red"); 13002 // $(".chot_slot_errors").html('Please enter starting date between ' +$('#start_date_chat_slot').val()+ ' & ' +$('#end_date_chat_slot').val()); 13003 // $("input[type=submit]").attr('disabled', true); 13004 // } 13005 // }); 13006 // }); 13007 //Start Time 13008 // $(document).on('change', '.slt_start_time', function () { 13009 // $('input[name="slt_start_time[]"]').each(function(index, obj) { 13010 // var current_val = $('input[name="slt_start_time[]"]').eq(index).val().split(':'); 13011 // var start_time_invitation = ($('#start_time_chat_slot').val()).split(':'); 13012 // var end_time_invitation = ($('#end_time_chat_slot').val()).split(':'); 13013 // var end_time = $('input[name="slt_end_time[]"]').eq(index).val(); 13014 // var selected_end_time = new Date("November 13, 2013 " + end_time); 13015 // current_end_time = selected_end_time.getTime(); 13016 13017 // var selected_time = new Date("November 13, 2013 " + $('input[name="slt_start_time[]"]').eq(index).val()); 13018 // current_time = selected_time.getTime(); 13019 // var stt = new Date("November 13, 2013 " + $('#start_time_chat_slot').val()); 13020 // stt = stt.getTime(); 13021 // var endt = new Date("November 13, 2013 " + $('#end_time_chat_slot').val()); 13022 // endt = endt.getTime(); 13023 // if( 13024 // parseInt(current_val[1])%5==0 13025 // && current_time >= stt 13026 // && current_time <= endt 13027 // && (current_time <= current_end_time || end_time == '') 13028 // ){ 13029 // $(".chot_slot_errors").html(""); 13030 // $('input[name="slt_start_time[]"]').eq(index).css("border", "1px solid #DCDBFF"); 13031 // $("input[type=submit]").attr('disabled', false); 13032 // } else { 13033 // $('input[name="slt_start_time[]"]').eq(index).css("border", "3px solid red"); 13034 // $(".chot_slot_errors").html('Please enter time only in mulitple of 5 and between above available time slots'); 13035 // $("input[type=submit]").attr('disabled', true); 13036 // } 13037 // }); 13038 // }); 13039 //End Time 13040 // $(document).on('change', '.slt_end_time', function () { 13041 // $('input[name="slt_end_time[]"]').each(function(index, obj) { 13042 // var current_val = $('input[name="slt_end_time[]"]').eq(index).val().split(':'); 13043 // var current_start_val = $('input[name="slt_start_time[]"]').eq(index).val().split(':'); 13044 // var start_time_invitation = ($('#start_time_chat_slot').val()).split(':'); 13045 // var end_time_invitation = ($('#end_time_chat_slot').val()).split(':'); 13046 // var selected_time = new Date("November 13, 2013 " + $('input[name="slt_end_time[]"]').eq(index).val()); 13047 // current_time = selected_time.getTime(); 13048 // var start_time = new Date("November 13, 2013 " + $('input[name="slt_start_time[]"]').eq(index).val()); 13049 // started_time = start_time.getTime(); 13050 // var stt = new Date("November 13, 2013 " + $('#start_time_chat_slot').val()); 13051 // stt = stt.getTime(); 13052 // var endt = new Date("November 13, 2013 " + $('#end_time_chat_slot').val()); 13053 // endt = endt.getTime(); 13054 13055 // if( 13056 // parseInt(current_val[1])%5==0 13057 // && current_time > stt 13058 // && current_time <= endt 13059 // && current_time > started_time 13060 // ){ 13061 // $(".chot_slot_errors").html(""); 13062 // $('input[name="slt_end_time[]"]').eq(index).css("border", "1px solid #DCDBFF"); 13063 // $("input[type=submit]").attr('disabled', false); 13064 // } else { 13065 // $('input[name="slt_end_time[]"]').eq(index).css("border", "3px solid red"); 13066 // $(".chot_slot_errors").html('Please enter time only in mulitple of 5 and between above available time slots'); 13067 // $("input[type=submit]").attr('disabled', true); 13068 // } 13069 // }); 13070 // }); 13071 13072 //Count Check 13073 //getFieldLimit('checkbox-group','2034','Delux','1279135'); 13074 13075 $('select[name="webinar"] option').filter(function(){ 13076 return ($(this).val().trim()=="" && $(this).text().trim()==""); 13077 }).remove(); 13078 }); 13079 13080 var attendee_chat_slot_selection = $('#attendee_chat_slot').val(); 13081 if(attendee_chat_slot_selection>0){ 13082 var chat_field_name = 'fld_'+attendee_chat_slot_selection+'[]'; 13083 $(document).on('change', $("input[name='"+chat_field_name+"']"), function() { 13084 if ($("input[name='"+chat_field_name+"']").is(":checked")) { 13085 $('#chat-slot-cont').show(); 13086 } else { 13087 $('#chat-slot-cont').hide(); 13088 } 13089 }); 13090 } 13091 13092 $(document).on('change', '.auto_cv_generator', function() { 13093 var checkbox_id = $(this).attr('id'); 13094 var field_id = checkbox_id.split('auto_cv'); 13095 if ($("input[type=checkbox]").is( 13096 ":checked")) { 13097 $('#fld_' + field_id[1]).prop('required', false); 13098 $('#fld_' + field_id[1]).data('rule-required', false); 13099 } else { 13100 $('#fld_' + field_id[1]).prop('required', true); 13101 $('#fld_' + field_id[1]).data('rule-required', true); 13102 } 13103 13104 }); 13105</script>
13105 13106 13107 13108 13109 <!-- Form JQUERY --> 13110
13110<script> 13111 var total_price=0; 13112 // var isPaused = false; 13113 function firstFunction(){ 13114 $('#deleteModal').modal(); 13115 $('#deleteButton').html('<a class="btn btn-danger" onclick="deleteData()">Yes</a>'); 13116 // isPaused = false; 13117 // console.log(deleteData()); 13118 // console.log(isPaused); 13119 }; 13120 // async function confirmDeleteModal(id){ 13121 // $('#deleteModal').modal(); 13122 // $('#deleteButton').html('<a class="btn btn-danger" onclick="deleteData('+id+')">Delete</a>'); 13123 // } 13124 function deleteData(){ 13125 // do your stuffs with id 13126 // $("#successMessage").html("Record With id "+id+" Deleted successfully!"); 13127 $('#deleteModal').modal('hide'); // now close modal 13128 // console.log('adas'); 13129 // return true; 13130 // isPaused = true; 13131 // console.log(isPaused); 13132 } 13133 function TicketAmountCalculate(TicketPackages){ 13134 total_price=0; 13135 let totalPriceWithoutTax = 0; // VFC-14947 - add booking fee 13136 let isPackageTaxInclusive = 0; 13137 var totalTaxApplied = 0; 13138 if(TicketPackages.constructor === Object && Object.keys(TicketPackages).length > 0){ 13139 13140 for (const [packageId, package] of Object.entries(TicketPackages)) { 13141 if(!isNaN(parseFloat(packageId)) && isFinite(packageId)) { 13142 // $.each(TicketPackages, function(packageId, package) { 13143 if (package) { 13144 var tax = package && package['tax'] ? parseFloat(package['tax']) : 0; 13145 var pkg_price = package['pkg_price'] ? parseFloat(package['pkg_price']) : 0; 13146 var pkg_qty = parseFloat(package['pkg_qty']); 13147 // var package_total=(tax+pkg_price)*pkg_qty; 13148 var package_total = pkg_price * pkg_qty; 13149 totalTaxApplied += (tax * pkg_qty); 13150 isPackageTaxInclusive = parseInt(package['isTaxInclusive']); 13151 let packageTotalWithoutTax = (isPackageTaxInclusive == 0) ? (pkg_price * pkg_qty) : ((tax + pkg_price) * pkg_qty); // VFC-14947 - add booking fee 13152 // Iterate through each item/package addon 13153 var addons_price = 0; 13154 let addonTotalWihoutTax = 0; // VFC-14947 - add booking fee 13155 for (const [key, item] of Object.entries(package)) { 13156 // $.each(package, function(key, item) { 13157 if (key !== 'pkg_price' && key !== 'total_price' && key !== 'tax' && key !== 'pkg_qty' && key !== 'symbol' && key != 'pkgTaxAmount' && key != 'isTaxInclusive' && key != 'inclusiveTaxValue' && key != 'inclusiveTaxPrice') { 13158 // if(item['addons_price'] && item['addons_tax'] && item['addons_qty']){ 13159 var addons_p = parseFloat(item['addons_price']) || 0; 13160 var addons_tax = parseFloat(item['addons_tax']) || 0; 13161 var addons_qty = parseFloat(item['addons_qty']) || 0; 13162 13163 // var totalAddonsAmount=(addons_p+addons_tax)*addons_qty; 13164 var totalAddonsAmount = addons_p * addons_qty; 13165 totalTaxApplied += (addons_tax * addons_qty); 13166 addonTotalWihoutTax += (isPackageTaxInclusive == 0) ? (addons_p * addons_qty) : ((addons_p + addons_tax) * addons_qty); // VFC-14947 - add booking fee 13167 addons_price = addons_price + totalAddonsAmount; 13168 // } 13169 } 13170 } 13171 13172 total_price = total_price + package_total + addons_price; 13173 totalPriceWithoutTax = totalPriceWithoutTax + packageTotalWithoutTax + addonTotalWihoutTax; // VFC-14947 - add booking fee 13174 } 13175 13176 } 13177 13178 } 13179 } 13180 if(TicketPackages){ 13181 var serializedObject = JSON.stringify(TicketPackages); 13182 localStorage.setItem("TicketPackages", serializedObject);
13183 ticketDependency(); 13184 } 13185 if(EditProfileDiscCode && EditProfileDiscountAmount){ 13186 $("#LoadingBar").show(); 13187 updateTotalAmount(EditProfileDiscCode,EditProfileDiscountAmount); 13188 } 13189 CalculateDonationPackageAmount(); 13190 $('.order__summary .price__item > div.total__price > span').attr('data-original_total_price_without_tax', totalPriceWithoutTax-PackageDonationAmountNotIncludeBookingFee); // VFC-14947 - add booking fee 13191 $('.order__summary .price__item > div.total__price > span').attr('data-is_package_tax_inclusive', isPackageTaxInclusive); // VFC-14947 - add booking fee 13192 return { 13193 total_price: total_price, 13194 totalTaxApplied: totalTaxApplied 13195 }; 13196 } 13197 13198 /** 13199 * Get Total Amount including Booking fee if ANY 13200 * // VFC-14947 - add booking fee 13201 * 13202 * @param totalAmount number 13203 * 13204 * @returns {number} total amount including Booking Fee 13205 */ 13206 13207 13208 function setTotalIncludingBookingFee(TicketPackages,isDonationV5Enable =false) { 13209 var isTicketTop = ''; 13210 if (isTicketTop) { 13211 let totalAmount = $('.original_total_price_span-d').attr('data-original_total_price'); 13212 totalAmount = isNaN(totalAmount) ? 0 : totalAmount; 13213 totalAmount = parseFloat(totalAmount); 13214 calculatedAmountArr = $('.order__summary .price__item > div.booking_fee').attr('data-calculated_amount_arr'); 13215 calculatedAmountArr = calculatedAmountArr ? JSON.parse(calculatedAmountArr) : {}; 13216 subTotalPrice = $('.order__summary > div.price__item >div:nth-of-type(1) > span').attr('data-subtotal'); 13217 subTotalPrice = isNaN(subTotalPrice) ? 0 : subTotalPrice; 13218 subTotalPrice = parseFloat(subTotalPrice); 13219 discountedAmount = $('.order__summary > div.price__item >div:nth-of-type(2) > span').attr('data-discounted_amount'); 13220 discountedAmount = isNaN(discountedAmount) ? 0 : discountedAmount; 13221 discountedAmount = parseFloat(discountedAmount); 13222 13223 var symbol = $('.pmnt_fld option:selected').data('symbol'); 13224 if (typeof symbol === 'undefined') { 13225 symbol='$'; 13226 } 13227 13228 // if (parseInt(showBookingRelatedData) == 0) { // do this only when its single ticket selection enabled 13229 // $('.order__summary .price__item > div.total__price > span').text(symbol + '' + totalAmount.toFixed(2)); 13230 // return false; 13231 // } 13232 13233 let isDiscountApplied = $('.original_total_price_span-d').attr('data-is_discount_applied'); 13234 if (typeof isDiscountApplied !== 'undefined' && isDiscountApplied !== false) { 13235 isDiscountApplied = isNaN(isDiscountApplied) ? 0 : isDiscountApplied; 13236 isDiscountApplied = parseInt(isDiscountApplied); 13237 } else { 13238 isDiscountApplied = 0; 13239 } 13240 13241 let totalAmountWithoutTax = $('.original_total_price_span-d').attr('data-original_total_price_without_tax'); 13242 totalAmountWithoutTax = isNaN(totalAmountWithoutTax) ? 0 : totalAmountWithoutTax; 13243 totalAmountWithoutTax = parseFloat(totalAmountWithoutTax); 13244 13245 let isPackageTaxInclusive = $('.original_total_price_span-d').attr('data-is_package_tax_inclusive'); 13246 isPackageTaxInclusive = parseInt(isPackageTaxInclusive); 13247 13248 // get tax to apply on booking fee on top of booking fee 13249 let packageTax = 0; 13250 let packageTaxes = {}; 13251 addonsPriceForBookingFee = 0; 13252 if (TicketPackages.constructor === Object && Object.keys(TicketPackages).length > 0) { 13253 $.each(TicketPackages, function (packageId, package) { 13254 if(!isNaN(parseFloat(packageId)) && isFinite(packageId)) { 13255 if (package['isTaxInclusive'] == 0) { 13256 isPackageTaxInclusive = 0; 13257 } 13258 packageTax = parseFloat(package['pkgTaxAmount']); 13259 packageTaxes[packageId] = packageTax; 13260 for (const [key, item] of Object.entries(package)) { 13261 // $.each(package, function(key, item) { 13262 if (key !== 'pkg_price' && key !== 'total_price' && key !== 'tax' &&
13262key !== 'pkg_qty' && key !== 'symbol' && key != 'pkgTaxAmount' && key != 'isTaxInclusive' && key != 'inclusiveTaxValue' && key != 'inclusiveTaxPrice' && key != 'isDonation' && key != 'applyBookingFeeToDonation') { 13263 var addonP = parseFloat(item['addons_price']) || 0; 13264 var addonQ = parseFloat(item['addons_qty']) || 0; 13265 addonsPriceForBookingFee += addonP * addonQ; 13266 } 13267 } 13268 } 13269 // return false; // break the loop since it is only first ticket type based tax 13270 }); 13271 } 13272 packageTax = parseFloat(packageTax); 13273 13274 let bookingFee = 0; 13275 if ($('input[name="optionsRadios"]:checked').length > 0) { 13276 bookingFee = $('input[name="optionsRadios"]:checked').attr('data-booking-fee'); 13277 bookingFee = Number(bookingFee.replace(/[^0-9\.-]+/g, "")); 13278 bookingFee = parseFloat(bookingFee); 13279 13280 if (bookingFee == 0) { // case when booking fee is Zero 13281 $('#booking_fee').text('0'); 13282 $('#booking_fee').attr('data-booking_amount', '0'); 13283 } 13284 } 13285 13286 let bookingFeeAmount = totalAmountWithoutTax * (bookingFee / 100); // booking fee is actually in % 13287 let bookingFeeAmountAfterTax = bookingFeeAmount; 13288 if (isPackageTaxInclusive == 0) { // applying tax upon top of booking fee only for exclusive tax 13289 bookingFeeAmountAfterTax = 0; 13290 // let bookingFeeAmountTax = bookingFeeAmount * packageTax / 100; 13291 // bookingFeeAmountAfterTax = bookingFeeAmount + bookingFeeAmountTax; 13292 for (const [packageId, packageTax] of Object.entries(packageTaxes)) { 13293 if(!isNaN(parseFloat(packageId)) && isFinite(packageId)) { 13294 tBookingFeeAmount = (calculatedAmountArr[packageId] ? calculatedAmountArr[packageId] : (TicketPackages[packageId]['pkg_price'] * TicketPackages[packageId]['pkg_qty']) + addonsPriceForBookingFee) * (bookingFee / 100); 13295 bookingFeeAmountAfterTax += calculatedAmountArr[packageId] ? (tBookingFeeAmount) : (tBookingFeeAmount + (tBookingFeeAmount * packageTax / 100)); 13296 } 13297 } 13298 } 13299 let totalBookingFeeAmountAfterTax = bookingFeeAmountAfterTax; 13300 let totalTaxAmount = parseFloat($('.order__summary .price__item > div.total-tax > span').attr("data-total_tax_no_booking_fee")); 13301 let testTaxAmount = parseFloat($('.order__summary .price__item > div.total-tax > span').attr("data-total_tax_no_booking_fee")); 13302 if (isPackageTaxInclusive == 0) { 13303 // For exclusive tax, subtract the tax amount from bookingFeeAmountAfterTax for visibility 13304 let bookingFeeAmountBeforeTax = 0; 13305 for (const [packageId, packageTax] of Object.entries(packageTaxes)) { 13306 if(!isNaN(parseFloat(packageId)) && isFinite(packageId)) { 13307 let packageBookingFee = (calculatedAmountArr[packageId] ? calculatedAmountArr[packageId] : (TicketPackages[packageId]['pkg_price'] * TicketPackages[packageId]['pkg_qty']) + addonsPriceForBookingFee) * (bookingFee / 100); 13308 let taxAmount = packageBookingFee * (packageTax / 100); 13309 bookingFeeAmountAfterTax -= taxAmount; 13310 totalTaxAmount += taxAmount; 13311 } 13312 } 13313 13314 if(bookingFee != 0){ 13315 testTaxAmount = testTaxAmount + (testTaxAmount * (bookingFee / 100)); 13316 testTaxAmount=testTaxAmount-(parseFloat(taxAppliedUpgrade) || 0); 13317 $('.order__summary .price__item > div.total-tax > span').attr("data-total_tax", testTaxAmount.toFixed(2)); 13318 if(symbol != ''){ 13319 $('.order__summary .price__item > div.total-tax > span').text(symbol + '' + formatTotal(testTaxAmount)); 13320 } else { 13321 $('.order__summary .price__item > div.total-tax > span').text(formatTotal(testTaxAmount)); 13322 } 13323 totalTaxAmount = testTaxAmount; 13324 } else { 13325 totalTaxAmount = parseFloat($('.order__summary .price__item > div.total-tax > span').attr("data-total_tax_no_booking_fee")); 13326 totalTaxAmount= totalTaxAmount-(parseFloat(taxAppliedUpgrade) || 0); 13327 if(symbol != ''){ 13328 $('.order__summary .price__item > div.total-tax > span').text(symbol + '' + formatTotal(totalTaxAmount)); 13329 } else { 13330 $('.order__summary .price__item > div.total-tax > span').text(formatTotal(totalTaxAmount)); 13331 } 13332 } 13333 } 13334 if ($('#booking_fee').length > 0) { 13335 bookingFeeAmount = bookingFeeAmount - (upgradeProfileBookingFeeAmount + upgradeProfileBookingFeeTax); 13336 if (typeof symbol === 'undefined') { 13337 $('#booking_fee').text("$" +formatTotal(bookingFeeAmount)); //bookingFeeAmountAfterTax 13338 }else{ 13339 $('#booking_fee').text(symbol + formatTotal(bookingFeeAmount)); // bookingFeeAmountAfterTax 13340 } 13341 13342 $('#booking_fee').attr('data-booking_amount', bookingFeeAmount); // bookingFeeAmountAfterTax 13343 } 13344 let totalPriceIncludingBookingFee = totalAmount + totalBookingFeeAmountAfterTax; 13345 if ((subTotalPrice - discountedAmount) == 0) { 13346 totalTaxAmount = 0; 13347 } 13348 13349 13350 // Include state tax (tax obligations) in total as well 13351 // Prefer the data attribute when present; otherwise parse the visible text 13352 let stateTaxAmount = 0; 13353 let stateTaxAmountAttr = $('.order__summary .price__item > div.total__tax > span').attr('data-state_tax'); 13354 if (typeof stateTaxAmountAttr !== 'undefined' && stateTaxAmountAttr !== null && String(stateTaxAmountAttr).trim() !== '') { 13355 var stateTaxParsed = parseFloat(stateTaxAmountAttr); 13356 stateTaxAmount = Number.isFinite(stateTaxParsed) ? stateTaxParsed : 0; 13357 } else { 13358 let stateTaxText = $('.order__summary .price__item > div.total__tax > span').text(); 13359 if (typeof stateTaxText !== 'undefined') { 13360 stateTaxText = stateTaxText.toString(); 13361 stateTaxText = stateTaxText.replace(/[^0-9.\-]+/g, ''); 13362 var stateTaxFromText = parseFloat(stateTaxText); 13363 stateTaxAmount = Number.isFinite(stateTaxFromText) ? stateTaxFromText : 0; 13364 } 13365 } 13366 13367 if (!enableV5ApiDiscount) { 13368 stateTaxAmount = 0; 13369 } 13370 13371 var donationAmount = PackageDonationAmount; 13372 if(isDonationV5Enable){ 13373 donationAmount = 0; 13374 } 13375 totalProcessedPrice = (subTotalPrice - discountedAmount) + (totalTaxAmount + stateTaxAmount) + bookingFeeAmount + donationAmount; 13376
13377 totalProcessedPrice = Math.ceil(totalProcessedPrice * 100) / 100; 13378 13379 // $('.order__summary .price__item > div.total__price > span').text(symbol + '' + totalPriceIncludingBookingFee.toFixed(2)); 13380 $('.order__summary .price__item > div.total__price > span').text(symbol + '' + formatTotal(totalProcessedPrice)); 13381 if(! enableV5ApiDiscount) { 13382 13383 if (bookingFeeAmount <= 0) { 13384 $('.pricing.booking_fee').hide(); 13385 } else { 13386 $('.pricing.booking_fee').show(); 13387 } 13388 13389 if (discountedAmount <= 0) { 13390 $('.pricing.discount').hide(); 13391 } else { 13392 $('.pricing.discount').show(); 13393 } 13394 13395 if (totalTaxAmount <= 0) { 13396 $('.pricing.total-tax').hide(); 13397 } else { 13398 $('.pricing.total-tax').show(); 13399 } 13400 } 13401 if (PackageDonationAmount <= 0) { 13402 $('.pricing.Donation').hide(); 13403 } else { 13404 var appID= '20550'; 13405 if(appID == 20576 ){ 13406 $('.order__summary .price__item .Donation span') 13407 .text(`${symbol}${formatTotal(PackageDonationAmount)}`) 13408 .attr('data-total_donation', PackageDonationAmount.toFixed(2)); 13409 } 13410 13411 $('.pricing.Donation').show(); 13412 } 13413 13414 13415 } 13416 } 13417 13418 13419 $(function () { 13420 // Shuttle-only vFairs: payment UI hidden â set pmnt_fld + currency prefix. 13421 // Does not run when Cheque/PO are available or for non-vFairs gateways. 13422 if (parseInt(isTicket, 10) && autoSelectShuttlePaymentMethod()) { 13423 var symbol = $('.pmnt_fld option:selected').data('symbol'); 13424 if (typeof symbol === 'undefined' || symbol === null || symbol === '') { 13425 symbol = $('.pmnt_fld option:selected').attr('data-symbol'); 13426 } 13427 if (symbol) { 13428 $(".price__item .pricing, .price__item .total__price").each(function () { 13429 only_price = $(this).find('span').text(); 13430 if ($.isNumeric(only_price)) { 13431 only_price = formatTotal(only_price); 13432 price = symbol + '' + only_price; 13433 } else { 13434 price = symbol + '' + only_price.substring(1, only_price.length); 13435 } 13436 $(this).find('span').text(price); 13437 }); 13438 } 13439 } 13440 13441 $('input[name="optionsRadios"]').change(function () { 13442 payment_name= $(this).data('name'); 13443 13444 if(parseInt(isStripeConnectElement)){ 13445 if(payment_name =='Stripe connect'){ 13446 $('#payment-element').show(); 13447 }else{ 13448 $('#payment-element').hide(); 13449 } 13450 }else{ 13451 if(payment_name =='Stripe'){ 13452 $('#payment-element').show(); 13453 }else{ 13454 $('#payment-element').hide(); 13455 } 13456 } 13457 13458 $('.pmnt_fld').val($(this).val()); 13459 // console.log($(this).val()); 13460 var symbol = $('.pmnt_fld option:selected').data('symbol'); 13461 $(".price__item .pricing, .price__item .total__price").each(function () { 13462 only_price = $(this).find('span').text(); 13463 // console.log("only_price"); 13464 13465 if ($.isNumeric(only_price)) { 13466 only_price = formatTotal(only_price); 13467 // console.log('yes'); 13468 price = symbol + '' + only_price; 13469 } else { 13470 price = symbol + '' + only_price.substring(1, only_price.length); 13471 } 13472 $(this).find('span').text(price); 13473 }); 13474 if( $('.hike_drop_price').length >0){ 13475 $('.hike_drop_price').each(function() { 13476 var text = $(this).text(); // Get the current text 13477 var updatedText = '(Was '+symbol + text+')'; 13478 $(this).text(updatedText); // Set the modified text 13479 }); 13480 } 13481 if( $('.drop_hike_amount').length >0){ 13482 $('.drop_hike_amount').each(function() { 13483 var amount = $(this).text(); 13484 var updatedAmount = symbol + amount; // Prepend symbol to the current amount 13485 $(this).text(updatedAmount); 13486 }); 13487 } 13488 $(".ticket__addon__item > p.ticketadd__price").each(function () { 13489 only_price = $(this).text(); 13490 13491 if ($.isNumeric(only_price)) { 13492 only_price = formatTotal(only_price); 13493 price = symbol + '' + only_price; 13494 } else { 13495 price = symbol + '' + only_price.substring(1, only_price.length); 13496 } 13497 $(this).text(price) 13498 13499 only_tax = $(this).next().next().data('addon-tax'); 13500 if ($.isNumeric(only_tax)) { 13501 only_tax = formatTotal(only_tax); 13502 // console.log(only_tax); 13503 // tax = 'Tax: '+symbol + '' + parseFloat(only_tax).toFixed(2); 13504 tax = symbol + '' + only_tax; 13505 13506 } else { 13507 // console.log((only_tax.substring(1, only_tax.length))); 13508 tax = +symbol + '' + parseFloat((only_tax.substring(1, only_tax.length))).toFixed(2); 13509 // tax = 'Tax: '+symbol + '' + parseFloat((only_tax.substring(1, only_tax.length))).toFixed(2); 13510 } 13511 13512 13513 tax_text=$(this).next().text().split(':'); 13514 13515 $(this).next().text(tax_text[0]+':'+tax); 13516 }); 13517 13518 // Recalculate Total to ensure State Tax remains included when payment method changes 13519 try { 13520 if (!(typeof enableV5ApiDiscount !== 'undefined' && enableV5ApiDiscount)) { 13521 return; // Only recalc here when V5 API is on; otherwise skip 13522 } 13523 // Subtotal 13524 let subTotalPrice = 0; 13525 let subTotalAttr = $('.order__summary .price__item >
13525 div:nth-of-type(1) span').attr('data-subtotal'); 13526 if (typeof subTotalAttr !== 'undefined' && subTotalAttr !== '') { 13527 subTotalPrice = isNaN(subTotalAttr) ? 0 : parseFloat(subTotalAttr); 13528 } else { 13529 let subTotalText = $('.order__summary .price__item > div:nth-of-type(1) span').text(); 13530 if (typeof subTotalText !== 'undefined') { 13531 subTotalText = subTotalText.toString().replace(/[^0-9.\-]+/g, ''); 13532 subTotalPrice = isNaN(subTotalText) ? 0 : parseFloat(subTotalText); 13533 } 13534 } 13535 13536 // Existing tax line (non-state tax) 13537 let totalTaxAmount = 0; 13538 let totalTaxAttr = $('.order__summary .price__item > div.total-tax > span').attr('data-tax'); 13539 if (typeof totalTaxAttr !== 'undefined' && totalTaxAttr !== '') { 13540 totalTaxAmount = isNaN(totalTaxAttr) ? 0 : parseFloat(totalTaxAttr); 13541 } else { 13542 let totalTaxText = $('.order__summary .price__item > div.total-tax > span').text(); 13543 if (typeof totalTaxText !== 'undefined') { 13544 totalTaxText = totalTaxText.toString().replace(/[^0-9.\-]+/g, ''); 13545 totalTaxAmount = isNaN(totalTaxText) ? 0 : parseFloat(totalTaxText); 13546 } 13547 } 13548 13549 // State tax line 13550 let stateTaxAmount = 0; 13551 let stateTaxAmountAttr = $('.order__summary .price__item > div.total__tax > span').attr('data-state_tax'); 13552 if (typeof stateTaxAmountAttr !== 'undefined' && stateTaxAmountAttr !== '') { 13553 stateTaxAmount = isNaN(stateTaxAmountAttr) ? 0 : parseFloat(stateTaxAmountAttr); 13554 } else { 13555 let stateTaxText = $('.order__summary .price__item > div.total__tax > span').text(); 13556 if (typeof stateTaxText !== 'undefined') { 13557 stateTaxText = stateTaxText.toString().replace(/[^0-9.\-]+/g, ''); 13558 stateTaxAmount = isNaN(stateTaxText) ? 0 : parseFloat(stateTaxText); 13559 } 13560 } 13561 13562 // Booking fee 13563 let bookingFeeAmount = 0; 13564 if ($('#booking_fee').length > 0) { 13565 let bookingAttr = $('#booking_fee').attr('data-booking_amount'); 13566 if (typeof bookingAttr !== 'undefined' && bookingAttr !== '') { 13567 bookingFeeAmount = isNaN(bookingAttr) ? 0 : parseFloat(bookingAttr); 13568 } else { 13569 let bookingText = $('#booking_fee').text(); 13570 if (typeof bookingText !== 'undefined') { 13571 bookingText = bookingText.toString().replace(/[^0-9.\-]+/g, ''); 13572 bookingFeeAmount = isNaN(bookingText) ? 0 : parseFloat(bookingText); 13573 } 13574 } 13575 } 13576 13577 // Donation 13578 let PackageDonationAmount = 0; 13579 if ($('.order__summary .price__item .Donation span').length > 0) { 13580 let donationText = $('.order__summary .price__item .Donation span').text(); 13581 if (typeof donationText !== 'undefined') { 13582 donationText = donationText.toString().replace(/[^0-9.\-]+/g, ''); 13583 PackageDonationAmount = isNaN(donationText) ? 0 : parseFloat(donationText); 13584 } 13585 } 13586 13587 // Compute and set total 13588 let totalProcessedPrice = (subTotalPrice) + (totalTaxAmount + stateTaxAmount) + bookingFeeAmount + PackageDonationAmount;
13589 totalProcessedPrice = Math.ceil(totalProcessedPrice * 100) / 100; 13590 $('.order__summary .price__item > div.total__price > span').text(symbol + '' + formatTotal(totalProcessedPrice)); 13591 } catch (e) { 13592 // fail silently; do not block UX 13593 } 13594 13595 }); 13596 13597 // $('.ticketSelbtn').click(function () { 13598 // $('.package_list').val($(this).data('package')); 13599 // 13600 // }); 13601 // $('.addonBtn').click(function () { 13602 // addons = $(this).data('addons') 13603 // addon_price= $(this).data('addon-price') 13604 // $("input[name='pmnt_addons_51[]']").each(function (index, obj) { 13605 // if (addons == $(this).val()) { 13606 // $(this).prop('checked', true); 13607 // } 13608 // }); 13609 // }); 13610 13611 var buttonPlus = $(".qty-plus"); 13612 var buttonMinus = $(".qty-minus"); 13613 // var incrementPlus = buttonPlus.click(function () { 13614 var incrementPlus =$(document).on('click', '.qty-plus', function() { 13615 handlePackageQuantityPlus($(this)); 13616 }); 13617 13618 var incrementMinus = buttonMinus.click(function () { 13619 handlePackageQtyMinus($(this)); 13620 }); 13621 13622 handlePackageQtyMinus = (element) => { 13623 if(fromBackBtn){ 13624 tcktModifiedFromBackBtn = true; 13625 } 13626 if (isTicket && !parseInt(isTicketTop)) { 13627 $('.order__summary.ordsum').hide(); 13628 $('.single-pay.aa').hide(); 13629 $('.order-now-button1').show(); 13630 $('.packageBlock').html(''); 13631 $('.order-now-button1').prop('disabled', false); 13632 } 13633 var $n = $(element).siblings(".qty"); 13634 $('.cacl-disc').prev().val(''); 13635 var amount = Number($n.val()); 13636 var name = $(element).data('name'); 13637 var limit = $(element).parent().data('limit'); 13638 var counVal = $(element).next().val(); 13639 addons = $(element).data('addons') 13640 if ($('.cacl-disc').data('fld')) { 13641 var fld = $('.cacl-disc').data('fld').toString(); 13642 } else { 13643 var fld = $('.addonp').data('fld').toString(); 13644 } 13645 id = $(element).data('id'); 13646 var addons_qty = 0; 13647 $('.addon-package-' + id).find("a.addonBtn").each(function () { 13648 if(parseInt(addons) == parseInt($(element).data("addons"))){ 13649 addons_qty = $(element).next().find('.qty').val(); 13650 } 13651 }); 13652 var ticket = ''; 13653 $("input[name='pmnt_addons_" + fld + "[]']").each(function (index, obj) { 13654 if (ticket) { 13655 if (addons == $(element).val() && parseInt(addons_qty) == 1) { 13656 $(element).prop('checked', false); 13657 } 13658 } else { 13659 if (addons == $(element).val()) { 13660 $(element).prop('checked', false); 13661 } 13662 } 13663 13664 13665 }); 13666 $('.order__summary > div.price__item > div.pricing:nth-of-type(2) > span').text(0.00.toFixed(2)); 13667 if (amount > 0) { 13668 $n.val(amount - 1); 13669 } 13670 if (amount == 1) { 13671 $(element).parent().hide(); 13672 $(element).parent().next().fadeIn(); 13673 $(element).parents('.ticket__item').siblings('.addon-package-' + id).hide(); 13674 // $(this).parents('.ticket__item').siblings('.ticket__addon').hide(); 13675 $(element).parents('.ticket__item').removeClass('hasAddon'); 13676 $(element).parent().siblings('.addonBtn').fadeIn(); 13677 } 13678 if (counVal < (limit + 2)) { 13679 $(element).siblings(buttonPlus).show(); 13680 } 13681 // console.log("counVal: " + counVal); 13682 // console.log("limit: " + limit); 13683 if (parseInt(counVal) >= 52) { 13684 $(element).next().next().hide(); 13685 } else { 13686 $(element).next().next().show(); 13687 } 13688 13689 $('.qty_package').each(function() { 13690 let selectedQty = $(this).val(); 13691 if (parseInt(selectedQty) > 0) { 13692 let selectedId = $(this).siblings('.qty-plus').attr('data-id'); 13693 $('select.package_list').val(selectedId); 13694 } 13695 }); 13696 13697 changePrice($(element)); 13698 var amount = Number($n.val()); 13699 if (amount > 1) { 13700 $('#bypass').parent('div').show(); 13701 } else { 13702 $('#bypass').parent('div').hide(); 13703 } 13704 // if(name == 'package') { 13705 // if (amount == 1) { 13706 // $(this).hide(); 13707 // } 13708 // } 13709 13710 13711 if (multipleTicketEdit) { 13712 if (multipleTicketEdit) { 13713 if (enableUpgradeOnlyPackageAddons) { 13714 CheckAddonsQtyPackageQtyUpgradeHigher(false); 13715 } 13716 if (UpgradePackageAndAddonsOnly) { 13717 CheckAddonsQtyPackageQtyUpgradeHigher(true); 13718 } 13719 } 13720 13721 } 13722 13723 order_btn_flag = true; 13724 $.each($('.qty_package'), function (index, element) { 13725 if ($(element).val() > 0) { 13726 order_btn_flag = false;
13727 } 13728 }); 13729 $('.order-now-button').prop('disabled', order_btn_flag); 13730 } 13731 13732 var handlePackageQuantityPlus = (element) => { 13733 13734 if(fromBackBtn){ 13735 tcktModifiedFromBackBtn = true; 13736 } 13737 $('.order__summary > div.price__item > div.pricing:nth-of-type(2) > span').text(0.00.toFixed(2)); 13738 if (isTicket && !parseInt(isTicketTop)) { 13739 $('.order__summary.ordsum').hide(); 13740 $('.single-pay.aa').hide(); 13741 $('.order-now-button1').show(); 13742 $('.packageBlock').html(''); 13743 $('.order-now-button1').prop('disabled', false); 13744 } 13745 $('.order-now-button').prop('disabled', false); 13746 13747 13748 var $n = $(element).siblings(".qty"); 13749 var packageLimit = $(element).attr("data-package-limit"); 13750 var addonsLimit = $(element).attr("data-addons-limit"); 13751 var limit = 10000; 13752 13753 if (packageLimit != '' && packageLimit > 0) { 13754 limit = parseInt(packageLimit); 13755 } 13756 if (addonsLimit != '' && addonsLimit > 0) { 13757 limit = parseInt(addonsLimit); 13758 } 13759 13760 var counVal = $(element).prev().val(); 13761 $n.val(Number($n.val()) + 1); 13762 if (parseInt(counVal) > (limit - 2)) { 13763 $(element).hide(); 13764 } else { 13765 if (parseInt(counVal) >= 49) { 13766 $(element).hide(); 13767 } else { 13768 $(element).show(); 13769 } 13770 } 13771 $('.cacl-disc').prev().val(''); 13772 changePrice($(element)); 13773 var amount = $n.val(); 13774 if (amount > 1) { 13775 $('#bypass').parent('div').show(); 13776 $(element).prev().prev().show(); 13777 } else { 13778 $('#bypass').parent('div').hide(); 13779 } 13780 if (addonsLimit) { 13781 13782 if (parseInt(counVal) > (limit - 2)) { 13783 $(element).hide(); 13784 } 13785 } 13786 13787 if (multipleTicketEdit) { 13788 if (enableUpgradeOnlyPackageAddons) { 13789 CheckAddonsQtyPackageQtyUpgradeHigher(false); 13790 } 13791 if (UpgradePackageAndAddonsOnly) { 13792 CheckAddonsQtyPackageQtyUpgradeHigher(true); 13793 } 13794 } 13795 13796 $('order-now-button').prop('disabled', false); 13797 } 13798 13799 function changePrice(current) { 13800 // console.log('TicketPackages'); 13801 // console.log(TicketPackages); 13802 // Calculating price 13803 // price= current.data('price'); 13804 let packageDetails = {}; 13805 // console.log('change price'); 13806 // console.log(TicketPackages); 13807 id = current.data('id'); 13808 price = $('.package-block-' + id + ' .total__price').data('price'); 13809 pkg_price = $('.package-block-' + id + ' .total__price').data('pkgprice'); 13810 tax = $('.package-block-' + id + ' .total__price').data('tax'); 13811 qty = $('.package-block-' + id + ' > .ticket__price .qty').val(); 13812 pkgTaxAmount = $('.package-block-'+id+' .total__price').data('pkg_tax_amount'); // VFC-14947 - add booking fee 13813 13814 isTaxInclusive = $('.package-block-'+id+' .total__price').data('is_tax_inclusive'); // VFC-14947 - add booking fee 13815 inclusiveTaxValue = $('.package-block-'+id+' .total__price').data('inclusive_tax'); // VFC-14947 - add booking fee 13816 inclusiveTaxPrice = $('.package-block-'+id+' .total__price').data('inclusive_tax_price'); // VFC-14947 - add booking fee 13817 isDonation = $('.package-block-'+id+' .total__price').data('is_donation'); // VFC-14947 - add booking fee 13818 applyBookingFeeToDonation = $('.package-block-'+id+' .total__price').data('apply_booking_fee_to_donation'); // VFC-14947 - add booking fee 13819 13820 qty= $('.package-block-'+id+' > .ticket__price .qty').val(); 13821 13822 if (qty > 0) { 13823 if (parseInt(isTicket)) { 13824 qtty = qty; 13825 } else { 13826 qtty = qty - 1; 13827 } 13828 $('.user_list').val(qtty).change(); 13829 } 13830 if(TicketPackages[id]){ 13831 TicketPackages[id]['pkg_price']=pkg_price; 13832 TicketPackages[id]['total_price']=total_price; 13833 TicketPackages[id]['pkg_qty']=qty; 13834 TicketPackages[id]['tax']=tax; 13835 TicketPackages[id]['pkgTaxAmount'] = pkgTaxAmount; // VFC-14947 - add booking fee 13836 13837 TicketPackages[id]['isTaxInclusive'] = isTaxInclusive; // VFC-14947 - add booking fee 13838 TicketPackages[id]['inclusiveTaxValue'] = inclusiveTaxValue; // VFC-14947 - add booking fee 13839 TicketPackages[id]['inclusiveTaxPrice'] = inclusiveTaxPrice; // VFC-14947 - add booking fee 13840 TicketPackages[id]['isDonation'] = isDonation; // VFC-14947 - add booking fee 13841 TicketPackages[id]['applyBookingFeeToDonation'] = applyBookingFeeToDonation; // VFC-14947 - add booking fee 13842 13843 13844 }else{ 13845 packageDetails['pkg_price']= pkg_price; 13846 packageDetails['total_price']= total_price; 13847 packageDetails['pkg_qty']= qty; 13848 packageDetails['tax']= tax; 13849 TicketPackages['pkgTaxAmount'] = pkgTaxAmount; // VFC-14947 - add booking fee 13850 13851 packageDetails['pkgTaxAmount'] = pkgTaxAmount; // VFC-14947 - add booking fee 13852 packageDetails['isTaxInclusive'] = isTaxInclusive; // VFC-14947 - add booking fee 13853 packageDetails['inclusiveTaxValue'] = inclusiveTaxValue; // VFC-14947 - add booking fee 13854 packageDetails['inclusiveTaxPrice'] = inclusiveTaxPrice; // VFC-14947 - add booking fee 13855 packageDetails['isDonation'] = isDonation; // VFC-14947 - add booking fee 13856 packageDetails['applyBookingFeeToDonation'] = applyBookingFeeToDonation; // VFC-14947 - add booking fee 13857 13858 13859 TicketPackages[id]=packageDetails; 13860 } 13861 13862 total_addon_price = 0; 13863 $('.addon-package-' + id).find("a.addonBtn").each(function () { 13864 addon_qty_limit = getAddonQtyLimit($(this), qty); 13865 addons_qty = $(this).next().find('.qty').val(); 13866 addons_name = $(this).closest('.ticket__addon__item').find('.ticketadd__title').text(); 13867 13868 if (parseInt(addon_qty_limit) < parseInt(addons_qty)) { 13869 $(this).next().find('.qty').val(addon_qty_limit); 13870 addons_qty = addon_qty_limit; 13871 } 13872 addons = $(this).data('addons'); 13873 addons_price = $(this).data('addon-price'); 13874 addons_tax = $(this).data('addon-tax'); 13875 let AddonsDetails = {}; 13876 AddonsDetails['id'] = addons; 13877 AddonsDetails['addons_price'] = addons_price; 13878 AddonsDetails['addons_name'] = addons_name; 13879 AddonsDetails['addons_tax'] = addons_tax; 13880 AddonsDetails['addons_qty'] = addons_qty; 13881 addonsApplyDiscount = $(this).attr('data-addon-apply-discount'); 13882 AddonsDetails['addons_apply_discount'] = addonsApplyDiscount; 13883 if (!$(this).is(':visible')) { 13884 if (addons_qty) { 13885 total_addon_price = parseFloat(total_addon_price) + (parseFloat(addons_qty) * (parseFloat(addons_tax) + parseFloat(addons_price))); 13886 AddonsDetails['total_addon_price'] = total_addon_price; 13887 } else { 13888 total_addon_price = parseFloat(total_addon_price) + parseFloat(addons_price) + parseFloat(addons_tax); 13889 AddonsDetails['total_addon_price'] = total_addon_price; 13890 } 13891 TicketPackages[id][addons] = AddonsDetails; 13892 } 13893 if (TicketPackages[id][addons]) { 13894 TicketPackages[id][addons] = AddonsDetails; 13895 } 13896 13897 $(this).next().attr('data-limit', 10000); 13898 13899 if (parseInt(addons_qty) < parseInt(addon_qty_limit)) { 13900 $(this).next().find('.qty-plus').show(); 13901 } else { 13902 $(this).next().find('.qty-plus').hide(); 13903 } 13904 // if(addons_qty == 1){ 13905 // $(this).next().find('.qty-minus').show(); 13906 // } 13907 13908 }); 13909 13910 // console.log('before TicketPackages increment and decrement'); 13911 // console.log(TicketPackages); 13912 $.each(TicketPackages, function (packageId, package) { 13913 // Check the package quantity 13914 if(!isNaN(parseFloat(packageId)) && isFinite(packageId)) { 13915 if (Number(package['pkg_qty']) <= 0) { 13916 $.each(package, function (key, item) { 13917 delete package[key]; 13918 }); 13919 delete TicketPackages[packageId]; 13920 return true; // Continue to next iteration in jQuery's each (similar to continue in a for loop) 13921 } 13922 13923 // Iterate through each item/package addon 13924 // $.each(package, function(key, item) { 13925 // if (key !== 'pkg_price' && key !== 'total_price' && key !== 'tax' &&
13925key !== 'pkg_qty' && key !== 'symbol' && key != 'pkgTaxAmount' && key != 'isTaxInclusive' && key != 'inclusiveTaxValue' && key != 'inclusiveTaxPrice') { 13926 // if (Number(item['addons_qty']) <= 0) { 13927 // delete package[key]; // Delete the addon with addons_qty <= 0 13928 // } 13929 // } 13930 // }); 13931 13932 if (!package || typeof package !== 'object') { 13933 13934 }else{ 13935 $.each(package, function(key, item) { 13936 if (key !== 'pkg_price' && key !== 'total_price' && key !== 'tax' && key !== 'pkg_qty' && key !== 'symbol' && key != 'pkgTaxAmount' && key != 'isTaxInclusive' && key != 'inclusiveTaxValue' && key != 'inclusiveTaxPrice') { 13937 if (item && typeof item === 'object' && 'addons_qty' in item) { 13938 if (Number(item['addons_qty']) <= 0) { 13939 delete package[key]; // Delete the addon with addons_qty <= 0 13940 } 13941 } 13942 } 13943 }); 13944 } 13945 13946 } 13947 13948 }); 13949 var {total_price, totalTaxApplied} = TicketAmountCalculate(TicketPackages); 13950 total_price = total_price + totalTaxApplied; 13951 var symbol = $('.pmnt_fld option:selected').data('symbol'); 13952 13953 13954 total_text = $('.totalcountT > p').attr('data-total'); 13955 $('.ticket__pkgprice').text(total_price); 13956 CalculateDonationPackageAmount(); 13957 var subTotal=total_price-totalTaxApplied-PackageDonationAmount; 13958 13959 if(symbol){ 13960 $('.order__summary .price__item > div:nth-of-type(1) span').text(symbol+''+formatTotal(subTotal)); 13961 $('.order__summary .price__item > div.total__price > span').text(symbol+''+formatTotal(total_price)); 13962 $('.ticketItems .totalcountT p').text(total_text+': '+symbol+''+formatTotal(total_price)); 13963 $('.order__summary .price__item .Donation span') 13964 .text(`${symbol}${formatTotal(PackageDonationAmount)}`) 13965 .attr('data-total_donation', PackageDonationAmount.toFixed(2)); 13966 13967 }else{ 13968 $('.order__summary .price__item > div:nth-of-type(1) span').text(formatTotal(subTotal)); 13969 $('.order__summary .price__item > div.total__price > span').text(formatTotal(total_price)); 13970 $('.ticketItems .totalcountT p').text(total_text + ': ' + formatTotal(total_price)); 13971 $('.order__summary .price__item .Donation span') 13972 .text(`${formatTotal(PackageDonationAmount)}`) 13973 .attr('data-total_donation', PackageDonationAmount.toFixed(2)); 13974 13975 } 13976 $('.order__summary .price__item > div.total-tax > span').attr("data-total_tax_no_booking_fee", totalTaxApplied.toFixed(2)); 13977 $('.order__summary .price__item > div.total__price > span').attr('data-original_total_price', total_price); 13978 $('.order__summary .price__item > div:nth-of-type(1) span').attr('data-subtotal', (subTotal).toFixed(2)); 13979 sessionStorage.setItem('total_price', total_price); 13980 setTotalIncludingBookingFee(TicketPackages); // VFC-14947 - add booking fee 13981 13982 13983 if ($('input[name="optionsRadios"]:checked').attr('data-method') !== undefined) { 13984 TicketPackages['paymentMethodId']=$('input[name="optionsRadios"]:checked').attr('data-method'); 13985 } else { 13986 TicketPackages['paymentMethodId']=$('input[name="optionsRadios"]').first().attr('data-method'); 13987 } 13988 13989 13990 if(enableV5ApiDiscount){ 13991 TicketPackages['discountCode'] = ''; 13992 if(multipleTicketEdit){ 13993 TicketPackages['discountCode'] = (EditProfileDiscCode !== null && EditProfileDiscCode !== '') ? EditProfileDiscCode : ''; 13994 } 13995 TicketPackages['isUpgradeDowngradeProfile'] = (isUpgradeDowngradeProfile !== null && isUpgradeDowngradeProfile !== '' && (isUpgradeDowngradeProfile == 1 || isUpgradeDowngradeProfile == "1")) ? "1" : "0"; 13996 13997 if(upgradeDowngradePaymentMethodDetailId !=null){ 13998 TicketPackages['paymentMethodId'] = upgradeDowngradePaymentMethodDetailId; 13999 } 14000 if(isUpgradeDowngradeForAPI ==false){ 14001 paymentSummaryObject.getPaymentSummaryDetails(TicketPackages); 14002 } 14003 14004 } 14005 14006 } 14007 14008 function getAddonQtyLimit(obj, ticket_qty) { 14009 14010 if(ticket_qty == 0) { 14011 return 0; 14012 } 14013 14014 global_limit = obj.siblings('.selectCounter').children('.qty-plus').data('addons-limit'); 14015 var addon_purchase_limit_type = obj.data('purchase_limit_type'); 14016 var addon_max_addons_per_ticket = obj.data('max_addons_per_ticket'); 14017 var addon_max_addons_overall = obj.data('max_addons_overall'); 14018 // var qty = obj.find('.qty').val(); 14019 var limit = ''; 14020 if (addon_purchase_limit_type == 'match_ticket_quantity') { 14021 limit = ticket_qty; 14022 } else if (addon_purchase_limit_type == 'fixed_per_ticket') { 14023 limit = addon_max_addons_per_ticket * ticket_qty; 14024 } else if (addon_purchase_limit_type == 'total_addons_across_tickets') { 14025 limit = addon_max_addons_overall; 14026 } 14027 if(global_limit != '' && global_limit < limit){ 14028 limit = global_limit; 14029 } 14030 return limit; 14031 } 14032 14033 function changeTicket(current){ 14034 // debugger; 14035 let packageDetails={}; 14036 if($('.cacl-disc').data('fld')){ 14037 var fld = $('.cacl-disc').data('fld').toString(); 14038 $("input[name='pmnt_addons_"+fld+"[]']").each(function (index, obj) { 14039 $(this).prop('checked', false); 14040 }); 14041 } 14042 var appId = 20550; 14043 $('#bypass').parent('div').hide(); 14044 $('.user_list').val(0).change(); 14045 $('.package_list').val(current.data('package')); 14046 let package_id=current.data('package'); 14047 qty= 1; 14048 // $('.user_list').val(qty).change(); 14049 $('.cacl-disc').prop('disabled', false); 14050 total_price =current.closest('div').find('.total__price').data('price'); 14051 pkg_price =current.closest('div').find('.total__price').data('pkgprice'); 14052 //check old package price 14053 14054 if(multipleTicketEdit) { 14055 if (UpgradePackageAndAddonsOnly && notAllowMultileTicketSelection) { 14056 var checkPackagePrice = false;
14057 var checkSamePackageSeleted = false; 14058 if (multipleTicketPackageList) { 14059 $.each(multipleTicketPackageList, function (key, value) { 14060 if ($('button.qty-minus[data-id="' + key + '"]').length) { 14061 $('button.qty-minus[data-id="' + key + '"]').hide(); 14062 } 14063 if (key != package_id) { 14064 // fetch old package Details 14065 const packageBlockOld = document.querySelector('.package-block-' + key); 14066 const totalPriceElementOld = packageBlockOld.querySelector('.total__price'); 14067 const oldPackageprice = totalPriceElementOld.getAttribute('data-price'); 14068 // new package details 14069 const packageBlockNew = document.querySelector('.package-block-' + package_id); 14070 const totalPriceElementNew = packageBlockNew.querySelector('.total__price'); 14071 const NewPackageprice = totalPriceElementNew.getAttribute('data-price'); 14072 if (NewPackageprice) { 14073 if (parseFloat(NewPackageprice) < parseFloat(oldPackageprice)) { 14074 checkPackagePrice = true; 14075 } 14076 } 14077 } else { 14078 if (TicketPackages && Object.keys(TicketPackages).length > 0) { 14079 checkSamePackageSeleted = true; 14080 } 14081 } 14082 }); 14083 } 14084 if (checkPackagePrice) { 14085 alert("Upgrade Screen: You can only select a higher amount package."); 14086 return; 14087 } 14088 if (checkSamePackageSeleted && UpgradePackageAndAddonsOnlyTimeout) { 14089 window.location.reload(); 14090 } 14091 } 14092 if (enableUpgradeOnlyPackageAddons && appId != 1000004798) { 14093 $('.ticket__item').hide(); 14094 14095 var checkPackagePrice = false; 14096 var checkSamePackageSeleted = false; 14097 14098 // Function to run the package logic 14099 function runPackageLogic(iteration) { 14100 if (multipleTicketPackageList) { 14101 $.each(multipleTicketPackageList, function (key, value) { 14102 $('.package-block-' + key).show(); 14103 14104 if ($('button.qty-minus[data-id="' + key + '"]').length) { 14105 $('button.qty-minus[data-id="' + key + '"]').hide(); 14106 $('.package_' + key).hide(); 14107 } 14108 }); 14109 } 14110 if (iteration < 20) { 14111 runPackageLogic(iteration + 1); 14112 14113 } 14114 } 14115 runPackageLogic(0); 14116 } 14117 } 14118 14119 //end 14120 14121 tax =current.closest('div').find('.total__price').data('tax'); 14122 pkgTaxAmount =current.closest('div').find('.total__price').data('pkg_tax_amount'); // VFC-14947 - add booking fee 14123 isTaxInclusive = current.closest('div').find('.total__price').data('is_tax_inclusive'); // VFC-14947 - add booking fee 14124 inclusiveTaxValue = current.closest('div').find('.total__price').data('inclusive_tax'); // VFC-14947 - add booking fee 14125 inclusiveTaxPrice = current.closest('div').find('.total__price').data('inclusive_tax_price'); // VFC-14947 - add booking fee 14126 isDonation = current.closest('div').find('.total__price').data('is_donation'); // VFC-14947 - add booking fee 14127 applyBookingFeeToDonation = current.closest('div').find('.total__price').data('apply_booking_fee_to_donation'); // VFC-14947 - add booking fee 14128 var symbol = $('.pmnt_fld option:selected').data('symbol'); 14129 total_text=$('.totalcountT > p').attr('data-total'); 14130 packageDetails['pkg_price']= pkg_price; 14131 packageDetails['total_price']= total_price; 14132 packageDetails['tax']= tax; 14133 packageDetails['pkgTaxAmount']= pkgTaxAmount; // VFC-14947 - add booking fee 14134 14135 packageDetails['isTaxInclusive'] = isTaxInclusive; // VFC-14947 - add booking fee 14136 packageDetails['inclusiveTaxValue'] = inclusiveTaxValue; // VFC-14947 - add booking fee 14137 packageDetails['inclusiveTaxPrice'] = inclusiveTaxPrice; // VFC-14947 - add booking fee 14138 packageDetails['isDonation'] = isDonation; 14139 packageDetails['applyBookingFeeToDonation'] = applyBookingFeeToDonation; 14140 14141 packageDetails['pkg_qty']= qty; 14142 packageDetails['symbol']= symbol; 14143 if((parseInt(isTicket) && !isGroupRegistrationField) || (isGroupRegistrationField && !isGroupMultipleSelect)) { 14144 TicketPackages= {}; 14145 TicketPackages[package_id]=packageDetails; 14146 }else{ 14147 // TicketPackages[package_id]=packageDetails; 14148 if (enableV5ApiDiscount){ 14149 14150 TicketPackages= {}; 14151 $(".ticket__item").each(function() { 14152 14153 if ($(this).find(".pricebtn-btn").css('display') === 'none') { 14154 packageDetailsData={}; 14155 let package_id = $(this).find(".qty-plus").attr("data-id"); 14156 console.log('package_id', package_id); 14157 if (package_id) { 14158 14159 14160 var packageBlock = $('.package-block-' + package_id); 14161 14162 var packagePrice = packageBlock.find('.total__price').data('pkgprice'); 14163 console.log('packagePrice', packagePrice); 14164 var packageTax = packageBlock.find('.total__price').data('tax'); 14165 var packageTaxAmount = packageBlock.find('.total__price').data('pkg_tax_amount'); 14166 var isTaxInclusive = packageBlock.find('.total__price').data('is_tax_inclusive'); 14167 var inclusiveTaxValue = packageBlock.find('.total__price').data('inclusive_tax'); 14168 var inclusiveTaxPrice = packageBlock.find('.total__price').data('inclusive_tax_price'); 14169 var isDonation = packageBlock.find('.total__price').data('is_donation'); 14170 var applyBookingFeeToDonation = packageBlock.find('.total__price').data('apply_booking_fee_to_donation'); 14171 var total_price = packageBlock.find('.total__price').data('price'); // Added total_price 14172 var qtyPackage = packageBlock.find('.qty_package').val(); // Added total_price 14173 14174 // Adding additional variables to packageDetails 14175 packageDetailsData['pkg_price'] = packagePrice; 14176 packageDetailsData['tax'] = packageTax; 14177 packageDetailsData['pkgTaxAmount'] = packageTaxAmount; 14178 packageDetailsData['isTaxInclusive'] = isTaxInclusive; 14179 packageDetailsData['inclusiveTaxValue'] = inclusiveTaxValue; 14180 packageDetailsData['inclusiveTaxPrice'] = inclusiveTaxPrice; 14181 packageDetailsData['isDonation'] = isDonation; 14182 packageDetailsData['applyBookingFeeToDonation'] = applyBookingFeeToDonation; 14183 packageDetailsData['total_price'] = total_price; // Added total_price to packageDetails 14184 packageDetailsData['symbol'] = symbol; // Added total_price to packageDetails 14185 packageDetailsData['pkg_qty'] = parseInt(qtyPackage); // Convert qtyPackage to int 14186 console.log('packageDetailsData', packageDetailsData); 14187 TicketPackages[package_id]=packageDetailsData; 14188 console.log('TicketPackages INN', TicketPackages); 14189 $('.addon-package-' + package_id).find("a.addonBtn").each(function () { 14190 if (!isGroupRegistrationField) { 14191 $(this).next().find('.qty-plus').hide(); 14192 } 14193 addon_qty_limit = getAddonQtyLimit($(this), qtyPackage); 14194 addons_qty = $(this).next().find('.qty').val(); 14195 if (parseInt(addon_qty_limit) < parseInt(addons_qty)) { 14196 $(this).next().find('.qty').val(addon_qty_limit); 14197 addons_qty = addon_qty_limit; 14198 } 14199 if (!$(this).is(':visible')) { 14200 addons = $(this).data('addons'); 14201 let AddonsDetails = {}; 14202 AddonsDetails['id'] = addons; 14203 addons_price = $(this).data('addon-price'); 14204 addons_tax = $(this).data('addon-tax'); 14205 addons_name = $(this).closest('.ticket__addon__item').find('.ticketadd__title').text(); 14206 AddonsDetails['addons_price'] = addons_price; 14207 AddonsDetails['addons_tax'] = addons_tax; 14208 AddonsDetails['addons_qty'] = addons_qty; 14209 AddonsDetails['addons_name'] = addons_name; 14210 14211 addonsApplyDiscount = $(this).attr('data-addon-apply-discount'); 14212 AddonsDetails['addons_apply_discount'] = addonsApplyDiscount; 14213 if (addons_qty) { 14214 total_addon_price = parseFloat(total_addon_price) + (parseFloat(addons_qty) * (parseFloat(addons_tax) + parseFloat(addons_price))); 14215 AddonsDetails['total_addon_price'] = total_addon_price; 14216 } else { 14217 total_addon_price = parseFloat(total_addon_price) + parseFloat(addons_price) + parseFloat(addons_tax); 14218 AddonsDetails['total_addon_price'] = total_addon_price; 14219 } 14220 console.log('TicketPackages', TicketPackages); 14221 if (TicketPackages[package_id][addons]) { 14222 if (TicketPackages[package_id][addons]['id'] == addons) { 14223 TicketPackages[package_id][addons] = AddonsDetails; 14224 } else { 14225 TicketPackages[package_id][addons] = AddonsDetails; 14226 } 14227 } else { 14228 TicketPackages[package_id][addons] = AddonsDetails; 14229 } 14230 } 14231 // $(this).next().attr('data-limit',qty); 14232 // $(this).next().attr('data-limit', 10000); 14233 // if (parseInt(addons_qty) < parseInt(addon_qty_limit)) { 14234 // $(this).next().find('.qty-plus').show(); 14235 // } else { 14236 // $(this).next().find('.qty-plus').hide(); 14237 // } 14238 14239 }); 14240 } 14241 14242 } 14243 }); 14244 // The clicked package is still marked unselected at this point, 14245 // so the scan above never picks it up. 14246 if(!TicketPackages[package_id]){ 14247 TicketPackages[package_id]=packageDetails; 14248 } 14249 }else{ 14250 TicketPackages[package_id]=packageDetails; 14251 } 14252 } 14253 14254 var {total_price, totalTaxApplied} = TicketAmountCalculate(TicketPackages); 14255 14256 if (appId != 15223){ 14257 total_price = total_price + totalTaxApplied; 14258 } 14259 // total_price = total_price + totalTaxApplied; 14260 if (total_price == 0) { 14261 data_subject = $('.single-pay').attr('data-sub'); 14262 if (!data_subject) { 14263 data_subject = $('.payn').attr('data-sub'); 14264 } 14265 if (assignDropdownFixAppIds.includes(Number(appId))) { 14266 if ($('.order__payment.order__summary.topp').find('.paynbtn.zerob').length === 0) { 14267 $('.order__payment.order__summary.topp').first().after(' <input class="paynbtn zerob" type="submit" style="margin-top: 25px" value="' + data_subject + '" tabindex="0">'); 14268 } 14269 $('.ordsum').after(' <input class="paynbtn zerob" type="submit" style="margin-top: 25px" value="' + data_subject + '" tabindex="0">'); 14270 $('.order__payment.order__summary.topp').add('.payment__method.topp').hide(); 14271 } else { 14272 if ($('.topp').find('.paynbtn.zerob').length === 0) { 14273 $('.topp').after(' <input class="paynbtn zerob" type="submit" style="margin-top: 25px" value="' + data_subject + '" tabindex="0">'); 14274 } 14275 $('.ordsum').after(' <input class="paynbtn zerob" type="submit" style="margin-top: 25px" value="' + data_subject + '" tabindex="0">'); 14276 $('.topp').hide(); 14277 } 14278 $('.single-pay').hide(); 14279 if($('#payment_method_count').val() == 1){ 14280 $('.payment_summary_bottom')
14280.hide(); 14281 } 14282 } else { 14283 if(gStepNumber > 1) { 14284 $('.zerob').remove(); 14285 if (assignDropdownFixAppIds.includes(Number(appId))) { 14286 $('.order__payment.order__summary.topp').add('.payment__method.topp').show(); 14287 } else { 14288 $('.topp').show(); 14289 } 14290 $('.single-pay').show(); 14291 } 14292 if (assignDropdownFixAppIds.includes(Number(appId))) { 14293 $('.order__payment.order__summary.topp').add('.payment__method.topp').show(); 14294 } else { 14295 $('.topp').show(); 14296 } 14297 $('.paynbtn.zerob').remove(); 14298 } 14299 14300 $('.ticket__pkgprice').text(total_price); 14301 CalculateDonationPackageAmount(); 14302 var subTotal=total_price-totalTaxApplied-PackageDonationAmount; 14303 14304 if(symbol){ 14305 $('.order__summary .price__item > div:nth-of-type(1) span').text(symbol+''+formatTotal(subTotal)); 14306 $('.order__summary .price__item > div.total__price > span').text(symbol+''+formatTotal(total_price)); 14307 $('.ticketItems .totalcountT p').text(total_text+': '+symbol+''+formatTotal(total_price)); 14308 $('.order__summary > div.price__item > div.pricing:nth-of-type(2) > span').text(symbol+''+0.00.toFixed(2)); 14309 $('.order__summary .price__item .Donation span') 14310 .text(`${symbol}${formatTotal(PackageDonationAmount)}`) 14311 .attr('data-total_donation', PackageDonationAmount.toFixed(2)); 14312 14313 }else{ 14314 $('.order__summary .price__item > div:nth-of-type(1) span').text(formatTotal(subTotal)); 14315 $('.order__summary .price__item > div.total__price > span').text(formatTotal(total_price)); 14316 $('.ticketItems .totalcountT p').text(total_text+': '+formatTotal(total_price)); 14317 $('.order__summary > div.price__item > div.pricing:nth-of-type(2) > span').text(0.00.toFixed(2)); 14318 $('.order__summary .price__item .Donation span') 14319 .text(`${formatTotal(PackageDonationAmount)}`) 14320 .attr('data-total_donation', PackageDonationAmount.toFixed(2)); 14321 14322 } 14323 $('.order__summary .price__item > div.total-tax > span').attr("data-total_tax_no_booking_fee", totalTaxApplied.toFixed(2)); 14324 $('.order__summary .price__item > div.total__price > span').attr('data-original_total_price', total_price); 14325 sessionStorage.setItem('total_price', total_price); 14326 $('.order__summary .price__item > div:nth-of-type(1) span').attr('data-subtotal',(subTotal).toFixed(2)); 14327 setTotalIncludingBookingFee(TicketPackages); // VFC-14947 - add booking fee 14328 14329 // $('.order__summary .price__item > div:nth-of-type(1) span').text(total_price); 14330 // $('.order__summary .price__item > div.total__price > span').text(total_price); 14331 // $('.ticketItems .totalcountT p').text('Total: '+total_price); 14332 14333 added_ticket_trans = $('.ticketItems .totalcountT').attr('data-added'); 14334 $('.ticketItems .totalcountT span').text(added_ticket_trans); 14335 var curPrev = current.prev('.selectCounter'); 14336 if((parseInt(isTicket) && !isGroupRegistrationField) || (isGroupRegistrationField && !isGroupMultipleSelect)) { 14337 $('.ticketSelbtn').show(); 14338 } 14339 current.hide(); 14340 if((parseInt(isTicket) && !isGroupRegistrationField) || (isGroupRegistrationField && !isGroupMultipleSelect)) { 14341 $('.selectCounter').hide(); 14342 } 14343 curPrev.show(); 14344 if((parseInt(isTicket) && !isGroupRegistrationField) || (isGroupRegistrationField && !isGroupMultipleSelect)) { 14345 $('.selectCounter').find('.qty').val(''); 14346 } 14347 curPrev.find('.qty').val(1); 14348 var limit = curPrev.data('limit'); 14349 if (!$(".group-reg-block")[0]) { 14350 if (limit == 1) { 14351 // curPrev.find('.qty-plus').hide(); 14352 14353 } 14354 } 14355 curPrev.find('.qty-minus').show(); 14356 if((parseInt(isTicket) && !isGroupRegistrationField) || (isGroupRegistrationField && !isGroupMultipleSelect)) { 14357 $('.addonBtn').show(); 14358 $('.ticket__item').removeClass('hasAddon'); 14359 $('.ticket__addon').hide(); 14360 } 14361 current.parents('.ticket__item').next('.ticket__addon').fadeIn(); 14362 current.parents('.ticket__item').addClass('hasAddon'); 14363 14364 if(parseInt(isTicket) && !isGroupRegistrationField){ 14365 curPrev.find('.qty-plus').hide(); 14366 } 14367 14368 TicketPackages[package_id]=packageDetails; 14369 14370 // TicketPackages['paymentMethodId']=$('input[name="optionsRadios"]:checked').attr('data-method'); 14371 14372 if ($('input[name="optionsRadios"]:checked').attr('data-method') !== undefined) { 14373 TicketPackages['paymentMethodId']=$('input[name="optionsRadios"]:checked').attr('data-method'); 14374 } else { 14375 TicketPackages['paymentMethodId']=$('input[name="optionsRadios"]').first().attr('data-method'); 14376 } 14377 if(enableV5ApiDiscount){ 14378 console.log('Addons'); 14379 TicketPackages['discountCode'] = ''; 14380 if(multipleTicketEdit){ 14381 TicketPackages['discountCode'] = (EditProfileDiscCode !== null && EditProfileDiscCode !== '') ? EditProfileDiscCode : ''; 14382 } 14383 TicketPackages['appId'] = 20550; 14384 TicketPackages['formId'] = $('#formId').val(); 14385 TicketPackages['isGroupRegistration'] = 0; 14386 TicketPackages['isGroupMultipleSelect'] = isGroupMultipleSelect; 14387 TicketPackages['enablePaymentForOnePackage'] = 0; 14388 TicketPackages['isUpgradeDowngradeProfile'] = (isUpgradeDowngradeProfile !== null && isUpgradeDowngradeProfile !== '' && (isUpgradeDowngradeProfile == 1 || isUpgradeDowngradeProfile == "1")) ? "1" : "0"; 14389 if(upgradeDowngradePaymentMethodDetailId !=null){ 14390 TicketPackages['paymentMethodId'] = upgradeDowngradePaymentMethodDetailId; 14391 } 14392 var appID= '20550'; 14393 if(appID == 20576 ){ 14394 CalculateDonationPackageAmount(); 14395 setTotalIncludingBookingFee(TicketPackages); 14396 } 14397 14398 if(isUpgradeDowngradeForAPI ==false){ 14399 paymentSummaryObject.getPaymentSummaryDetails(TicketPackages); 14400 } 14401 14402 14403 } 14404 14405 $('.user_list').val(0).change(); 14406 if(parseInt(isTicket) && (parseInt(isStripeElement) || parseInt(isStripeConnectElement)) && !parseInt(isTicketTop)) { 14407 14408 let emailElm = ("input[type='email']"); 14409 let receiptEmail = $(emailElm).val(); 14410 14411 intent_id= ''; 14412 jQuery.ajax({ 14413 url: "https://www.codeseccon.com/en/form/updatePaymentIntent", 14414 data: { 14415 intent_id: intent_id, 14416 amount: total_price.toFixed(2), 14417 appID: 20550, 14418 receiptEmail: receiptEmail 14419 }, 14420 type: "POST", 14421 success: function (response) { 14422 14423 } 14424 }); 14425 } 14426 } 14427 14428 $('.ticketSelbtn').click(function (e) { 14429 e.preventDefault(); 14430 14431 14432 14433 $('.order-now-button').prop('disabled', false); 14434 if(fromBackBtn){ 14435 tcktModifiedFromBackBtn = true; 14436 } 14437 // $('.qty-minus ').hide(); 14438 14439 var current = $(this); 14440 14441 flag = 0; 14442 $(".ticketSelbtn").each(function () { 14443 if ($(this).css("display") == "none") { 14444 flag = flag + 1; 14445 } 14446 }); 14447 if (flag == 0) { 14448 changeTicket(current); 14449 } else { 14450 14451 changeTicket(current); 14452 } 14453 if (isTicket && !parseInt(isTicketTop)){ 14454 var numItems = $('.payment__method > .radio').length; 14455 if(numItems > 1){ 14456 $('.order__summary.ordsum').show(); 14457 $('.single-pay.aa').hide(); 14458 }else{ 14459 $('.order__summary.ordsum').hide(); 14460 $('.single-pay.aa').show(); 14461 } 14462 // $('.single-pay.aa').hide(); 14463 $('.order-now-button1').show(); 14464 $('.packageBlock').html(''); 14465 $('.order-now-button1').prop('disabled', false); 14466 } 14467 var limit = 10000; 14468 var packageLimit=$(this).prev().find('.qty-plus').attr("data-package-limit"); 14469 if(packageLimit != '' && packageLimit > 0){ 14470 limit = parseInt(packageLimit); 14471 } 14472 var counVal = $(this).prev().find('.qty_package').val(); 14473 if (parseInt(counVal) >= limit) { 14474 $(this).prev().find('.qty-plus').hide() 14475 } 14476 }); 14477 $('.addonBtn').click(function (e) { 14478 e.preventDefault(); 14479 14480 if(fromBackBtn){ 14481 tcktModifiedFromBackBtn = true; 14482 } 14483 14484 if (isTicket && !parseInt(isTicketTop)){ 14485 $('.order__summary.ordsum').hide(); 14486 $('.single-pay.aa').hide(); 14487 $('.order-now-button1').show(); 14488 $('.packageBlock').html(''); 14489 $('.order-now-button1').prop('disabled', false); 14490 } 14491 // console.log('TicketPackages addons'); 14492 // console.log(TicketPackages); 14493 14494 14495 14496 $('.order-now-button').prop('disabled', false); 14497 var current = $(this); 14498 addons = current.data('addons'); 14499 id = $(this).data('id'); 14500 $('.order__summary > div.price__item > div.pricing:nth-of-type(2) > span').text(0.00.toFixed(2)); 14501 14502 $('.order__summary .price__item >
14502 div:nth-of-type(1) span').text(window.total_price.toFixed(2)); 14503 14504 if ($('.cacl-disc').data('fld')) { 14505 var fld = $('.cacl-disc').data('fld').toString(); 14506 } else { 14507 var fld = $('.addonp').data('fld').toString(); 14508 } 14509 14510 var ticket = ''; 14511 14512 $("input[name='pmnt_addons_" + fld + "[]']").each(function (index, obj) { 14513 if (ticket) { 14514 if (addons == $(this).val() && id == $(this).data('package')) { 14515 $(this).prop('checked', true); 14516 } 14517 } else { 14518 if (addons == $(this).val()) { 14519 $(this).prop('checked', true); 14520 } 14521 } 14522 14523 }); 14524 14525 var curNext = current.next('.selectCounter'); 14526 // var limit = curNext.data('limit'); 14527 var limit = 10000; 14528 curNext.find('.qty').val(1); 14529 if (limit == 1) { 14530 curNext.find('.qty-plus').hide(); 14531 14532 } 14533 curNext.find('.qty-minus').show(); 14534 current.hide(); 14535 curNext.show(); 14536 14537 14538 14539 // changePrice($(this)); 14540 // Calculating price 14541 price = $(this).data('price'); 14542 14543 qty = $('.package-block-' + id + ' > .ticket__price .qty').val(); 14544 total_addon_price = 0; 14545 14546 $('.addon-package-' + id).find("a.addonBtn").each(function () { 14547 if (!isGroupRegistrationField) { 14548 $(this).next().find('.qty-plus').hide(); 14549 } 14550 addon_qty_limit = getAddonQtyLimit($(this), qty); 14551 addons_qty = $(this).next().find('.qty').val(); 14552 if (parseInt(addon_qty_limit) < parseInt(addons_qty)) { 14553 $(this).next().find('.qty').val(qty); 14554 addons_qty = qty; 14555 } 14556 if (!$(this).is(':visible')) { 14557 addons = $(this).data('addons'); 14558 let AddonsDetails = {}; 14559 AddonsDetails['id'] = addons; 14560 addons_price = $(this).data('addon-price'); 14561 addons_tax = $(this).data('addon-tax'); 14562 addons_name = $(this).closest('.ticket__addon__item').find('.ticketadd__title').text(); 14563 AddonsDetails['addons_price'] = addons_price; 14564 AddonsDetails['addons_tax'] = addons_tax; 14565 AddonsDetails['addons_qty'] = addons_qty; 14566 AddonsDetails['addons_name'] = addons_name; 14567 14568 addonsApplyDiscount = $(this).attr('data-addon-apply-discount'); 14569 AddonsDetails['addons_apply_discount'] = addonsApplyDiscount; 14570 if (addons_qty) { 14571 total_addon_price = parseFloat(total_addon_price) + (parseFloat(addons_qty) * (parseFloat(addons_tax) + parseFloat(addons_price))); 14572 AddonsDetails['total_addon_price'] = total_addon_price; 14573 } else { 14574 total_addon_price = parseFloat(total_addon_price) + parseFloat(addons_price) + parseFloat(addons_tax); 14575 AddonsDetails['total_addon_price'] = total_addon_price; 14576 } 14577 14578 if (TicketPackages[id][addons]) { 14579 if (TicketPackages[id][addons]['id'] == addons) { 14580 TicketPackages[id][addons] = AddonsDetails; 14581 } else { 14582 TicketPackages[id][addons] = AddonsDetails; 14583 } 14584 } else { 14585 TicketPackages[id][addons] = AddonsDetails; 14586 } 14587 } 14588 // $(this).next().attr('data-limit',qty); 14589 $(this).next().attr('data-limit', 10000); 14590 if (parseInt(addons_qty) < parseInt(addon_qty_limit)) { 14591 $(this).next().find('.qty-plus').show(); 14592 } else { 14593 $(this).next().find('.qty-plus').hide(); 14594 } 14595 14596 }); 14597 14598 var {total_price, totalTaxApplied} = TicketAmountCalculate(TicketPackages); 14599 total_price = total_price + totalTaxApplied; 14600 if (total_price == 0) { 14601 data_sub = $('.payn').attr('data-sub'); 14602 if (assignDropdownFixAppIds.includes(Number(appId))) { 14603 $('.order__payment.order__summary.topp').first().after(' <input class="paynbtn zerob" type="submit" style="margin-top: 25px" value=""' + data_sub + '"" tabindex="0">'); 14604 $('.order__payment.order__summary.topp').add('.payment__method.topp').hide(); 14605 } else { 14606 $('.topp').after(' <input class="paynbtn zerob" type="submit" style="margin-top: 25px" value=""' + data_sub + '"" tabindex="0">'); 14607 $('.topp').hide(); 14608 } 14609 $('.single-pay').hide(); 14610 } else { 14611 if(gStepNumber > 1) { 14612 $('.zerob').remove(); 14613 if (assignDropdownFixAppIds.includes(Number(appId))) { 14614 $('.order__payment.order__summary.topp').add('.payment__method.topp').show(); 14615 } else { 14616 $('.topp').show(); 14617 } 14618 $('.single-pay').show(); 14619 } 14620 } 14621 var symbol = $('.pmnt_fld option:selected').data('symbol'); 14622 total_text = $('.totalcountT > p').attr('data-total'); 14623 CalculateDonationPackageAmount(); 14624 var subTotal=total_price-totalTaxApplied-PackageDonationAmount; 14625 14626 $('.ticket__pkgprice').text(total_price); 14627 if (symbol) { 14628 $('.order__summary .price__item >
14628 div:nth-of-type(1) span').text(symbol + '' + formatTotal(subTotal)); 14629 $('.order__summary .price__item > div.total__price > span').text(symbol + '' + formatTotal(total_price)); 14630 $('.order__summary .price__item > div.total__price > span').attr('data-original_total_price', total_price); 14631 $('.ticketItems .totalcountT p').text(total_text + ': ' + symbol + '' + formatTotal(total_price)); 14632 $('.order__summary .price__item .Donation span') 14633 .text(`${symbol}${formatTotal(PackageDonationAmount)}`) 14634 .attr('data-total_donation', PackageDonationAmount.toFixed(2)); 14635 14636 } else { 14637 $('.order__summary .price__item > div:nth-of-type(1) span').text(formatTotal(subTotal)); 14638 $('.order__summary .price__item > div.total__price > span').text(formatTotal(total_price)); 14639 $('.order__summary .price__item > div.total__price > span').attr('data-original_total_price', total_price); 14640 $('.ticketItems .totalcountT p').text(total_text + ': ' + formatTotal(total_price)); 14641 $('.order__summary .price__item .Donation span') 14642 .text(`${formatTotal(PackageDonationAmount)}`) 14643 .attr('data-total_donation', PackageDonationAmount.toFixed(2)) 14644 14645 } 14646 sessionStorage.setItem('total_price', total_price); 14647 $('.order__summary .price__item > div.total-tax > span').attr("data-total_tax_no_booking_fee", totalTaxApplied.toFixed(2)); 14648 $('.order__summary .price__item > div:nth-of-type(1) span').attr('data-subtotal', (subTotal).toFixed(2)); 14649 14650 setTotalIncludingBookingFee(TicketPackages); // VFC-14947 - add booking fee 14651 14652 14653 if (isTicket && isStripeElement && !isTicketTop) { 14654 14655 let emailElm = ("input[type='email']"); 14656 let receiptEmail = $(emailElm).val(); 14657 14658 intent_id = ''; 14659 jQuery.ajax({ 14660 url: "https://www.codeseccon.com/en/form/updatePaymentIntent", 14661 data: { 14662 intent_id: intent_id, 14663 amount: total_price.toFixed(2), 14664 appID: 20550, 14665 receiptEmail: receiptEmail 14666 14667 }, 14668 type: "POST", 14669 success: function (response) { 14670 14671 } 14672 }); 14673 } 14674 14675 // TicketPackages['paymentMethodId']=$('input[name="optionsRadios"]:checked').attr('data-method'); 14676 14677 if ($('input[name="optionsRadios"]:checked').attr('data-method') !== undefined) { 14678 TicketPackages['paymentMethodId']=$('input[name="optionsRadios"]:checked').attr('data-method'); 14679 } else { 14680 TicketPackages['paymentMethodId']=$('input[name="optionsRadios"]').first().attr('data-method'); 14681 } 14682 if(enableV5ApiDiscount){ 14683 TicketPackages['discountCode'] = ''; 14684 if(multipleTicketEdit){ 14685 TicketPackages['discountCode'] = (EditProfileDiscCode !== null && EditProfileDiscCode !== '') ? EditProfileDiscCode : ''; 14686 } 14687 TicketPackages['isUpgradeDowngradeProfile'] = (isUpgradeDowngradeProfile !== null && isUpgradeDowngradeProfile !== '' && (isUpgradeDowngradeProfile == 1 || isUpgradeDowngradeProfile == "1")) ? "1" : "0"; 14688 14689 if(upgradeDowngradePaymentMethodDetailId !=null){ 14690 TicketPackages['paymentMethodId'] = upgradeDowngradePaymentMethodDetailId; 14691 } 14692 paymentSummaryObject.getPaymentSummaryDetails(TicketPackages); 14693 } 14694 14695 14696 appID= '20550'; 14697 if(appID == 16426 ){ 14698 // curNext.find('.qty-plus').each(function() { 14699 // this.style.setProperty("display", "block", "important"); 14700 // }); 14701 14702 14703 curNext.find('.qty-plus').get(0)?.style.setProperty("display", "block", "important"); 14704 14705 // curNext.find('.qty-plus.addons_item_2306_772142').each(function() { 14706 // this.style.setProperty("display", "block", "important"); 14707 // }); 14708 // curNext.find('.qty-plus').css("display", "block !important"); 14709 // $(".qty-plus").css("display", "block !important"); 14710 } 14711 14712 }); 14713 var showChar = 148; 14714 var ellipsestext = ""; 14715 var moretext = "Read more"; 14716 var lesstext = "Read less"; 14717 14718 14719 $('.ticket__desc__text p').each(function () { 14720 var content = $(this).html(); 14721 14722 if (content.length > showChar) { 14723 14724 var c = content.substr(0, showChar); 14725 var h = content.substr(showChar, content.length - showChar); 14726 14727 var html = c + '<span class="morecontent"><span>' + h + '</span> </span>'; 14728 14729 $(this).html(html); 14730 }else { 14731 $(this).next('.ticketmore__text').hide(); 14732 } 14733 14734 }); 14735 14736 $(".ticketmore__text").click(function (e) { 14737 e.preventDefault(); 14738 moretext= $(this).attr('data-rmore'); 14739 lesstext=$(this).attr('data-rless'); 14740 if ($(this).hasClass("less")) { 14741 $(this).removeClass("less"); 14742 if ($(this).prev().find('span')) { 14743 // console.log('asdfasdfasdf'); 14744 } 14745 $(this).html(moretext); 14746 } else { 14747 $(this).addClass("less"); 14748 $(this).html(lesstext); 14749 } 14750 $(this).prev().find('span').toggle(); 14751 return false;
14752 }); 14753 }); 14754 14755 14756 14757 $(document).ready(function () { 14758 var ticket= ''; 14759 var ticket_top= ''; 14760 if(ticket) { 14761 $(".close").on('click', function(){ 14762 $('.attendbackdrop').click(); 14763 }); 14764 if (ticket_top) { 14765 html_discout = $('.discount-box-block').html(); 14766 if(html_discout && html_discout != ''){ 14767 $('.small-discout-box > div.coupncode').html(html_discout); 14768 // $('.discount-box-block').html(''); 14769 $('.discount-box-block').css("display", "none"); 14770 }else{ 14771 // $('.small-discout-box > div.coupncode').hide(); 14772 } 14773 14774 } else { 14775 setTimeout(function () { 14776 $('.discount-box-block').css("display", "block"); 14777 }, 2000); 14778 } 14779 } 14780 }); 14781 $(document).ready(function () { 14782 $('select[name="hotel_lodging"]').change(function(){ 14783 var id = $(this).val(); 14784 if(id == '') { 14785 $('select[name="room_type_id"] option[value!=""]').remove(); 14786 return false; 14787 } 14788 var app_id = $('input[name="appID"]').val(); 14789 var url = '/form/getHotelRoomById/'; 14790 const errorMessage = $('<p id="error_message" style="color: red; font-size: 10px;">Please fill in both check-in and check-out dates.</p>'); 14791 $('#error_message').hide(); 14792 let checkValidate=true; 14793 var checkInDate=null; 14794 var checkOutDate=null; 14795 if ($('input[name="check_in_date"]').length >0 && $('input[name="check_out_date"]').length > 0) { 14796 checkInDate = $('input[name="check_in_date"]').val().trim(); 14797 checkOutDate = $('input[name="check_out_date"]').val().trim(); 14798 if (checkInDate === '' || checkOutDate === '') { 14799 if ($('#error_message').length === 0) { 14800 $('select[name="hotel_lodging"]').before(errorMessage); 14801 } 14802 if (!$('#error_message').is(':visible')) { 14803 $('#error_message').show(); 14804 } 14805 checkValidate=false; 14806 $('select[name="hotel_lodging"]').val(''); 14807 } else { 14808 $('#error_message').hide(); 14809 $('#error_message').remove(); 14810 } 14811 } 14812 if(checkValidate){ 14813 $("#LoadingBar").show(); 14814 jQuery.ajax({ 14815 url: url + id+'/'+app_id, 14816 data: { 14817 check_in: checkInDate, 14818 check_out: checkOutDate 14819 }, 14820 type: "GET", 14821 success: function (response) { 14822 if ($('select[name="room_type_id"]').length > 0) { 14823 var room_types = eval('(' + response + ')'); 14824 var room_type_id = "select[name='room_type_id']"; 14825 14826 if (room_types.length === 0) { 14827 $(room_type_id).html("<option value=''>No rooms available</option>"); 14828 } else { 14829 room_type_id.innerHTML = ''; 14830 $(room_type_id).html("<option value=''>Please Select</option>"); 14831 $.each(room_types, function (key, item) { 14832 var selectedAttr = ''; 14833 $(room_type_id).append("<option " + selectedAttr + " value='" + item.id + "'>" + item.name + " - Capacity " + item.capacity_per_room + " - No of Rooms " + item.no_of_rooms + "</option>"); 14834 }); 14835 } 14836 } 14837 14838 }, 14839 complete: function () { 14840 $("#LoadingBar").hide(); 14841 if (typeof changeActionOnRoomTypesChangeCallBack === 'function') { 14842 changeActionOnRoomTypesChangeCallBack(); 14843 } 14844 } 14845 }); 14846 } 14847 }); 14848 $('input[name="check_in_date"]').on('change', function() { 14849 $('select[name="hotel_lodging"]').val(''); 14850 $('select[name="room_type_id"] option:not(:first-child)').remove(); 14851 }); 14852 $('input[name="check_out_date"]').on('change', function() { 14853 $('select[name="hotel_lodging"]').val(''); 14854 $('select[name="room_type_id"] option:not(:first-child)').remove(); 14855 }); 14856 }); 14857 14858 </script>
14858 14859
14859<script> 14860 14861 $(function(event){ 14862 // VFC-14947 - add booking fee 14863 $('body').on('change', '.payment__method input:radio[type=radio]', function(e){ 14864 let bookingFeeSpan = $('#booking_fee'); 14865 if(bookingFeeSpan.length > 0) { 14866 if ($('input[name="optionsRadios"]:checked').attr('data-method') !== undefined) { 14867 TicketPackages['paymentMethodId']=$('input[name="optionsRadios"]:checked').attr('data-method'); 14868 } else { 14869 TicketPackages['paymentMethodId']=$('input[name="optionsRadios"]').first().attr('data-method'); 14870 } 14871 14872 // TicketPackages['paymentMethodId']=$('input[name="optionsRadios"]:checked').attr('data-method'); 14873 if(enableV5ApiDiscount){ 14874 TicketPackages['isUpgradeDowngradeProfile'] = (isUpgradeDowngradeProfile !== null && isUpgradeDowngradeProfile !== '' && (isUpgradeDowngradeProfile == 1 || isUpgradeDowngradeProfile == "1")) ? "1" : "0"; 14875 // TicketPackages['discountCode'] = ''; 14876 paymentSummaryObject.getPaymentSummaryDetails(TicketPackages); 14877 14878 }else{ 14879 setTotalIncludingBookingFee(TicketPackages); // VFC-14947 - add booking fee 14880 } 14881 } 14882 }); 14883 }); 14884 </script>
14884 14885 14886
14886<script> 14887 var failurePageURLAffiniPAy=''; 14888 function closeModalAffini() { 14889 document.getElementById("myModalAffini").style.display = "none"; 14890 location.replace(failurePageURLAffiniPAy); 14891 } 14892 // Function to open the modal 14893 function openPaymentModal(data,lang) { 14894 var baseUrl = window.location.origin; 14895 failurePageURLAffiniPAy=baseUrl+lang+data.faliur_page; 14896 var APIKey= data.publick_key; 14897 var accountID= data.accountID; 14898 var secretKey= data.secret_key; 14899 var surchargeable= data.surchargeable; 14900 var user_id=data.userId; 14901 var userType=data.userType; 14902 $('#affini_amount').val(data.amount+ ''+data.symbol); 14903 var amount=data.amount*100; 14904 // Ensure surchargeEnabled is always a boolean 14905 var surchargeEnabled = false; 14906 if(surchargeable === 'true' || surchargeable === true){ 14907 surchargeEnabled = true; 14908 } 14909 document.getElementById("myModalAffini").style.display = "block"; 14910 const hostedFieldsConfiguration = { 14911 publicKey: APIKey, 14912 surchargeEnabled: surchargeEnabled, 14913 // styles: { 14914 // base: { 14915 // color: '#555555', 14916 // fontFamily: '"Helvetica Neue", Helvetica, Arial, sans-serif', 14917 // fontSmoothing: 'antialiased', 14918 // fontSize: '14px', 14919 // fontWeight: 'normal', 14920 // lineHeight: '22px', 14921 // padding: '5px 12px', 14922 // '::placeholder': { 14923 // color: '#999999' 14924 // } 14925 // }, 14926 // invalid: { 14927 // color: '#a94442', 14928 // iconColor: '#a94442' 14929 // } 14930 // }, 14931 fields: [ 14932 { 14933 selector: "#my_credit_card_field_id", 14934 input: { 14935 type: "credit_card_number" 14936 } 14937 }, 14938 { 14939 selector: "#my_cvv_field_id", 14940 input: { 14941 type: "cvv" 14942 } 14943 } 14944 ] 14945 }; 14946 const hostedFieldsCallBack = function(state) { 14947 }; 14948 const hostedFields = window.AffiniPay.HostedFields.initializeFields( 14949 hostedFieldsConfiguration, 14950 hostedFieldsCallBack 14951 ); 14952 hostedFields.focusIframeInput("#my_credit_card_field_id"); 14953 const form = document.getElementById('form'); 14954 form.onsubmit = function(event) { 14955 event.preventDefault(); 14956 var fieldState=hostedFields.getState(); 14957 if(fieldState.isReady ==false){ 14958 $('#affiniModelValidate').show(); 14959 }else{ 14960 $('#affiniModelValidate').hide(); 14961 } 14962 document.getElementById("myModalAffini").style.display = "none"; 14963 $("#LoadingBar").show(); 14964 const my_cvv_field_id = document.getElementById('my_cvv_field_id').value; 14965 const postal_code = document.getElementById('postal_code').value; 14966 const exp_year = document.getElementById('exp_year').value; 14967 const exp_month = document.getElementById('exp_month').value; 14968 const address1 = document.getElementById('address1').value; // Retrieve address value 14969 const firstName = $('input[name="first_name"]').val(); 14970 const lastName = $('input[name="last_name"]').val(); 14971 const fullName = (firstName && lastName) ? `${firstName} ${lastName}
14971` : 'No Name'; 14972 if (!hostedFields.getState()) { 14973 // Send error 14974 return; 14975 } 14976 hostedFields.getPaymentToken({ "postal_code": postal_code, "exp_year": exp_year, "exp_month": exp_month, "address1": address1,"name":fullName }) 14977 .then(function(result){ 14978 chargeAmount(result.id,APIKey,accountID,secretKey,user_id,userType,amount); 14979 }).catch(function(err){ 14980 location.replace(failurePageURLAffiniPAy); 14981 }); 14982 }; 14983 } 14984 function chargeAmount(paymentToken,APIKey,accountID,secretKey,user_id,userType,amount){ 14985 const postData = { 14986 amount: amount, 14987 method: paymentToken, 14988 accountID:accountID 14989 }; 14990 14991 fetch('https://api.affinipay.com/v1/charges', { 14992 method: 'POST', 14993 headers: { 14994 'Content-Type': 'application/json', 14995 'Authorization': 'Basic ' + btoa(secretKey + ':'), // Replace with your secret key 14996 }, 14997 body: JSON.stringify(postData), 14998 }) 14999 .then(response => response.json()) 15000 .then(data => { 15001 const email = $('input[name="email"]').val(); 15002 if(data.status =='AUTHORIZED'){ 15003 handleAffiniSuccess(data,email,paymentToken,user_id,userType); 15004 }else{ 15005 location.replace(failurePageURLAffiniPAy); 15006 } 15007 15008 }) 15009 .catch(error => { 15010 location.replace(failurePageURLAffiniPAy); 15011 }); 15012 } 15013 15014 function handleAffiniSuccess(data,email,paymentToken,user_id,userType){ 15015 let form_id = $('#formId').val(); 15016 const app_id = '20550'; 15017 jQuery.ajax({ 15018 url: "https://www.codeseccon.com/en/form/processAffiniPayResponse", 15019 data: { 15020 email: email, 15021 app_id: app_id, 15022 user_id: user_id, 15023 userType: userType, 15024 token: paymentToken, 15025 form_id: form_id, 15026 data: JSON.stringify(data) 15027 }, 15028 type: "POST", 15029 success: function (response) { 15030 response = eval('(' + response + ')'); 15031 if (response.url) { 15032 window.location.href = response.url; 15033 } 15034 } 15035 }); 15036 15037 } 15038</script>
15038 15039 <!-- // VFC-18157 - moved it for simple registration form as well --> 15040 <!-- // VFC-17355 - place edit and cancel registration container at bottom of form --> 15041 <div class="col-12 mt-3"> 15042 </div> 15043 <!-- Add Attendee Backdrop --> 15044 <div class="attendbackdrop"></div> 15045 15046 <style type="text/css"> 15047 .AffiniForm { 15048 width: 80%; /* Adjust the width as needed */ 15049 margin: 0 auto; 15050 } 15051 15052 .AffiniForm label { 15053 margin-bottom: 5px; 15054 } 15055 15056 .AffiniForm input, 15057 .AffiniForm select, 15058 .AffiniForm iframe { 15059 width: 100%; 15060 padding: 8px; 15061 margin-bottom: 10px; 15062 box-sizing: border-box; 15063 } 15064 15065 .AffiniForm iframe { 15066 height: 34px; /* Match Bootstrap form-control height */ 15067 } 15068 15069 /* Style for hosted field containers to match Bootstrap form-control */ 15070 #my_credit_card_field_id, 15071 #my_cvv_field_id { 15072 display: block; 15073 width: 100%; 15074 height: 34px; 15075 padding: 6px 12px; 15076 font-size: 14px; 15077 line-height: 1.42857143; 15078 color: #555; 15079 background-color: #fff; 15080 background-image: none; 15081 border: 1px solid #ccc; 15082 border-radius: 4px; 15083 box-shadow: inset 0 1px 1px rgba(0,0,0,.075); 15084 transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; 15085 } 15086 15087 #my_credit_card_field_id:hover, 15088 #my_cvv_field_id:hover { 15089 border-color: #66afe9; 15090 } 15091 15092 #my_credit_card_field_id iframe, 15093 #my_cvv_field_id iframe { 15094 border: none; 15095 padding: 0; 15096 margin: 0; 15097 width: 100%; 15098 height: 100%; 15099 display: block; 15100 vertical-align: top; 15101 } 15102 </style> 15103 <div class="modal fade" id="myModalAffini" role="dialog" style="opacity: 1;"> 15104 <div class="modal-dialog"> 15105 15106 <!-- Modal content --> 15107 <div class="modal-content"> 15108 15109 <!-- Modal Header --> 15110 <div class="modal-header"> 15111 <button type="button" class="close" data-dismiss="modal" onclick="closeModalAffini()">×</button> 15112 <h4 class="modal-title">Affini Pay</h4> 15113 </div> 15114 15115 <!-- Modal Body with Form --> 15116 <div class="modal-body"> 15117 15118 <!-- Your Form Goes Here --> 15119 <form id="form" class="AffiniForm"> 15120 15121 <div class="form-group"> 15122 <label for="my_credit_card_field_id">Credit Card</label> 15123 <div id="my_credit_card_field_id"></div> 15124 </div> 15125 15126 <div class="form-group"> 15127 <label for="exp_month">Exp Month</label> 15128 <input id="exp_month" type="text" name="exp_month" class="form-control"> 15129 </div> 15130 15131 <div class="form-group"> 15132 <label for="exp_year">Exp Year</label> 15133 <input id="exp_year" type="text" name="exp_year" class="form-control"> 15134 </div> 15135 15136 <div class="form-group"> 15137 <label for="my_cvv_field_id">CVV</label> 15138 <div id="my_cvv_field_id"></div> 15139 </div> 15140 15141 <div class="form-group"> 15142 <label for="postal_code">Zip Code</label> 15143 <input id="postal_code" type="text" name="postal_code" class="form-control"> 15144 </div> 15145 15146 <div class="form-group"> 15147 <label for="address1">Address</label> 15148 <input id="address1" type="text" name="address1" class="form-control"> 15149 </div> 15150 15151 <div class="form-group"> 15152 <label for="address1">Amount</label> 15153 <input id="affini_amount" disable readonly type="text" class="form-control"> 15154 </div> 15155 15156 <div class="form-group"> 15157 <p style=" color: red; text-align: center; font-size: 13px; display:none;" id="affiniModelValidate">
15157Please fill valid information </p> 15158 <input type="submit" value="Submit" class="btn btn-primary"> 15159 </div> 15160 15161 </form> 15162 <!-- End of Form --> 15163 15164 </div> 15165 15166 <!-- Modal Footer --> 15167 <div class="modal-footer"> 15168 <button type="button" class="btn btn-default" data-dismiss="modal" onclick="closeModalAffini()">Close</button> 15169 </div> 15170 15171 </div> 15172 15173 </div> 15174 </div> 15175
15175<script> 15176 var failurePageURLBraintreePAy=''; 15177 function processBraintree(paymentResultForBraintree) { 15178 var user_id=paymentResultForBraintree.userId; 15179 var currency=paymentResultForBraintree.currency; 15180 var amount=paymentResultForBraintree.amount; 15181 var userType=paymentResultForBraintree.userType; 15182 var session_id=paymentResultForBraintree.session_id; 15183 var baseUrl = window.location.origin; 15184 15185 failurePageURLBraintreePAy=baseUrl+'/en/'+paymentResultForBraintree.faliur_page; 15186 var script = document.createElement('script'); 15187 script.src = 'https://js.braintreegateway.com/web/dropin/1.33.0/js/dropin.min.js'; 15188 script.onload = function () { 15189 $("#LoadingBar").show(); 15190 var app_id = $('input[name="appID"]').val(); // Use jQuery.ajax to fetch the Braintree client token 15191 var url = '/form/getBrainTreeToken/'; 15192 jQuery.ajax({ 15193 url: url+'/'+app_id+'/'+user_id, 15194 type: "GET", 15195 success: function(clientToken) { 15196 // console.log('clientToken'); 15197 // console.log(clientToken); 15198 // The server returns json_encode($token). Depending on the response 15199 // content-type, jQuery may hand us either the raw JSON text ("\"<token>\"") 15200 // or an already-parsed string. Only unwrap a JSON string literal; otherwise 15201 // use the value as-is (the Braintree client token is not itself valid JSON). 15202 if (typeof clientToken === 'string') { 15203 var rawToken = clientToken.trim(); 15204 if (rawToken.length > 1 && rawToken.charAt(0) === '"' && rawToken.charAt(rawToken.length - 1) === '"') { 15205 try { 15206 clientToken = JSON.parse(rawToken); 15207 } catch (parseErr) { 15208 clientToken = rawToken.slice(1, -1); 15209 } 15210 } else { 15211 clientToken = rawToken; 15212 } 15213 } 15214 if (!clientToken) { 15215 $("#LoadingBar").hide(); 15216 alert('Unable to initialize payment. Please try again or contact support.'); 15217 if (failurePageURLBraintreePAy) { 15218 location.replace(failurePageURLBraintreePAy); 15219 } 15220 return; 15221 } 15222 var modalHTML = ` 15223<div class="modal fade" id="braintreeModal" role="dialog" style="opacity: 1;"> 15224 <div class="modal-dialog" role="document"> 15225 <div class="modal-content"> 15226 <div class="modal-header"> 15227 <h5 class="modal-title" id="modalLabel">Braintree Payment</h5> 15228 <button type="button" class="close" data-dismiss="modal" onclick="closeModalBraintree()" aria-label="Close" style="padding: 0rem 1rem; margin: -2rem -1rem -1rem auto;"> 15229 <span aria-hidden="true">×</span> 15230 </button> 15231 </div> 15232 <div class="modal-body"> 15233 <div class="form-group" style="margin-bottom: -1rem;"> 15234 <label for="amount" id="total_amount" style="font-size:15px;">Amount </label> 15235 15236 </div> 15237 <!-- Braintree Drop-in UI --> 15238 <div id="dropin-container"></div> 15239 <button id="submit-button" class="btn btn-primary">Pay</button> 15240 </div> 15241 </div> 15242 </div> 15243 </div> `; 15244 document.body.insertAdjacentHTML('beforeend', modalHTML); 15245 $("#LoadingBar").hide(); 15246 $('#braintreeModal').modal({ 15247 backdrop: 'static', 15248 keyboard: false 15249 }); 15250 $("#total_amount").html("Amount :- "+amount+' '+currency);
15251 braintree.dropin.create({ 15252 authorization: clientToken, 15253 selector: '#dropin-container', 15254 }, function (err, instance) { 15255 if (err) { 15256 console.error(err); 15257 return; 15258 } 15259 document.querySelector('#submit-button').addEventListener('click', function () { 15260 instance.requestPaymentMethod(function (err, payload) { 15261 if (err) { 15262 console.error(err); 15263 return; 15264 } 15265 $('#braintreeModal').hide(); 15266 $("#LoadingBar").show(); 15267 jQuery.ajax({ 15268 url: '/form/processBraintreePayResponse/', 15269 type: "POST", 15270 data: { 15271 nonce: payload.nonce, 15272 user_id: user_id, 15273 currency: currency, 15274 amount: amount, 15275 userType: userType, 15276 session_id: session_id 15277 }, 15278 success: function(response) { 15279 $("#LoadingBar").hide(); 15280 response = eval('(' + response + ')'); 15281 if (response.url) { 15282 window.location.href = response.url; 15283 } 15284 }, 15285 error: function(xhr, status, error) { 15286 console.error('Error processing payment:', error); 15287 } 15288 }); 15289 }); 15290 //end 15291 }); 15292 }); 15293 $('#braintreeModal').modal('show'); 15294 }, 15295 error: function(xhr, status, error) { 15296 console.error('Error fetching client token:', error); 15297 $("#LoadingBar").hide(); 15298 alert('Unable to initialize payment. Please try again or contact support.'); 15299 if (failurePageURLBraintreePAy) { 15300 location.replace(failurePageURLBraintreePAy); 15301 } 15302 } 15303 }); 15304 }; 15305 document.head.appendChild(script); 15306 } 15307 function closeModalBraintree(){ 15308 location.replace(failurePageURLBraintreePAy); 15309 } 15310 15311 </script>
15311 15312
15312<script> 15313 $(document).ready(function(){ 15314 $('.image_link a i').remove(); 15315 $('.wordLimit').on('keyup change', function(){ 15316 if(shouldSkipValidation(this)){ 15317 return; 15318 } 15319 let fld = $(this).attr('id'); 15320 let value = $(this).val().split(" "); 15321 // Count number of words 15322 number = value.filter(function (word) { 15323 return word.length > 0; 15324 }).length; 15325 allowedWords = $(this).siblings('.wordLimitCount').val(); 15326 15327 if( number > allowedWords ){ 15328 value = $(this).val(); 15329 let words = value.split(" "); 15330 let truncatedWords = words.slice(0, allowedWords); 15331 let truncatedString = truncatedWords.join(" "); 15332 $(this).val(truncatedString); 15333 number = allowedWords; 15334 } 15335 15336 let errorMsg = number + " / " + allowedWords+" word(s)"; 15337 if( $('#fld_'+fld+'-error-limit').length > 0 ){ 15338 // console.log('error field found'); 15339 $('#fld_'+fld+'-error-limit').show(); 15340 $('#fld_'+fld+'-error-limit').html(errorMsg); 15341 }else{ 15342 // console.log("error field not found"); 15343 // console.log("insert after", '#grp_'+fld); 15344 $('#grp_'+fld).after('<label id="fld_'+fld+'-error-limit" class="limit-error" for="'+fld+'">'+errorMsg+'</label>'); 15345 } 15346 15347 }); 15348 15349 $('.charLimit').on('keyup change', function(){ 15350 15351 if(shouldSkipValidation(this)){ 15352 return; 15353 } 15354 15355 let fld = $(this).attr('id'); 15356 let value = $(this).val(); 15357 // Count number of characters 15358 number = value.length; 15359 allowedChar = $(this).siblings('.charLimitCount').val(); 15360 15361 if( number > allowedChar ){ 15362 value = $(this).val(); 15363 value = value.substring(0, allowedChar); 15364 $(this).val(value); 15365 number = allowedChar; 15366 } 15367 15368 let errorMsg = number + " / " + allowedChar+" char(s)"; 15369 if( $('#fld_'+fld+'-error-limit').length > 0 ){ 15370 $('#fld_'+fld+'-error-limit').show(); 15371 $('#fld_'+fld+'-error-limit').html(errorMsg); 15372 }else{ 15373 $('#grp_'+fld).after('<label id="fld_'+fld+'-error-limit" class="limit-error" for="'+fld+'">'+errorMsg+'</label>'); 15374 } 15375 15376 }); 15377 15378 }); 15379</script>
vendor: 1 bytes, line 15379
15379
15380<script> 15381 gStepNumber = 1; 15382 fromBackBtn = false; 15383 tcktModifiedFromBackBtn = false; 15384 15385 function pruneStepFormTicketPackagesFromDomSelection() { 15386 if (formType !== 'REGISTRATION_FORM' || parseInt(pageBreakSummaryCount, 10) <= 0) { 15387 return; 15388 } 15389 var selectedPackageIds = {}; 15390 $(document).find('.qty_package').each(function () { 15391 var qty = parseInt($(this).val(), 10); 15392 if (isNaN(qty) || qty <= 0) { 15393 return; 15394 } 15395 var packageId = $(this).siblings('.qty-plus').attr('data-id') || $(this).prev().data('id'); 15396 if (packageId) { 15397 selectedPackageIds[String(packageId)] = true; 15398 } 15399 }); 15400 $.each(Object.keys(TicketPackages), function (_, packageId) { 15401 if (!isNaN(parseFloat(packageId)) && isFinite(packageId) && !selectedPackageIds[String(packageId)]) { 15402 delete TicketPackages[packageId]; 15403 } 15404 }); 15405 if (typeof syncTicketPackagesToStorage === 'function') { 15406 syncTicketPackagesToStorage(); 15407 } else { 15408 window.TicketPackages = TicketPackages; 15409 localStorage.setItem('TicketPackages', JSON.stringify(TicketPackages)); 15410 } 15411 } 15412 15413 function showContent(stepNumber) { 15414 15415 15416 $("#LoadingBar").show(); 15417 if(gStepNumber > stepNumber){ 15418 fromBackBtn = true; 15419 } else if(stepNumber > 2) { 15420 fromBackBtn = false; 15421 } 15422 gStepNumber = stepNumber; 15423 if (stepNumber == 1 && formType === 'REGISTRATION_FORM' && parseInt(pageBreakSummaryCount, 10) > 0) { 15424 window.orderNowProcessing = false; 15425 } 15426 if((gStepNumber == 1) && isTicketTop && isTicket){ 15427 $('.order-now-button').prop('disabled', false); 15428 } 15429 15430 let appId = $('input[name="appID"]').val(); 15431 console.log(appId); 15432 if(appId == '19369'){ 15433 console.log('single-pay'); 15434 setTimeout(function() { 15435 $('.single-pay').hide(); 15436 }, 400); 15437 } 15438 15439 // Hide payment summary block when step is 4 and app_id is 22588 15440 if (stepNumber == 4 && appId == '22588') { 15441 15442 setTimeout(function() { 15443 $('.order__payment.order__summary.page_break_step').hide(); 15444 }, 1000); 15445 } 15446 15447 var stepsArray =[]; 15448 let enableVfairsPayment = 'false'; 15449 let hasVfairsOfflinePayments = false; 15450 // page break error handling 15451 var error_count=false; 15452 var currentPageValidate = null; 15453 15454 if (stepNumber > 1) { 15455 currentPageValidate = stepsArray[stepNumber - 1]; 15456 15457 if (currentPageValidate && currentPageValidate!= undefined && hasVisibleAssignGroupsBlock(currentPageValidate)) { 15458 15459 if (!checkAssignedPackages() || !checkAllAddonsAssigned()) { 15460 $("#LoadingBar").hide(); 15461 return false; 15462 } 15463 } 15464 15465 // Select all input fields within the page-break element 15466 document.querySelectorAll(`.page-break-element-${currentPageValidate} input, .page-break-element-${currentPageValidate} select`).forEach(inputField => { 15467 // Skip validation for hidden fields 15468 if (inputField.type === "hidden") { 15469 return; // Skip hidden fields completely 15470 } 15471 const parentField = inputField.closest('.page-break-fields'); 15472 if (parentField && parentField.style.display === 'none') { 15473 return; // Skip this field if the parent container is hidden 15474 } 15475 if (inputField.id || inputField.name) { // Ensure the input field has an ID or a name 15476 const escapedFieldId = inputField.id ? escapeSelector(inputField.id) : null; // Escape special characters in ID 15477 const field = escapedFieldId ? $(`#${escapedFieldId}`) : null; // Select the field by the escaped ID 15478 const groupName = inputField.name; // Use name for grouped inputs like radio buttons or checkboxes 15479 const group = groupName ? $(`input[name='${escapeSelector(groupName)}']`).closest(".form_field_grp") : null; 15480 const errorLabelId = groupName ? `${groupName.replace(/\[|\]/g, "")}-error` : `${escapedFieldId}-error`; 15481 const errorLabel = $(`#${errorLabelId}`); // Select the error label using the ID 15482 // Check if the field is required and validate radio buttons as a group 15483 if (inputField.type === "radio" && groupName) { 15484 // Check if any radio button in the group is checked 15485 const isSelected = $(`input[name='${escapeSelector(groupName)}']:checked`).length > 0; 15486 if (!isSelected) { 15487 // Remove any existing error labels for this group 15488 group.find('.error').remove(); 15489 // Append the new error label only if it doesn't already exist 15490 if (!group.find(`#${errorLabelId}`).length) { 15491 group.append(`<label id="${errorLabelId}" class="error" for="${escapeSelector(groupName)}">Please select an option.</label>`); 15492 } 15493 error_count = true; 15494 } else { 15495 // Remove the error label if the group is valid 15496 if (errorLabel.length) { 15497 errorLabel.remove(); 15498 } 15499 } 15500 } 15501 // Handle checkbox validation (group of checkboxes) 15502 else if (inputField.type === "checkbox" && groupName) { 15503 // Only validate checkboxes that are marked as 'required' 15504 const isRequiredCheckbox = inputField.required; 15505 if (isRequiredCheckbox) { 15506 // Check if any checkbox in the group is checked (ignore hidden input field) 15507 const isChecked = $(`input[name='${escapeSelector(groupName)}']:checked`).not('input[type="hidden"]').length > 0; 15508 if (!isChecked) { 15509 // Remove any existing error labels for this group 15510 group.find('.error').remove(); 15511 // Append the new error label only if it doesn't already exist 15512 if (!group.find(`#${errorLabelId}`).length) { 15513 group.append(`<label id="${errorLabelId}" class="error" for="${escapeSelector(groupName)}" style="display:block; color: red;">This field is required.</label>`); 15514 } 15515 error_count = true; 15516 } else { 15517 // Remove the error label if the group is valid 15518 if (errorLabel.length) { 15519 errorLabel.remove(); 15520 } 15521 } 15522 } 15523 } 15524 else { 15525 // Handle individual field validation (text, select, etc.) 15526 const isInvalid = inputField.required && ( 15527 inputField.value.trim() === "" || // Empty text or select value 15528 (inputField.type === "checkbox" && !inputField.checked) // Individual checkbox not checked 15529 ); 15530 // Only append error label if the field is required and invalid 15531 if (isInvalid) { 15532 // Remove any existing error labels for this field 15533 if (errorLabel.length) { 15534 errorLabel.remove(); 15535 } 15536 // Append the new error label only if it doesn't already exist 15537 if ($(`#${escapedFieldId}-error`).length > 0) { 15538 $(`#${escapedFieldId}-error`).remove(); 15539 } 15540 if (!field.find(`#${errorLabelId}`).length ) { 15541 field.after(`<label id="${errorLabelId}" class="error" for="${escapedFieldId}">This field is required.</label>`); 15542 } 15543 error_count = true; 15544 } else { 15545 // Remove the error label if valid 15546 if (errorLabel.length) { 15547 errorLabel.remove(); 15548 } 15549 } 15550 } 15551 } 15552 }); 15553 // Prevent form submission if there are validation errors 15554 if (error_count) { 15555 $("#LoadingBar").hide(); 15556 return false; // Return false to prevent the form submission 15557 } 15558 } 15559 15560 15561 // page break error handling end 15562 document.querySelectorAll('.page_break_step').forEach(div => div.style.display = 'none'); 15563 document.querySelectorAll('.page-break-step-' + stepNumber).forEach(function (element) { 15564 element.style.display = 'block'; 15565 }); 15566 if (stepNumber != 1 && pageBreakSummaryCount != stepNumber && stepsArray.hasOwnProperty(stepNumber)) { 15567 var parent_content_id = stepsArray[stepNumber]; 15568 if(userDetailsEditTicket){
15569 $('.ticketFormCol.page_break_step_field .panel-group').show(); 15570 } 15571 $('.page_break_step_field').show(); 15572 $('.page-break-fields').hide(); 15573 $('.page-break-fields').parent().hide(); 15574 $('.page-break-element-' + parent_content_id).parent().show(); 15575 $('.page-break-element-' + parent_content_id).show(); 15576 15577 $('.page-break-element-' + parent_content_id).each(function () { 15578 var parentDiv = $(this).closest('.col-md-6'); 15579 if (parentDiv.length) { 15580 parentDiv.removeClass('col-md-6').addClass('col-md-12'); 15581 } 15582 }); 15583 $('.page-break-element-' + parent_content_id).find('.searchable-select').each(function () { 15584 window.initFormSelect2($(this), true); 15585 }); 15586 var stepBack = stepNumber - 1; 15587 if (stepBack == 0) { 15588 var newContent = '<div id="uniqueContent" class="col-sm-12">' + 15589 '<div class="pagebreak-btns">' + 15590 '<button type="button" onclick="showContent(' + (stepNumber + 1) + ')" class="btn primary">Next</button>' + 15591 '</div>' + 15592 '</div>'; 15593 } else { 15594 var newContent = '<div id="uniqueContent" class="col-sm-12">' + 15595 '<div class="pagebreak-btns">' + 15596 '<button type="button" onclick="showContent(' + (stepNumber - 1) + ')" class="btn">Back</button>' + 15597 '<button type="button" onclick="showContent(' + (stepNumber + 1) + ')" class="btn primary">Next</button>' + 15598 '</div>' + 15599 '</div>'; 15600 } 15601 15602 15603 if ($('#uniqueContent').length > 0) { 15604 $('#uniqueContent').replaceWith(newContent); 15605 } else { 15606 $('.ticketFormCol.page_break_step_field .panel-body').append(newContent); 15607 } 15608 15609 } else { 15610 if (stepNumber == 1) { 15611 if(userDetailsEditTicket){ 15612 $('.ticketFormCol.page_break_step_field .panel-group').show(); 15613 if (Object.keys(TicketPackages).length > 0) { 15614 $.each(TicketPackages, function(packageId, packageDetails) { 15615 $(`#packageContainerBlock${packageId} .aPackage`).remove(); 15616 }); 15617 } 15618 window.location.reload(); 15619 if ($('input[name="user_list[]"]').length > 0) { 15620 $('input[name="user_list[]"]').val(''); 15621 } 15622 } 15623 } 15624 if (stepNumber == pageBreakSummaryCount) { 15625 if(userDetailsEditTicket){ 15626 var parent_content_id = stepsArray[stepNumber-1]; 15627 $('.page-break-element-' + parent_content_id).parent().hide(); 15628 if(checkAllFieldsHidden()){ 15629 $('.ticketFormCol.page_break_step_field .panel-group').hide(); 15630 } 15631 } 15632 15633 var newContent = '<div id="backorderSummery" class="pagebreak-btns page_break_step page-break-step-' + stepNumber + '">' + 15634 '<button type="button" onclick="showContent(' + (stepNumber - 1) + ')" class="btn" style="float: right;">Back</button>' + 15635 '</div>'; 15636 if(enableVfairsPayment === 'true' && !hasVfairsOfflinePayments) { 15637 $('.order__payment').hide(); 15638 } 15639 if ($('#backorderSummery').length == 0) { 15640 if(enableVfairsPayment === 'true' && !hasVfairsOfflinePayments){ 15641 $('.order__payment').hide(); 15642 $('.paynbtn.single-pay.page_break_step.page-break-step-' + stepNumber).after(newContent); 15643 }else{ 15644 $('.order__payment.order__summary.topp.page_break_step.page-break-step-' + stepNumber).append(newContent); 15645 } 15646 var $button = $('.paynbtn.zerobb'); 15647 if ($button.length > 0 && $button.is(':visible')) { 15648 let priceText = $('.total__price span').text(); 15649 let priceValue = parseFloat(priceText.replace('$', '')); 15650 if (priceValue > 0) { 15651 }else{ 15652 if ($('#backorderSummery').length == 0) { 15653 $('.paynbtn.zerobb').after(newContent); 15654 $('.order__payment').hide(); 15655 $('.paynbtn.single-pay').hide(); 15656 } 15657 } 15658 } 15659 } 15660 15661 } 15662 15663 $('.page_break_step_field').hide(); 15664 } 15665 15666 15667 15668 const data = {}; 15669 // Loop through the stepsArray and collect input field values 15670 $.each(stepsArray, function (key, value) { 15671 // Select all input and select elements within the current page-break element 15672 document.querySelectorAll(`.page-break-element-${value} input, .page-break-element-${value} select`).forEach(field => { 15673 if (!field.name) return; // Skip fields without a name 15674 const fieldName = field.name; 15675 // Skip hidden fields 15676 if (field.type === "hidden") return; 15677 // Initialize the data[fieldName] as an array if it's a checkbox, otherwise as a single value 15678 if (!data[fieldName]) { 15679 data[fieldName] = field.type === "checkbox" ? [] : null; 15680 } 15681 // Handle select2 multiple select 15682 if ($(field).hasClass('select2-hidden-accessible') && $(field).prop('multiple')) { 15683 data[fieldName] = []; 15684 const selectedOptions = $(field).select2('data'); 15685 selectedOptions.forEach(option => { 15686 data[fieldName].push(option.text || option.id); 15687 }); 15688 } 15689 // Handle checkboxes 15690 else if (field.type === "checkbox") { 15691 if (field.checked) { 15692 data[fieldName].push(field.getAttribute('aria-label') || field.value || ''); 15693 } 15694 } 15695 // Handle radio buttons 15696 else if (field.type === "radio") { 15697 if (field.checked) { 15698 data[fieldName] = field.getAttribute('aria-label') || field.value || ''; 15699 } 15700 } 15701 // Handle regular select elements 15702 else if (field.tagName.toLowerCase() === "select") { 15703 const selectedValue = field.value; 15704 if (selectedValue) { 15705 data[fieldName] = selectedValue; 15706 } 15707 } 15708 // Handle other input types (text, number, etc.) 15709 else { 15710 data[fieldName] = field.value; 15711 } 15712 }); 15713 }); 15714 if (Object.keys(data).length > 0) {
15715 Object.entries(data).forEach(([fieldName, fieldValues]) => { 15716 const escapedFieldName = escapeSelector(fieldName); // Escape square brackets and special characters 15717 const $fields = $(`[name='${escapedFieldName}']`); // Select all fields with the given name 15718 if ($fields.length) { 15719 if ($fields.is(':radio, :checkbox')) { 15720 // Handle checkboxes and radio buttons 15721 $fields.each(function () { 15722 const $field = $(this); 15723 const isChecked = Array.isArray(fieldValues) 15724 ? fieldValues.includes($field.attr('aria-label')) // Match against aria-label for multiple values 15725 : $field.attr('aria-label') === fieldValues; // Match for single-value checkbox/radio 15726 $field.prop('checked', isChecked); 15727 // Trigger necessary events only for checked fields 15728 if (isChecked) { 15729 $field.trigger('change').trigger('mouseout'); 15730 } 15731 }); 15732 } else if ($fields.is('select')) { 15733 // Handle select elements 15734 $fields.each(function () { 15735 if(escapedFieldName != 'group_registration'){ 15736 const $field = $(this); 15737 if ($field.is('input[id$="_other"]')) { 15738 var otherId = $field.attr('id'); 15739 console.log($('#' + otherId).val()); 15740 if($('#' + otherId).val() != ''){ 15741 var baseId = otherId.replace('_other', ''); 15742 // Select the "other" option in the corresponding select 15743 var $select = $('#' + baseId); 15744 $select.val('other').trigger('change'); 15745 } 15746 15747 } 15748 // if ($field.is('input#fld_1482895_other') || $field.find('input#fld_1482895_other').length > 0) { 15749 // console.log('other'); 15750 // } 15751 $field.trigger('change'); // Trigger the change event 15752 } 15753 15754 }); 15755 } else { 15756 // Handle single-value fields (text, hidden, etc.) 15757 $fields.val(fieldValues); 15758 $fields.trigger('change').trigger('mouseout'); 15759 } 15760 } 15761 }); 15762 } 15763 $("#LoadingBar").hide(); 15764 15765 15766 document.querySelectorAll('.pagebreak-steps li').forEach((li, index) => { 15767 if (index < stepNumber - 1) li.className = 'visited'; 15768 else if (index === stepNumber - 1) li.className = 'active'; 15769 else li.className = ''; 15770 }); 15771 if (appId == 15390) { 15772 setTimeout(function() { 15773 if ($('li.active[aria-label*="Order Now"]').length > 0) { 15774 15775 $('.order__payment.order__summary.topp.page_break_step.page-break-step-6').after('<input class="paynbtn single-pay page_break_step page-break-step-6" data-sub="Submit" type="submit" style="margin-top: 25px; display: block;" value="Submit" tabindex="0">'); 15776 } else { 15777 $('.paynbtn').remove(); 15778 } 15779 }, 1000); 15780 } 15781 15782 15783 if (!skipEmptyPage(stepsArray, stepNumber, fromBackBtn)) { 15784 return false; 15785 } 15786 } 15787 // Function to escape square brackets and other special characters in IDs 15788 15789function skipEmptyPage(stepsArray, stepNumber, fromBackBtn){ 15790 15791 let pageId = stepsArray[stepNumber]; 15792 15793 if (pageId == undefined || pageId == "") { 15794 return false; 15795 } 15796 15797 let hasAtleastOneField = checkPageHasAtleastOneField(pageId); 15798 15799 if (!hasAtleastOneField) { 15800 15801 if (!$(`.page-break-element-${pageId} .group-reg-block .packageBlock`).length || $(`.page-break-element-${pageId} .group-reg-block .packageBlock`)[0].style.visibility === 'hidden') { 15802 15803 if (fromBackBtn) { 15804 showContent(stepNumber-1); 15805 } else { 15806 showContent(stepNumber+1); 15807 } 15808 return false;
15809 } 15810 } 15811 15812 return true; 15813} 15814 15815function skipEmptyPageSimpleView(stepsArray, stepNumber, fromBackBtn){ 15816 15817let pageId = stepsArray[stepNumber]; 15818 15819if (pageId == undefined || pageId == "") { 15820 return false; 15821} 15822 15823let hasAtleastOneField = checkSimpleViewHasAtleastOneField(pageId); 15824 15825if (!hasAtleastOneField) { 15826 if (fromBackBtn) { 15827 ShowFormFieldPageBreak(stepNumber-1); 15828 } else { 15829 ShowFormFieldPageBreak(stepNumber+1); 15830 } 15831 return false; 15832} 15833 15834return true; 15835} 15836 15837function hasVisibleAssignGroupsBlock(pageId){ 15838 15839 if ($(`.page-break-element-${pageId} .group-reg-block .packageBlock`).length) { 15840 if ($(`.page-break-element-${pageId} .group-reg-block .packageBlock`)[0].style.visibility === 'visible') { 15841 return true; 15842 } 15843 15844 return false; 15845 } 15846} 15847 15848function checkPageHasAtleastOneField($currentPage){ 15849 15850 var hasAtleastOneField = false; 15851 15852 document.querySelectorAll(`.page-break-element-${$currentPage} input, .page-break-element-${$currentPage} select`).forEach(inputField => { 15853 // Skip validation for hidden fields 15854 if (inputField.type === "hidden" || inputField.style.display === 'none') { 15855 return; // Skip hidden fields completely 15856 } 15857 const parentField = inputField.closest('.page-break-fields'); 15858 if (parentField && parentField.style.display === 'none') { 15859 return; // Skip this field if the parent container is hidden 15860 } 15861 if (inputField.id || inputField.name) { // Ensure the input field has an ID or a name 15862 15863 hasAtleastOneField = true; 15864 } 15865 }); 15866 15867 return hasAtleastOneField; 15868} 15869 15870function requiresParentTicketAssignment() { 15871 return false; 15872} 15873 15874function getParentRegistrationEmail() { 15875 var parentEmail = ($('input[name="email"]').val() || '').trim(); 15876 if (!parentEmail && typeof groupRegisterationHelper !== 'undefined' && groupRegisterationHelper.getParentEmail) { 15877 parentEmail = (groupRegisterationHelper.getParentEmail() || '').trim(); 15878 } 15879 return parentEmail.toLowerCase(); 15880} 15881 15882function getAssignedEmailFromPackageRow($aPackage) { 15883 var assignedEmail = ''; 15884 $aPackage.find('.aPackage__detail__cell').each(function () { 15885 if ($(this).find('span').text().trim() === 'Email') { 15886 assignedEmail = $(this).find('p').text().trim().toLowerCase(); 15887 return false; 15888 } 15889 }); 15890 return assignedEmail; 15891} 15892 15893function countParentTicketAssignments(optExcludeApackage, includeUserListFallback) { 15894 var parentEmail = getParentRegistrationEmail(); 15895 if (!parentEmail) { 15896 return 0; 15897 } 15898 var count = 0; 15899 $('.packageContainer > .aPackage').each(function () { 15900 if (optExcludeApackage && optExcludeApackage.length && this === optExcludeApackage[0]) { 15901 return; 15902 } 15903 if (getAssignedEmailFromPackageRow($(this)) === parentEmail) { 15904 count++; 15905 } 15906 }); 15907 if (count === 0 && includeUserListFallback !== false) { 15908 $("input[name='user_list[]']").each(function () { 15909 if (!$(this).val()) { 15910 return; 15911 } 15912 try { 15913 var obj = jQuery.parseJSON($(this).val().replace(/"/g, '"')); 15914 if (obj.email && obj.email.trim().toLowerCase() === parentEmail) { 15915 count++; 15916 } 15917 } catch (e) {} 15918 }); 15919 } 15920 return count; 15921} 15922 15923function isParentAssignedToAnyTicket() { 15924 return countParentTicketAssignments(null) > 0; 15925} 15926 15927function getTotalSelectedTicketQty() { 15928 var total = 0; 15929 if (typeof TicketPackages !== 'undefined' && TicketPackages) { 15930 $.each(TicketPackages, function (packageId, package) { 15931 if (!isNaN(parseFloat(packageId)) && isFinite(packageId) && package && package.pkg_qty) { 15932 total += parseInt(package.pkg_qty, 10) || 0; 15933 } 15934 }); 15935 } 15936 if (total === 0) { 15937 $('.packageContainer__head').each(function () { 15938 var ori = parseInt($(this).attr('data-ori-total'), 10); 15939 if (!isNaN(ori)) { 15940 total += ori; 15941 } 15942 }); 15943 } 15944 return total; 15945} 15946 15947function showParentTicketAssignmentError() { 15948 if (!shouldEnforceParentTicketAssignmentRules()) { 15949 return; 15950 } 15951 $('#parent-ticket-error').remove(); 15952 var msg = 'At least one ticket must be assigned to the parent registrant.';
15953 var errorHtml = '<label id="parent-ticket-error" class="error" for="group" style="display: block; color: red;">' + msg + '</label>'; 15954 15955 if (typeof isTicketTop !== 'undefined' && parseInt(isTicketTop) && $('.user_list').length) { 15956 $('.user_list').after(errorHtml); 15957 } else if ($('.packageBlock').length) { 15958 $('.packageBlock').first().after(errorHtml); 15959 } else if ($('.user_list').length) { 15960 $('.user_list').after(errorHtml); 15961 } 15962} 15963 15964function shouldEnforceParentTicketAssignmentRules() { 15965 if (!requiresParentTicketAssignment()) { 15966 return false; 15967 } 15968 if (!parseInt(isTicket)) { 15969 return false; 15970 } 15971 return getTotalSelectedTicketQty() > 1; 15972} 15973 15974function validateParentTicketAssignment() { 15975 if (!shouldEnforceParentTicketAssignmentRules()) { 15976 $('#parent-ticket-error').remove(); 15977 return true; 15978 } 15979 if (!getParentRegistrationEmail()) { 15980 return true; 15981 } 15982 if (isParentAssignedToAnyTicket()) { 15983 $('#parent-ticket-error').remove(); 15984 return true; 15985 } 15986 showParentTicketAssignmentError(); 15987 return false; 15988} 15989 15990/* ============================================================================= 15991 * Ticket Group Registration Max helpers (is_ticket = 1 only) 15992 * Counts unique OTHER attendee emails toward field_options->max. 15993 * Parent registrant email is excluded. No-ops when max is empty/0/unset, 15994 * or when simplified_ticket_assignment is enabled. 15995 * ============================================================================= */ 15996var _ticketGroupMaxAutoAssigning = false; 15997 15998function getTicketGroupRegistrationMax() { 15999 var maxVal = (typeof groupRegistrationFieldMax !== 'undefined') ? groupRegistrationFieldMax : ''; 16000 if (maxVal === '' || maxVal === null || typeof maxVal === 'undefined') { 16001 var $hiddenMax = $('#group_registration_field_max'); 16002 if ($hiddenMax.length) { 16003 maxVal = $hiddenMax.val(); 16004 } 16005 } 16006 var parsed = parseInt(maxVal, 10); 16007 return isNaN(parsed) ? 0 : parsed; 16008} 16009 16010function isTicketGroupMaxEnabled() { 16011 var isSimplified = (typeof simplifiedTicketAssignment !== 'undefined' && ( 16012 simplifiedTicketAssignment === true || 16013 simplifiedTicketAssignment === 1 || 16014 simplifiedTicketAssignment === '1' 16015 )); 16016 return !!( 16017 parseInt(isTicket) && 16018 typeof isGroupRegistrationField !== 'undefined' && 16019 parseInt(isGroupRegistrationField) && 16020 !isSimplified && 16021 getTicketGroupRegistrationMax() > 0 16022 ); 16023} 16024 16025function normalizeTicketGroupEmail(email) { 16026 return (email || '').toString().trim().toLowerCase(); 16027} 16028 16029function isTicketGroupParentEmail(email) { 16030 var parentEmail = getParentRegistrationEmail(); 16031 var normalized = normalizeTicketGroupEmail(email); 16032 return !!(parentEmail && normalized && normalized === parentEmail); 16033} 16034 16035function getUniqueOtherAssignedEmails() { 16036 var emails = {}; 16037 $('.packageContainer > .aPackage').each(function () { 16038 var email = normalizeTicketGroupEmail(getAssignedEmailFromPackageRow($(this))); 16039 if (!email || email === 'not set' || isTicketGroupParentEmail(email)) { 16040 return; 16041 } 16042 emails[email] = true; 16043 }); 16044 return Object.keys(emails); 16045} 16046 16047function getTicketGroupMaxOtherCount() { 16048 return getUniqueOtherAssignedEmails().length; 16049} 16050 16051function isTicketGroupMaxReached() { 16052 if (!isTicketGroupMaxEnabled()) { 16053 return false; 16054 } 16055 return getTicketGroupMaxOtherCount() >= getTicketGroupRegistrationMax(); 16056} 16057 16058function wouldExceedTicketGroupMax(email) { 16059 if (!isTicketGroupMaxEnabled() || _ticketGroupMaxAutoAssigning) { 16060 return false; 16061 } 16062 var normalized = normalizeTicketGroupEmail(email); 16063 if (!normalized || isTicketGroupParentEmail(normalized)) { 16064 return false; 16065 } 16066 var others = getUniqueOtherAssignedEmails(); 16067 if (others.indexOf(normalized) !== -1) { 16068 return false; 16069 } 16070 return others.length >= getTicketGroupRegistrationMax(); 16071} 16072 16073function clearTicketGroupMaxError() { 16074 $('#ticket-group-max-error').remove(); 16075} 16076 16077function showTicketGroupMaxError(message) { 16078 clearTicketGroupMaxError(); 16079 var msg = message || ('Limit reached: Maximum ' + getTicketGroupRegistrationMax() + ' additional member(s) allowed.'); 16080 var errorHtml = '<label id="ticket-group-max-error" class="error" for="group" style="display: block; color: red;">' + msg + '</label>'; 16081 if (typeof isTicketTop !== 'undefined' && parseInt(isTicketTop) && $('.user_list').length) { 16082 $('.user_list').after(errorHtml); 16083 } else if ($('.packageBlock').length) { 16084 $('.packageBlock').first().after(errorHtml); 16085 } else if ($('.user_list').length) { 16086 $('.user_list').after(errorHtml); 16087 } 16088} 16089 16090function getUnassignedTicketPackageSlots() { 16091 var slots = []; 16092 $('.packageContainer').each(function () { 16093 var $container = $(this); 16094 if ($container.is(':hidden')) { 16095 return; 16096 } 16097 var oriTotal = parseInt($container.find('.packageContainer__head').attr('data-ori-total'), 10) || 0; 16098 var assigned = $container.find('> .aPackage').length; 16099 var remaining = oriTotal - assigned; 16100 for (var i = 0; i < remaining; i++) { 16101 slots.push($container); 16102 } 16103 }); 16104 return slots; 16105} 16106 16107function ensureBuyerAssignLinkInPackage($packageContainer) { 16108 var $buyerLink = $packageContainer.find('.packageContainer__head .user-info-prev.buyer, .user-info-prev.buyer').first(); 16109 if ($buyerLink.length) { 16110 return $buyerLink; 16111 } 16112 var first_name = (typeof getMainRegistrationInputValue === 'function') ? getMainRegistrationInputValue('first_name') : ($('input[name="first_name"]').val() || ''); 16113 var last_name = (typeof getMainRegistrationInputValue === 'function') ? getMainRegistrationInputValue('last_name') : ($('input[name="last_name"]').val() || ''); 16114 var email = (typeof getMainRegistrationInputValue === 'function') ? getMainRegistrationInputValue('email') : ($('input[name="email"]').val() || ''); 16115 if (!first_name || !last_name || !email) { 16116 return $(); 16117 } 16118 var $menu = $packageContainer.find('.packageContainer__head .dropdown-menu-main'); 16119 if ($menu.length) { 16120 if (!assignDropdownAlreadyHasEmail($menu, email)) { 16121 $menu.append( 16122 '<li><a href="javascript:void(0)" class="user-info-prev buyer" data-buyer="1" data-user="buyer">' + 16123 '<p>' + first_name + ' ' + last_name + ' (Buyer)</p><span>' + email + '</span></a></li>' 16124 ); 16125 } 16126 return $packageContainer.find('.packageContainer__head .user-info-prev.buyer').first(); 16127 } 16128 var $head = $packageContainer.find('.packageContainer__head .dropdown, .packageContainer__head'); 16129 if ($head.length) { 16130 $head.append( 16131 '<a href="javascript:void(0)" class="btn theme-light-btn user-info-prev buyer" data-buyer="1" data-user="buyer" style="display:none;">' + 16132 '<p>' + first_name + ' ' + last_name + ' (Buyer)</p><span>' + email + '</span></a>' 16133 ); 16134 return $packageContainer.find('.user-info-prev.buyer').first(); 16135 } 16136 return $(); 16137} 16138 16139function autoAssignRemainingTicketsToParent() { 16140 if (!isTicketGroupMaxEnabled()) { 16141 return true; 16142 } 16143 var slots = getUnassignedTicketPackageSlots(); 16144 if (!slots.length) { 16145 clearTicketGroupMaxError(); 16146 return true; 16147 } 16148 if (!getParentRegistrationEmail()) { 16149 showTicketGroupMaxError('Group attendee limit reached. Please fill parent registrant details so remaining tickets can be auto-assigned to the parent.'); 16150 return false;
16151 } 16152 _ticketGroupMaxAutoAssigning = true; 16153 try { 16154 var safety = 0; 16155 while (getUnassignedTicketPackageSlots().length > 0 && safety < 100) { 16156 safety++; 16157 var $container = getUnassignedTicketPackageSlots()[0]; 16158 var $buyerLink = ensureBuyerAssignLinkInPackage($container); 16159 if (!$buyerLink.length) { 16160 showTicketGroupMaxError('Group attendee limit reached. Unable to auto-assign remaining tickets to the parent registrant.'); 16161 return false; 16162 } 16163 var beforeAssigned = $container.find('> .aPackage').length; 16164 $buyerLink.trigger('click'); 16165 var afterAssigned = $container.find('> .aPackage').length; 16166 if (afterAssigned <= beforeAssigned) { 16167 showTicketGroupMaxError('Group attendee limit reached. Unable to auto-assign remaining tickets to the parent registrant.'); 16168 return false; 16169 } 16170 } 16171 } finally { 16172 _ticketGroupMaxAutoAssigning = false; 16173 } 16174 if (getUnassignedTicketPackageSlots().length > 0) { 16175 showTicketGroupMaxError('Group attendee limit reached. Remaining tickets must be assigned to the parent registrant.'); 16176 return false; 16177 } 16178 clearTicketGroupMaxError(); 16179 updateTicketGroupMaxAssignUi(); 16180 return true; 16181} 16182 16183function updateTicketGroupMaxAssignUi() { 16184 if (!isTicketGroupMaxEnabled()) { 16185 return; 16186 } 16187 var atMax = isTicketGroupMaxReached(); 16188 $('.packageContainer__head .assign-user-to-package').closest('li').each(function () { 16189 $(this).toggle(!atMax); 16190 }); 16191 if (typeof simplifiedTicketAssignment !== 'undefined' && parseInt(simplifiedTicketAssignment)) { 16192 $('.fakePackage .assign-user-to-package').toggle(!atMax); 16193 } 16194} 16195 16196function canAssignEmailUnderTicketGroupMax(email) { 16197 if (!isTicketGroupMaxEnabled() || _ticketGroupMaxAutoAssigning) { 16198 return true; 16199 } 16200 if (wouldExceedTicketGroupMax(email)) { 16201 showTicketGroupMaxError(); 16202 return false; 16203 } 16204 clearTicketGroupMaxError(); 16205 return true; 16206} 16207 16208function canAddNewOtherAttendeeUnderTicketGroupMax() { 16209 if (!isTicketGroupMaxEnabled() || _ticketGroupMaxAutoAssigning) { 16210 return true; 16211 } 16212 if (isTicketGroupMaxReached()) { 16213 showTicketGroupMaxError(); 16214 return false; 16215 } 16216 clearTicketGroupMaxError(); 16217 return true; 16218} 16219 16220function afterTicketAssignmentApplyGroupMaxRules(assignedEmail) { 16221 if (!isTicketGroupMaxEnabled() || _ticketGroupMaxAutoAssigning) { 16222 return true; 16223 } 16224 // Assign clicks must only assign ONE ticket. Auto-assign remaining 16225 // tickets to the parent happens on submit, not during assign. 16226 updateTicketGroupMaxAssignUi(); 16227 if (getTicketGroupMaxOtherCount() > getTicketGroupRegistrationMax()) { 16228 showTicketGroupMaxError(); 16229 return false; 16230 } 16231 clearTicketGroupMaxError(); 16232 return true; 16233} 16234 16235function validateAndEnforceTicketGroupMaxOnSubmit() { 16236 if (!isTicketGroupMaxEnabled()) { 16237 return true; 16238 } 16239 if (getTicketGroupMaxOtherCount() > getTicketGroupRegistrationMax()) { 16240 showTicketGroupMaxError(); 16241 return false; 16242 } 16243 if (isTicketGroupMaxReached() && getUnassignedTicketPackageSlots().length > 0) { 16244 if (!autoAssignRemainingTicketsToParent()) { 16245 return false; 16246 } 16247 } 16248 if (getTicketGroupMaxOtherCount() > getTicketGroupRegistrationMax()) { 16249 showTicketGroupMaxError(); 16250 return false; 16251 } 16252 clearTicketGroupMaxError(); 16253 updateTicketGroupMaxAssignUi(); 16254 return true; 16255} 16256/* === End Ticket Group Registration Max helpers === */ 16257 16258function checkAssignedPackages() { 16259 16260 selected = $('.user_list').val(); 16261 16262 if(isTicket){ 16263 sumTotal=0; 16264 let appId = 20550; 16265 let organizationID= '323'; 16266 let excluded_app_ids = [18834,18423, 17033,15625,14838,10401, 10397, 10710, 11778, 11759, 11755, 11772, 11866, 1000200,11866, 14376, 14377, 14525,14172,14838,14853,11561,15461,15741,16279,16782,16783,18414,20463, 1000000441,1000001478, 10003234, 10003307, 1000008001]; 16267 let excluded_org_ids = ["78"]; 16268 if(!excluded_app_ids.includes(appId) && !excluded_org_ids.includes(organizationID)){ 16269 if ($('.packageContainer .packageContainer__head', window.parent.document).length) { 16270 $('.packageContainer .packageContainer__head', window.parent.document).each(function () { 16271 var $package = $(this); 16272 var oriTotal = $package.attr("data-ori-total"); 16273 sumTotal=parseInt(oriTotal)+sumTotal; 16274 }); 16275 selected=sumTotal; 16276 } 16277 }else{ 16278 if ($('.packageContainer .packageContainer__head', window.document).length) { 16279 $('.packageContainer .packageContainer__head', window.document).each(function () { 16280 var $package = $(this); 16281 var oriTotal = $package.attr("data-ori-total"); 16282 sumTotal=parseInt(oriTotal)+sumTotal; 16283 }); 16284 selected=sumTotal; 16285 } 16286 } 16287 } 16288 16289 count_value = 0; 16290 16291 var groupEmailsArray = $("input[name='user_list[]']").map(function () { 16292 if ($(this).val()) { 16293 count_value++; 16294 var obj = jQuery.parseJSON($(this).val()); 16295 if (obj.email) { 16296 return obj.email; 16297 } else { 16298 return; 16299 } 16300 16301 } 16302 }).get(); 16303 groupEmails = groupEmailsArray.join(","); 16304 var appId = 20550; 16305 // if(appId == 19899 && selected == 50 && count_value == 49 && $("#user100").val() != ""){ 16306 // count_value=50; 16307 // } 16308 16309 // Ticket group max: auto-assign remaining to parent before completeness check 16310 if (typeof validateAndEnforceTicketGroupMaxOnSubmit === 'function' && !validateAndEnforceTicketGroupMaxOnSubmit()) { 16311 return false;
16312 } 16313 16314 // Recalculate assignment count after possible auto-assign 16315 count_value = 0; 16316 groupEmailsArray = $("input[name='user_list[]']").map(function () { 16317 if ($(this).val()) { 16318 count_value++; 16319 var obj = jQuery.parseJSON($(this).val()); 16320 if (obj.email) { 16321 return obj.email; 16322 } else { 16323 return; 16324 } 16325 } 16326 }).get(); 16327 groupEmails = groupEmailsArray.join(","); 16328 16329 $("#group-error").remove(); 16330 if (!$('.user-links').length == 0) { 16331 if (selected != null && (isTicket ? selected > 1 : selected >= 1)) { 16332 if (selected != count_value && selected !== undefined) { 16333 16334 // console.log('$("#bypass_auto").length'); 16335 // console.log($("#bypass_auto").length); 16336 if($("#bypass_auto").length == 0 && $("#bypass").length == 0){ 16337 if(isTicket){ 16338 if(isTicketTop){ 16339 $('.user_list').after('<label id="group-error" class="error" for="group" style="display: block; color: red;">Please assign below tickets to user</label>'); 16340 }else{ 16341 $('.packageBlock').after('<label id="group-error" class="error" for="group" style="display: block; color: red;">Please assign below tickets to user</label>'); 16342 } 16343 16344 }else{ 16345 if (appId == 9185) { 16346 $('.user_list').after('<label id="group-error" class="error" for="group" style="display: block; color: red;">Please add your spouse/partner details by clicking the button below - It is mandatory, if you wish to bring your spouse/partner to any of the events.</label>'); 16347 } else { 16348 $('.user_list').after('<label id="group-error" class="error" for="group" style="display: block; color: red;">Secondary users are required, please add all Secondary user</label>'); 16349 } 16350 } 16351 16352 16353 16354 return false; 16355 } 16356 } 16357 } 16358 } 16359 16360 16361 return true; 16362} 16363 16364function checkAllAddonsAssigned() { 16365 16366 if(isTicket && isGroupRegistrationField){ 16367 let remainingAddons= $('.packageBlock').attr("data-remaining-addons"); 16368 if (remainingAddons != "") { 16369 if(isTicketTop){ 16370 $('.user_list').after('<label id="group-error" class="error" for="group" style="display: block; color: red;">Please assign the remaining addons: ' + remainingAddons + '</label>'); 16371 }else{ 16372 $('.packageBlock').after('<label id="group-error" class="error" for="group" style="display: block; color: red;">Please assign the remaining addons: ' + remainingAddons + '</label>'); 16373 } 16374 16375 return false; 16376 } 16377 } 16378 16379 16380 return true; 16381} 16382 16383function escapeSelector(id) { 16384 return id.replace(/\[/g, '\\[').replace(/\]/g, '\\]'); 16385} 16386 function shouldSkipValidation(inputField) { 16387 // Skip validation for hidden fields 16388 if (inputField.type === "hidden") { 16389 return true; 16390 } 16391 16392 // Skip validation if parent form_field_grp is hidden 16393 const formFieldGrp = inputField.closest('.form_field_grp'); 16394 if (formFieldGrp && formFieldGrp.style.display === 'none') { 16395 return true; 16396 } 16397 16398 // Skip if parent page-break-fields is hidden 16399 const parentField = inputField.closest('.page-break-fields'); 16400 if (parentField && parentField.style.display === 'none') { 16401 return true; 16402 } 16403 16404 return false; 16405 } 16406 16407 // Function to validate radio button group 16408 function validateRadioGroup(groupName, group, errorLabelId,PLEASE_SELECT_OPTION_MESSAGE, FIELD_REQUIRED_MESSAGE) { 16409 const isSelected = $(`input[name='${escapeSelector(groupName)}']:checked`).length > 0; 16410 if (!isSelected) { 16411 group.find('.error').remove(); 16412 if (!group.find(`#${errorLabelId}`).length) { 16413 group.append(`<label id="${errorLabelId}" class="error" for="${escapeSelector(groupName)}">${PLEASE_SELECT_OPTION_MESSAGE}</label>`); 16414 } 16415 return true; 16416 } 16417 $(`#${errorLabelId}`).remove(); 16418 return false;
16419 } 16420 16421 // Function to validate checkbox group 16422 function validateCheckboxGroup(inputField, groupName, group, errorLabelId,PLEASE_SELECT_OPTION_MESSAGE, FIELD_REQUIRED_MESSAGE) { 16423 if (!inputField.required) return false; 16424 16425 const isChecked = $(`input[name='${escapeSelector(groupName)}']:checked`).not('input[type="hidden"]').length > 0; 16426 if (!isChecked) { 16427 group.find('.error').remove(); 16428 if (!group.find(`#${errorLabelId}`).length) { 16429 group.append(`<label id="${errorLabelId}" class="error" for="${escapeSelector(groupName)}" style="display:block; color: red;">${FIELD_REQUIRED_MESSAGE}</label>`); 16430 } 16431 return true; 16432 } 16433 $(`#${errorLabelId}`).remove(); 16434 return false; 16435 } 16436 16437 // Function to validate individual field 16438 function validateIndividualField(inputField, field, errorLabelId, escapedFieldId,PLEASE_SELECT_OPTION_MESSAGE, FIELD_REQUIRED_MESSAGE) { 16439 const isInvalid = inputField.required && ( 16440 inputField.value.trim() === "" || 16441 (inputField.type === "checkbox" && !inputField.checked) 16442 ); 16443 16444 if (isInvalid) { 16445 $(`#${errorLabelId}`).remove(); 16446 if ($(`#${escapedFieldId}-error`).length > 0) { 16447 $(`#${escapedFieldId}-error`).remove(); 16448 } 16449 if (!field.find(`#${errorLabelId}`).length && field.length > 0) { 16450 field.after(`<label id="${errorLabelId}" class="error" for="${escapedFieldId}">${FIELD_REQUIRED_MESSAGE}</label>`); 16451 } 16452 return true; 16453 } 16454 $(`#${errorLabelId}`).remove(); 16455 return false; 16456 } 16457 16458 // simple page break form 16459 $(document).ready(function() { 16460 if($('#pagebreak-steps-simple-form').length >0 ) { 16461 var stepsArray =[]; 16462 $('.page-break-fields').hide(); 16463 $('.page-break-fields').parent().hide(); 16464 if (stepsArray.length > 0) { 16465 $('.page-break-element-' + stepsArray[0]).parent().show(); 16466 $('.page-break-element-' + stepsArray[0]).show(); 16467 $('.page-break-element-' + stepsArray[0]).find('.searchable-select').each(function () { 16468 window.initFormSelect2($(this), true); 16469 }); 16470 var newContent = '<div id="uniqueContent" class="col-sm-12">' + 16471 '<div class="pagebreak-btns">' + 16472 '<button type="button" onclick="ShowFormFieldPageBreak(1)" class="btn primary">Next</button>' + 16473 '</div>' + 16474 '</div>'; 16475 $('.page_break_form').append(newContent); 16476 } 16477 } 16478 }); 16479 gStepNumber = 1; 16480 fromBackBtn = false; 16481 tcktModifiedFromBackBtn = false; 16482 function ShowFormFieldPageBreak(steps){ 16483 16484 if($('#pagebreak-steps-simple-form').length >0 ) { 16485 var stepsArray =[]; 16486 let appId = 20550; 16487 let excluded_app_ids = [10001417]; 16488 if(excluded_app_ids.includes(appId)){ 16489 var stepsArray=['78932','78933']; 16490 } 16491 $("#LoadingBar").show(); 16492 if(gStepNumber > steps){ 16493 fromBackBtn = true; 16494 } else { 16495 fromBackBtn = false; 16496 } 16497 gStepNumber = steps; 16498 var error_count=false; 16499 var currentPageValidate = null; 16500 currentPageValidate = stepsArray[steps - 1]; 16501 const PLEASE_SELECT_OPTION_MESSAGE = "Please select an option."; 16502 const FIELD_REQUIRED_MESSAGE = "This field is required."; 16503 // Select all input fields within the page-break element 16504 16505 document.querySelectorAll(`.page-break-element-${currentPageValidate} input, .page-break-element-${currentPageValidate} select`).forEach(inputField => { 16506 if (shouldSkipValidation(inputField)) { 16507 return; 16508 } 16509 16510 if (inputField.id || inputField.name) { 16511 const escapedFieldId = inputField.id ? escapeSelector(inputField.id) : null; 16512 const field = escapedFieldId ? $(`#${escapedFieldId}`) : null; 16513 const groupName = inputField.name; 16514 const group = groupName ? $(`input[name='${escapeSelector(groupName)}']`).closest(".form_field_grp") : null; 16515 const errorLabelId = groupName ? `${groupName.replace(/\[|\]/g, "")}-error` : `${escapedFieldId}-error`; 16516 if (inputField.type === "radio" && groupName) { 16517 error_count = validateRadioGroup(groupName, group, errorLabelId, PLEASE_SELECT_OPTION_MESSAGE, FIELD_REQUIRED_MESSAGE) || error_count; 16518 } 16519 else if (inputField.type === "checkbox" && groupName) { 16520 error_count = validateCheckboxGroup(inputField, groupName, group, errorLabelId, PLEASE_SELECT_OPTION_MESSAGE, FIELD_REQUIRED_MESSAGE) || error_count; 16521 } 16522 else { 16523 error_count = validateIndividualField(inputField, field, errorLabelId, escapedFieldId, PLEASE_SELECT_OPTION_MESSAGE, FIELD_REQUIRED_MESSAGE) || error_count; 16524 } 16525 } 16526 }); 16527 16528 if (error_count) { 16529 $("#LoadingBar").hide(); 16530 return false;
16531 } 16532 $("#LoadingBar").hide(); 16533 $('.page-break-fields').hide(); 16534 $('.page-break-fields').parent().hide(); 16535 if (stepsArray.length > 0) { 16536 $('.page-break-element-' + stepsArray[steps]).parent().show(); 16537 $('.page-break-element-' + stepsArray[steps]).show(); 16538 $('.page-break-element-' + stepsArray[steps]).find('.searchable-select').each(function () { 16539 window.initFormSelect2($(this), true); 16540 }); 16541 if (steps == 0) { 16542 var newContent = '<div id="uniqueContent" class="col-sm-12">' + 16543 '<div class="pagebreak-btns">' + 16544 '<button type="button" onclick="ShowFormFieldPageBreak(' + (steps + 1) + ')" class="btn primary">Next</button>' + 16545 '</div>' + 16546 '</div>'; 16547 }else if(steps ==stepsArray.length - 1){ 16548 var newContent = '<div id="uniqueContent" class="col-sm-12">' + 16549 '<div class="pagebreak-btns">' + 16550 '<button type="button" onclick="ShowFormFieldPageBreak(' + (steps-1) + ')" class="btn">Back</button>' + 16551 '</div>' + 16552 '</div>'; 16553 } 16554 else { 16555 16556 var newContent = '<div id="uniqueContent" class="col-sm-12">' + 16557 '<div class="pagebreak-btns">' + 16558 '<button type="button" onclick="ShowFormFieldPageBreak(' + (steps - 1) + ')" class="btn">Back</button>' + 16559 '<button type="button" onclick="ShowFormFieldPageBreak(' + (steps + 1) + ')" class="btn primary">Next</button>' + 16560 '</div>' + 16561 '</div>'; 16562 } 16563 if ($('#uniqueContent').length > 0) { 16564 $('#uniqueContent').replaceWith(newContent); 16565 }else{ 16566 $('.page_break_form').append(newContent); 16567 } 16568 steps=steps+1; 16569 document.querySelectorAll('.pagebreak-steps li').forEach((li, index) => { 16570 if (index < steps - 1) li.className = 'visited'; 16571 else if (index === steps - 1) li.className = 'active'; 16572 else li.className = ''; 16573 }); 16574 } 16575 if(typeof ShowFormFieldPageBreakCallBack !== 'undefined'){ 16576 ShowFormFieldPageBreakCallBack(steps); 16577 } 16578 } 16579 16580 if (!skipEmptyPageSimpleView(stepsArray, steps-1, fromBackBtn)) { 16581 return false; 16582 } 16583 16584 } 16585 16586 function checkSimpleViewHasAtleastOneField($currentPage){ 16587 16588 var hasAtleastOneField = false; 16589 16590 document.querySelectorAll(`.page-break-element-${$currentPage} input, .page-break-element-${$currentPage} select,.page-break-element-${$currentPage} p`).forEach(inputField => { 16591 // Skip validation for hidden fields 16592 16593 if (inputField.type === "hidden" || inputField.style.display === 'none') { 16594 return; // Skip hidden fields completely 16595 } 16596 const parentField = inputField.closest('.form_field_grp'); 16597 if (parentField && parentField.style.display === 'none') { 16598 return; // Skip this field if the parent container is hidden 16599 } 16600 if (inputField.id || inputField.name) { // Ensure the input field has an ID or a name 16601 16602 hasAtleastOneField = true; 16603 } 16604 }); 16605 16606 return hasAtleastOneField; 16607 } 16608 16609 function showPageBreakError() { 16610 if ($('.page-break-error-show').length) { 16611 $('.page-break-error-show').remove(); 16612 } 16613 16614 // Correctly apply CSS to '.page_break_heading' 16615 $('.page_break_heading').css('color', 'black'); 16616 16617 var errorIds = []; 16618 // Correctly select elements with 'has-error' but not 'valid' 16619 $('.has-error:not(.valid)').each(function() { 16620 var id = $(this).attr('id'); // Get the id of the element 16621 if (id) { 16622 errorIds.push(removeErrorSuffix(id)); // Apply suffix removal and add to array 16623 16624 } 16625 }); 16626 16627 // Remove duplicates from error IDs and print them 16628 errorIds = removeDuplicates(errorIds); 16629 16630 16631 var labelIds = []; 16632 errorIds.forEach(function(id) { 16633 var forValue = $('label[for="' + id + '"]').attr('for'); 16634 if (forValue) { 16635 var parentSpan = $('label[for="' + forValue + '"]').closest('span[class*="page-break-element"]'); 16636 if (parentSpan.length) { 16637 var classAttr = parentSpan.attr('class'); 16638 var match = classAttr.match(/page-break-element-(\d+)/); 16639 if (match && match[1]) { 16640 labelIds.push(match[1]); // Add the extracted number to the array 16641 } 16642 } 16643 } 16644 }); 16645 16646 // Remove duplicates from label IDs and apply CSS styling 16647 labelIds = removeDuplicates(labelIds); 16648 labelIds.forEach(function(id) { 16649 $('.label_' + id).css('color', '#F36531'); // Correct the syntax for applying CSS 16650 $('.label_' + id) 16651 .after('<span style="color:red;" class="page-break-error-show">missing information</span>'); 16652 16653 }); 16654 } 16655 16656 function removeErrorSuffix(inputString) { 16657 return inputString.split("-error")[0]; 16658 } 16659 16660 function removeDuplicates(array) { 16661 let uniqueElements = []; 16662 let seenElements = {}; 16663 16664 array.forEach(el => { 16665 if (!seenElements.hasOwnProperty(el)) { 16666 uniqueElements.push(el); 16667 seenElements[el] = true; 16668 } 16669 }); 16670 16671 return uniqueElements; 16672 } 16673 16674 /** 16675 * Base64-encode the exact UTF-8 JSON signed by the server. 16676 * TextEncoder converts non-ASCII characters to bytes before btoa(). 16677 */ 16678 function encodeShuttlePaymentData(str) { 16679 try { 16680 var bytes = new TextEncoder().encode(str); 16681 var binary = ''; 16682 for (var i = 0; i < bytes.length; i++) { 16683 binary += String.fromCharCode(bytes[i]); 16684 } 16685 return btoa(binary); 16686 } catch (e) { 16687 console.error('Unable to UTF-8/base64 encode Shuttle payment data.', e); 16688 return null; 16689 } 16690 } 16691 16692 /** 16693 * SECURITY: Generate shuttle signature server-side to protect secret keys 16694 * This function makes an AJAX call to the server to generate the signature 16695 * without exposing secret keys to the client-side 16696 */ 16697 function generateSecureShuttleSignature(sharedKey, methodName, options, callback) { 16698 // CRITICAL FIX: Store the stringified options to ensure consistency 16699 var optionsString = JSON.stringify(options); 16700 16701 $.ajax({ 16702 url: '/en/shuttle/generateShuttleSignature', 16703 type: 'POST', 16704 data: { 16705 methodName: methodName, 16706 options: optionsString 16707 }, 16708 dataType: 'json', 16709 success: function(response) { 16710 console.log('Shuttle signature response:', response); 16711 if (response.success) { 16712 // Return both signature and normalized options 16713 // This ensures the EXACT same string is used for both signature and data attribute 16714 callback(response.signature, response.normalizedOptions); 16715 } else { 16716 console.error('Server error generating signature:', response.error); 16717 callback(null, null); 16718 } 16719 }, 16720 error: function(xhr, status, error) { 16721 console.error('AJAX error generating signature:', error); 16722 console.error('Response text:', xhr.responseText); 16723 console.error('Status:', xhr.status); 16724 callback(null, null); 16725 } 16726 }); 16727 } 16728 16729 // REMOVED: Old insecure generateSignature function that exposed secret keys 16730 // function generateSignature(sharedKey, secretKey, methodName, options) { ... } 16731 16732 function processShuttle(paymentResultForShuttle) { 16733 $("#LoadingBar").show(); 16734 var user_id = paymentResultForShuttle.userId; 16735 var currency = paymentResultForShuttle.currency; 16736 var amount = paymentResultForShuttle.amount; 16737 var userType = paymentResultForShuttle.userType; 16738 var sharedKey = paymentResultForShuttle.shuttleSharedApiKey; 16739 // SECURITY: Secret key removed from client-side - will be handled server-side 16740 // var secretKey = paymentResultForShuttle.shuttleSecretApiKey; 16741 var instanceKey = paymentResultForShuttle.is_sandbox == 1 ? paymentResultForShuttle.sandbox_key : paymentResultForShuttle.live_instance_key; 16742 16743 // Safely get user data and trim whitespace to ensure consistency 16744 var firstName = $('input[name="first_name"]').length ? $('input[name="first_name"]').val().trim() : ''; 16745 var lastName = $('input[name="last_name"]').length ? $('input[name="last_name"]').val().trim() : ''; 16746 var email = $('input[name="email"]').length ? $('input[name="email"]').val().trim() : ''; 16747 var phoneNumber = $('input[name="phone_number"]').length ? $('input[name="phone_number"]').val().trim() : ''; 16748 var decodedUserId = user_id ? atob(user_id) : ''; 16749 16750 // Avoid stacked buttons/containers on repeated submit 16751 $('#shuttle_button_pay, #payment_container, #shuttle_checkout_overlay').remove(); 16752 16753 // Keep Shuttle's native MODEL modal UI (Checkout header + card form). 16754 // parent container stays in DOM for Shuttle; do not wrap in a custom overlay. 16755 var modalHTML = '<button type="button" id="shuttle_button_pay" style="display:none;">Pay Now</button>' 16756 + '<div id="payment_container" style="display:none;"></div>'; 16757 document.body.insertAdjacentHTML('beforeend', modalHTML); 16758 16759 var success_url = 'form/processShuttleResponseSuccess/' + user_id + '/' + userType; 16760 var cancel_url = 'form/processShuttleResponseFailure'; 16761 console.log("paymentResultForShuttle:"); 16762 console.log(paymentResultForShuttle); 16763 console.log("success_url:" + success_url); 16764 console.log("cancel_url:" + cancel_url); 16765 16766 // MODEL = Shuttle's centered modal (original UI). disable_new_window keeps it on-page. 16767 let style = "MODEL"; 16768 let disable_new_window = true; 16769 if (appId === 15017 || appId === 22682) { 16770 style = "INLINE"; 16771 disable_new_window = false;
16772 } 16773 16774 var options = { 16775 instance_key: instanceKey, 16776 currency: currency, 16777 amount: amount, 16778 account: { 16779 "crm_key": decodedUserId, 16780 "first_name": firstName, 16781 "last_name": lastName, 16782 "email": email, 16783 "phone": phoneNumber 16784 }, 16785 style: style, 16786 parent: "payment_container", 16787 title: "Checkout", 16788 checkout_text: "Payment of " + currency + " " + amount, 16789 success_url: success_url, 16790 cancel_url: cancel_url, 16791 disable_new_window: disable_new_window, 16792 default_logo_url: false, 16793 description: (paymentResultForShuttle.invoice_description || '').toString(), 16794 theme: (organizationId == 1733) ? { 16795 "headerBackground": "#FFFF00", 16796 "headerBorderBottom": "5px solid #FF0000", 16797 "baseBorderRadius": 50, 16798 "colorPrimaryBase": "#0000FF", 16799 "color": "#A52A2A", 16800 "fontSize": "36px" 16801 } : { 16802 "headerBackground": "yellow", 16803 "headerBorderBottom": "5px solid #f00", 16804 "baseBorderRadius": 50, 16805 "colorPrimaryBase": "#00f", 16806 "color": "brown", 16807 "fontSize": "36px" 16808 } 16809 }; 16810 if (organizationId == 1733) { 16811 options.save_card = true; 16812 options.hide_save_card_toggle = true; 16813 } 16814 16815 console.log("Generating Shuttle signature with options:", options); 16816 16817 // CRITICAL FIX: Generate signature FIRST, then use normalized options 16818 // This ensures the EXACT same JSON string is used for both signature and data attribute 16819 generateSecureShuttleSignature(sharedKey, "doPayment", options, function(signature, normalizedOptions) { 16820 if (signature && normalizedOptions) { 16821 console.log("Signature generated successfully"); 16822 console.log("Using normalized options for data attribute"); 16823 16824 var encodedPayment = encodeShuttlePaymentData(normalizedOptions); 16825 if (!encodedPayment) { 16826 console.error('Failed to base64-encode Shuttle payment options'); 16827 alert('Payment initialization failed. Please try again or contact support.'); 16828 $("#LoadingBar").hide(); 16829 return; 16830 } 16831 16832 // Only set attrs on the Shuttle pay button â never all page buttons 16833 var $shuttleBtn = $("#shuttle_button_pay"); 16834 $shuttleBtn.attr("data-shuttle-payment", encodedPayment); 16835 $shuttleBtn.attr("data-shuttle-signature", signature); 16836 16837 Shuttle.bindButtons(); 16838 if ($shuttleBtn[0] && typeof $shuttleBtn[0].click === 'function') { 16839 $shuttleBtn[0].click(); 16840 } else { 16841 $shuttleBtn.trigger('click'); 16842 } 16843 $("#LoadingBar").hide(); 16844 } else { 16845 console.error('Failed to generate secure shuttle signature'); 16846 alert('Payment initialization failed. Please try again or contact support.'); 16847 $("#LoadingBar").hide(); 16848 } 16849 }); 16850 16851 window.addEventListener("message", function (e) { 16852 if (e.data && e.data.message === "PAYMENT_SUCCESS" && e.data.success === true) { 16853 var email = $('input[name="email"]').val(); 16854 16855 if (email) { 16856 $("#LoadingBar").show(); 16857 const activateUserByEmailURL = '/en/form/activateUserByEmail/'; 16858 var postData = { 16859 email: email, 16860 payment: e.data.payment ? JSON.stringify(e.data.payment) : '' 16861 }; 16862 if (e.data.id) postData.payment_response = JSON.stringify({ 16863 id: e.data.id, 16864 reference: e.data.reference, 16865 gateway_status: e.data.gateway_status, 16866 status: e.data.status, 16867 transaction: e.data.transaction, 16868 payment: e.data.payment 16869 }); 16870 $.ajax({ 16871 url: activateUserByEmailURL, 16872 type: 'POST', 16873 data: postData, 16874 dataType: 'json', 16875 success: function(response) { 16876 $("#LoadingBar").hide(); 16877 console.log('User activation response:', response); 16878 if (response && response.status === true) { 16879 // Optionally redirect or show success UI using response data 16880 } 16881 }, 16882 error: function(xhr, status, error) { 16883 $("#LoadingBar").hide(); 16884 console.error('Error activating user:', error); 16885 } 16886 }); 16887 } 16888 } 16889 }); 16890 } 16891 var dependencyArr = []; 16892
16893 function ticketDependency() { 16894 var ticketPackagesForDep = null; 16895 if (typeof TicketPackages !== 'undefined' && TicketPackages) { 16896 ticketPackagesForDep = TicketPackages; 16897 } 16898 if (!ticketPackagesForDep && localStorage.getItem("TicketPackages")) { 16899 try { 16900 ticketPackagesForDep = JSON.parse(localStorage.getItem("TicketPackages")); 16901 if (typeof TicketPackages !== 'undefined') { 16902 TicketPackages = ticketPackagesForDep; 16903 } 16904 } catch (e) { 16905 ticketPackagesForDep = null; 16906 } 16907 } 16908 16909 var dependecyList = []; 16910 if (dependencyArr) { 16911 $.each(dependencyArr, function (key, value) { 16912 var dependencyItem = { 16913 child_id: value.child_id, 16914 depen: [] 16915 }; 16916 16917 $.each(value.depen, function (depKey, depValue) { 16918 var parentConditions = []; 16919 16920 $.each(depValue, function (index, depItem) { 16921 var conditions = []; 16922 16923 $.each(depItem.dependency, function (dIndex, dItem) { 16924 if (depItem.input_type === 'ticket') { 16925 16926 if(enableV5ApiDiscount && isUpgradeDowngradeProfile && !isGroupRegistrationField){ 16927 if(dItem.value){ 16928 if ($('.package-block-' + dItem.value).is(':hidden')) { 16929 if($('#fld_' + value.child_id).val()){ 16930 $('#fld_' + value.child_id).val('').trigger("change"); 16931 } 16932 } 16933 } 16934 16935 } 16936 $('#grp_fld_' + value.child_id).parent().hide(); 16937 conditions.push(dItem); 16938 } 16939 }); 16940 16941 if (conditions.length > 0) { 16942 parentConditions.push({ 16943 parent_id: depItem.parent_id, 16944 input_type: depItem.input_type, 16945 label: depItem.label, 16946 dependency: conditions 16947 }); 16948 } 16949 }); 16950 16951 if (parentConditions.length > 0) { 16952 dependencyItem.depen.push(parentConditions); 16953 } 16954 }); 16955 16956 if (dependencyItem.depen.length > 0) { 16957 dependecyList.push(dependencyItem); 16958 } 16959 }); 16960 } 16961 if(ticketPackagesForDep){ 16962 16963 if (dependecyList.length > 0){ 16964 $.each(dependecyList, function (key, value) { 16965 var conditions = 'if('; 16966 $.each(value.depen, function (depKey, depValue) { 16967 var sign = ''; 16968 if (depValue.length > 1) { 16969 sign = '&&'; 16970 } else { 16971 sign = '||'; 16972 } 16973 var lastChar = conditions.charAt(conditions.length - 1); 16974 if (lastChar === ')') { 16975 conditions += sign + '('; 16976 } else { 16977 conditions += '('; 16978 } 16979 $.each(depValue, function (index, depItem) { 16980 $.each(depItem.dependency, function (dIndex, dItem) { 16981 var keyExists = false; 16982 var packageKey = dItem.value !== null && dItem.value !== undefined ? String(dItem.value) : ''; 16983 if (packageKey && ticketPackagesForDep.hasOwnProperty(packageKey)) { 16984 keyExists = true; 16985 } 16986 var lastChar = conditions.charAt(conditions.length - 1); 16987 if (lastChar === '(') { 16988 16989 } else { 16990 conditions += sign; 16991 } 16992 if (dItem.condition == '=') { 16993 if (keyExists) { 16994 conditions += true; 16995 } else { 16996 conditions += false; 16997 } 16998 } else { 16999 if (keyExists) { 17000 conditions += false; 17001 } else { 17002 conditions += true; 17003 } 17004 } 17005 }); 17006 }); 17007 conditions += ' )'; 17008 17009 }); 17010 17011 conditions += "){ $('#grp_fld_" + value.child_id + "').parent().show(); }else{ $('#grp_fld_" + value.child_id + "').parent().hide(); $('#grp_fld_" + value.child_id + "').find('input[type=\"text\"], input[type=\"number\"], input[type=\"email\"], input[type=\"file\"], select, textarea').val(''); }"; 17012 eval(conditions); 17013 17014 }); 17015 } 17016 } 17017 } 17018 17019 if (typeof registerTicketPackagesPostMessageListener === 'function') { 17020 registerTicketPackagesPostMessageListener(); 17021 } 17022 17023 17024 17025 function processTapPayment(paymentResultForTapPayment) { 17026 $("#LoadingBar").show(); 17027 var amount = paymentResultForTapPayment.amount; 17028 var userId = paymentResultForTapPayment.userId; 17029 var userType = paymentResultForTapPayment.userType; 17030 jQuery.ajax({ 17031 url: '/form/processTapPayResponse/', 17032 type: "POST", 17033 data: { 17034 amount: amount, 17035 userId: userId, 17036 userType: userType 17037 }, 17038 success: function (response) { 17039 $("#LoadingBar").hide(); 17040 response = eval('(' + response + ')'); 17041 if (response.status == true) { 17042 window.location.href = response.checkoutUrl; 17043 } 17044 }, 17045 error: function (xhr, status, error) { 17046 console.error('Error processing payment:', error); 17047 } 17048 }); 17049 } 17050 function processSnapPayment(paymentResultForSnapPayment) { 17051 $("#LoadingBar").show(); 17052 var amount = paymentResultForSnapPayment.amount; 17053 var userId = paymentResultForSnapPayment.userId; 17054 var userType = paymentResultForSnapPayment.userType; 17055 var sessionId =paymentResultForSnapPayment.session_id; 17056 jQuery.ajax({ 17057 url: '/form/processSnapPayResponse/', 17058 type: "POST", 17059 data: { 17060 amount: amount, 17061 userId: userId, 17062 userType: userType, 17063 sessionId : sessionId 17064 }, 17065 success: function (response) { 17066 $("#LoadingBar").hide(); 17067 response = eval('(' + response + ')'); 17068 if (response.status == true) { 17069 window.location.href = response.checkoutUrl; 17070 } 17071 }, 17072 error: function (xhr, status, error) { 17073 console.error('Error processing payment:', error); 17074 } 17075 }); 17076 } 17077 17078 17079 function validateTicketPackages() { 17080 ticketpackages=TicketPackages; 17081 const packageKeys = Object.keys(ticketpackages); 17082 if (packageKeys.length > 1) { 17083 return true; // More than one package 17084 } 17085 if (packageKeys.length === 1) { 17086 const singlePackage = ticketpackages[packageKeys[0]]; 17087 if (singlePackage.pkg_qty > 1) { 17088 return true; // Only one package, but quantity is greater than 1 17089 } 17090 } 17091 return false; // Only one package and quantity is 1 17092 } 17093
17094 const urlParams = new URLSearchParams(window.location.search); 17095 const disableEditProfile = urlParams.get('disableUpdate'); 17096 17097 // If disableEditProfile parameter exists, hide the submit button 17098 if (disableEditProfile) { 17099 $(document).ready(function() { 17100 $('#submit').hide(); 17101 }); 17102 } 17103 17104 17105 17106 var PackageDonationAmount=0; 17107 var PackageDonationAmountNotIncludeBookingFee=0; 17108 var PackageDonationArray=null; 17109 var taxAppliedUpgrade=0; 17110 var userDetailsEditTicket=null; 17111 var userDetailsEditDiscountAmount=0; 17112 var stripeConnectElement=false; 17113 var EditProfileDiscCode=null; 17114 var EditProfileDiscountAmount=null; 17115 var EditProfilePaymentMethodId=null; 17116 var multipleTicketPackageList=null; 17117 var multipleTicketPackageListOnly=null; 17118 var multipleTicketEdit = ''; 17119 var notAllowMultileTicketSelection = ''; 17120 var currencySymbol='$'; 17121 var UpgradePackageAndAddonsOnly = ''; 17122 var enableUpgradeOnlyPackageAddons = ''; 17123 var enableTicketUpgradeHidePurchasePackage = ''; 17124 var enableTicketUpgradeRestrictQty = ''; 17125 var enableTicketUpgradeShowHigher = ''; 17126 var enableTicketUpgradeChangePurchaseTicket = ''; 17127 var enableTicketUpgradeRestrictAddonsQty = ''; 17128 var enableTicketUpgradeRestrictAddonsQtyNumber = ''; 17129 var enableTicketUpgradeShowPurchasePackage = ''; 17130 var enableTicketUpgradeHideUserEdit = ''; 17131 var byPassGroupMember = ''; 17132 var selectedPkgUpgradeDowngrade = ''; 17133 var checkSingleTicketSelection = ''; 17134 var enableTicketUpgradeShowDiscount = ''; 17135 var isUniqueEmail = '0'; 17136 17137 var UpgradePackageAndAddonsOnlyTimeout=false; 17138 var upgradeProfileBookingFeeAmount=0; 17139 var upgradeProfileBookingFeeTax=0; 17140 var BookingFeeAmountUpgradeTax=true; 17141 var paymentDataUpgrade=null; 17142 var upgradeDowngradeUserId=null; 17143 var upgradeDowngradeAppId=null; 17144 var upgradeDowngradePaymentMethodDetailId=null; 17145 var isUpgradeDowngradeForAPI=false; 17146 var isRegistrationForm = true; 17147 var isUpgradeDowngradeProfile = ""; 17148 17149 if(multipleTicketEdit) { 17150 17151 var packageListforUpgradeOnly=[]; 17152 $(window).on('load', function () { 17153 var checkGroupRegistration=false; 17154 if(checkSingleTicketSelection && parseInt(enableTicketUpgradeHidePurchasePackage) =='1' & selectedPkgUpgradeDowngrade.trim() !== ""){ 17155 checkGroupRegistration =true; 17156 }else{ 17157 isUpgradeDowngradeForAPI =true; 17158 UpgradeProfile(() => { 17159 // new e request 17160 $("#LoadingBar").show(); 17161 if(isUpgradeDowngradeForAPI && enableV5ApiDiscount) { 17162 // Handle discount code 17163 EditProfileDiscCode = (EditProfileDiscCode === undefined || EditProfileDiscCode === "undefined") ? "" : EditProfileDiscCode; 17164 17165 if(EditProfileDiscCode !== null) { 17166 Object.assign(TicketPackages, { 17167 discountCode: EditProfileDiscCode, 17168 discountCodeStatusSuccessText: "Promo code is applied", 17169 discountCodeStatusErrorText: "Invalid Discount Code Entered", 17170 discountPriceText: 'Your Discounted price is ' 17171 }); 17172 } 17173 17174 // Set payment method if available 17175 if(upgradeDowngradePaymentMethodDetailId !== null) { 17176 TicketPackages['paymentMethodId'] = upgradeDowngradePaymentMethodDetailId; 17177 } 17178 TicketPackages['isUpgradeDowngradeProfile'] = (isUpgradeDowngradeProfile !== null && isUpgradeDowngradeProfile !== '' && (isUpgradeDowngradeProfile == 1 || isUpgradeDowngradeProfile == "1")) ? "1" : "0"; 17179 17180 syncEditProfilePackageQuantitiesFromPaymentPackages10002912(multipleTicketPackageListOnly); 17181 paymentSummaryObject.getPaymentSummaryDetails(TicketPackages); 17182 isUpgradeDowngradeForAPI = false;
17183 } 17184 17185 if(enableV5ApiDiscount) { 17186 upgradeDowngradeObject.showHidePackageOnUpgradeDowngrade( 17187 selectedPkgUpgradeDowngrade, 17188 multipleTicketPackageListOnly, 17189 enableTicketUpgradeShowHigher, 17190 0, 17191 enableTicketUpgradeHidePurchasePackage, 17192 enableTicketUpgradeRestrictAddonsQty, 17193 enableTicketUpgradeShowPurchasePackage 17194 ); 17195 if(typeof enableTicketUpgradeShowDiscount !== 'undefined' && enableTicketUpgradeShowDiscount !='0'){ 17196 upgradeDowngradeObject.showHideDiscountOnUpgradeDowngrade() 17197 console.log("enableTicketUpgradeShowDiscount END 0"); 17198 17199 } 17200 console.log("enableTicketUpgradeShowDiscount END"); 17201 setTimeout(function () { 17202 $('#spinner').remove(); 17203 $('body').css('filter', ''); // remove blur 17204 }, 3000); 17205 } 17206 17207 $("#LoadingBar").hide(); 17208 17209 }); 17210 } 17211 17212 17213 if(enableV5ApiDiscount){ 17214 $("#LoadingBar").show(); 17215 var upgradeDowngradeObject = new UpgradeDowngradeClass("https://www.codeseccon.com/rest/v5/registration/paymentSummary/upgradeDowngrade/getAmountPaid"); 17216 if(checkGroupRegistration !=true){ 17217 upgradeDowngradeObject.getUpgradeDowngradeUserData(upgradeDowngradeUserId,upgradeDowngradeAppId); 17218 } 17219 // Wait for packages data to load before showing/hiding packages for upgrade/downgrade 17220 setTimeout(function() { 17221 // Show or hide packages based on upgrade/downgrade settings 17222 upgradeDowngradeObject.showHidePackageOnUpgradeDowngrade( 17223 selectedPkgUpgradeDowngrade, 17224 multipleTicketPackageListOnly, 17225 enableTicketUpgradeShowHigher, 17226 0, 17227 enableTicketUpgradeHidePurchasePackage 17228 ); 17229 $("#LoadingBar").hide(); 17230 17231 }, 5000); 17232 17233 } 17234 if(UpgradePackageAndAddonsOnly || enableUpgradeOnlyPackageAddons){ 17235 setTimeout(function() { 17236 17237 if(UpgradePackageAndAddonsOnly){ 17238 $("#LoadingBar").show(); 17239 $("#LoadingBar").hide(); 17240 CheckAddonsQtyPackageQtyUpgradeHigher(true); 17241 UpgradePackageAndAddonsOnlyTimeout=true; 17242 } 17243 if(enableUpgradeOnlyPackageAddons){ 17244 $("#LoadingBar").show(); 17245 $("#LoadingBar").hide(); 17246 CheckAddonsQtyPackageQtyUpgradeHigher(false); 17247 17248 } 17249 $("#LoadingBar").hide(); 17250 },13000); 17251 }else{ 17252 $("#LoadingBar").hide(); 17253 } 17254 }); 17255 } 17256 17257 var globalPackagesAndAddonsData = null; 17258 var enableSoldOutOwnedEditProfile3850 = false; 17259 var enableExpiredOwnedEditProfile10003110 = false; 17260 var appID = 20550; 17261 var editProfileUserId = 0; 17262 function shouldCaptureUpgradeProfilePackageControls() { 17263 if (enableExpiredOwnedEditProfile10003110 && window.location.href.indexOf('editProfileV2') !== -1) { 17264 return true; 17265 } 17266 return appID === 21406 || (appID === 10002912 && editProfileUserId === 638206992); 17267 } 17268 function applyEditProfilePackageQuantity10002912(packageId, targetQty) { 17269 if (appID !== 10002912) { 17270 return; 17271 } 17272 targetQty = parseInt(targetQty, 10) || 0; 17273 if (targetQty <= 0 || isNaN(parseFloat(packageId)) || !isFinite(packageId)) { 17274 return; 17275 } 17276 var $packageBlock = $('.package-block-' + packageId); 17277 if (!$packageBlock.length) { 17278 return; 17279 } 17280 var $qtyInput = $packageBlock.find('.qty_package'); 17281 var currentQty = parseInt($qtyInput.val(), 10) || 0; 17282 if (currentQty === 0) { 17283 var $packBtn = $packageBlock.find('.ticketSelbtn.pack' + packageId); 17284 if ($packBtn.length) { 17285 $packBtn.trigger('click'); 17286 currentQty = parseInt($qtyInput.val(), 10) || 0; 17287 } 17288 } 17289 if (currentQty !== targetQty) { 17290 $qtyInput.val(targetQty); 17291 } 17292 var $totalPriceEl = $packageBlock.find('.total__price'); 17293 if (!TicketPackages[packageId]) { 17294 TicketPackages[packageId] = {}; 17295 } 17296 TicketPackages[packageId].pkg_price = $totalPriceEl.data('pkgprice'); 17297 TicketPackages[packageId].total_price = $totalPriceEl.data('price'); 17298 TicketPackages[packageId].tax = $totalPriceEl.data('tax');
17299 TicketPackages[packageId].pkg_qty = targetQty; 17300 TicketPackages[packageId].pkgTaxAmount = $totalPriceEl.data('pkg_tax_amount'); 17301 TicketPackages[packageId].isTaxInclusive = $totalPriceEl.data('is_tax_inclusive'); 17302 TicketPackages[packageId].inclusiveTaxValue = $totalPriceEl.data('inclusive_tax'); 17303 TicketPackages[packageId].inclusiveTaxPrice = $totalPriceEl.data('inclusive_tax_price'); 17304 TicketPackages[packageId].isDonation = $totalPriceEl.data('is_donation'); 17305 TicketPackages[packageId].applyBookingFeeToDonation = $totalPriceEl.data('apply_booking_fee_to_donation'); 17306 } 17307 function buildEditProfilePackageQuantitiesFromPaymentPackages10002912(paymentPackages) { 17308 var packageQuantities = {}; 17309 if (appID !== 10002912 || !paymentPackages || typeof paymentPackages !== 'object') { 17310 return packageQuantities; 17311 } 17312 $.each(paymentPackages, function (email, packages) { 17313 if (!packages || typeof packages !== 'object') { 17314 return; 17315 } 17316 $.each(packages, function (packageId, packageDetails) { 17317 if (isNaN(parseFloat(packageId)) || !isFinite(packageId)) { 17318 return; 17319 } 17320 if (!packageQuantities[packageId]) { 17321 packageQuantities[packageId] = 0; 17322 } 17323 packageQuantities[packageId] += parseInt(packageDetails.package_qty, 10) || 0; 17324 }); 17325 }); 17326 return packageQuantities; 17327 } 17328 function syncEditProfilePackageQuantitiesFromPaymentPackages10002912(paymentPackages) { 17329 if (appID !== 10002912) { 17330 return; 17331 } 17332 var packageQuantities = buildEditProfilePackageQuantitiesFromPaymentPackages10002912(paymentPackages); 17333 $.each(packageQuantities, function (packageId, qty) { 17334 applyEditProfilePackageQuantity10002912(packageId, qty); 17335 }); 17336 } 17337 function syncEditProfilePackageQuantityFromPayment(packageId, targetQty) { 17338 if (!enableExpiredOwnedEditProfile10003110) { 17339 return; 17340 } 17341 targetQty = parseInt(targetQty, 10) || 0; 17342 if (targetQty <= 0 || isNaN(parseFloat(packageId)) || !isFinite(packageId)) { 17343 return; 17344 } 17345 var $packageBlock = $('.package-block-' + packageId); 17346 if (!$packageBlock.length) { 17347 return; 17348 } 17349 var $qtyInput = $packageBlock.find('.qty_package'); 17350 var currentQty = parseInt($qtyInput.val(), 10) || 0; 17351 if (currentQty === targetQty) { 17352 if (TicketPackages[packageId]) { 17353 TicketPackages[packageId].pkg_qty = targetQty; 17354 } 17355 return; 17356 } 17357 if (currentQty === 0) { 17358 var $packBtn = $packageBlock.find('.ticketSelbtn.pack' + packageId); 17359 if ($packBtn.length) { 17360 $packBtn.trigger('click'); 17361 } 17362 } 17363 $qtyInput.val(targetQty); 17364 var $totalPriceEl = $packageBlock.find('.total__price'); 17365 if (!TicketPackages[packageId]) { 17366 TicketPackages[packageId] = {}; 17367 } 17368 TicketPackages[packageId].pkg_price = $totalPriceEl.data('pkgprice'); 17369 TicketPackages[packageId].total_price = $totalPriceEl.data('price'); 17370 TicketPackages[packageId].tax = $totalPriceEl.data('tax'); 17371 TicketPackages[packageId].pkg_qty = targetQty; 17372 TicketPackages[packageId].pkgTaxAmount = $totalPriceEl.data('pkg_tax_amount'); 17373 TicketPackages[packageId].isTaxInclusive = $totalPriceEl.data('is_tax_inclusive'); 17374 TicketPackages[packageId].inclusiveTaxValue = $totalPriceEl.data('inclusive_tax'); 17375 TicketPackages[packageId].inclusiveTaxPrice = $totalPriceEl.data('inclusive_tax_price'); 17376 TicketPackages[packageId].isDonation = $totalPriceEl.data('is_donation'); 17377 TicketPackages[packageId].applyBookingFeeToDonation = $totalPriceEl.data('apply_booking_fee_to_donation'); 17378 } 17379 function editProfileGroupRegNeedsRebuild(packageQuantities) { 17380 if (!enableExpiredOwnedEditProfile10003110 || !userDetailsEditTicket || !packageQuantities) { 17381 return false;
17382 } 17383 var needsRebuild = false; 17384 $.each(packageQuantities, function (packageId, expectedQty) { 17385 if (isNaN(parseFloat(packageId)) || !isFinite(packageId)) { 17386 return; 17387 } 17388 var $head = $('#packageContainerBlock' + packageId + ' .packageContainer__head'); 17389 if (!$head.length) { 17390 needsRebuild = true; 17391 return false; 17392 } 17393 var oriTotal = parseInt($head.attr('data-ori-total'), 10) || 0; 17394 if (oriTotal !== parseInt(expectedQty, 10)) { 17395 needsRebuild = true; 17396 return false; 17397 } 17398 }); 17399 return needsRebuild; 17400 } 17401 function lockEditProfileExpiredOwnedPackageControls() { 17402 if (!enableExpiredOwnedEditProfile10003110) { 17403 return; 17404 } 17405 $('[data-expired-owned-lock="1"]').each(function () { 17406 $(this).find('.qty-plus, .qty-minus').prop('disabled', true).css({opacity: '0.6', cursor: 'not-allowed'}); 17407 $(this).find('.ticketSelbtn').addClass('disabled').css({opacity: '0.6', 'pointer-events': 'none'}).attr('aria-disabled', 'true'); 17408 }); 17409 } 17410 function UpgradeProfile(callback) { 17411 if (shouldCaptureUpgradeProfilePackageControls()) { 17412 captureAndEnableUpgradeProfilePackageControls(); 17413 } 17414 // Check if the URL contains 'editProfileV2' 17415 if (window.location.href.indexOf('editProfileV2') !== -1) { 17416 $('.coupncode button[type="submit"]').remove(); 17417 $("#LoadingBar").show(); 17418 var responsePayment = ''; 17419 var paymentData = JSON.parse(responsePayment); 17420 17421 /* VFC-23245 Addon issue on upgrade downgrade */ 17422 if (paymentData.packages) { 17423 let addonQuantitiesList = {} 17424 $.each(paymentData.packages, function (email, packages) { 17425 17426 $.each(packages, function (packageId, packageDetails) { 17427 17428 addonQuantitiesList[packageId] = {}; 17429 17430 if (packageDetails.field_addons) { 17431 $.each(packageDetails.field_addons, function (itr, addonId) { 17432 17433 if (!addonQuantitiesList[packageId][addonId]) { 17434 addonQuantitiesList[packageId][addonId] = 0; 17435 } 17436 17437 let maxLimit = $('.ticket__addon .qty-plus[data-addons="' + addonId + '"][data-id="' + packageId + '"]').attr('data-addons-limit'); 17438 17439 if (maxLimit == 0) { 17440 $('.ticket__addon .qty-plus[data-addons="' + addonId + '"][data-id="' + packageId + '"]').hide(); 17441 } 17442 17443 maxLimit++; 17444 $('.ticket__addon .qty-plus[data-addons="' + addonId + '"][data-id="' + packageId + '"]').attr('data-addons-limit', maxLimit); 17445 }); 17446 } 17447 }); 17448 }); 17449 } 17450 17451 $('.ticket__addon .qty-plus[data-addons-limit="0"]').closest('.ticket__addon__item').remove(); 17452 17453 paymentDataUpgrade = JSON.parse(responsePayment); 17454 console.log('paymentData'); 17455 console.log(paymentData); 17456 17457 if (enableV5EnhanceAvailabilityApi) { 17458 globalPackagesAndAddonsData = paymentData; 17459 let enhanceAvailApiPostData = {"packages":[],"appId":"20550"}; 17460 17461 enhancedTicketAvailabilityObject.getPackageAndAddonCountForUpgradeDowngrade(enhanceAvailApiPostData, paymentData); 17462 } 17463 17464 upgradeDowngradeUserId=paymentData.userId; 17465 upgradeDowngradeAppId=paymentData.appId; 17466 EditProfileDiscountAmount = paymentData.discount_amount_val; 17467 upgradeDowngradePaymentMethodDetailId=paymentData.payment_method_detail_id; 17468 EditProfileDiscCode = paymentData.disc_code; 17469 multipleTicketPackageList = paymentData.userDetailsEditTicket; 17470 multipleTicketPackageListOnly = paymentData.packages; 17471 var totalAmount = paymentData.amount; 17472 if (paymentData.calAmount) { 17473 totalAmount = paymentData.calAmount; 17474 } 17475 if (paymentData.stripeConnectElement && paymentData.stripeConnectElement == 1) {
17476 stripeConnectElement = true; 17477 } 17478 var previousAmount = paymentData.previous_amount; 17479 currencySymbol = paymentData.symbol; 17480 EditProfilePaymentMethodId = paymentData.payment_method_id; 17481 17482 17483 $("#LoadingBar").show(); 17484 var responsePayment = ''; 17485 try { 17486 var paymentData = JSON.parse(responsePayment); 17487 console.log(paymentData); 17488 } catch (e) { 17489 console.error("Error parsing JSON:", e.message); 17490 } 17491 console.log('paymentData'); 17492 console.log(paymentData); 17493 17494 localStorage.setItem('paymentData', JSON.stringify(paymentData)); 17495 EditProfileDiscountAmount = paymentData.discount_amount_val; 17496 taxAppliedUpgrade=paymentData.taxApplied; 17497 EditProfileDiscCode = paymentData.disc_code; 17498 var totalAmount = paymentData.amount; 17499 if(paymentData.calAmount){ 17500 totalAmount = paymentData.calAmount; 17501 } 17502 if(paymentData.stripeConnectElement && paymentData.stripeConnectElement ==1){ 17503 stripeConnectElement=true; 17504 } 17505 var previousAmount = paymentData.previous_amount; 17506 17507 17508 var currencySymbol = paymentData.symbol; 17509 EditProfilePaymentMethodId = paymentData.payment_method_id; 17510 17511 userDetailsEditTicket = paymentData.userDetailsEditTicket; 17512 17513 17514 // delay in milliseconds 17515 $('.is_ticket_show_payment_details').hide(); 17516 // Track package quantities across different emails 17517 var packageQuantities = {}; 17518 var delay = 100; 17519 var promises = []; 17520 // First pass to accumulate package quantities 17521 $.each(paymentData.packages, function (email, packages) { 17522 $.each(packages, function (packageId, packageDetails) { 17523 if(!isNaN(parseFloat(packageId)) && isFinite(packageId)) { 17524 if (!packageQuantities[packageId]) { 17525 packageQuantities[packageId] = 0; 17526 } 17527 packageQuantities[packageId] += packageDetails.package_qty; 17528 var savedPackage = localStorage.getItem("savedPackage"); 17529 var packageContainer = $('#packageContainerBlock' + packageId, window.parent.document); 17530 } 17531 }); 17532 }); 17533 //new 17534 17535 $.each(paymentData.packages, function (email, packages) { 17536 $.each(packages, function (packageId, packageDetails) { 17537 if(!isNaN(parseFloat(packageId)) && isFinite(packageId)) { 17538 let taskPromise = new Promise(function (resolve, reject) { 17539 try{ 17540 packageListforUpgradeOnly[packageId] = []; 17541 setTimeout(function () { 17542 var $element = $('.pack' + packageId); 17543 if ($element.length > 0) { 17544 $element.trigger('click'); 17545 17546 } 17547 17548 // If total package quantity is greater than 1, click the qty-plus button 17549 if (packageQuantities[packageId] > 1) { 17550 var qty = packageQuantities[packageId] - 1; 17551 for (var i = 0; i < qty; i++) { 17552 // setTimeout(function () { 17553 var $qtyPlusElement = $('.qty-plus[data-id="' + packageId + '"]'); 17554 if ($qtyPlusElement.length > 0) { 17555 $qtyPlusElement.trigger('click'); 17556 17557 } 17558 // }, i * 100); // delay increased for each click 17559 } 17560 } 17561 if (enableExpiredOwnedEditProfile10003110) { 17562 syncEditProfilePackageQuantityFromPayment(packageId, packageQuantities[packageId]); 17563 } 17564 if (appID === 10002912) { 17565 applyEditProfilePackageQuantity10002912(packageId, packageQuantities[packageId]); 17566 } 17567 // Click addon buttons based on their existence 17568 17569 setTimeout(function () { 17570 if (packageDetails.field_addons) { 17571 17572 $.each(packageDetails.field_addons, function (index, addonId) { 17573 packageListforUpgradeOnly[packageId].push(addonId); 17574 var $addonButtonClass = $('.addons_item_' + addonId + '_' + packageId); 17575 var $selectCounterElement = $('.selectCounter_' + addonId + '_' + packageId); 17576 // Check if the selectCounterElement exists and its display property 17577 if ($selectCounterElement.length > 0 && $selectCounterElement.css('display') === 'none') { 17578 // If the selectCounterElement is hidden, we should try clicking the addonBtn directly 17579 var $addonButton = $('.addonBtn[data-addons="' + addonId + '"][data-id="' + packageId + '"]'); 17580 if ($addonButton.length > 0) { 17581 $addonButton.trigger('click'); 17582 } 17583 } else { 17584 // If selectCounterElement is visible or doesn't exist, click the addonButtonClass 17585 if ($addonButtonClass.length > 0) { 17586 $addonButtonClass.trigger('click'); 17587 } 17588 } 17589 }); 17590 } 17591 }, delay + 200); 17592 resolve(); 17593 17594 }, delay); 17595 delay += 700; // increment delay for the next package click 17596 }catch (e) { 17597 resolve(); 17598 } 17599 }); 17600 promises.push(taskPromise); // Add the task promise to the array 17601 } 17602 }); 17603 }); 17604 // After all promises are finished, call the callback 17605 var checkPromis=true; 17606 Promise.all(promises).then(function() { 17607 if (appID === 10002912) { 17608 syncEditProfilePackageQuantitiesFromPaymentPackages10002912(paymentData.packages); 17609 } 17610 if (enableExpiredOwnedEditProfile10003110) { 17611 $.each(packageQuantities, function (packageId, qty) { 17612 syncEditProfilePackageQuantityFromPayment(packageId, qty); 17613 }); 17614 if (editProfileGroupRegNeedsRebuild(packageQuantities)) { 17615 $('.packageBlock').html(''); 17616 if (typeof window.orderNowProcessing !== 'undefined') { 17617 window.orderNowProcessing = false;
17618 } 17619 var $orderNowBtn = $('.order-now-button:visible, .order-now-button1:visible').first(); 17620 if ($orderNowBtn.length) { 17621 $orderNowBtn.trigger('click'); 17622 } 17623 } 17624 lockEditProfileExpiredOwnedPackageControls(); 17625 } 17626 // App 3850 only: edit profile sold-out-but-purchased â lock qty after restoring selection/totals 17627 if (enableSoldOutOwnedEditProfile3850) { 17628 $('[data-sold-out-owned-lock="1"]').each(function () { 17629 $(this).find('.qty-plus, .qty-minus').prop('disabled', true).css({opacity: '0.6', cursor: 'not-allowed'}); 17630 }); 17631 if (typeof updateDifferentialAmount === 'function') { 17632 updateDifferentialAmount(parseFloat(totalAmount), parseFloat(previousAmount)); 17633 } 17634 } 17635 // Once all tasks are completed, call the callback function 17636 if (typeof callback === "function" && checkPromis) { 17637 callback(); 17638 checkPromis=false; 17639 } 17640 }).finally(function () { 17641 if (shouldCaptureUpgradeProfilePackageControls()) { 17642 restoreUpgradeProfilePackageControlsState(); 17643 } 17644 if (enableExpiredOwnedEditProfile10003110) { 17645 lockEditProfileExpiredOwnedPackageControls(); 17646 } 17647 }); 17648 //new 17649 var newHtml = '<span data-total="pending_amount" tabindex="0" id="pending_amount"></span>'; 17650 $('.totalcountT').append(newHtml); 17651 $("#LoadingBar").show(); 17652 updateTotalAmount(EditProfileDiscCode, EditProfileDiscountAmount); 17653 17654 // var bookingFeeAmount = 0; 17655 if (paymentData.bookingFeeAmount) { 17656 // bookingFeeAmount += paymentData.bookingFeeAmount; 17657 // upgradeProfileBookingFeeAmount = bookingFeeAmount; 17658 // totalAmount -= paymentData.bookingFeeAmount; 17659 } 17660 if (paymentData.bookingFeeTax) { 17661 // bookingFeeAmount += paymentData.bookingFeeTax; 17662 // upgradeProfileBookingFeeTax = paymentData.bookingFeeTax; 17663 // totalAmount -= paymentData.bookingFeeTax; 17664 } 17665 17666 if(enableV5ApiDiscount == 0){ 17667 setInterval(function () { 17668 updateDifferentialAmount(parseFloat(totalAmount), parseFloat(previousAmount)); // , bookingFeeAmount 17669 }, 100); 17670 } 17671 17672 17673 } 17674 if (multipleTicketEdit && ((UpgradePackageAndAddonsOnly && !notAllowMultileTicketSelection) || enableUpgradeOnlyPackageAddons)) { 17675 var counter = 0; // Initialize a counter 17676 var intervalId = setInterval(function () { 17677 var allHidden = true; // Flag to track if all elements have been hidden 17678 packageListforUpgradeOnly.forEach(function (item, index) { 17679 var buttonElement = $('button.qty-minus[data-id="' + index + '"]'); 17680 if (buttonElement.length) { 17681 buttonElement.hide(); 17682 $('.package_' + index).hide(); 17683 } 17684 }); 17685 17686 counter++; 17687 // Stop the interval if all buttons are hidden or the counter reaches 3 17688 if ( counter >= 50 ) { 17689 clearInterval(intervalId); 17690 } 17691 }, 100); 17692 } 17693 17694 17695 } 17696 function updateDifferentialAmount(totalAmount, previousAmount, bookingFeeAmount=0) { 17697 var totalElement = document.querySelector('.totalcountT p[data-total]'); 17698 if (totalElement) { 17699 var totalText = totalElement.textContent; 17700 17701 var totalNumber =parseFloat(totalText.replace(/[^0-9.]/g, '')); 17702 if(paymentDataUpgrade){ 17703 // if(BookingFeeAmountUpgradeTax){ 17704 if(paymentDataUpgrade.bookingFeeAmount){ 17705 totalNumber=totalNumber+paymentDataUpgrade.bookingFeeAmount; 17706 } 17707 if(paymentDataUpgrade.bookingFeeTax){ 17708 totalNumber=totalNumber+paymentDataUpgrade.bookingFeeTax ; 17709 } 17710 17711 17712 // BookingFeeAmountUpgradeTax=false; 17713 // } 17714 } 17715 17716 // totalNumber += bookingFeeAmount; 17717 var differentialAmount = (totalNumber - (totalAmount + previousAmount)).toFixed(1);
17718 $('#pending_amount').text('Pending Amount: ' + currencySymbol + '' + differentialAmount); 17719 $('.order__summary .price__item > div:nth-of-type(1) span').text(currencySymbol + '' + differentialAmount); 17720 $('.order__summary .price__item > div:nth-of-type(1) span').attr('data-subtotal', differentialAmount); 17721 if (EditProfileDiscountAmount !== null && EditProfileDiscountAmount !== 0 && EditProfileDiscountAmount > 0 && userDetailsEditDiscountAmount !=0) { 17722 17723 $('.order__summary > div.price__item >div:nth-of-type(2) > span').text(currencySymbol + '' + '0.00'); 17724 }else{ 17725 $('.order__summary > div.price__item >div:nth-of-type(2) > span').text(currencySymbol + '' + userDetailsEditDiscountAmount); 17726 } 17727 17728 $('.order__summary .price__item > div.total__price > span').text(currencySymbol + '' + differentialAmount); 17729 17730 if(differentialAmount <0){ 17731 var refundAmount=differentialAmount; 17732 $('.order__summary .price__item > div:nth-of-type(1) span').text(currencySymbol + '' + '0.00'); 17733 if ($(".refund_price").length === 0) { 17734 $('.order__summary .price__item .pricing:last').after('<div class="refund_price pricing"><p tabindex="0">Refund</p><span></span></div>'); 17735 } 17736 $('.refund_amount_multiple_edit').remove(); 17737 if ($(".refund_amount_multiple_edit").length === 0) { 17738 $(".ticketFormCol").before(` 17739 <div class="refund_amount_multiple_edit" style="padding: 4px; text-align: center;"> 17740 <span class="badge badge-warning" style="font-size: 16px;padding: 14px; border-radius: 2px; text-align: center;"> 17741 Note: Please contact the admin for your <span class="refund_amount_edit"></span> refund 17742 </span> 17743 </div> 17744 `); 17745 // $('.order__summary > div.price__item >div:nth-of-type(3) > span').text(currencySymbol + '' + Math.abs(differentialAmount)); 17746 17747 } 17748 $('.order__summary .price__item > div.refund_price > span').text(currencySymbol + '' + differentialAmount); 17749 $('.order__summary .price__item > div.total__price > span').text(currencySymbol + '' + differentialAmount); 17750 $('.refund_amount_edit').text(currencySymbol + '' + differentialAmount); 17751 $('.order__payment h6').hide(); 17752 $('.payment__method').hide(); 17753 // $('.packageBlock').css("visibility", "visible"); 17754 // $(".ticketFormCol").hide(); 17755 }else if(differentialAmount > 0){ 17756 if($('.refund_price').length) { 17757 $('.refund_price').remove(); 17758 } 17759 if($('.refund_amount_multiple_edit').length) { 17760 $('.refund_amount_multiple_edit').remove(); 17761 } 17762 $('.order__payment h6').show(); 17763 $('.payment__method').show(); 17764 if (typeof paymentSummaryObject !== 'undefined' && typeof paymentSummaryObject.restorePaymentBoxChrome === 'function') { 17765 paymentSummaryObject.restorePaymentBoxChrome(); 17766 } 17767 $(".ticketFormCol").show(); 17768 }else{ 17769 if($('.refund_price').length) { 17770 $('.refund_price').remove(); 17771 } 17772 if($('.refund_amount_multiple_edit').length) { 17773 $('.refund_amount_multiple_edit').remove(); 17774 } 17775 $('.packageBlock').css("visibility", "visible"); 17776 $('.group_registration_label').css("display", "block"); 17777 $('.group-reg-block').css("height", "auto"); 17778 $('.order__payment h6').hide(); 17779 $('.payment__method').hide(); 17780 if (typeof paymentSummaryObject !== 'undefined' && typeof paymentSummaryObject.stripPaymentBoxChrome === 'function') { 17781 paymentSummaryObject.stripPaymentBoxChrome(); 17782 }
17783 $(".ticketFormCol").show(); 17784 } 17785 } 17786 17787 } 17788 17789 function updateTotalAmount(EditProfileDiscCode,EditProfileDiscountAmount) { 17790 17791 if (EditProfileDiscountAmount !== null && EditProfileDiscountAmount !== 0 && EditProfileDiscountAmount > 0) { 17792 $("#LoadingBar").show(); 17793 setTimeout(function() { 17794 var inputField = $('.coupn-code-sec .form-control'); 17795 inputField.val(EditProfileDiscCode); 17796 var applyButton = $('.cacl-disc'); 17797 applyButton.trigger('click'); 17798 $("#LoadingBar").hide(); 17799 }, 2000); 17800 17801 } 17802 } 17803 17804 17805 if (window.addEventListener) { 17806 window.addEventListener("message", onMessage, false); 17807 } else if (window.attachEvent) { 17808 window.attachEvent("onmessage", onMessage, false); 17809 } 17810 function onMessage(event) { 17811 // Check sender origin to be trusted 17812 //if (event.origin !== "http://example.com") return; 17813 17814 var data = event.data; 17815 17816 if (typeof(window[data.func]) == "function") { 17817 window[data.func].call(null, data.message); 17818 } 17819 } 17820 17821 function reloadIFrame() { 17822 $('#floorPlanIframeDiv').show(); 17823 $('.selected-seat').hide(); 17824 } 17825 17826 // Function to be called from iframe 17827 function hideIFrame(message) { 17828 $('#floorPlanIframeDiv').hide(); 17829 $('.seat-plan-seat-number').html(message.text); 17830 $('.selected-seat').show(); 17831 $('#seat_plan_id').val(message.templateId); 17832 $('#seat_number').val(message.id); 17833 $('#seat_text').val(message.text); 17834 } 17835 17836 /** 17837 * Update Stripe Payment Intent Info before submitting the form 17838 * 17839 * @param number totalAmount 17840 * 17841 * // VFC-17411 - add receiptEmail in payment intent for stripe Element 17842 * 17843 * @return void 17844 */ 17845 function updateStripePaymentIntentInfoBeforeSubmit(totalAmount = 0) 17846 { 17847 let appId = 20550; 17848 let stripePaymentIntentId = ''; 17849 let updatePaymentIntentUrl = "https://www.codeseccon.com/en/form/updatePaymentIntent"; 17850 17851 let receiptEmail = ''; 17852 let emailInputField = $('input[name="email"]'); 17853 if($(emailInputField).val().trim() != ''){ 17854 receiptEmail = $(emailInputField).val().trim(); 17855 } 17856 17857 if('' == stripePaymentIntentId){ 17858 let stripeElementContainer = $('body').find('.StripeElement'); 17859 if($(stripeElementContainer).length > 0){ 17860 stripePaymentIntentId = $('body').find('.StripeElement').attr('data-stripe_payment_intent_id'); 17861 } 17862 } 17863 17864 jQuery.ajax({ 17865 url: updatePaymentIntentUrl, 17866 data: { 17867 intent_id: stripePaymentIntentId, 17868 amount: totalAmount.toFixed(2), 17869 appID: appId, 17870 receiptEmail: receiptEmail 17871 }, 17872 type: "POST", 17873 success: function (response) { 17874 // do nothing 17875 } 17876 }); 17877 17878 } 17879 $(document).ready(function() { 17880 $('.showOrHideCustomerDetails').on('click', function() { 17881 $('#collapseOne').toggleClass('show'); 17882 $('#collapseOne123').toggleClass('show'); 17883 }); 17884 }); 17885 function getlastRecordID(){ 17886 var lastFilledId = ""; 17887 var nextId = ""; 17888 17889 $('input[name="user_list[]"]').each(function (index, element) { 17890 var value = $(this).val(); 17891 17892 // Check if the value is not empty or not null 17893 if (value && value !== "null" && value !== "") { 17894 lastFilledId = $(this).attr('id'); // Store the last non-empty field ID 17895 } else if (lastFilledId) { 17896 // If we already found the last filled ID, generate the next ID 17897 var currentId = $(this).attr('id'); 17898 var idNumber = parseInt(currentId.match(/\d+$/)); // Extract numeric part of the ID 17899 nextId = idNumber; // Reconstruct the ID with "user" 17900 return false; // Exit loop after finding the next ID 17901 } 17902 }); 17903 return nextId-1; 17904 } 17905 17906 function CheckAddonsQtyPackageQtyUpgradeHigher(check) { 17907 17908 $.each(multipleTicketPackageList, function (index, users) { 17909 let addonQuantities = {}; // Initialize addonQuantities for each package 17910 17911 // Loop through each user within the current package 17912 $.each(users, function (index2, user) { 17913 const addonsList = user.field_addons_qty; // Get the addons quantity object 17914 17915 if (addonsList) { 17916 // Iterate over each addon in the addonsList 17917 $.each(addonsList, function (addonKey, quantity) { 17918 // Accumulate quantity for each addon in the addonQuantities object 17919 if (addonQuantities[addonKey]) { 17920 addonQuantities[addonKey] += quantity; 17921 } else { 17922 addonQuantities[addonKey] = quantity; 17923 } 17924 }); 17925 } 17926 }); 17927 // Show the package element based on the current index 17928 if (check) { 17929 $('.package_' + index).show(); 17930 } 17931 17932 17933 // Check addon quantities against required quantities 17934 $.each(addonQuantities, function (addonKey, totalQuantity) { 17935 const addonQty = TicketPackages[index]?.[addonKey]?.['addons_qty']; // Get the required quantity 17936 17937 if (addonQty) { 17938 // Compare the total quantity with the required quantity 17939 if (parseFloat(addonQty) > totalQuantity) { 17940 // Show the minus button if it exists 17941 const minusButton = $('.addons_item_minus_' + addonKey + '_' + index); 17942 if (minusButton.length) { 17943 minusButton.show(); 17944 } 17945 } else { 17946 // Hide the minus button if the quantity condition is met 17947 $('.addons_item_minus_' + addonKey + '_' + index).hide(); 17948 } 17949 } 17950 }); 17951 17952 // Reset addonQuantities for the next package 17953 addonQuantities = {}; 17954 }); 17955 } 17956 17957 function setAssignUserData(newUserData, savePackageID) { 17958 17959 17960 if (newUserData != null) { 17961 var TicketPackages = localStorage.getItem("TicketPackages"); 17962 TicketPackages = JSON.parse(TicketPackages); 17963 for (var key in TicketPackages) { 17964 if (key != savePackageID) { 17965 // Target the correct package container 17966 var packageContainerNew = $('#packageContainerBlock' + key, window.parent.document); 17967 if (packageContainerNew.length > 0) { 17968 // var dropdownMenuNew = packageContainerNew.find('.dropdown-menu'); 17969 var dropdownMenuNew = packageContainerNew.find('.packageContainer__head .dropdown-menu-main'); 17970 dropdownMenuNew.append(newUserData); 17971 } 17972 } 17973 } 17974 } 17975 } 17976 function CalculateDonationPackageAmount() { 17977 let donationResults = {}; 17978 let totalDonationPackageSum = 0; 17979 let totalDonationAddons = 0; 17980 PackageDonationAmountNotIncludeBookingFee=0; 17981 for (const packageId in TicketPackages) { 17982 if(!isNaN(parseFloat(packageId)) && isFinite(packageId)) { 17983 const pkg = TicketPackages[packageId]; 17984 // Check if the package is a donation 17985 if (pkg.isDonation === 1) { 17986 // Calculate donationPackageSum 17987 const pkg_price = parseFloat(pkg.pkg_price) || 0;
17988 const pkg_qty = parseInt(pkg.pkg_qty) || 0; 17989 const donationPackageSum = pkg_price * pkg_qty; 17990 // Initialize donationAddons total 17991 let donationAddons = 0; 17992 // Loop through addons (sub-objects) in the package 17993 for (const addonId in pkg) { 17994 const addon = pkg[addonId]; 17995 // Ensure addon has `addons_price` and `addons_qty` properties 17996 if (addon && addon.hasOwnProperty('addons_price') && addon.hasOwnProperty('addons_qty')) { 17997 const addons_price = parseFloat(addon.addons_price) || 0; 17998 const addons_qty = parseInt(addon.addons_qty) || 0; 17999 donationAddons += addons_price * addons_qty; 18000 } 18001 } 18002 // Store results for this donation package 18003 donationResults[packageId] = { 18004 donationPackageSum, 18005 donationAddons, 18006 applyBookingFeeToDonation: pkg.applyBookingFeeToDonation, 18007 isDonation: pkg.isDonation 18008 }; 18009 if (pkg.applyBookingFeeToDonation == 0) { 18010 PackageDonationAmountNotIncludeBookingFee += donationPackageSum + donationAddons; 18011 } 18012 // Accumulate totals 18013 totalDonationPackageSum += donationPackageSum; 18014 totalDonationAddons += donationAddons; 18015 } 18016 } 18017 } 18018 // Final results 18019 PackageDonationArray = donationResults; 18020 PackageDonationAmount = totalDonationPackageSum + totalDonationAddons; 18021 return true; 18022 } 18023 18024</script>
18024 18025 18026<!-- JIRA Ticket - VFC-19349 -->
18027<script type="text/javascript"> 18028 /* Ticket: VFC-21255 */ 18029 if (isRegistrationForm) { 18030 18031 $(document).ready(function(){ 18032 18033 if (pageBreakSummaryCount > 0) { 18034 $(".is_ticket_show_payment_details").hide(); 18035 } 18036 }) 18037 } 18038</script>
18038 18039 18040
18041<script type="text/javascript"> 18042/* Ticket: VFC-21254 */ 18043 18044$(document).ready(function(){ 18045 18046 var showChar = 148; 18047 var moreButtonText = "Read more"; 18048 var lessButtonText = "Read less"; 18049 18050 $('.ticketadd__desc__text p').each(function () { 18051 18052 var content = $(this).html(); 18053 18054 if (content.length > showChar) { 18055 18056 var visibleText = content.substr(0, showChar); 18057 var hiddenText = content.substr(showChar, content.length - showChar); 18058 18059 var html = visibleText + '<span class="morecontent" style="display: none;"><span style="display: none;">' + hiddenText + '</span> </span>'; 18060 18061 $(this).html(html); 18062 }else { 18063 $(this).next('.ticketadd__readmore').hide(); 18064 } 18065 }); 18066 18067 $(".ticketadd__readmore").click(function (e) { 18068 e.preventDefault(); 18069 moreButtonText= $(this).attr('data-rmore'); 18070 lessButtonText=$(this).attr('data-rless'); 18071 if ($(this).hasClass("less")) { 18072 $(this).removeClass("less"); 18073 $(this).html(moreButtonText); 18074 } else { 18075 $(this).addClass("less"); 18076 $(this).html(lessButtonText); 18077 } 18078 $(this).prev().find('span').toggle(); 18079 return false; 18080 }); 18081 // if(!multipleTicketEdit){ 18082 var ticketTop= ''; 18083 var pageBreakSteps= '0'; 18084 if(ticketTop && pageBreakSteps ==0 && true){ 18085 $('.both-block').prepend('<button type="button" class="backButtonRegisterUser" title="Going back will reset the information on this page. You will need to re-enter your details."><i style="top: 4px;" class="glyphicon glyphicon-arrow-left " > </i>Back</button>'); 18086 $('.backButtonRegisterUser').on('click', function () { 18087 $('.both-block').hide(); 18088 $('.ev__ticket__wrapper').show(); 18089 $('.order-now-button').prop('disabled', false); 18090 if (typeof window.orderNowProcessing !== 'undefined') { 18091 window.orderNowProcessing = false; 18092 } 18093 if (Object.keys(TicketPackages).length > 0) { 18094 $.each(TicketPackages, function(packageId, packageDetails) { 18095 $(`#packageContainerBlock${packageId}`).remove(); 18096 }); 18097 } 18098 if ($('input[name="user_list[]"]').length > 0) { 18099 $('input[name="user_list[]"]').val(''); 18100 } 18101 clickedOnce = false; 18102 // Set a local cookie named "backButtonClicked" with value "true" that expires in 1 day 18103 var d = new Date(); 18104 d.setTime(d.getTime() + (24*60*60*1000)); // 1 day 18105 var expires = "expires="+ d.toUTCString(); 18106 document.cookie = "backButtonClicked=true;" + expires + ";path=/"; 18107 return false; 18108 }); 18109 } 18110 // } 18111}); 18112function checkAllFieldsHidden() { 18113 // Get all form fields inside the ticketFormCol 18114 const fields = document.querySelectorAll('.ticketFormCol .event__form'); 18115 18116 // Check if all fields have display:none 18117 const allHidden = Array.from(fields).every(field => { 18118 const style = window.getComputedStyle(field); 18119 return style.display === 'none'; 18120 }); 18121 18122 return allHidden; 18123} 18124function findFirstEmptyField(startIndex) { 18125 // First empty #userN (all user_list[] inputs, not a 50 cap). Returning startIndex 18126 // when that field was empty skipped earlier holes after remove. 18127 var found = -1; 18128 $('input[name="user_list[]"]').each(function () { 18129 if ($(this).val()) { 18130 return; 18131 } 18132 var id = this.id || ''; 18133 if (id.indexOf('user') === 0) { 18134 found = parseInt(id.replace('user', ''), 10); 18135 return false; 18136 } 18137 }); 18138 return found; 18139} 18140 18141function formatTotal(amount) { 18142 return parseFloat(amount).toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 }); 18143} 18144 18145/* Ticket: VFC-21830 - show description after page ready */ 18146$(document).ready(function() { 18147 $(".ticket__item .ticket-desc-p").css('display', 'block'); 18148 appId = '20550'; 18149 console.log(window.location.href); 18150if(appId ==15570){ 18151 console.log(appId); 18152 if (window.location.href === "https://www.mainstreetnow.org/en/registration-form") { 18153 // URL matches registration form 18154 console.log("On registration form page"); 18155$('.package-block-771506').hide(); 18156$('.package-block-771507').hide(); 18157} else { 18158 // URL does not match 18159 console.log("Not on registration form page"); 18160 18161setTimeout(function() { 18162 // Check if the Select button is display: none 18163 if ($('a.pricebtn-btn.ticketSelbtn.pack771506').css('display') === 'none') { 18164 console.log("If button is hidden, hide package block 1111111111111"); 18165 // If button is hidden, hide package block 772817 18166 $('.ticket__item.package-block-772817').hide(); 18167 } else { 18168 console.log("If button is hidden, hide package block 222222222"); 18169 // If button is visible, hide package block 771506 18170 $('.ticket__item.package-block-771506').hide(); 18171 } 18172 }, 2000); 18173 18174 18175setTimeout(function() { 18176 // Check if the Select button is display: none 18177 if ($('a.pricebtn-btn.ticketSelbtn.pack771507').css('display') === 'none') { 18178 console.log("If button is hidden, hide package block 1111111111111"); 18179 // If button is hidden, hide package block 772817 18180 $('.ticket__item.package-block-772818').hide(); 18181 } else { 18182 console.log("If button is hidden, hide package block 222222222"); 18183 // If button is visible, hide package block 771506 18184 $('.ticket__item.package-block-771507').hide(); 18185 } 18186 }, 2000); 18187 18188} 18189} 18190 18191 18192}); 18193</script>
18193 18194
18195<script> 18196 $(document).ready(function() { 18197 18198 if (enableV5EnhanceAvailabilityApi) { 18199 18200 let postData = {"packages":[],"appId":"20550"}; 18201 18202 if (!isUpgradeDowngradeProfile) { 18203 enhancedTicketAvailabilityObject.getAddonAndPackageCount(postData); 18204 } 18205 } 18206 18207 $('.ticketSelbtn').on('click', function(){ 18208 // console.log('ticketSelbtn'); 18209 packageBadge=$(this).closest('.ticket__item').find('.ticket__desc .ticket__desc__text h5').text(); 18210 // console.log('packageBadge',packageBadge); 18211 $('.package_on_badges').val(packageBadge); 18212 $('input[name="package_on_badges"]').val(packageBadge); 18213 }); 18214 18215 $('.order-now-button').on('click', function(){ 18216 let names = []; 18217 18218 $('.addonsvp input[type=checkbox]:checked').each(function () { 18219 // Get the data-name value 18220 let fullName = $(this).data('name'); 18221 // Extract text before the first parenthesis, if it exists 18222 let cleanName = fullName.split('(')[0].trim(); 18223 // Add the clean name to our array 18224 names.push(cleanName); 18225 }); 18226 18227 $('.addons_on_badges').val(names.join(', ')); 18228 $('input[name="addons_on_badges"]').val(names.join(', ')); 18229 }); 18230 18231 }); 18232 18233 async function stripeElementCall(elements,stripe_object){ 18234 // console.log(stripe_object); 18235 // form.addEventListener('submit', async (event) => { 18236 if (flag_lis == 0) { 18237 console.log("flag_lis == 0"); 18238 var payment_gateway_name=$('input[name="optionsRadios"]:checked').data('name'); 18239 // event.preventDefault(); 18240 18241 let mainEmail = $('input[name="email"]').val().trim(); 18242 let error = null; 18243 try { 18244 const result = await stripe_object.confirmPayment({ 18245 //`Elements` instance that was used to create the Payment Element 18246 elements, 18247 confirmParams: { 18248 return_url: 'https://vfairs.com', 18249 receipt_email: ('' != mainEmail)? mainEmail : '' 18250 }, 18251 redirect: 'if_required' 18252 }); 18253 18254 const messageContainer = document.querySelector('#error-message'); 18255 if (result.error && $('input[name="optionsRadios"]:checked').data('name') === 'Stripe') { 18256 if ($(".refund_amount_multiple_edit").length === 1) { 18257 $('#payment-element').css('display', 'none'); 18258 isStripeValidation = true; 18259 flag_lis = 1; 18260 $('#' + id).submit(); 18261 }else{ 18262 console.log("result.error: " + result.error); 18263 if(payment_gateway_name == 'Stripe'){ 18264 messageContainer.textContent = result.error.message; 18265 } 18266 error = result.error; 18267 } 18268 // console.log("result.error: " + result.error); 18269 // if(payment_gateway_name == 'Stripe'){ 18270 // messageContainer.textContent = result.error.message; 18271 // } 18272 // error = result.error; 18273 } else { 18274 // console.log("isStripeValidation "); 18275 messageContainer.textContent = ''; 18276 isStripeValidation = true; 18277 flag_lis = 1; 18278 $('#' + id).submit(); 18279 } 18280 } catch (err) { 18281 console.error('Payment error:', err); 18282 error = {message: err}; 18283 } 18284 18285 if (error) { 18286 // This point will only be reached if there is an immediate error when 18287 // confirming the payment. Show error to your customer (for example, payment 18288 // details incomplete) 18289 if(payment_gateway_name == 'Stripe'){ 18290 const messageContainer = document.querySelector('#error-message'); 18291 messageContainer.textContent = error.message; 18292 } 18293 } else { 18294 18295 } 18296 } 18297 } 18298 18299 async function verifyStripeCallTrigger(){ 18300 console.log("verify stripe call");
18301 await stripeElementCall(elements, stripe); 18302 } 18303</script>
18303 18304<style> 18305.manageAccountBlock { 18306 display: flex; 18307 justify-content: center; 18308 align-items: center; 18309 flex-direction: column; 18310 gap: 10px; 18311 max-width: 320px; 18312 width: 100%; 18313 margin-inline: auto; 18314} 18315.manageAccountBlock .manageAccountBlock__text { 18316 font-weight: 400; 18317 font-size: 14px; 18318 line-height: 20px; 18319 color: #5f6269; 18320 margin: 0px; 18321 text-align: center; 18322} 18323.manageAccountBlock .manageAccountBlock__link { 18324 color: #f36531; 18325 font-size: 14px; 18326 font-weight: 800; 18327 line-height: 20px; 18328 text-decoration: underline; 18329} 18330</style>
18331<script> 18332function updateSnapPayType(radio) { 18333 const hiddenInput = document.getElementById("selectedSnapPayType"); 18334 if (hiddenInput) { 18335 if (radio.classList.contains("snapPayCC")) { 18336 hiddenInput.value = "CC"; 18337 } else if (radio.classList.contains("snapPayACH")) { 18338 hiddenInput.value = "ACH"; 18339 } else { 18340 hiddenInput.value = ""; 18341 } 18342 } 18343} 18344$('.pmnt_fld').on('change', function() { 18345 const selectedOptionText = $(this).find("option:selected").text(); 18346 const hiddenInput = document.getElementById("selectedSnapPayType"); 18347 if (hiddenInput) { 18348 if (selectedOptionText.includes('Credit Card')) { 18349 hiddenInput.value = "CC"; 18350 } else if (selectedOptionText.includes('ACH/Electronic Check')) { 18351 hiddenInput.value = "ACH"; 18352 } else { 18353 hiddenInput.value = ""; // Clear the hidden field if neither CC nor ACH is selected 18354 } 18355} 18356}); 18357// Check on load which option is selected 18358$(document).ready(function() { 18359 const hiddenInput = document.getElementById("selectedSnapPayType"); 18360 18361 if (hiddenInput) { 18362 const checkedSnapPayRadio = document.querySelector('input[name="optionsRadios"].snapPayCC:checked, input[name="optionsRadios"].snapPayACH:checked'); 18363 if (checkedSnapPayRadio) { 18364 updateSnapPayType(checkedSnapPayRadio); 18365 return; 18366 } 18367 18368 const selectedOptionText = $('.pmnt_fld').find("option:selected").text(); 18369 if (selectedOptionText.includes('Credit Card')) { 18370 hiddenInput.value = "CC"; 18371 } else if (selectedOptionText.includes('ACH/Electronic Check')) { 18372 hiddenInput.value = "ACH"; 18373 } else { 18374 hiddenInput.value = ""; 18375 } 18376 } 18377}); 18378 18379/** 18380 * Main function to hide unwanted form fields in iframe and show only specific fields 18381 * Keeps visible: first_name, last_name, email (readonly), field_addons (functional), and all buttons 18382 */ 18383 function hideFieldsInIframe() { 18384 try { 18385 var $iframeContent = getIframeContent(); 18386 if (!$iframeContent) return; 18387 18388 var fieldsToKeep = ['first_name', 'last_name', 'email', 'field_addons']; 18389 18390 // Step 1: Hide everything first, then selectively show what we need 18391 hideAllLabels($iframeContent); 18392 hideUnwantedFormFields($iframeContent, fieldsToKeep); 18393 hideEmptyContainers($iframeContent, fieldsToKeep); 18394 18395 // Step 2: Show only the fields and elements we want to keep 18396 showButtons($iframeContent); 18397 showAddonsField($iframeContent); 18398 showUserDataFields($iframeContent); 18399 showBuyerDependencyFields($iframeContent); 18400 18401 // Step 3: Set up defensive mechanism to maintain visibility 18402 setupDefensiveMechanism(); 18403 18404 } catch (e) { 18405 // Silent error handling for any unexpected issues 18406 } 18407 } 18408 18409 /** 18410 * Get iframe content and validate access 18411 * @returns {jQuery|null} iframe content or null if not accessible 18412 */ 18413 function getIframeContent() { 18414 var $iframe = jQuery('#iframe-id-new'); 18415 var $iframeContent = $iframe.contents(); 18416 18417 // Check if we can access the iframe content 18418 return $iframeContent.length > 0 ? $iframeContent : null; 18419 } 18420 18421 /** 18422 * Hide all labels in the iframe 18423 * @param {jQuery} $iframeContent - iframe content jQuery object 18424 */ 18425 function hideAllLabels($iframeContent) { 18426 $iframeContent.find('label').css('display', 'none'); 18427 } 18428 18429 /** 18430 * Hide all form fields except buttons, hidden fields, and fields we want to keep 18431 * @param {jQuery} $iframeContent - iframe content jQuery object 18432 * @param {Array} fieldsToKeep - array of field names to keep visible 18433 */
18434 function hideUnwantedFormFields($iframeContent, fieldsToKeep) { 18435 $iframeContent.find('input, select, textarea').each(function() { 18436 var $field = jQuery(this); 18437 var fieldType = $field.attr('type'); 18438 var fieldId = $field.attr('id'); 18439 var fieldName = $field.attr('name'); 18440 18441 // Skip buttons, hidden inputs, and specific fields we want to keep 18442 var isButton = fieldType === 'submit' || fieldType === 'button' || $field.hasClass('btn') || $field.is('button'); 18443 var isHidden = fieldType === 'hidden'; 18444 var isFieldToKeep = fieldId === 'field_addons' || fieldsToKeep.indexOf(fieldName) !== -1; 18445 18446 if (isButton || isHidden || isFieldToKeep) { 18447 return; // Keep these visible 18448 } 18449 18450 // Hide all other fields 18451 $field.css('display', 'none'); 18452 }); 18453 } 18454 18455 /** 18456 * Hide containers that don't contain fields we want to keep or buttons 18457 * @param {jQuery} $iframeContent - iframe content jQuery object 18458 * @param {Array} fieldsToKeep - array of field names to keep visible 18459 */ 18460 function hideEmptyContainers($iframeContent, fieldsToKeep) { 18461 var containerSelectors = '.col-12, .form-group, .field-group, .radio-block-all, .checkbox-block-all'; 18462 18463 $iframeContent.find(containerSelectors).each(function() { 18464 var $container = jQuery(this); 18465 18466 var hasKeepFields = containerHasKeepFields($container, fieldsToKeep); 18467 var hasButtons = containerHasButtons($container); 18468 18469 // Hide container only if it has neither keep fields nor buttons 18470 if (!hasKeepFields && !hasButtons) { 18471 $container.css('display', 'none'); 18472 } 18473 }); 18474 } 18475 18476 /** 18477 * Check if container has any fields we want to keep 18478 * @param {jQuery} $container - container jQuery object 18479 * @param {Array} fieldsToKeep - array of field names to keep visible 18480 * @returns {boolean} 18481 */ 18482 function containerHasKeepFields($container, fieldsToKeep) { 18483 for (var i = 0; i < fieldsToKeep.length; i++) { 18484 var selector = 'input[name="' + fieldsToKeep[i] + '"], #' + fieldsToKeep[i]; 18485 if ($container.find(selector).length > 0) { 18486 return true; 18487 } 18488 } 18489 return false; 18490 } 18491 18492 /** 18493 * Check if container has any buttons 18494 * @param {jQuery} $container - container jQuery object 18495 * @returns {boolean} 18496 */ 18497 function containerHasButtons($container) { 18498 var buttonSelectors = 'button, input[type="submit"], input[type="button"], .btn'; 18499 return $container.find(buttonSelectors).length > 0; 18500 } 18501 18502 /** 18503 * Show all buttons with important styling 18504 * @param {jQuery} $iframeContent - iframe content jQuery object 18505 */ 18506 function showButtons($iframeContent) { 18507 var buttonSelectors = 'button, input[type="submit"], input[type="button"], .btn'; 18508 $iframeContent.find(buttonSelectors).attr('style', 'display: block !important'); 18509 } 18510 18511 /** 18512 * Show addons field dropdown (keep it functional) 18513 * @param {jQuery} $iframeContent - iframe content jQuery object 18514 */ 18515 function showAddonsField($iframeContent) { 18516 var $addonsField = $iframeContent.find('#field_addons'); 18517 18518 // Show the field itself 18519 $addonsField.attr('style', 'display: block !important'); 18520 18521 // Show its container 18522 $addonsField.closest('.form-group, .col-12').attr('style', 'display: block !important'); 18523 18524 // Show its label 18525 $iframeContent.find('label[for="field_addons"]').attr('style', 'display: block !important'); 18526 } 18527 18528 /** 18529 * Field ids that were kept off the main form because they depen
18529d on a ticket, 18530 * limited to the package the buyer just took. 18531 * @returns {Array} field ids 18532 */ 18533 function getBuyerDependencyFieldIds() { 18534 var fieldMap = window.mainFormTicketDependencyFields; 18535 if (!fieldMap) { 18536 return []; 18537 } 18538 18539 var assignedPackage = String(localStorage.getItem('savedPackage') || ''); 18540 var fieldIds = []; 18541 for (var fieldId in fieldMap) { 18542 if (!Object.prototype.hasOwnProperty.call(fieldMap, fieldId)) { 18543 continue; 18544 } 18545 if (assignedPackage && jQuery.inArray(assignedPackage, fieldMap[fieldId]) !== -1) { 18546 fieldIds.push(fieldId); 18547 } 18548 } 18549 return fieldIds; 18550 } 18551 18552 /** 18553 * Undo the blanket hiding for the buyer's ticket-dependent fields, which are only 18554 * collected here because the main form never rendered them 18555 * @param {jQuery} $iframeContent - iframe content jQuery object 18556 */ 18557 function showBuyerDependencyFields($iframeContent) { 18558 jQuery.each(getBuyerDependencyFieldIds(), function (index, fieldId) { 18559 var $group = $iframeContent.find('#grp_fld_' + fieldId); 18560 if (!$group.length) { 18561 return; 18562 } 18563 18564 $group.parents('.col-12, .form-group, .field-group, .radio-block-all, .checkbox-block-all') 18565 .attr('style', 'display: block !important'); 18566 $group.find('input, select, textarea').css('display', ''); 18567 $group.find('label').attr('style', 'display: block !important'); 18568 }); 18569 } 18570 18571 /** 18572 * Show user data fields (first_name, last_name, email) as readonly 18573 * @param {jQuery} $iframeContent - iframe content jQuery object 18574 */ 18575 function showUserDataFields($iframeContent) { 18576 var userFieldSelectors = 'input[name="first_name"], input[name="last_name"], input[name="email"]'; 18577 var readonlyStyles = 'display: block !important; background-color: #f5f5f5 !important; color: #666 !important; cursor: not-allowed !important'; 18578 18579 $iframeContent.find(userFieldSelectors).each(function() { 18580 var $field = jQuery(this); 18581 18582 // Make field readonly with styling 18583 $field.prop('readonly', true); 18584 $field.attr('style', readonlyStyles); 18585 18586 // Show the form group containing this field 18587 $field.closest('.col-12, .form-group, .field-group').attr('style', 'display: block !important'); 18588 18589 // Show associated labels 18590 showFieldLabels($iframeContent, $field); 18591 }); 18592 } 18593 18594 /** 18595 * Show labels associated with a specific field 18596 * @param {jQuery} $iframeContent - iframe content jQuery object 18597 * @param {jQuery} $field - field jQuery object 18598 */ 18599 function showFieldLabels($iframeContent, $field) { 18600 var fieldId = $field.attr('id'); 18601 var fieldName = $field.attr('name'); 18602 18603 // Show label by id 18604 if (fieldId) { 18605 $iframeContent.find('label[for="' + fieldId + '"]').attr('style', 'display: block !important'); 18606 } 18607 18608 // Show label by name 18609 if (fieldName) { 18610 $iframeContent.find('label[for="' + fieldName + '"]').attr('style', 'display: block !important'); 18611 } 18612 18613 // Show labels within the same container 18614 $field.closest('.col-12, .form-group, .field-group').find('label').each(function() { 18615 var $label = jQuery(this); 18616 var labelFor = $label.attr('for'); 18617 18618 if (labelFor === fieldId || labelFor === fieldName) { 18619 $label.attr('style', 'display: block !important'); 18620 } 18621 }); 18622 } 18623 18624 /** 18625 * Set up defensive mechanism to maintain field visibility over time 18626 * Runs periodically to re-enforce visibility settings in case something tries to override them 18627 */ 18628 function setupDefensiveMechanism() { 18629 var retryCount = 0; 18630 var maxRetries = 10; 18631 18632 var defensiveInterval = setInterval(function() { 18633 retryCount++; 18634 if (retryCount > maxRetries) { 18635 clearInterval(defensiveInterval); 18636 return; 18637 } 18638 18639 try { 18640 var $currentContent = getIframeContent(); 18641 if (!$currentContent) { 18642 clearInterval(defensiveInterval); 18643 return; 18644 } 18645 18646 // Re-enforce visibility for all important elements 18647 showAddonsField($currentContent); 18648 showUserDataFields($currentContent); 18649 showBuyerDependencyFields($currentContent); 18650 18651 } catch (e) { 18652 // Silent error handling 18653 } 18654 }, 800); 18655 } 18656 18657 /** 18658 * File extension validation to prevent .jfif files 18659 */ 18660 function validateFileExtension(fileInput) { 18661 var files = fileInput.files; 18662 if (!files || files.length === 0) return true; 18663 18664 var allowedExtensions = ['pdf', 'doc', 'docx', 'txt', 'rtf', 'png', 'jpg', 'jpeg']; 18665 var blockedExtensions = ['jfif']; 18666 18667 for (var i = 0; i < files.length; i++) { 18668 var file = files[i]; 18669 var fileName = file.name.toLowerCase(); 18670 var fileExtension = fileName.split('.').pop(); 18671 18672 // Check if file extension is blocked 18673 if (blockedExtensions.includes(fileExtension)) { 18674 // Clear the input 18675 fileInput.value = ''; 18676 18677 // Show error message 18678 var errorSpan = jQuery(fileInput).closest('.col-12').find('.text-danger'); 18679 if (errorSpan.length > 0) { 18680 errorSpan.text('.jfif files are not supported. Please use JPG, PNG, or PDF format.'); 18681 errorSpan.show(); 18682 } else { 18683 // Fallback alert if error span not found 18684 alert('.jfif files are not supported. Please use JPG, PNG, or PDF format.'); 18685 } 18686 18687 return false;
18688 } 18689 18690 // Check if file extension is in allowed list (for images) 18691 if (fileName.match(/\.(jpg|jpeg|png|gif)$/i) && !allowedExtensions.includes(fileExtension)) { 18692 fileInput.value = ''; 18693 var errorSpan = jQuery(fileInput).closest('.col-12').find('.text-danger'); 18694 if (errorSpan.length > 0) { 18695 errorSpan.text('Please select only ' + allowedExtensions.join(', ') + ' files.'); 18696 errorSpan.show(); 18697 } else { 18698 alert('Please select only ' + allowedExtensions.join(', ') + ' files.'); 18699 } 18700 return false; 18701 } 18702 } 18703 18704 // Clear any previous error messages if validation passes 18705 var errorSpan = jQuery(fileInput).closest('.col-12').find('.text-danger'); 18706 if (errorSpan.length > 0) { 18707 errorSpan.text(''); 18708 errorSpan.hide(); 18709 } 18710 18711 return true; 18712 } 18713 18714 /** 18715 * Check if a file input has blocked extensions (without modifying DOM) 18716 */ 18717 function hasBlockedFileExtensions(fileInput) { 18718 var files = fileInput.files; 18719 if (!files || files.length === 0) return false; 18720 18721 var blockedExtensions = ['jfif']; 18722 18723 for (var i = 0; i < files.length; i++) { 18724 var file = files[i]; 18725 var fileName = file.name.toLowerCase(); 18726 var fileExtension = fileName.split('.').pop(); 18727 18728 if (blockedExtensions.includes(fileExtension)) { 18729 return true; 18730 } 18731 } 18732 18733 return false; 18734 } 18735 18736 /** 18737 * Validate all file inputs in a form 18738 */ 18739 function validateAllFileInputs(form) { 18740 var isValid = true; 18741 var fileInputs = jQuery(form).find('input[type="file"]'); 18742 var blockedFiles = []; 18743 18744 fileInputs.each(function() { 18745 if (hasBlockedFileExtensions(this)) { 18746 isValid = false; 18747 blockedFiles.push(this); 18748 } 18749 }); 18750 18751 // Show error messages for blocked files 18752 if (!isValid) { 18753 blockedFiles.forEach(function(input) { 18754 var errorSpan = jQuery(input).closest('.col-12').find('.text-danger'); 18755 if (errorSpan.length > 0) { 18756 errorSpan.text('.jfif files are not supported. Please use JPG, PNG, or PDF format.'); 18757 errorSpan.show(); 18758 } 18759 }); 18760 } 18761 18762 return isValid; 18763 } 18764 18765 /** 18766 * Set up file input validation when DOM is ready 18767 */ 18768 jQuery(document).ready(function() { 18769 // Add change event listener to all file inputs 18770 jQuery(document).on('change', 'input[type="file"]', function() { 18771 validateFileExtension(this); 18772 18773 // Fix for speaker registration form - display complete filename 18774 }); 18775 18776 // Form submit validation is now handled in the main form submit handler above 18777 }); 18778 18779 18780 18781 18782</script>
vendor: 1 bytes, line 18782
18782
18783<script> 18784// AJAX upload for file inputs marked with data-ajax-upload="1" 18785(function($){ 18786 18787 function getLangFromPath(){ 18788 var path = window.location.pathname.replace(/^\/+/, ''); 18789 var seg = path.split('/')[0] || 'en'; 18790 return (seg && seg.length === 2) ? seg : 'en'; 18791 } 18792 18793 // Add app_id check for 19017 18794 // The PHP variable is injected into JS for use here 18795 var app_id = 20550; 18796 18797 $(document).on('change','input[type="file"][data-ajax-upload="1"]',function(){ 18798 // Only run AJAX upload for app_id 19017 18799 var $enableClientSideUploads = '1'; 18800 if ([19017, 10001417].indexOf(app_id) === -1 && $enableClientSideUploads !== '1') { 18801 return; 18802 } 18803 18804 var $input = $(this); 18805 var files = this.files; 18806 if(!files || !files.length){ return; } 18807 var file = files[0]; 18808 18809 // Build allowed extensions from accept or data-file-type 18810 var accept = $input.attr('accept') || ''; 18811 var declaredType = ($input.data('file-type') || '').toString(); 18812 function getAllowedFromAccept(acc){ 18813 if(!acc){ return null; } 18814 var tokens = acc.split(',').map(function(t){ return t.trim().toLowerCase(); }); 18815 var exts = []; 18816 tokens.forEach(function(t){ 18817 if (t === 'image/*') { 18818 exts = exts.concat(['jpg','jpeg','png','gif','webp','svg']); 18819 return; 18820 } 18821 if (t === 'application/pdf') { exts.push('pdf'); return; } 18822 if (t === 'text/csv' || t === 'application/csv') { exts.push('csv'); return; } 18823 if (t === 'text/plain') { exts.push('txt'); return; } 18824 if (t === 'image/jpeg') { exts = exts.concat(['jpeg','jpg']); return; } 18825 if (t === 'image/jpg') { exts.push('jpg'); return; } 18826 if (t === 'image/png') { exts.push('png'); return; } 18827 if (t === 'image/gif') { exts.push('gif'); return; } 18828 if (t === 'image/webp') { exts.push('webp'); return; } 18829 if (t === 'image/svg+xml') { exts.push('svg'); return; } 18830 // Excel MIME types 18831 if (t === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') { exts.push('xlsx'); return; } 18832 if (t === 'application/vnd.ms-excel') { exts.push('xls'); return; } 18833 // Word MIME types 18834 if (t === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document') { exts.push('docx'); return; } 18835 if (t === 'application/msword') { exts.push('doc'); return; } 18836 // PowerPoint MIME types 18837 if (t === 'application/vnd.openxmlformats-officedocument.presentationml.presentation') { exts.push('pptx'); return; } 18838 if (t === 'application/vnd.ms-powerpoint') { exts.push('ppt'); return; } 18839 if (t.indexOf('.') === 0) { exts.push(t.replace('.', '')); return; } 18840 if (t.indexOf('/') > -1) { 18841 var part = t.split('/')[1]; 18842 if (part) { exts.push(part); } 18843 } 18844 }); 18845 return exts.length ? Array.from(new Set(exts)) : null; 18846 } 18847 function defaultsForType(t){ 18848 if (t === 'image') return ['jpg','jpeg','png','gif','webp']; 18849 if (t === 'csv') return ['csv','txt']; 18850 if (t === 'video') return ['mp4','webm','mov','avi','mkv','wmv','ogg']; 18851 // document/default 18852 return ['pdf','doc','docx','xls','xlsx','ppt','pptx','txt']; 18853 } 18854 var allowedExts = getAllowedFromAccept(accept) || defaultsForType(declaredType || 'document'); 18855 var ext = (file.name.split('.').pop() || '').toLowerCase(); 18856 18857 // Size limits (bytes): allow override via data-max-size 18858 var defaultMax = 5*1024*1024; // 5 MB for images/docs/csv 18859 if ((declaredType || accept).toString().match(/video\//i) || declaredType === 'video') { 18860 defaultMax = 10*1024*1024; // 10 MB for videos 18861 } 18862 var maxSize = parseInt($input.attr('data-max-size')) || defaultMax; 18863 18864 var $error = $input.closest('.col-12').find('.text-danger'); 18865 function showError(msg){ 18866 if ($error.length) { $error.text(msg).show(); } 18867 else { alert(msg); } 18868 } 18869 // Type check 18870 if (allowedExts && allowedExts.length && ext && allowedExts.indexOf(ext) === -1) { 18871 $input.val(''); 18872 showError('Invalid file type. Allowed: ' + allowedExts.join(', ')); 18873 return; 18874 } 18875 // Size check 18876 if (file.size > maxSize) { 18877 $input.val(''); 18878 var mb = (maxSize / (1024*1024)).toFixed(0); 18879 showError('File size exceeds ' + mb + ' MB limit.'); 18880 return; 18881 } 18882 // Clear previous error if any 18883 if ($error.length) { $error.text('').hide(); } 18884 18885 var lang = getLangFromPath(); 18886 var url = '/' + lang + '/form/uploadFiles'; 18887 var formData = new FormData(); 18888 formData.append('file', file); 18889 18890 // Derive file_type for backend (prefer actual selected file extension over accept list) 18891 var fileType = declaredType || (function(extLower){ 18892 if (['jpg','jpeg','png','gif','webp','svg'].indexOf(extLower) !== -1) { return 'image'; } 18893 if (['mp4','webm','mov','avi','mkv','wmv','ogg'].indexOf(extLower) !== -1) { return 'video'; } 18894 if (['csv','txt'].indexOf(extLower) !== -1) { return 'csv'; } 18895 return 'document'; 18896 })(ext); 18897 formData.append('file_type', fileType); 18898 if (allowedExts && allowedExts.length) { 18899 formData.append('allowed_exts', allowedExts.join(',')); 18900 } 18901 18902 var $form = $input.closest('form'); 18903 function toggleSubmitButtons(){ 18904 var count = parseInt($form.data('uploads_in_progress') || 0, 10) || 0; 18905 var disable = count > 0; 18906 $form.find('input[type="submit"], button[type="submit"]').prop('disabled', disable).toggleClass('disabled', disable); 18907 } 18908 function incUploads(){ 18909 var n = parseInt($form.data('uploads_in_progress') || 0, 10) || 0; 18910 $form.data('uploads_in_progress', n + 1); 18911 toggleSubmitButtons(); 18912 } 18913 function decUploads(){ 18914 var n = parseInt($form.data('uploads_in_progress') || 0, 10) || 0; 18915 n = Math.max(0, n - 1); 18916 $form.data('uploads_in_progress', n); 18917 toggleSubmitButtons(); 18918 } 18919 18920 var $status = $('<span class="text-info ms-2 upload-status">Uploading...</span>'); 18921 $input.after($status); 18922 $input.prop('disabled', true); 18923 incUploads(); 18924 18925 $.ajax({ 18926 url: url, 18927 method: 'POST', 18928 data: formData, 18929 processData: false, 18930 contentType: false, 18931 success: function(resp){ 18932 try{ if(typeof resp === 'string'){ resp = JSON.parse(resp); } }catch(e){} 18933 if(resp && resp.status){ 18934 // Prefer data-field (fld_{id}) so file uploads always post with the registration field key. 18935 // Exception: profile_picture must keep that POST key (backend first-class mapping). 18936 var currentName = $input.attr('name') || $input.attr('data-original-name'); 18937 var hiddenName = (currentName === 'profile_picture') 18938 ? 'profile_picture' 18939 : ($input.attr('data-field') || currentName); 18940 var $hidden = $input.siblings('input[type="hidden"][data-uploaded-url="1"]'); 18941 if(!$hidden.length){ 18942 $hidden = $('<input type="hidden" data-uploaded-url="1" />'); 18943 $input.after($hidden); 18944 } 18945 $hidden.attr('name', hiddenName); 18946 $hidden.val(resp.display_url); 18947 // Use the native filename display by keeping the file value 18948 // Remove any custom label we may have created previously 18949 $input.siblings('.file-chosen-label').remove(); 18950 // Prevent original file input from submitting by removing its name 18951 try { $input.attr('data-original-name', hiddenName); $input.removeAttr('name'); } catch(e) {} 18952 // Clear any jQuery Validate error state and labels 18953 try { 18954 var $form = $input.closest('form'); 18955 if ($form.length && typeof $form.validate === 'function') { 18956 var v = $form.validate(); 18957 if (v) { v.resetForm(); } 18958 } 18959 $input.removeClass('error').attr('aria-invalid','false').prop('required', false).removeAttr('data-rule-required'); 18960 var errLabel = $('#'+($input.attr('id')||'')+'-error');
18961 if (errLabel.length) { errLabel.text('').hide(); } 18962 } catch(e) {} 18963 $status.removeClass('text-info').addClass('text-success').text('Uploaded'); 18964 } else { 18965 var msg = (resp && resp.message) ? resp.message : 'Upload failed'; 18966 $status.removeClass('text-info').addClass('text-danger').text(msg); 18967 } 18968 }, 18969 error: function(){ 18970 $status.removeClass('text-info').addClass('text-danger').text('Upload failed'); 18971 }, 18972 complete: function(){ 18973 $input.prop('disabled', false); 18974 setTimeout(function(){ $status.fadeOut(400,function(){ $(this).remove(); }); }, 2500); 18975 decUploads(); 18976 } 18977 }); 18978 }); 18979})(jQuery); 18980 18981$(document).ready(function() { 18982 function hideUpdateButtons() { 18983 if (isUpgradeDowngradeProfile == 1 && enableTicketUpgradeHideUserEdit ==1) { 18984 $('.update-user-to-package').hide(); 18985 } 18986 } 18987 // Hide initially 18988 hideUpdateButtons(); 18989 // Hide any new buttons that get added 18990 setInterval(hideUpdateButtons, 500); // Check every 500ms 18991}); 18992 18993</script>
18993 18994 18995</div> 18996 18997 <!-- Optional JavaScript --> 18998 <!-- jQuery first, then Popper.js, then Bootstrap JS --> 18999
18999<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
18999 19000
19000<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
19000 19001 <!--
19001<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js" integrity="sha384-B4gt1jrGC7Jh4AgTPSdUtOBvfO8shuf57BaghqFfPlYxofvL8/KUEfYiJOMMV+rV" crossorigin="anonymous"></script>
19001 --> 19002
19002<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.9.0/js/bootstrap-datepicker.min.js"></script>
19002 19003
19003<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.5/jquery.validate.min.js"></script>
19003 19004 <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/select2.min.css" rel="stylesheet" /> 19005
19005<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/select2.min.js"></script>
19005 19006 19007 </body> 19008</html></p></div></div> 19009 </div> 19010 </div> 19011 </div> 19012
19013<script type="application/javascript"> 19014 function inIframe () { 19015 try { 19016 return window.self !== window.top; 19017 } catch (e) { 19018 return true; 19019 } 19020 } 19021 //if(inIframe() && "//"){ 19022 // window.location.href = window.location.origin + "/en/thank-you"; 19023 //} 19024 19025</script>
19025 19026 <div id="top"><i class="fa fa-arrow-up" aria-hidden="true"></i></div> 19027 <footer class="footer-section whiteText"> 19028 <div class="container"> 19029 <div class="row"> 19030 <div class="col-sm-9 col-xs-12 "> 19031 <ul class="footer-links"> 19032 <li><a href="/en/privacy-policy">Privacy Policy</a></li> 19033 <li><a href="/en/terms-of-service/">Terms of Service</a></li> 19034 </ul> 19035 </div> 19036 <div class="col-sm-3 col-xs-12 text-right"> 19037 <!-- <ul class="socialIcons"> 19038 <li><a href="" target="_blank"><i class="fa fa-facebook"></i></a></li> 19039 <li><a href="" target="_blank"><i class="fa fa-linkedin"></i></a></li> 19040 <li><a href="" target="_blank"><i class="fa fa-instagram"></i></a></li> 19041 <li><a href="" target="_blank"><i class="fa fa-twitter"></i></a></li> 19042 </ul> --> 19043 <a target="_blank" href="http://www.vfairs.com" rel="noopener noreferrer"> <img src="https://vepimg.b8cdn.com/uploads/vjfnew/586/content/docs/1566910747poweredby.png" title="powered-by-vfair" alt="" /> </a></div> 19044 </div> 19045 </div> 19046 </footer>
19046<script type="text/javascript"> 19047 var DynamicDate = "Aug 19, 2026 14:30"; 19048 var timeTemplate = "<ul><li><p>%d</p> <span class='cd-time'>Days</span></li> <li><p>%h</p> <span class='cd-time'>Hours</span></li><li><p>%i</p> <span class='cd-time'>Minutes</span></li> <li><p>%s</p> <span class='cd-time'>Seconds</span></li></ul>"; 19049</script>
19049 19050<!-- using older jquery -->
19051<script src="https://vepjs.b8cdn.com/js/jquery.min.js"></script>
19051 19052<!-- using older bootstrap -->
19053<script src="https://vepjs.b8cdn.com/js/bootstrap.min-v3.4.1.js"></script>
vendor: 1 bytes, line 19053
19053
19054<script src="https://vepjs.b8cdn.com/js/bootstrap3-typeahead.min.js"></script>
vendor: 1 bytes, line 19054
19054
19055<script src="https://vepjs.b8cdn.com/js/typeahead.bundle.js"></script>
19055 19056
19056<script src="https://vepjs.b8cdn.com/js/plugins.js?v=3.1"></script>
19056 19057 <link href="https://vepcss.b8cdn.com/css/select/select2.min.css" rel="stylesheet" /> 19058
19058<script src="https://vepjs.b8cdn.com/js/select/select2.min.js"></script>
19058 19059
19059<script src="https://vepjs.b8cdn.com/js/main.js?v=1.1"></script>
19059 19060
19060<script src="https://vepjs.b8cdn.com/js/validation/jquery.validate.min.js"></script>
19060 19061
19061<script src="https://vepjs.b8cdn.com/js/jquery.disableautofill.min.js"></script>
19061 19062
19062<script src="https://vepjs.b8cdn.com/js/validation/additional-methods.min.js"></script>
19062 19063
19063<script src="https://vepjs.b8cdn.com/js/bootstrap-datepicker.js"></script>
19063 19064
19064<script src="https://vepjs.b8cdn.com/js/sweetalert.js"></script>
19064 19065
19065<script src="https://vepjs.b8cdn.com/js/moment/moment.js"></script>
19065 19066
19066<script src="https://vepjs.b8cdn.com/js/moment-timezone.js"></script>
19066 19067
19067<script src="https://vepjs.b8cdn.com/js/agenda_timezone.js?v=27"></script>
19067 19068 19069 19070<!--[if lt IE 9]>
19071<script src="https://vepjs.b8cdn.com/js/html5.js"></script>
vendor: 1 bytes, line 19071
19071
19072<script src="https://vepjs.b8cdn.com/js/jquery.backgroundsize.js"></script>
vendor: 1 bytes, line 19072
19072
19073<script src="https://vepjs.b8cdn.com/js/respond.min.js"></script>
vendor: 1 bytes, line 19073
19073
19074<script type="text/javascript"> 19075 var tpElm = document.getElementById('top-element'); 19076 $(tpElm).css("background-size", "cover"); 19077 $.refreshBackgroundDimensions(tpElm); 19078</script>
19078 19079<![endif]--> 19080
19081<script type="text/javascript"> 19082 app_id = 20550; 19083 user_id = 0; 19084 booth_id = 0; 19085 user_type_id = 0; 19086 is_two_factor_screen = 0; 19087 var EventTimeZoneName = "America/New_York"; 19088 var EventTimeZoneOffset = "GMT-5:00"; 19089 var AgendaDateFormat = "m/d/Y H:i"; 19090 var EnableMobileWeb = "false"; 19091 var CountdownText = "Event Is Live!"; 19092 19093 function setCountdownTextCallback(){ 19094 if(CountdownText!=""){ 19095 var CountdownText2 = '<div class="eventlive">'+CountdownText+'</div>'; 19096 $('#clockdiv').html(CountdownText2) 19097 } 19098 } 19099 19100 // User Existing List Check Started 19101 // User Existing List Check End 19102 19103 // This is for form builder edit mode. 19104 19105 if(typeof IsLogedin=="undefined"){ 19106 IsLogedin = false; 19107 } 19108 if(typeof IsEventLive=="undefined") { 19109 IsEventLive = true; 19110 } 19111 19112 var inActiveEventSite = false;; 19113 19114 function updateStatTracker(app_id, type_id,user_id,content_id){ 19115 var GetUserStat = new Object(); 19116 GetUserStat.AppId = app_id; 19117 GetUserStat.TypeId = type_id; 19118 GetUserStat.Lang = 'en'; 19119 GetUserStat.UserId = user_id; 19120 GetUserStat.ContentId = content_id; 19121 $.post(window.location.origin + "/en/UpdateStatTrackerDirect", GetUserStat).done(function (resp) { 19122 var re = /\s\s+/g; 19123 var response = resp.replace(re, ' '); 19124 var json = JSON.parse(response); 19125 }); 19126 } 19127 19128 function isMobile() { 19129 return navigator.userAgent.match(/Android/i) || 19130 navigator.userAgent.match(/BlackBerry/i) || 19131 navigator.userAgent.match(/iPhone|iPad|iPod/i) || 19132 navigator.userAgent.match(/Opera Mini/i) || 19133 navigator.userAgent.match(/IEMobile/i) || 19134 navigator.userAgent.match(/WPDesktop/i); 19135 } 19136 19137 $(document).ready(function () { 19138 19139 // global Accessibility fixes 19140 /*$.each($(".form-control,input,button,h1,h2,h3,h4,h5,h6,p:not(.booth-description-paragraph),.panel-body,li:not(.booth-documents-li),a, label, span:not(.glyphicon, .fa,.docico),img"), function(){ 19141 // OMITING FORM BUILDER INPUTS - AJ 19142 if(!$(this).parents('.em4r5').length){ 19143 let get_this_element_tab_index = $(this); 19144 let get_text_tab_index = $(this).text().trim(); 19145 if(get_text_tab_index!=""){ 19146 get_this_element_tab_index.attr("tabindex","0"); 19147 }else{ 19148 get_this_element_tab_index.removeAttr("tabindex"); 19149 } 19150 } 19151 });*/ 19152 const $targets = $(".form-control,input,button,h1,h2,h3,h4,h5,h6,p:not(.booth-description-paragraph),.panel-body,li:not(.booth-documents-li),a,label,span:not(.glyphicon, .fa,.docico),img").not('input[type="hidden"], [type="hidden"], input[name="appID"], input[name="formID"], #appID, #formID'); 19153 19154 $.each($targets, function () { 19155 // OMITTING FORM BUILDER INPUTS - AJ 19156 if (!$(this).parents('.em4r5').length) { 19157 const $el = $(this); 19158 const txt = $el.text().trim(); 19159 if (txt !== "") { 19160 $el.attr("tabindex", "0"); 19161 } else { 19162 $el.removeAttr("tabindex"); 19163 } 19164 } 19165 }); 19166 19167 $("div[role='heading']").attr("role","banner"); 19168 19169 $(".modal").attr("tabindex","-1"); 19170 19171 $.each($("a:not(.booth-next-list-li-anchor,.exhibitor-list-items, .booth-hall-grid-view),button,h1,h2,h3,h4,h5,h6,li:not(.booth-users-online, .booth-list-dropdown-li),span, img, input,.track-this-element"), function(){ 19172 // OMITING FORM BUILDER INPUTS - AJ 19173 if(!$(this).parents('.em4r5').length){ 19174 let get_this_element = $(this); 19175 let get_text = get_this_element.text().trim(); 19176 let get_text_alt = get_this_element.attr("alt"); 19177 let get_text_title = get_this_element.attr("title"); 19178 19179 if(get_text==="" && get_text_alt!=="" && get_text_alt!=="Ã" && get_text_alt !== 'undefined'){ 19180 const aria_labels_htmlParser= new DOMParser().parseFromString(get_text_alt, 'text/html'); 19181 if(aria_labels_htmlParser.body.textContent !== 'undefined'){ 19182 get_this_element.attr("aria-label", aria_labels_htmlParser.body.textContent); 19183 } 19184 } 19185 19186 if(get_text!=="" && get_text!=="Ã" && get_text !== 'undefined'){ 19187 const aria_labels_get_text_htmlParser= new DOMParser().parseFromString(get_text, 'text/html'); 19188 if(aria_labels_get_text_htmlParser.body.textContent !== 'undefined'){ 19189 get_this_element.attr("aria-label", aria_labels_get_text_htmlParser.body.textContent); 19190 } 19191 } 19192 19193 if(get_text_title !=='' && get_text_title !== 'undefined'){ 19194 const aria_labels_get_title_htmlParser= new DOMParser().parseFromString(get_text_title, 'text/html'); 19195 if(aria_labels_get_title_htmlParser.body.textContent !== 'undefined'){ 19196 get_this_element.attr("aria-label", aria_labels_get_title_htmlParser.body.textContent); 19197 } 19198 } 19199 19200 if(get_this_element.prop("tagName")==="INPUT" && get_this_element.attr("value") !== '' && get_this_element.attr("value") !== 'undefined'){ 19201 const aria_labels_get_value_htmlParser= new DOMParser().parseFromString(get_this_element.attr("value"), 'text/html'); 19202 19203 if(aria_labels_get_value_htmlParser.body.textContent !== 'undefined'){ 19204 get_this_element.attr("aria-label", aria_labels_get_value_htmlParser.body.textContent); 19205 } 19206 } 19207 } 19208 }); 19209 // remove from these hidden fields to avoid auto complete issue 19210 ['uuiid','unique_token','user_id','booth_id','access_id','appID','formID','webinar_id'].forEach(function (name) { 19211 $('input[type="hidden"][name="' + name + '"], input[type="hidden"]#' + name).removeAttr('tabindex'); 19212 }); 19213 // end global Accessibility fixes 19214 19215 19216 adjustTimeZone(EventTimeZoneName); 19217 19218 //For redirection of App on Mobile view. 19219 if(EnableMobileWeb === '1'){ 19220 if(isMobile()!=null){ 19221 //window.location = "https://m.vfairs.com/?appId="+app_id; 19222 } 19223 } 19224 19225 if(IsLogedin && IsEventLive){ 19226 $(".hide-on-login").hide(); 19227 $(".show-on-login").show(); 19228 }else{ 19229 $(".hide-on-login").show(); 19230 $(".show-on-login").hide(); 19231 } 19232 19233 $(document).on("click", ".read-more-text", function(){ 19234 $($(this).attr("data-target")).slideToggle(); 19235 }); 19236 19237 $(document).on("click", "#guest_login", function(){ 19238 $('#LoginModal').remove(); 19239 $("#auto-login-frm").submit(); 19240 }); 19241 19242 if(IsinIframe()){ 19243 $("#privacy_sticky,footer").hide(); 19244 } 19245 19246 if(app_id==550){ 19247 $("#LoginModal").modal({ 19248 backdrop: 'static', 19249 keyboard: false 19250 }); 19251 } 19252 // Resend Email 19253 $('.resendbtn').on('click',function(){ 19254 // debugger; 19255 var update_token_url = location.protocol + '//' + location.host + "/en/resend_token"; 19256 var update_token = new Object(); 19257 update_token.AppId = '20550'; 19258 update_token.Email = $("#uLoginEmail").val(); 19259 update_token.user_id = $("#user_id").val();
19260 var csrfName = 'ci_csrf_token'; 19261 var csrfHash = ''; 19262 update_token[csrfName] = csrfHash; 19263 $.post(update_token_url, update_token).done(function (resp) { 19264 $('#tokenResponseBox').html("The verification code has been sent again."); 19265 $('#tokenResponseBox').show('slow'); 19266 setTimeout(function(){ $('#tokenResponseBox').hide('slow'); }, 10000); 19267 startTimer(60); 19268 }) 19269 }) 19270 // end Resend Email 19271 function startTimer(duration) { 19272 $('.resendbtn').attr('disabled',true) 19273 console.log('TEST',duration) 19274 var timer = duration, minutes, seconds; 19275 var x = setInterval(function () { 19276 minutes = parseInt(timer / 60, 10); 19277 seconds = parseInt(timer % 60, 10); 19278 19279 minutes = minutes < 10 ? "0" + minutes : minutes; 19280 seconds = seconds < 10 ? "0" + seconds : seconds; 19281 19282 // display.textContent = minutes + ":" + seconds; 19283 19284 if (--timer < 0) { 19285 //timer = duration; 19286 $('.resendbtn').removeAttr('disabled') 19287 clearInterval(x); 19288 } 19289 $('#countdown-timer').html(minutes+":"+seconds); 19290 }, 1000); 19291 } 19292 19293 if ($('#clockdiv').length > 0) { 19294 var deadline = -3972432000; 19295 if (deadline > 0) { 19296 initializeClock('clockdiv', deadline); 19297 }else{ 19298 setCountdownTextCallback(); 19299 } 19300 } 19301 $(".less-characters,.less-characters-btn").on("click", function () { 19302 $(".more-characters").show(); 19303 //$(this).hide(); 19304 }); 19305 $(".more-characters").on("click", function () { 19306 //$(".less-characters").show(); 19307 //$(this).hide(); 19308 }); 19309 if (IsLogedin && IsEventLive && "false" == 'false') { 19310 $("a[data-target=#LoginModal]").attr("href", "/en/hall").removeAttr("data-target").html("Login / Access the Online Event"); 19311 $('.hide-on-login').hide(); 19312 $('.hide-on-login').addClass('hide'); 19313 $('.show-on-login').show(); 19314 } 19315 setTimeout(function () { 19316 $(".slider-thumb-img:first").trigger("click"); 19317 }, 1000); 19318 $(".slider-thumb-img").on("click", function () { 19319 var title = $(this).attr("title"); 19320 var largeimage = $(this).attr("data-img"); 19321 var description = $(this).attr("data-description"); 19322 var text = $(this).children(".slider-thumb-text-box").html(); 19323 $(".image-heading-text").hide().html(title).fadeIn(900); 19324 if(description!=""){ 19325 $(".image-description-text").hide().html(description).fadeIn(900); 19326 } 19327 $("#large-image-box-slider").hide().attr("src", largeimage).fadeIn(900); 19328 $(".image-info-text").html(text); 19329 }); 19330 19331 }); 19332 19333 19334 // Forms Validations for employer_reg page 19335 $(document).ready(function () { 19336 $("#Main-Login-Frm input[name='Password']").attr("disabled", true).val(""); 19337 if (IsLogedin && IsEventLive && $.inArray(parseInt(app_id), [526, 690])!=0 ) { 19338 /*$("button:contains('Click Here To Login'),button:contains('Enter the Virtual Event')").on("click", function () { 19339 window.location = window.location.origin + "/en/hall"; 19340 }); 19341 //$("button:contains('Click Here To Login')").html("Enter the Virtual Event");*/ 19342 } 19343 $("#LogoutBtn").on("click", function () { 19344 window.location = window.location.origin + '/en/logout'; 19345 }); 19346 $("#ShowLoginBox-for-attend").on("click", function () { 19347 if (IsLogedin && IsEventLive) { 19348 window.location = window.location.origin + '/en/attend-and-win-feed-back'; 19349 } else { 19350 $("input[name='login-red'][type='hidden']").val(window.location.origin + "/en/attend-and-win-feed-back"); 19351 $("#LoginBtn").trigger("click"); 19352 } 19353 }); 19354 // Get Stats of Total Registrations 19355 // End Get Total Registrations Stats 19356 19357 $(".showsamples").on("click", function () { 19358 $('#cv-samples').modal({ 19359 keyboard: true 19360 }); 19361 }); 19362 // Video Player Box 19363 $(".fancylinkIframeCustomAsh").on("click", function () { 19364 var url = ($(this).attr("href") == '#1' ? "https://vep.b8cdn.com/test-drive/videos/vid-en-14-06-2015.html" : "https://vep.b8cdn.com/test-drive/videos/vid-ar-14-06-2015.html");
19365 var BuildHTML = "<iframe width='100%' height='100%' border='0' src='" + url + "'></iframe>"; 19366 $("#VideoPlayerModal-Content").html(BuildHTML); 19367 $('#VideoPlayerModal').modal({ 19368 keyboard: true 19369 }); 19370 }); 19371 $('#VideoPlayerModal').on('hidden.bs.modal', function (e) { 19372 $("#VideoPlayerModal-Content").html(""); 19373 }); 19374 19375 // VFF Foras (Iraq) 19376 $(".TrackForas-Visitors").on("click", function () { 19377 var ClickType = $(this).attr("id").replace("Foras-Count-", ""); 19378 var TrackURL = window.location.origin + "/en/forasvisitorsupdate"; 19379 var TrackObj = new Object(); 19380 TrackObj.AppId = 103; 19381 TrackObj.ClickType = ClickType; 19382 TrackObj.Lang = 'en'; 19383 $.post(TrackURL, TrackObj).done(function (resp) { 19384 // Response Received Filter response 19385 var re = /\s\s+/g; 19386 resp = resp.replace(re, ' '); 19387 RespObject = JSON.parse(resp); 19388 }); 19389 }); 19390 // End VJF Foras (Iraq) 19391 19392 19393 // eFair Harcode things 19394 $("select[name='field_id_1237510']").on('change', function () { 19395 var getthis = $(this); 19396 if (getthis.val() != "") { 19397 getthis.closest(".ctrl-hdn-cstm").next(".ctrl-hdn-cstm").hide(); 19398 $("#field_id_1237512").parent().parent(".ctrl-hdn-cstm").hide(); 19399 } else { 19400 getthis.closest(".ctrl-hdn-cstm").next(".ctrl-hdn-cstm").show(); 19401 $("#field_id_1237512").parent().parent(".ctrl-hdn-cstm").show(); 19402 } 19403 }); 19404 $("select[name='field_id_1237511']").on('change', function () { 19405 var getthis = $(this); 19406 if (getthis.val() != "") { 19407 getthis.closest(".ctrl-hdn-cstm").prev(".ctrl-hdn-cstm").hide(); 19408 $("select[name='field_id_1237513']").parent().parent(".ctrl-hdn-cstm").hide(); 19409 } else { 19410 getthis.closest(".ctrl-hdn-cstm").prev(".ctrl-hdn-cstm").show(); 19411 $("select[name='field_id_1237513']").parent().parent(".ctrl-hdn-cstm").show(); 19412 } 19413 }); 19414 // 19415 19416 $("#launch").hide(); 19417 19418 // Hardcode for Are you Student ? eFair (78) 19419 $("input[name='field_id_1237508']").on('change', function () { 19420 var PrevJobField = $(this).parents().closest(".form-group").prev('.form-group'); 19421 var SelectedVal = $("input[name='field_id_1237508']:checked").val(); 19422 var ChildItems = $(this).parent().closest(".form-group").nextAll('.ctrl-hdn-cstm'); 19423 if (SelectedVal == '1') { 19424 PrevJobField.hide(); 19425 $("#field_id_43012").rules("add", { 19426 Student: true, 19427 messages: { 19428 Student: "Please enter a valid Abu Dhabi University student email!", 19429 } 19430 }); 19431 ChildItems.show(); 19432 } else { 19433 PrevJobField.show(); 19434 $("#field_id_43012").rules("remove", "Student"); 19435 ChildItems.hide(); 19436 } 19437 }); 19438 19439 19440 // Hardcode for Secondory City selection (MOH 107) 19441 $("select[name='field_id_1237503']").on('change', function () { 19442 19443 var Select1 = "<option value=''>-- Select --</option><option value='Ahsa'>Ahsa</option><option value='Al Taif'>Al Taif</option><option value='Al Qunfudhah'>Al Qunfudhah</option>"; 19444 var Select2 = "<option value=''>-- Select --</option><option value='Hail'>Hail</option><option value='Qatif'>Qatif</option><option value='Jouf'>Jouf</option>"; 19445 var Select3 = "<option value=''>-- Select --</option><option value='Bisha'>Bisha</option><option value='Hafr al Batin'>Hafr al Batin</option><option value='Northern Boarders'>Northern Boarders</option>"; 19446 var Select4 = "<option value=''>-- Select --</option><option value='Bisha'>Bisha</option><option value='Hail'>Hail</option><option value='Al Ahsa'>Al Ahsa</option>"; 19447 var Select5 = "<option value=''>-- Select --</option><option value='Hafr Al Batin'>Hafr Al Batin</option><option value='Al Qatif'>Al Qatif</option><option value='Al Qunfudhah'>Al Qunfudhah</option>"; 19448 19449 if ($(this).val() == '1') { 19450 $("select[name='field_id_1237507']").html(Select1); 19451 } else if ($(this).val() == '2') { 19452 $("select[name='field_id_1237507']").html(Select2); 19453 } 19454 else if ($(this).val() == '3') { 19455 $("select[name='field_id_1237507']").html(Select3); 19456 } else if ($(this).val() == '4') { 19457 $("select[name='field_id_1237507']").html(Select4); 19458 } else { 19459 $("select[name='field_id_1237507']").html(Select5); 19460 } 19461 $("select[name='field_id_1237507']").parent().parent().show(); 19462 }); 19463 19464 19465 // Hardcode for licence selection (MOH 107) 19466 $("select[name='field_id_1237504']").on('change', function () { 19467 if ($(this).val() == '1') { 19468 $(this).parent().parent().nextAll(':lt(2)').show(); 19469 } else { 19470 $(this).parent().parent().nextAll(':lt(2)').hide(); 19471 } 19472 }); 19473 19474 19475 19476 $("select[name='field_id_1242077']").on("change",function(){ 19477 var myValues = $(this).val(); 19478 if(myValues==1){ 19479 $("#group-container-field_id_1242077 p.help-block").html("<ul class='drop-down-help-font'><li>A great way to go further with Ford is to join the company through the Ford College Graduate (FCG) program. Most departments offer these programs, which provide recent college graduates a variety of rotational job assignments during their first few years with Ford Motor Company.</li><li>Through the rotational assignments, the programsâ objective is to strengthen the FCGs business acumen and technical skills through rapid exposure to varied business activities.</li><li>Upon completion of the program, the FCGs âgraduatesâ and is placed within his or her home department to continue building a career at Ford.</li><li>
19479 To learn more about Fordâs College Graduate Program, <a target='_blank' href='https://corporate.ford.com/careers/students-and-recent-grads.html'>click here</a>.</li></ul>"); 19480 }else if(myValues==2){ 19481 $("#group-container-field_id_1242077 p.help-block").html("<ul class='drop-down-help-font'><li>The Ford Summer Internship Program provides students with hands-on, career-specific experience through full-time work during summer break (from early-May through the end of August). Students are engaged in networking and educational activities throughout their internship to gain exposure to senior level management and to learn more about Ford, our values and career opportunities.</li><li>Most Summer Interns will have just completed their junior year of an undergraduate program or one academic year of a Master's program and are expecting to graduate the following year. Generally, candidates are selected for having top academic standing, as well as exceptional leadership, communication and self-motivation skills.</li></ul>"); 19482 }else if(myValues==3){ 19483 $("#group-container-field_id_1242077 p.help-block").html("<ul class='drop-down-help-font'><li>When you join Ford Motor Company, your journey begins. You become part of skilled and motivated teams making inspired products that create a better world. If that sounds extraordinary to you, you may have just reached the end of your career search. Check out our opportunities for experienced professionals.</li></ul>"); 19484 }else{ 19485 $("#group-container-field_id_1242077 p.help-block").html(""); 19486 } 19487 }); 19488 19489 $("select[name='field_id_1242084']").on("change",function(){ 19490 var myValues = $(this).val(); 19491 if(myValues==1){ 19492 $("#group-container-field_id_1242084 p.help-block").html("<ul class='drop-down-help-font'><li>Neurodiverse, Autism and Disability Hiring Program</li><li>To learn more about FordWorks program, <a href='https://corporate.ford.com/careers/fordworks.html' target='_blank'>click here</a></li></ul>"); 19493 }else if(myValues==2){ 19494 $("#group-container-field_id_1242084 p.help-block").html("<ul class='drop-down-help-font'><li>Ford's re-entry program aims to help career re-launchers get back into the workforce. The program is looking for candidates who have taken a career break or have been underemployed for two or more years. Ford offers re-entry candidates a full-time position while providing tools to successfully re-acclimate into the workforce.)</li><li>To learn more about Ford's Re-Entry program, <a href='https://corporate.ford.com/careers/re-entry-program.html' target='_blank'>click here</a>.</li></ul>"); 19495 }else{ 19496 $("#group-container-field_id_1242084 p.help-block").html(""); 19497 } 19498 }); 19499 19500 19501 19502 19503 19504 // invite to vfairs form 19505 $("#invite_to_vfair_form").validate({ 19506 rules: { 19507 'email[]': { 19508 require_from_group: [1, ".email-group"], 19509 email:true 19510 } 19511 }, 19512 highlight: function (element) { 19513 $(element).closest('.form-group').addClass('has-error'); 19514 }, 19515 unhighlight: function (element) { 19516 $(element).closest('.form-group').removeClass('has-error'); 19517 }, 19518 errorElement: 'span', 19519 errorClass: 'help-block', 19520 errorPlacement: function (error, element) { 19521 if (element.parent('.input-group').length) { 19522 error.insertAfter(element.parent()); 19523 } else { 19524 error.insertAfter(element); 19525 } 19526 }, 19527 submitHandler: function () { 19528 $(".invite-to-vfair-form-container .alert").remove(); 19529 19530 var FeedBackURL = window.location.origin + "/en/invite_to_vfair"; 19531 var inviter_name = ""; 19532 var inviter_email = ""; 19533 if( $("#invite_to_vfair_form input[name='inviter_name']").length==0){ 19534 $("#invite_to_vfair_form").prepend("<input type='hidden' name='inviter_name' value='" + inviter_name + "'/>"); 19535 } 19536 if( $("#invite_to_vfair_form input[name='inviter_email']").length==0){ 19537 $("#invite_to_vfair_form").prepend("<input type='hidden' name='inviter_email' value='" + inviter_email + "'/>"); 19538 } 19539 $.post(FeedBackURL, $("#invite_to_vfair_form").serialize()).done(function (server_response) { 19540 var re = /\s\s+/g; 19541 var response = server_response.replace(re, ' '); 19542 var object = JSON.parse(response); 19543 if (object.status) { 19544 $(".invite-to-vfair-description").hide(); 19545 $(".invite-to-vfair-form-container").html("<div class='col-sm-8 alert alert-success'>" + object.message +"</div>"); 19546 } else { 19547 $(".invite-to-vfair-form-container").append("<div class='col-sm-8 alert alert-danger'>" + object.message +"</div>"); 19548 } 19549 }); 19550 } 19551 }); 19552 19553 // Script for Bayt.Careers 19554 $("#feedbackfrm").validate({ 19555 rules: { 19556 experience: { 19557 minlength: 50, 19558 maxlength: 400, 19559 required: true 19560 }, 19561 rate: { 19562 minlength: 50, 19563 maxlength: 400, 19564 required: true 19565 }, 19566 useful: { 19567 minlength: 50, 19568 maxlength: 400, 19569 required: true 19570 }, 19571 service: { 19572 minlength: 50, 19573 maxlength: 400, 19574 required: true 19575 } 19576 }, 19577 highlight: function (element) { 19578 $(element).closest('.form-group').addClass('has-error'); 19579 }, 19580 unhighlight: function (element) { 19581 $(element).closest('.form-group').removeClass('has-error'); 19582 }, 19583 errorElement: 'span', 19584 errorClass: 'help-block', 19585 errorPlacement: function (error, element) { 19586 if (element.parent('.input-group').length) { 19587 error.insertAfter(element.parent()); 19588 } else { 19589 error.insertAfter(element); 19590 } 19591 }, 19592 submitHandler: function () { 19593 var FeedBackURL = window.location.origin + "/en/feed_back_attend_win"; 19594 var FeedBack = new Object(); 19595 FeedBack.AppId = 108; 19596 FeedBack.Lang = 'en'; 19597 FeedBack.experience = $("#experience").val(); 19598 FeedBack.rate = $("#rate").val(); 19599 FeedBack.useful = $("#useful").val(); 19600 FeedBack.service = $("#service").val(); 19601 $.post(FeedBackURL, FeedBack).done(function (resp) { 19602 var re = /\s\s+/g; 19603 resp = resp.replace(re, ' '); 19604 RespObject = JSON.parse(resp); 19605 if (RespObject.Status) { 19606 $("#FeedBackResponseMsg").removeClass("FormResponseError").addClass("FormResponseSuccess").html(RespObject.Message); 19607 $('#feedbackfrm')[0].reset(); 19608 } else { 19609 if (RespObject.Message == "Please login first.") { 19610 $("#LoginBtn").trigger("click"); 19611 $("#ResponseBox").html(RespObject.Message).show(); 19612 } else { 19613 $("#FeedBackResponseMsg").removeClass("FormResponseSuccess").addClass("FormResponseError").html(RespObject.Message); 19614 } 19615 } 19616 }); 19617 } 19618 }); 19619 // End Script Bayt Careers 19620 19621 19622 // Participation form for crisil.vfairs.com (564) 19623 $("#participation-confirmation-form").validate({ 19624 rules: { 19625 participant_email: { 19626 required: true, 19627 email:true 19628 } 19629 }, 19630 highlight: function (element) { 19631 $(element).closest('.form-group').addClass('has-error'); 19632 }, 19633 unhighlight: function (element) { 19634 $(element).closest('.form-group').removeClass('has-error'); 19635 }, 19636 errorElement: 'span', 19637 errorClass: 'help-block', 19638 errorPlacement: function (error, element) { 19639 if (element.parent('.input-group').length) { 19640 error.insertAfter(element.parent()); 19641 } else { 19642 error.insertAfter(element); 19643 } 19644 }, 19645 submitHandler: function () { 19646 $("#error-box-participation-form").hide(); 19647 var ParticipationObj = new Object(); 19648 ParticipationObj.AppId = 564; 19649 ParticipationObj.Lang = 'en'; 19650 ParticipationObj.email = $("#participant_email").val(); 19651 19652 $.post(window.location.origin + "/en/participation_confirmation", ParticipationObj).done(function (resp) { 19653 var re = /\s\s+/g; 19654 resp = resp.replace(re, ' '); 19655 RespObject = JSON.parse(resp); 19656 if (RespObject.status) { 19657 $("#participation-modal .modal-body").html(RespObject.message); 19658 } else { 19659 $("#error-box-participation-form").html(RespObject.message).show(); 19660 } 19661 }); 19662 } 19663 }); 19664 19665 $("#call_for_proposal_form").validate({ 19666 rules: { 19667 what_kind_of_session:{required:true}, 19668 session_format:{required:true}, 19669 session_title:{required:true}, 19670 session_abstract:{required:true}, 19671 session_full_description:{required:true}, 19672 action_take_away_1:{required:true}, 19673 action_take_away_2:{required:true}, 19674 action_take_away_3:{required:true}, 19675 19676 speaker_full_name:{required:true}, 19677 speaker_email_address:{required:true,email:true}, 19678 speaker_title:{required:true}, 19679 speaker_organization:{required:true}, 19680 speaker_phone:{required:true}, 19681 speaker_social:{required:true}, 19682 other_speakers_multiple:{required:true}, 19683 list_any_speaking_engagements:{required:true}, 19684 speaker_bios:{required:true}, 19685 link_speaker_headshots:{required:true}, 19686 }, 19687 highlight: function (element) { 19688 $(element).closest('.form-group').addClass('has-error'); 19689 }, 19690 unhighlight: function (element) { 19691 $(element).closest('.form-group').removeClass('has-error'); 19692 }, 19693 errorElement: 'span', 19694 errorClass: 'help-block', 19695 errorPlacement: function (error, element) { 19696 if (element.parent('.input-group').length) { 19697 error.insertAfter(element.parent()); 19698 } else { 19699 error.insertAfter(element); 19700 } 19701 }, 19702 submitHandler: function () { 19703 var CallForProp = new Object(); 19704 CallForProp.AppId = 549; 19705 CallForProp.what_kind_of_session = $("#what_kind_of_session").val(); 19706 CallForProp.session_format = $("#session_format").val(); 19707 CallForProp.session_title = $("#session_title").val(); 19708 CallForProp.session_abstract = $("#session_abstract").val(); 19709 CallForProp.session_full_description = $("#session_full_description").val(); 19710 CallForProp.action_take_away_1 = $("#action_take_away_1").val(); 19711 CallForProp.action_take_away_2 = $("#action_take_away_2").val(); 19712 CallForProp.action_take_away_3 = $("#action_take_away_3").val(); 19713 CallForProp.speaker_full_name = $("#speaker_full_name").val(); 19714 CallForProp.speaker_email_address = $("#speaker_email_address").val(); 19715 CallForProp.speaker_title = $("#speaker_title").val(); 19716 19717 CallForProp.target_audience = $('#treeview-container').treeview('selectedValues').join(", "); 19718 19719 CallForProp.speaker_organization = $("#speaker_organization").val(); 19720 CallForProp.speaker_phone = $("#speaker_phone").val(); 19721 CallForProp.speaker_social = $("#speaker_social").val(); 19722 CallForProp.other_speakers_multiple = $("#other_speakers_multiple").val(); 19723 CallForProp.list_any_speaking_engagements = $("#list_any_speaking_engagements").val(); 19724 CallForProp.speaker_bios = $("#speaker_bios").val(); 19725 CallForProp.link_speaker_headshots = $("#link_speaker_headshots").val(); 19726 CallForProp.type = "CALL_FOR_PROPOSAL"; 19727 19728 $.post(window.location.origin + "/en/call_for_proposal_form", CallForProp).done(function (resp) { 19729 var re = /\s\s+/g; 19730 resp = resp.replace(re, ' '); 19731 RespObject = JSON.parse(resp); 19732 if (RespObject.status) { 19733 $("#call_for_proposal_form div.row").html("<div class='col-sm-12'><h2>Thank you for submission.</h2></div>"); 19734 } else { 19735 $("#call_for_proposal_form div.row").html("<p>Can not submit your proposal, please try again.</p>").show(); 19736 } 19737 }); 19738 } 19739 }); 19740 19741 19742 $(".submitbtns").click(function () { 19743 $(".submitbtns").attr("name", "false"); 19744 $(this).attr("name", "true"); 19745 }); 19746 19747 19748 var regValidateRules = { 19749 firstname: {minlength: 3, maxlength: 15, required: true}, 19750 email: {required: true, email: true}, 19751 companyname: {minlength: 3, required: true}, 19752 category: {required: true}, 19753 Number: {minlength: 3, required: true, number: false}, 19754 industry: {required: true} 19755 } 19756 19757 regValidateRules.CompanyURL = {required: false}; 19758 //regValidateRules.Location = {minlength: 3, required: true}; 19759 regValidateRules.Designation = {minlength: 3, required: true}; 19760 regValidateRules.classifyuser = {required: true}; 19761 19762 $('#RegisterFrm').validate({ 19763 rules: regValidateRules, 19764 highlight: function (element) { 19765 $(element).closest('.form-group').addClass('has-error'); 19766 }, 19767 unhighlight: function (element) { 19768 $(element).closest('.form-group').removeClass('has-error'); 19769 }, 19770 errorElement: 'span', 19771 errorClass: 'help-block', 19772 errorPlacement: function (error, element) { 19773 if (element.parent('.input-group').length) { 19774 error.insertAfter(element.parent()); 19775 } else { 19776 error.insertAfter(element); 19777 } 19778 return false; // <<- returning false stops the page reload 19779 }, 19780 submitHandler: function (e) { 19781 19782 $("#RegisterFrm button").prop("disabled",true).text("Please wait....."); 19783 var TrackURL = window.location.origin + "/en/update_employer_registration"; 19784 var TrackObj = new Object(); 19785 TrackObj.AppId = '20550'; 19786 TrackObj.Lang = 'en'; 19787 TrackObj.firstname = $("#firstname").val(); 19788 TrackObj.lastname = $("#lastname").val(); 19789 TrackObj.email = $("#email").val(); 19790 TrackObj.companyname = $("#companyname").val(); 19791 TrackObj.category = $("#category").val(); 19792 TrackObj.vendor = $("#vendor").val(); 19793 TrackObj.other_vendor = $("#other_vendor").val(); 19794 TrackObj.LearningOutcomes = $("#LearningOutcomes").val(); 19795 T
19795rackObj.SessionTopic = $("#SessionTopic").val(); 19796 TrackObj.phone = $("#phone").val(); 19797 TrackObj.howdoyouhear = $("#howdoyouhear").val(); 19798 TrackObj.time_zone = $("#time_zone").val(); 19799 TrackObj.city = ($("#city").length > 0 ? $("#city").val() : ""); 19800 TrackObj.state = ($("#state").length > 0 ? $("#state").val() : ""); 19801 TrackObj.zipcode = ($("#zipcode").length > 0 ? $("#zipcode").val() : ""); 19802 19803 19804 TrackObj.CompanyURL = $("#CompanyURL").val(); 19805 TrackObj.Location = $("#Location").val(); 19806 TrackObj.Designation = $("#Designation").val(); 19807 TrackObj.Number = $("#Number").val(); 19808 TrackObj.classifyuser = $("#classifyuser").val(); 19809 TrackObj.Message = $("#Message").val(); 19810 TrackObj.industry = $("#industry").val(); 19811 TrackObj.RegisterType = ($("#RegisterBtn").attr("name") == 'true' ? true : false); 19812 19813 $.post(TrackURL, TrackObj).done(function (resp) { 19814 var re = /\s\s+/g; 19815 resp = resp.replace(re, ' '); 19816 RespObject = JSON.parse(resp); 19817 if (RespObject.Status) { 19818 $('#RegisterFrm')[0].reset(); 19819 $(".form-area").hide(); 19820 if (TrackObj.AppId == 160) { 19821 $('<div class="text-center"><a href="#" class="btn-yellow">Download Sponsorship and Exhibitor Packages</a></div>').insertAfter("#ResponseMsg"); 19822 } 19823 if (TrackObj.AppId == 664) { 19824 $('<div class="msg alert-success">
19824Thank you for showing interest. Our team will contact you soon.</div>').insertAfter("#response"); 19825 } 19826 $(".page-description-area").hide(); 19827 $("#ResponseMsg").removeClass("alert-danger").addClass("alert-success").html(RespObject.Message).show(); 19828 } else { 19829 $("#RegisterFrm button").prop("disabled",false); 19830 $("#ResponseMsg").removeClass("alert-success").addClass("alert-danger").html(RespObject.Message).show(); 19831 } 19832 return false; // <<- returning false stops the page reload 19833 }); 19834 19835 $("#RegisterFrm button").prop("disabled",false); 19836 return false; // <<- returning false stops the page reload 19837 } 19838 }); 19839 }); 19840 19841 /// Validation End 19842 19843 19844 19845 19846 // Forgot Password Section Start 19847 19848 // Hide login modal on showing reset password modal 19849 $('#forgot-pwd-modal').on('shown.bs.modal', function (e) { 19850 $("#forgot-pwd-responseBox").html("").hide(); 19851 $('#LoginModal').modal('hide'); 19852 }); 19853 19854 // Validate and reset call for forgot password 19855 var PassresetValidateRules = { 19856 resetemail: {required: true, email: true} 19857 }; 19858 19859 $('#reset-pwd-frm').validate({ 19860 rules: PassresetValidateRules, 19861 highlight: function (element) { 19862 $(element).closest('.form-group').addClass('has-error'); 19863 }, 19864 unhighlight: function (element) { 19865 $(element).closest('.form-group').removeClass('has-error'); 19866 }, 19867 errorElement: 'span', 19868 errorClass: 'help-block', 19869 errorPlacement: function (error, element) { 19870 if (element.parent('.input-group').length) { 19871 error.insertAfter(element.parent()); 19872 } else { 19873 error.insertAfter(element); 19874 } 19875 }, 19876 submitHandler: function () { 19877 var PwdResetURL = location.protocol + '//' + location.host + "/en/reset_user_password"; 19878 var ResetPwdObj = new Object(); 19879 ResetPwdObj.AppId = '20550'; 19880 ResetPwdObj.Lang = 'en'; 19881 ResetPwdObj.Email = $("#resetemail").val(); 19882 ResetPwdObj.pwd = ($("#pwd").length > 0 ? $("#pwd").val() : ""); 19883 var csrfName = 'ci_csrf_token'; 19884 var csrfHash = ''; 19885 ResetPwdObj[csrfName] = csrfHash; 19886 19887 $.post(PwdResetURL, ResetPwdObj).done(function (resp) { 19888 var re = /\s\s+/g; 19889 resp = resp.replace(re, ' '); 19890 RespObject = JSON.parse(resp); 19891 if (RespObject.Status) { 19892 $('#reset-pwd-frm')[0].reset(); 19893 $("#forgot-pwd-responseBox").removeClass("FormResponseError").addClass("FormResponseSuccess").html(RespObject.Message).show(); 19894 } else { 19895 $("#forgot-pwd-responseBox").removeClass("FormResponseSuccess").addClass("FormResponseError").html(RespObject.Message).show(); 19896 } 19897 if (typeof passwordResetCallBack !== 'undefined') { 19898 passwordResetCallBack(RespObject); 19899 } 19900 }); 19901 } 19902 }); 19903 19904 // Forgot Password Section End // 19905 19906 // update on login consent + password (768) 19907 $('#update_pwd_frm_update_consent').validate({ 19908 rules: { 19909 uLoginEmail: {required: true, email: true}, 19910 uPassword: {required: true, minlength: 5}, 19911 uConfirmPassword: {required: true, minlength: 5, equalTo: "#uPassword"}, 19912 uConsent: {required: true}, 19913 }, 19914 highlight: function (element) { 19915 $(element).closest('.form-group').addClass('has-error'); 19916 }, 19917 unhighlight: function (element) { 19918 $(element).closest('.form-group').removeClass('has-error'); 19919 }, 19920 errorElement: 'span', 19921 errorClass: 'help-block', 19922 errorPlacement: function (error, element) { 19923 if (element.parent('.input-group').length) { 19924 error.insertAfter(element.parent()); 19925 } else { 19926 error.insertAfter(element); 19927 } 19928 }, 19929 submitHandler: function () { 19930 var update_pwd_url = location.protocol + '//' + location.host + "/en/update_new_user_password_on_login"; 19931 var update_pwd = new Object(); 19932 update_pwd.AppId = '20550'; 19933 update_pwd.token = $("#pwd-reset-update-token-id").val(); 19934 update_pwd.newpassword = $("#uConfirmPassword").val(); 19935 update_pwd.Lang = 'en'; 19936 update_pwd.Email = $("#uLoginEmail").val(); 19937 update_pwd.consent = ($("#uConsent").is(":checked") ? 1 : 0); 19938 19939 $.post(update_pwd_url, update_pwd).done(function (resp) { 19940 var re = /\s\s+/g; 19941 resp = resp.replace(re, ' '); 19942 RespObject = JSON.parse(resp); 19943 if (RespObject.Status) { 19944 if(update_pwd.AppId==564){ 19945 $('#update-pwd-window-body').html("<div class='form-group message-form-group'><p>Password has been updated successfully, please wait logging you in.</p></div>"); 19946 $("input[name='LoginEmail']").val(update_pwd.Email); 19947 $("input[name='LoginEmail']").parents(".form-group:first").append("<input type='hidden' name='auto_login' value='true'/><input type='password' name='Password' value='" + update_pwd.newpassword +"'/>"); 19948 setTimeout(function(){ 19949 $("#Main-Login-Frm").submit(); 19950 },2000); 19951 }else{ 19952 $('#update-pwd-window-body').html("<div class='form-group message-form-group'><p>" + RespObject.Message +"</p></div>"); 19953 } 19954 $('#update-pwd-window .modal-footer button:last').remove(); 19955 $('#update-pwd-window .modal-footer button:last').text("Close"); 19956 19957 } else { 19958 $("#update-pwd-window-body .message-form-group").removeClass("FormResponseSuccess").addClass("FormResponseError").html(RespObject.Message).show(); 19959 } 19960 }); 19961 } 19962 }); 19963 // end update on login appid:(768) 19964 19965 // update on login (3568) 19966 $('#update-pwd-Frm_update_consent').validate({ 19967 rules: { 19968 uLoginEmail: {required: true, email: true}, 19969 uPassword: {required: true, minlength: 5}, 19970 uConfirmPassword: {required: true, minlength: 5, equalTo: "#uPassword"}, 19971 uConsent: {required: true}, 19972 field_id_1273574: {required: true}, 19973 }, 19974 highlight: function (element) { 19975 $(element).closest('.form-group').addClass('has-error'); 19976 }, 19977 unhighlight: function (element) { 19978 $(element).closest('.form-group').removeClass('has-error'); 19979 }, 19980 errorElement: 'span', 19981 errorClass: 'help-block', 19982 errorPlacement: function (error, element) { 19983 if (element.parent('.input-group').length) { 19984 error.insertAfter(element.parent()); 19985 } else { 19986 error.insertAfter(element); 19987 } 19988 }, 19989 submitHandler: function () { 19990 var update_pwd_url = location.protocol + '//' + location.host + "/en/update_new_user_password_on_login"; 19991 var update_pwd = new Object(); 19992 update_pwd.AppId = '20550'; 19993 update_pwd.token = $("#pwd-reset-update-token-id").val(); 19994 update_pwd.newpassword = $("#uConfirmPassword").val(); 19995 update_pwd.Lang = 'en'; 19996 update_pwd.Email = $("#uLoginEmail").val(); 19997 update_pwd.consent = ($("#uConsent").is(":checked") ? 1 : 0); 19998 update_pwd.field_id_1273574 = $("#field_id_1273574").val(); 19999 20000 $.post(update_pwd_url, update_pwd).done(function (resp) { 20001 var re = /\s\s+/g; 20002 resp = resp.replace(re, ' '); 20003 RespObject = JSON.parse(resp); 20004 if (RespObject.Status) { 20005 20006 $('#update-pwd-window-body').html("<div class='form-group message-form-group'><p>" + RespObject.Message +"</p></div>"); 20007 20008 $('#update-pwd-window .modal-footer button:last').remove(); 20009 $('#update-pwd-window .modal-footer button:last').text("Close"); 20010 20011 } else { 20012 $("#update-pwd-window-body .message-form-group").removeClass("FormResponseSuccess").addClass("FormResponseError").html(RespObject.Message).show(); 20013 } 20014 }); 20015 } 20016 }); 20017 // end update on login appid:(3568) 20018 20019 // update on login (4467) 20020 $('#update-pwd-Frm_update_extra_fields').validate({ 20021 rules: { 20022 uLoginEmail: {required: true, email: true}, 20023 uPassword: {required: true, minlength: 5, maxlength: 100}, 20024 uConfirmPassword: {required: true, minlength: 5, maxlength: 100,equalTo: "#uPassword"}, 20025 uConsent: {required: true}, 20026 field_id_1284014: {required: true}, 20027 field_id_1284015: {required: true}, 20028 field_id_1284016: {required: true}, 20029 field_id_1284018: {required: true}, 20030 field_id_1284019: {required: true}, 20031 }, 20032 highlight: function (element) { 20033 $(element).closest('.form-group').addClass('has-error'); 20034 }, 20035 unhighlight: function (element) { 20036 $(element).closest('.form-group').removeClass('has-error'); 20037 }, 20038 errorElement: 'span', 20039 errorClass: 'help-block', 20040 errorPlacement: function (error, element) { 20041 if (element.parent('.input-group').length) { 20042 error.insertAfter(element.parent()); 20043 } else { 20044 error.insertAfter(element); 20045 } 20046 }, 20047 submitHandler: function () { 20048 var update_pwd_url = location.protocol + '//' + location.host + "/en/update_new_user_password_on_login"; 20049 var update_pwd = new Object(); 20050 update_pwd.AppId = '20550'; 20051 update_pwd.token = $("#pwd-reset-update-token-id").val(); 20052 update_pwd.newpassword = $("#uConfirmPassword").val(); 20053 update_pwd.Lang = 'en'; 20054 update_pwd.Email = $("#uLoginEmail").val(); 20055 update_pwd.consent = ($("#uConsent").is(":checked") ? 1 : 0); 20056 update_pwd.field_id_1284014 = $("#field_id_1284014").val(); 20057 update_pwd.field_id_1284015 = $("#field_id_1284015").val(); 20058 update_pwd.field_id_1284016 = $("#field_id_1284016").val(); 20059 update_pwd.field_id_1284018 = $("#field_id_1284018").val(); 20060 update_pwd.field_id_1284019 = $("#field_id_1284019").val(); 20061 update_pwd.field_id_1284020 = $("#field_id_1284020").val(); 20062 20063 $.post(update_pwd_url, update_pwd).done(function (resp) { 20064 var re = /\s\s+/g; 20065 resp = resp.replace(re, ' '); 20066 RespObject = JSON.parse(resp); 20067 if (RespObject.Status) { 20068 20069 $('#update-pwd-window-body').html("<div class='form-group message-form-group'><p>" + RespObject.Message +"</p></div>"); 20070 20071 $('#update-pwd-window .modal-footer button:last').remove(); 20072 $('#update-pwd-window .modal-footer button:last').text("Close"); 20073 20074 } else { 20075 $("#update-pwd-window-body .message-form-group").removeClass("FormResponseSuccess").addClass("FormResponseError").html(RespObject.Message).show(); 20076 } 20077 }); 20078 } 20079 }); 20080 // end update on login appid:(4467) 20081 // update on login (4827) 20082 $('#update-pwd-Frm_update_school_field').validate({ 20083 rules: { 20084 uLoginEmail: {required: true, email: true}, 20085 }, 20086 highlight: function (element) { 20087 $(element).closest('.form-group').addClass('has-error'); 20088 }, 20089 unhighlight: function (element) { 20090 $(element).closest('.form-group').removeClass('has-error'); 20091 }, 20092 errorElement: 'span', 20093 errorClass: 'help-block', 20094 errorPlacement: function (error, element) { 20095 if (element.parent('.input-group').length) { 20096 error.insertAfter(element.parent()); 20097 } else { 20098 error.insertAfter(element); 20099 } 20100 }, 20101 submitHandler: function () { 20102 var update_pwd_url = location.protocol + '//' + location.host + "/en/update_new_user_password_on_login"; 20103 var update_pwd = new Object(); 20104 update_pwd.AppId = '20550'; 20105 update_pwd.token = $("#pwd-reset-update-token-id").val(); 20106 update_pwd.Lang = 'en'; 20107 update_pwd.Email = $("#uLoginEmail").val(); 20108 update_pwd.field_id_1290124 = $("#field_id_1290124").val(); 20109 20110 $.post(update_pwd_url, update_pwd).done(function (resp) { 20111 var re = /\s\s+/g; 20112 resp = resp.replace(re, ' '); 20113 RespObject = JSON.parse(resp); 20114 if (RespObject.Status) { 20115 $('#update-pwd-window-body').html("<div class='form-group message-form-group'><p>" + RespObject.Message +"</p></div>"); 20116 $("input[name='LoginEmail']").val(update_pwd.Email); 20117 $("input[name='LoginEmail']").parents(".form-group:first").append("<input type='hidden' name='auto_login' value='true'/>"); 20118 setTimeout(function(){ 20119 $("#Main-Login-Frm").submit(); 20120 },2000); 20121 } else { 20122 $("#update-pwd-window-body .message-form-group").removeClass("FormResponseSuccess").addClass("FormResponseError").html(RespObject.Message).show(); 20123 } 20124 }); 20125 } 20126 }); 20127 // end update on login appid:(4827) 20128 20129 20130 20131 var password_reset_rules = { 20132 updatepwdemail: {required: true, email: true}, 20133 updatepwdnewpwd: {required: true, minlength: 5,maxlength:100}, 20134 updatepwdconfirm: {required: true, minlength: 5, maxlength:100,equalTo: "#updatepwdnewpwd"} 20135 }; 20136 20137 var set_password_first_login = { 20138 uLoginEmail: {required: true,email: true}, 20139 uPassword: {required: true, minlength: 5}, 20140 uConfirmPassword: {required: true, minlength: 5, equalTo: "#uPassword"} 20141 }; 20142 20143 if(app_id==1389){ 20144 $.validator.addMethod("checklower", function(value, element) { 20145 return /[a-z]/.test(value); 20146 },"Need atleast 1 lowercase alphabet"); 20147 $.validator.addMethod("checkupper", function(value, element) { 20148 return /[A-Z]/.test(value); 20149 },"Need atleast 1 uppercase alphabet"); 20150 $.validator.addMethod("checkdigit", function(value, element) { 20151 return /[0-9]/.test(value); 20152 },"Need atleast 1 digit"); 20153 // $.validator.addMethod("pwcheck", function(value) { 20154 // return /^[A-Za-z0-9\d=!\-@._*]*$/.test(value) && /[a-z]/.test(value) && /\d/.test(value) && /[A-Z]/.test(value); 20155 // },"Password is not strong enough"); 20156 20157 password_reset_rules.updatepwdnewpwd = {required: true, minlength: 8, maxlength: 100, checklower: true,checkupper: true,checkdigit: true}, 20158 password_reset_rules.updatepwdconfirm = {required: true, minlength: 8, maxlength: 100, equalTo: "#updatepwdnewpwd"} 20159 } 20160 20161 if(app_id==2952){ 20162 password_reset_rules.updatepwdnewpwd = {required: true, minlength: 8,maxlength: 100}; 20163 password_reset_rules.updatepwdconfirm = {required: true, minlength: 8, maxlength: 100, equalTo: "#updatepwdnewpwd"}; 20164 } 20165
20166 password_reset_rules.updatepwdnewpwd['minlength'] = 6; 20167password_reset_rules.updatepwdconfirm['minlength'] = 6; 20168set_password_first_login.uPassword['minlength'] = 6; 20169set_password_first_login.uConfirmPassword['minlength'] = 6; 20170 20171 // update on login (262) 20172 // VFC-56285: apps with set_password_on_first_login enabled render a 20173 // #require-set-password-otp marker (_modal.php) and an OTP field/group; 20174 // this state machine inserts an email-OTP round trip before the existing 20175 // password-set POST below, which is otherwise unchanged. 20176 var setPasswordOtpStep = 'password'; 20177 set_password_first_login.otp = { 20178 required: function () { 20179 return $("#require-set-password-otp").length > 0 && setPasswordOtpStep === 'otp'; 20180 } 20181 }; 20182 // Local countdown, separate from the unrelated 2FA-login startTimer()/ 20183 // #countdown-timer/.resendbtn above - an app could have both features on. 20184 function startUpdatePwdOtpTimer(duration) { 20185 $('#update-pwd-otp-resend').attr('disabled', true); 20186 var timer = duration, minutes, seconds; 20187 var x = setInterval(function () { 20188 minutes = parseInt(timer / 60, 10); 20189 seconds = parseInt(timer % 60, 10); 20190 minutes = minutes < 10 ? "0" + minutes : minutes; 20191 seconds = seconds < 10 ? "0" + seconds : seconds; 20192 if (--timer < 0) { 20193 $('#update-pwd-otp-resend').removeAttr('disabled'); 20194 clearInterval(x); 20195 } 20196 $('#update-pwd-otp-countdown').html(minutes + ":" + seconds); 20197 }, 1000); 20198 } 20199 $('#update-pwd-Frm_update').validate({ 20200 rules: set_password_first_login, 20201 highlight: function (element) { 20202 $(element).closest('.form-group').addClass('has-error'); 20203 }, 20204 unhighlight: function (element) { 20205 $(element).closest('.form-group').removeClass('has-error'); 20206 }, 20207 errorElement: 'span', 20208 errorClass: 'help-block', 20209 errorPlacement: function (error, element) { 20210 if (element.parent('.input-group').length) { 20211 error.insertAfter(element.parent()); 20212 } else { 20213 error.insertAfter(element); 20214 } 20215 }, 20216 submitHandler: function () { 20217 var update_pwd_url = location.protocol + '//' + location.host + "/en/update_new_user_password_on_login"; 20218 var update_pwd = new Object(); 20219 update_pwd.AppId = '20550'; 20220 update_pwd.token = $("#pwd-reset-update-token-id").val(); 20221 update_pwd.newpassword = $("#uConfirmPassword").val(); 20222 update_pwd.Lang = 'en'; 20223 update_pwd.Email = $("#uLoginEmail").val(); 20224 var csrfName = 'ci_csrf_token'; 20225 var csrfHash = ''; 20226 update_pwd[csrfName] = csrfHash; 20227 20228 if ($("#require-set-password-otp").length && setPasswordOtpStep !== 'otp-verified') { 20229 if (setPasswordOtpStep === 'password') { 20230 var otp_send_url = location.protocol + '//' + location.host + "/en/send_set_password_otp"; 20231 $.post(otp_send_url, update_pwd).done(function (resp) { 20232 var re = /\s\s+/g; 20233 resp = resp.replace(re, ' '); 20234 RespObject = JSON.parse(resp); 20235 $("#update-pwd-responseBox").hide(); 20236 if (RespObject.Status) { 20237 setPasswordOtpStep = 'otp'; 20238 $('#update-pwd-set-fields').hide(); 20239 $('#update-pwd-otp-group').show(); 20240 $('.update-pwd-submit-btn').text('Verify & Set Password'); 20241 startUpdatePwdOtpTimer(60); 20242 } else { 20243 $("#update-pwd-responseBox").removeClass("FormResponseSuccess").addClass("FormResponseError").html(RespObject.Message).show(); 20244 } 20245 }); 20246 return; 20247 } 20248 if (setPasswordOtpStep === 'otp') { 20249 var otp_verify_url = location.protocol + '//' + location.host + "/en/verify_set_password_otp"; 20250 var otp_verify = new Object(); 20251 otp_verify.AppId = update_pwd.AppId; 20252 otp_verify.Email = update_pwd.Email; 20253 otp_verify.token = $("#update-pwd-otp").val(); 20254 otp_verify[csrfName] = csrfHash; 20255 $.post(otp_verify_url, otp_verify).done(function (resp) { 20256 var re = /\s\s+/g; 20257 resp = resp.replace(re, ' '); 20258 RespObject = JSON.parse(resp); 20259 if (RespObject.Status) { 20260 setPasswordOtpStep = 'otp-verified'; 20261 $('#update-pwd-Frm_update').submit(); 20262 } else { 20263 $("#update-pwd-responseBox").removeClass("FormResponseSuccess").addClass("FormResponseError").html(RespObject.Message).show(); 20264 } 20265 }); 20266 return; 20267 } 20268 } 20269 20270 $.post(update_pwd_url, update_pwd).done(function (resp) { 20271 var re = /\s\s+/g; 20272 resp = resp.replace(re, ' '); 20273 RespObject = JSON.parse(resp); 20274 if (RespObject.Status) { 20275 if(update_pwd.AppId==564){ 20276 $('#update-pwd-window-body').html("<div class='form-group message-form-group'><p>Password has been updated successfully, please wait logging you in.</p></div>"); 20277 $("input[name='LoginEmail']").val(update_pwd.Email); 20278 $("input[name='LoginEmail']").parents(".form-group:first").append("<input type='hidden' name='auto_login' value='true'/><input type='password' name='Password' value='" + update_pwd.newpassword +"'/>"); 20279 setTimeout(function(){ 20280 $("#Main-Login-Frm").submit(); 20281 },2000); 20282 }else{ 20283 $('#update-pwd-window-body').html("<div class='form-group message-form-group'><p>" + RespObject.Message +"</p></div>"); 20284 } 20285 $('#update-pwd-window .modal-footer button:last').remove(); 20286 $('#update-pwd-window .modal-footer button:last').text("Close"); 20287 20288 } else { 20289 $("#update-pwd-window-body .message-form-group").removeClass("FormResponseSuccess").addClass("FormResponseError").html(RespObject.Message).show(); 20290 } 20291 }); 20292 } 20293 }); 20294 // end update on login appid:(262) 20295 20296 // Resend OTP for the set-first-password popup (VFC-56285) 20297 $('#update-pwd-otp-resend').on('click', function () { 20298 var otp_send_url = location.protocol + '//' + location.host + "/en/send_set_password_otp"; 20299 var resend_otp = new Object(); 20300 resend_otp.AppId = '20550'; 20301 resend_otp.Lang = 'en'; 20302 resend_otp.Email = $("#uLoginEmail").val();
20303 var csrfName = 'ci_csrf_token'; 20304 var csrfHash = ''; 20305 resend_otp[csrfName] = csrfHash; 20306 $.post(otp_send_url, resend_otp).done(function (resp) { 20307 var re = /\s\s+/g; 20308 resp = resp.replace(re, ' '); 20309 RespObject = JSON.parse(resp); 20310 if (RespObject.Status) { 20311 $('#update-pwd-responseBox').removeClass("FormResponseError").addClass("FormResponseSuccess").html("The verification code has been sent again.").show('slow'); 20312 setTimeout(function () { $('#update-pwd-responseBox').hide('slow'); }, 10000); 20313 startUpdatePwdOtpTimer(60); 20314 } else { 20315 $("#update-pwd-responseBox").removeClass("FormResponseSuccess").addClass("FormResponseError").html(RespObject.Message).show(); 20316 } 20317 }); 20318 }); 20319 // end resend OTP for set-first-password popup 20320 20321 // Set new password 20322 $('#reset-update-pwd-frm').validate({ 20323 rules: password_reset_rules, 20324 highlight: function (element) { 20325 $(element).closest('.form-group').addClass('has-error'); 20326 }, 20327 unhighlight: function (element) { 20328 $(element).closest('.form-group').removeClass('has-error'); 20329 }, 20330 errorElement: 'span', 20331 errorClass: 'help-block', 20332 errorPlacement: function (error, element) { 20333 if (element.parent('.input-group').length) { 20334 error.insertAfter(element.parent()); 20335 } else { 20336 error.insertAfter(element); 20337 } 20338 }, 20339 submitHandler: function () { 20340 var update_pwd_url = location.protocol + '//' + location.host + "/en/update_new_user_password"; 20341 var update_pwd = new Object(); 20342 update_pwd.AppId = '20550'; 20343 update_pwd.token = $("#pwd-reset-update-token").val(); 20344 update_pwd.newpassword = $("#updatepwdconfirm").val(); 20345 update_pwd.Lang = 'en'; 20346 update_pwd.Email = $("#updatepwdemail").val(); 20347 var csrfName = 'ci_csrf_token'; 20348 var csrfHash = ''; 20349 update_pwd[csrfName] = csrfHash; 20350 20351 $.post(update_pwd_url, update_pwd).done(function (resp) { 20352 var re = /\s\s+/g; 20353 resp = resp.replace(re, ' '); 20354 let RespObject = JSON.parse(resp); 20355 if (RespObject.Status) { 20356 $('#reset-update-pwd-frm')[0].reset(); 20357 $('#reset-update-pwd-frm .form-group:not(:last-child)').hide(); 20358 $('#reset-update-pwd-frm .modal-footer button:last').hide(); 20359 $("#reset-pwd-responseBox").removeClass("FormResponseError").addClass("FormResponseSuccess").html(RespObject.Message).show(); 20360 } else { 20361 $("#reset-pwd-responseBox").removeClass("FormResponseSuccess").addClass("FormResponseError").html(RespObject.Message).show(); 20362 } 20363 20364 if (typeof passwordResetSuccessCallBack !== 'undefined') { 20365 passwordResetSuccessCallBack(RespObject); 20366 } 20367 20368 }); 20369 } 20370 }); 20371 20372 20373 $('#LoginModal').on('hidden.bs.modal', function (e) { 20374 $("#ResponseBox").html("").hide(); 20375 }); 20376 var eventNotstarted=false; 20377 20378 20379 20380 if(document.location.hash!="" && (document.location.hash.indexOf("booth-")==1 || document.location.hash.indexOf("webinar-")==1 || document.location.hash.indexOf("Booth-")==1 || document.location.hash.indexOf("toyota")==1 || document.location.hash.indexOf("custom-cms-page")==1 || document.location.hash.indexOf("diversity-and-inclusion")==1)){ 20381 if(app_id==586){ 20382 $("input[name='login-red']").val("/en/hall" + document.location.hash); 20383 }else if(app_id==343){ 20384 $("input[name='login-red']").val("/en/hall" + document.location.hash); 20385 $("#LoginModal").modal("show"); 20386 }else if(app_id==690){ 20387 $("input[name='login-red']").val("/en/hall" + document.location.hash); 20388 setTimeout(function() { 20389 $(".two-btns .guest-login:first").trigger("click"); 20390 }, 1000); 20391 }else{ 20392 $("#LoginModal").modal("show"); 20393 $("input[name='login-red']").val("/en/hall" + document.location.hash); 20394 } 20395 } 20396 20397 // dynamic password policies related 20398 // number check 20399 jQuery.validator.addMethod("policy_reset_arabic_num", function (value, element) { 20400 return /\d/.test(value); 20401 }, "Password must contain one numeric eg (0-9)"); 20402 20403 // lowercase alphabet a-z 20404 jQuery.validator.addMethod("policy_reset_roman_lower", function (value, element) { 20405 return /[a-z]/.test(value); 20406 }, "Password must contain any of lower case letters (a...z)"); 20407 20408 // upper case alphabet A-Z 20409 jQuery.validator.addMethod("policy_reset_roman_upper", function (value, element) { 20410 return /[A-Z]/.test(value); 20411 }, "Password must contain any of upper case letters (A...Z)"); 20412 20413 // special characters (e.g. ~ ! @ # $ & -) 20414 jQuery.validator.addMethod("policy_reset_special_characters", function (value, element) { 20415 var special_characters = /[~!@#$&-]/; 20416 return special_characters.test(value); 20417 }, "Password must contain any of special characters eg (~ ! @ # $ & -)"); 20418 // dynamic password policies related 20419 20420 jQuery.validator.addMethod("USJEmailEmp", function (value, element) { 20421 if (/@usj.edu.mo\s*$/.test(value) || /@ashfaqsolangi.com\s*$/.test(value)) { 20422 return true; 20423 }else{ 20424 return false;
20425 } 20426 }, "Please use your official email (eg @usj.edu.mo)."); 20427 20428 jQuery.validator.addMethod("bscEmployeeID", function (value, element) { 20429 return (value!="" && value.length == 7 && $.isNumeric(value) ? true : false); 20430 }, "Enter your 7-digit Employee ID"); 20431 20432 jQuery.validator.addMethod("allowed_arm_only", function (value, element) { 20433 if (/@arm.com\s*$/.test(value) || /@liveunion.co.uk\s*$/.test(value) || /@armchina.com\s*$/.test(value) || 20434 /@treasure-data.com\s*$/.test(value) || /@ashfaqsolangi.com\s*$/.test(value)) { 20435 return true; 20436 }else{ 20437 return false; 20438 } 20439 }, "Please use your official email, provided email address is not allowed."); 20440 20441 jQuery.validator.addMethod("CRIAQOnly", function (value, element) { 20442 if (/@3m.com\s*$/.test(value) || /@a7integration.com\s*$/.test(value) || /@acsynam.com\s*$/.test(value) || 20443 /@advancedpowdercoatinginc.com\s*$/.test(value) || /@aeromontreal.ca\s*$/.test(value) || /@aeronyx.ca\s*$/.test(value) || 20444 /@admtl.com\s*$/.test(value) || /@aiac.ca\s*$/.test(value) || /@asiiweb.com\s*$/.test(value) || 20445 /@apnca.com\s*$/.test(value) || /@vyoo.ai\s*$/.test(value) || /@ara-uas.com\s*$/.test(value) || 20446 /@atem.com\s*$/.test(value) || /@athenatechno.tech\s*$/.test(value) || /@avr-global.com\s*$/.test(value) || 20447 /@l3commercialaviation.com\s*$/.test(value) || /@avior.ca\s*$/.test(value) || /@bmu.co\s*$/.test(value) || 20448 /@bellhelicopter.com\s*$/.test(value) || /@biexpertise.com\s*$/.test(value) || /@binarieslid.com\s*$/.test(value) || 20449 /@bombardier.com\s*$/.test(value) || /@cae.com\s*$/.test(value) || /@calogysolutions.com\s*$/.test(value) || 20450 /@asc-csa.gc.ca\s*$/.test(value) || /@carillon.ca\s*$/.test(value) || /@cgq.qc.ca\s*$/.test(value) || 20451 /@cmqtr.qc.ca\s*$/.test(value) || /@crvi.ca\s*$/.test(value) || /@ctmp.ca\s*$/.test(value) || 20452 /@cqrda.caglish\s*$/.test(value) || /@cegepmontpetit.ca\s*$/.test(value) || /@ciena.com\s*$/.test(value) || 20453 /@cmcelectronics.ca\s*$/.test(value) || /@cdcq.qc.ca\s*$/.test(value) || /@compositesvci.com\s*$/.test(value) || 20454 /@genikinc.com\s*$/.test(value) || /@concordia.ca\s*$/.test(value) || /@crim.ca\s*$/.test(value) || 20455 /@criq.qc.ca\s*$/.test(value) || /@cscanada.ca\s*$/.test(value) || /@deepsight.ca\s*$/.test(value) || 20456 /@delastek.com\s*$/.test(value) || /@deleaves-drone.com\s*$/.test(value) || /@demaspa.it\s*$/.test(value) || 20457 /@dronevolt.com\s*$/.test(value) || /@etsmtl.ca\s*$/.test(value) || /@polymtl.ca\s*$/.test(value) || 20458 /@elastoproxy.com\s*$/.test(value) || /@electro-kut.com\s*$/.test(value) || /@elementai.com\s*$/.test(value) || 20459 /@elisen-assoc.com\s*$/.test(value) || /@equispheres.com\s*$/.test(value) || /@castolin.com-CA\s*$/.test(value) || 20460 /@exonetik.com\s*$/.test(value) || /@exonetik.com\s*$/.test(value) || /@flying-whales.com\s*$/.test(value) || 20461 /@frqnt.gouv.qc.ca\s*$/.test(value) || /@fusia.fr\s*$/.test(value) || /@microsoft.com\s*$/.test(value) || 20462 /@fzengineering.com\s*$/.test(value) || /@gardn.org\s*$/.test(value) || /@globvision.com\s*$/.test(value) || 20463 /@economie.gouv.qc.ca\s*$/.test(value) || /@gcttg.com\s*$/.test(value) || /@hec.ca\s*$/.test(value) || 20464 /@herouxdevtek.com\s*$/.test(value) || /@humanitas.io\s*$/.test(value) || /@hutchinson.com\s*$/.test(value) || 20465 /@hydroquebec.com\s*$/.test(value) || /@idscorporation.com\s*$/.test(value) || /@visiooimage.com\s*$/.test(value) || 20466 /@ivisolutions.ca\s*$/.test(value) || /@ino.ca\s*$/.test(value) || /@inrs.caglish\s*$/.test(value) || 20467 /@keitas.com\s*$/.test(value) || /@kinovarobotics.com\s*$/.test(value) || /@biomaterials.kruger.com\s*$/.test(value) || 20468 /@l3t.com\s*$/.test(value) || /@laflamme-ing.com\s*$/.test(value) || /@latesys.com\s*$/.test(value) || 20469 /@libellulemonde.com\s*$/.test(value) || /@liburdi.com\s*$/.test(value) || /@socomore.com\s*$/.test(value) || 20470 /@magellan.aero\s*$/.test(value) || /@mss.ca\s*$/.test(value) || /@marinvent.com\s*$/.test(value) || 20471 /@mayahtt.com\s*$/.test(value) || /@mcgill.ca\s*$/.test(value) || /@mdacorporation.com\s*$/.test(value) || 20472 /@mecanum.com\s*$/.test(value) || /@melocheinc.com\s*$/.test(value) || /@messier-dowty.com\s*$/.test(value) || 20473 /@nachurs-alpine.com\s*$/.test(value) || /@nrc-cnrc.gc.cag\s*$/.test(value) || /@nergica.com\s*$/.test(value) || 20474 /@netur.ca\s*$/.test(value) || /@neuralvol.com\s*$/.test(value) || /@ngcaerospace.com\s*$/.test(value) || 20475 /@nordiasoft.com\s*$/.test(value) || /@notostechnologies.com\s*$/.test(value) || /@novika.ca\s*$/.test(value) || 20476 /@nrc-cnrc.gc.cag\s*$/.test(value) || /@theobjects.com\s*$/.test(value) || /@opal-rt.com\s*$/.test(value) || 20477 /@optonique.ca\s*$/.test(value) || /@ova.ai\s*$/.test(value) || /@parker.com\s*$/.test(value) || 20478 /@pwc.ca\s*$/.test(value) || /@precisionadm.com\s*$/.test(value) || /@presagis.com\s*$/.test(value) || 20479 /@prop-air.com\s*$/.test(value) || /@pultrusiontech.com\s*$/.test(value) || /@qohash.com\s*$/.test(value) || 20480 /@queensu.ca\s*$/.test(value) || /@reactiondynamics.space\s*$/.test(value) || /@rheagroup.com\s*$/.test(value) || 20481 /@rockwellcollins.com\s*$/.test(value) || /@rolls-royce.com\s*$/.test(value) || /@pmscada.ca\s*$/.test(value) || 20482 /@safran-helicopter-engines.com\s*$/.test(value) || /@savinte.com\s*$/.test(value) || /@seedai.ca\s*$/.test(value) || 20483 /@siicanada.com\s*$/.test(value) || /@dcm.aero\s*$/.test(value) || /@sita.aero\s*$/.test(value) || 20484 /@solaxis.ca\s*$/.test(value) || /@sonacamontreal.com\s*$/.test(value) || /@sphereco.ca\s*$/.test(value) || 20485 /@stelia-aerospace.com\s*$/.test(value) || /@tecnar.com\s*$/.test(value) || /@teijincarbon.com\s*$/.test(value) || 20486 /@tekna.com\s*$/.test(value) || /@thalesgroup.com\s*$/.test(value) || /@thalesgroup.com\s*$/.test(value) || 20487 /@trafinc.com\s*$/.test(value) || /@tristarmulticopters.com\s*$/.test(value) || /@cedalma.com\s*$/.test(value) || 20488 /@umontreal.ca\s*$/.test(value) || /@usherbrooke.ca\s*$/.test(value) || /@uqac.ca\s*$/.test(value) || 20489 /@uqam.caglish\s*$/.test(value) || /@uqtr.ca\s*$/.test(value) || /@ulaval.ca\s*$/.test(value) || 20490 /@uwindsor.ca\s*$/.test(value) || /@valqari.com\s*$/.test(value) || /@vigilantglobal.com\s*$/.test(value) || 20491 /@vozwin.com\s*$/.test(value) || /@lets-warp.com\s*$/.test(value) || /@xonaspace.com\s*$/.test(value)) { 20492 return true; 20493 }else{ 20494 return false;
20495 } 20496 }, "Please use your CRIAQ member organization email address."); 20497 20498 jQuery.validator.addMethod("BlockedCadence", function (value, element) { 20499 if (/@126.com\s*$/.test(value) || /@163.com\s*$/.test(value) || /@adelphia.net\s*$/.test(value) || /@air.net\s*$/.test(value) || 20500 /@airmail.net\s*$/.test(value) || /@aliyun.com\s*$/.test(value) || /@aol.com\s*$/.test(value) || /@atlanticbb.net\s*$/.test(value) || 20501 /@att.net\s*$/.test(value) || /@att.yahoo.com\s*$/.test(value) || /@attbi.com\s*$/.test(value) || /@attglobal.net\s*$/.test(value) || 20502 /@autowb.com\s*$/.test(value) || /@basicisp.net\s*$/.test(value) || /@bcpl.net\s*$/.test(value) || /@bellatlantic.net\s*$/.test(value) || 20503 /@bellnet.ca\s*$/.test(value) || /@bellsouth.net\s*$/.test(value) || /@bestweb.net\s*$/.test(value) || /@bev.net\s*$/.test(value) || /@blacksburg.net\s*$/.test(value) || /@blazenet.net\s*$/.test(value) || 20504 /@cableone.net\s*$/.test(value) || /@cais.net\s*$/.test(value) || /@cantv.net\s*$/.test(value) || /@capu.net\s*$/.test(value) || /@ce.medione.net\s*$/.test(value) || /@central.cox.net\s*$/.test(value) || 20505 /@centurylink.com\s*$/.test(value) || /@charm.net\s*$/.test(value) || /@charter.net\s*$/.test(value) || /@comcast.net\s*$/.test(value) || /@compuserve.com\s*$/.test(value) || /@concentric.net\s*$/.test(value) || /@covad.net\s*$/.test(value) || /@cox.net\s*$/.test(value) || /@coxmail.com\s*$/.test(value) || /@crosslink.net\s*$/.test(value) || /@csi.com\s*$/.test(value) || /@daum.net\s*$/.test(value) || /@dca.net\s*$/.test(value) || /@deltanet.com\s*$/.test(value) || /@direcway.com \s*$/.test(value) || /@dmv.com\s*$/.test(value) || /@dslextreme.com\s*$/.test(value) || /@earthlink.net\s*$/.test(value) || /@east.cox.net\s*$/.test(value) || /@edge.net\s*$/.test(value) || /@email.com\s*$/.test(value) || /@emsn.com\s*$/.test(value) || /@enter.net\s*$/.test(value) || /@erols.com\s*$/.test(value) || /@excite.com\s*$/.test(value) || /@ezy.net\s*$/.test(value) || /@fastmail.fm\s*$/.test(value) || /@fcc.net\s*$/.test(value) || /@flashcom.net\s*$/.test(value) || /@forthnet.gr\s*$/.test(value) || /@frontier.com\s*$/.test(value) || /@frontline.net\s*$/.test(value) || /@fullchannel.net\s*$/.test(value) || /@Gateway.net\s*$/.test(value) || /@gl.centurytel.net\s*$/.test(value) || /@gl.umbc.edu\s*$/.test(value) || /@gmail.co.in\s*$/.test(value) || /@gmail.com\s*$/.test(value) || /@gmail.hu\s*$/.test(value) || /@gmail.it\s*$/.test(value) || /@gmail.ru\s*$/.test(value) || /@gtei.bellatlantic.net\s*$/.test(value) || /@gti.net\s*$/.test(value) || /@gw.dmv.com\s*$/.test(value) || /@hanmail.net\s*$/.test(value) || /@hotcom\s*$/.test(value) || /@hotmail.com\s*$/.test(value) || /@ibm.net \s*$/.test(value) || /@idx4.com\s*$/.test(value) || /@iearthlink.net\s*$/.test(value) || /@ihwy.com\s*$/.test(value) || /@integra.net\s*$/.test(value) || /@interaccess.com\s*$/.test(value) || /@internetmci.com\s*$/.test(value) || /@ionet.net\s*$/.test(value) || /@i-plus.net\s*$/.test(value) || /@ismtp.earthlink.net\s*$/.test(value) || /@isp.com\s*$/.test(value) || /@itol.com\s*$/.test(value) || /@ix.netcom.com\s*$/.test(value) || /@juno.com\s*$/.test(value) || /@kulmeo.com\s*$/.test(value) || /@live.com\s*$/.test(value) || /@mchsi.com\s*$/.test(value) || /@mciworldcom.net \s*$/.test(value) || /@mediacomcable.com\s*$/.test(value) || /@medione.net\s*$/.test(value) || /@megapathdsl.net\s*$/.test(value) || /@mindspring.com\s*$/.test(value) || /@msn.com\s*$/.test(value) || /@mw.centurytel.net\s*$/.test(value) || /@nauticom.net\s*$/.test(value) || /@naver.com\s*$/.test(value) || /@netaddress.usa.net\s*$/.test(value) || /@netcom.ca\s*$/.test(value) || /@netcom.com \s*$/.test(value) || /@netscape.com\s*$/.test(value) || /@netzero.net\s*$/.test(value) || /@njd.xo.com\s*$/.test(value) || /@ntegra.net\s*$/.test(value) || /@nw.centurytel.net\s*$/.test(value) || /@olg.com\s*$/.test(value) || /@optonline.net\s*$/.test(value) || /@oranek.com\s*$/.test(value) || /@outblaze.com\s*$/.test(value) || /@outlook.com\s*$/.test(value) || /@pacbell.net \s*$/.test(value) || /@patmedia.net\s*$/.test(value) || /@peoplepc.com\s*$/.test(value) || /@pipeline.com\s*$/.test(value) || /@prodigy.net\s*$/.test(value) || /@proptd.net\s*$/.test(value) || /@psi.net\s*$/.test(value) || /@ptd.net\s*$/.test(value) || /@qis.net\s*$/.test(value) || /@qq.com\s*$/.test(value) || /@qwest.net\s*$/.test(value) || /@rackspace.com\s*$/.test(value) || /@rcn.com\s*$/.test(value) || /@relay.psi.net\s*$/.test(value) || /@rogers.com\s*$/.test(value) || /@rr.com\s*$/.test(value) || /@rsvhr.com\s*$/.test(value) || /@rupayamail.com\s*$/.test(value) || /@sbcglobal.net\s*$/.test(value) || /@sbcglobal.yahoo.com\s*$/.test(value) || /@sk.sympatico.ca\s*$/.test(value) || /@smarthost.cox.com\s*$/.test(value) || /@snip.net\s*$/.test(value) || /@so.centurytel.net\s*$/.test(value) || /@sprint.com\s*$/.test(value) || /@sprintmail.com \s*$/.test(value) || /@sprynet.com\s*$/.test(value) || /@starpower.net\s*$/.test(value) || /@suddenlink.com\s*$/.test(value) || /@surewest.net\s*$/.test(value) || /@swva.net\s*$/.test(value) || /@sympatico.ca\s*$/.test(value) || /@synacor.com\s*$/.test(value) || /@telus.net\s*$/.test(value) || /@toto.net\s*$/.test(value) || /@tucows.com\s*$/.test(value) || /@usa.net\s*$/.test(value) || /@usit.net\s*$/.test(value) || /@uu.net\s*$/.test(value) || /@veanlo.com\s*$/.test(value) || /@verizon.net\s*$/.test(value) || /@videotron.ca\s*$/.test(value) || /@webstable.com\s*$/.test(value) || /@west.cox.net\s*$/.test(value) || /@wideopenwest.com\s*$/.test(value) || /@windstream.com\s*$/.test(value) || /@wockcy.com\s*$/.test(value) || /@worldnet.att.net \s*$/.test(value) || /@xo.com\s*$/.test(value) || /@yahoo.ca\s*$/.test(value) || /@yahoo.cn\s*$/.test(value) || /@yahoo.co.id\s*$/.test(value) || /@yahoo.co.in\s*$/.test(value) || /@yahoo.co.jp\s*$/.test(value) || /@yahoo.co.kr\s*$/.test(value) || /@yahoo.co.nz\s*$/.test(value) || /@yahoo.co.th\s*$/.test(value) || /@yahoo.co.uk\s*$/.test(value) || /@yahoo.com\s*$/.test(value) || /@yahoo.de\s*$/.test(value) || /@yahoo.dk\s*$/.test(value) || /@yahoo.es\s*$/.test(value) || /@yahoo.fr\s*$/.test(value) || /@yahoo.gr\s*$/.test(value) || /@yahoo.ie\s*$/.test(value) || /@yahoo.in\s*$/.test(value) || /@yahoo.it\s*$/.test(value) || /@yahoo.no\s*$/.test(value) || /@yahoo.pl\s*$/.test(value) || /@yahoo.ro\s*$/.test(value) || /@yahoo.se\s*$/.test(value) || /@yahoogroups.com\s*$/.test(value) || /@ymail.com\s*$/.test(value) || /@yopmail.com\s*$/.test(value) || /@ziplink.net\s*$/.test(value) || /@rediffmail.com\s*$/.test(value) || /@icloud.com\s*$/.test(value) || /@alessandroogheri.com\s*$/.test(value) || /@abelite-da.com\s*$/.test(value) || /@adiva.com\s*$/.test(value) || /@advantest-ard.com\s*$/.test(value) || /@alatek.com\s*$/.test(value) || /@aldec.com\s*$/.test(value) || /@awaveip.com\s*$/.test(value) || /@altium.com\s*$/.test(value) || /@altium.com.au\s*$/.test(value) || /@amiq.com\s*$/.test(value) || /@analogbits.com\s*$/.test(value) || /@analogix.com\s*$/.test(value) || /@anasift.com\s*$/.test(value) || /@andestech.com\s*$/.test(value) || /@ankasys.com\s*$/.test(value) || /@ansys.com\s*$/.test(value) || /@apsimtech.com\s*$/.test(value) || /@adapt-io.com\s*$/.test(value) || /@arcadiainnovation.com\s*$/.test(value) || /@archelon.com\s*$/.test(value) || /@arteris.com\s*$/.test(value) || /@ascinc.com\s*$/.test(value) || /@asicdepot.com\s*$/.test(value) || /@asic-world.com\s*$/.test(value) || /@astc-design.com\s*$/.test(value) || /@atoptech.com\s*$/.test(value) || /@aumraj.com\s*$/.test(value) || /@aurora.tech\s*$/.test(value) || /@ausdia.c
20505om\s*$/.test(value) || /@autodesk.com\s*$/.test(value) || /@broadcom.com\s*$/.test(value) || /@avatar-da.com\s*$/.test(value) || /@averant.com\s*$/.test(value) || /@avery-design.com\s*$/.test(value) || /@axiscorp.com\s*$/.test(value) || /@axisdesign.com\s*$/.test(value) || /@axissystems.com\s*$/.test(value) || /@beyondsemi.com\s*$/.test(value) || /@bluepearlsoftware.com\s*$/.test(value) || /@bluespec.com\s*$/.test(value) || /@brekersystems.com\s*$/.test(value) || /@cad-design.com\s*$/.test(value) || /@cast-inc.com\s*$/.test(value) || /@ceva-dsp.com\s*$/.test(value) || /@cfdrc.com\s*$/.test(value) || /@chipglobe.com\s*$/.test(value) || /@chipmd.com\s*$/.test(value) || /@codasip.com\s*$/.test(value) || /@cst.com\s*$/.test(value) || /@Comsol.com\s*$/.test(value) || /@correctdesigns.com\s*$/.test(value) || /@cortus.com\s*$/.test(value) || /@coseda-tech.com\s*$/.test(value) || /@cwseda.com\s*$/.test(value) || /@credosemi.com\s*$/.test(value) || /@alibaba.com\s*$/.test(value) || /@cvcblr.com\s*$/.test(value) || /@3ds.com\s*$/.test(value) || /@defactotech.com\s*$/.test(value) || /@designw.com\s*$/.test(value) || /@diakopto.com\s*$/.test(value) || /@digitalcircuitdesign.com\s*$/.test(value) || /@dcd.pl\s*$/.test(value) || /@dolphin-design.fr\s*$/.test(value) || /@dspg.com\s*$/.test(value) || /@dynalith.com\s*$/.test(value) || /@easyic.ro\s*$/.test(value) || /@edaptive.com\s*$/.test(value) || /@elcamino.de\s*$/.test(value) || /@elgris.com\s*$/.test(value) || /@elsys-eastern.com\s*$/.test(value) || /@esperanto.ai\s*$/.test(value) || /@etopus.com\s*$/.test(value) || /@eurekatech.com\s*$/.test(value) || /@excellicon.com\s*$/.test(value) || /@fintronic.com\s*$/.test(value) || /@fishtail-da.com\s*$/.test(value) || /@fract-tech.com\s*$/.test(value) || /@frobas.com\s*$/.test(value) || /@fsresult.com\s*$/.test(value) || /@ftlsystems.com\s*$/.test(value) || /@gaisler.com\s*$/.test(value) || /@gemdt.com\s*$/.test(value) || /@guc-asic.com\s*$/.test(value) || /@hdl-dh.com\s*$/.test(value) || /@hisilicon.com\s*$/.test(value) || /@empyrean.com.cn\s*$/.test(value) || /@empyrean-tech.com\s*$/.test(value) || /@huawei.com\s*$/.test(value) || /@hypersilicon.com\s*$/.test(value) || /@ibextech.jp\s*$/.test(value) || /@icmanage.com\s*$/.test(value) || /@imgtec.com\s*$/.test(value) || /@ime.cas.cn\s*$/.test(value) || /@incentia.com\s*$/.test(value) || /@incoresemi.com\s*$/.test(value) || /@infinisim.com\s*$/.test(value) || /@innosilicon.com\s*$/.test(value) || /@inno-logic.com\s*$/.test(value) || /@inphi.com\s*$/.test(value) || /@insighteda.com\s*$/.test(value) || /@Integratedsoft.com\s*$/.test(value) || /@intelliprop.com\s*$/.test(value) || /@interrasystems.com\s*$/.test(value) || /@intusoft.com\s*$/.test(value) || /@ip-maker.com\s*$/.test(value) || /@iroctech.com\s*$/.test(value) || /@javelin-da.com\s*$/.test(value) || /@Jcmwave.com\s*$/.test(value) || /@jedat.co.jp\s*$/.test(value) || /@jtag.com\s*$/.test(value) || /@kandou.com\s*$/.test(value) || /@keysight.com\s*$/.test(value) || /@lorentzsolution.com\s*$/.test(value) || /@lowrisc.org\s*$/.test(value) || /@lucedaphotonics.com\s*$/.test(value) || /@m31tech.com\s*$/.test(value) || /@Magillem.com\s*$/.test(value) || /@magma.com\s*$/.test(value) || /@maviss-design.com\s*$/.test(value) || /@mayahtt.com\s*$/.test(value) || /@memscap.com\s*$/.test(value) || /@mentor.com\s*$/.test(value) || /@mentorg.com\s*$/.test(value) || /@mentorgraphics.com\s*$/.test(value) || /@methods2business.com\s*$/.test(value) || /@microeda.com\s*$/.test(value) || /@mixel.com\s*$/.test(value) || /@morethanip.com\s*$/.test(value) || /@mosys.com\s*$/.test(value) || /@motivo.ai\s*$/.test(value) || /@msol.co.jp\s*$/.test(value) || /@mti.com\s*$/.test(value) || /@mycad.com\s*$/.test(value) || /@nangate.com\s*$/.test(value) || /@nimbic.com\s*$/.test(value) || /@nobug.ro\s*$/.test(value) || /@nptest.com\s*$/.test(value) || /@nsysinc.com\s*$/.test(value) || /@ntlab.com\s*$/.test(value) || /@numeritech.com\s*$/.test(value) || /@nwlogic.com\s*$/.test(value) || /@oasis-ds.com\s*$/.test(value) || /@obsidiansoft.com\s*$/.test(value) || /@oea.com\s*$/.test(value) || /@onespin-solutions.
20505com\s*$/.test(value) || /@opshub.com\s*$/.test(value) || /@optem.com\s*$/.test(value) || /@optimalcorp.com\s*$/.test(value) || /@Optiwave.com\s*$/.test(value) || /@oskitechnology.com\s*$/.test(value) || /@paradigm-works.com\s*$/.test(value) || /@paragon-ic.com\s*$/.test(value) || /@perceptionsoftware.com\s*$/.test(value) || /@perfectvips.com\s*$/.test(value) || /@pgc.com\s*$/.test(value) || /@pgc.com.tw\s*$/.test(value) || /@phoenixsoftware.com\s*$/.test(value) || /@Photond.com\s*$/.test(value) || /@pitsim.com\s*$/.test(value) || /@plda.com\s*$/.test(value) || /@prodesigncad.de\s*$/.test(value) || /@prodesign-europe.com\s*$/.test(value) || /@prolificinc.com\s*$/.test(value) || /@prolific.com.tw\s*$/.test(value) || /@prosilog.com\s*$/.test(value) || /@prover.com\s*$/.test(value) || /@provino-tech.com\s*$/.test(value) || /@ptc.com\s*$/.test(value) || /@pulsic.com\s*$/.test(value) || /@qdai.com\s*$/.test(value) || /@rachip.com\s*$/.test(value) || /@randomlogiccorp.com\s*$/.test(value) || /@realintent.com\s*$/.test(value) || /@remicro.com\s*$/.test(value) || /@Remcom.com\s*$/.test(value) || /@reshape.com\s*$/.test(value) || /@roalogic.com\s*$/.test(value) || /@robustchip.com\s*$/.test(value) || /@runtimeinc.com\s*$/.test(value) || /@s2cinc.com\s*$/.test(value) || /@s3group.com\s*$/.test(value) || /@safelogic.se\s*$/.test(value) || /@sagantec.de\s*$/.test(value) || /@sagantec.nl\s*$/.test(value) || /@sagantec.com\s*$/.test(value) || /@sandwork.com\s*$/.test(value) || /@kavcak.com\s*$/.test(value) || /@scianalog.com\s*$/.test(value) || /@sd.com\s*$/.test(value) || /@semifore.com\s*$/.test(value) || /@semtech.com\s*$/.test(value) || /@sequencedesign.com\s*$/.test(value) || /@sfmtech.com\s*$/.test(value) || /@shearwater.com\s*$/.test(value) || /@sifive.com\s*$/.test(value) || /@sicanvas.com \s*$/.test(value) || /@siemens.com\s*$/.test(value) || /@sierra-da.com\s*$/.test(value) || /@sifr.com\s*$/.test(value) || /@sisoft.com\s*$/.test(value) || /@sii.co.jp\s*$/.test(value) || /@siliconcr.com\s*$/.test(value) || /@siliconds.com\s*$/.test(value) || /@silicontechnologiesinc.com\s*$/.test(value) || /@siliconcanvas.com\s*$/.test(value) || /@silexinsight.com\s*$/.test(value) || /@silvaco.com\s*$/.test(value) || /@simantis.com\s*$/.test(value) || /@snowbush.com\s*$/.test(value) || /@softmixedsignal.com\s*$/.test(value) || /@sonicsinc.com\s*$/.test(value) || /@sonnetsoftware.com\s*$/.test(value) || /@stellacorp.co.jp\s*$/.test(value) || /@stonepillar.com\s*$/.test(value) || /@sycon-design.com\s*$/.test(value) || /@syncad.com\s*$/.test(value) || /@synopsys.co.jp\s*$/.test(value) || /@synopsys.com\s*$/.test(value) || /@syntacore.com\s*$/.test(value) || /@syntest.com\s*$/.test(value) || /@syosil.com\s*$/.test(value) || /@takumi-solutions.com\s*$/.test(value) || /@tanner.com\s*$/.test(value) || /@tdasystems.com\s*$/.test(value) || /@txcorp.com\s*$/.test(value) || /@tekstart.com\s*$/.test(value) || /@tempusf.com\s*$/.test(value) || /@tension.com\s*$/.test(value) || /@terasystems.com\s*$/.test(value) || /@tessi.com\s*$/.test(value) || /@timingdesigner.com\s*$/.test(value) || /@tool.co.jp\s*$/.test(value) || /@tracto.da.com\s*$/.test(value) || /@transeda.com\s*$/.test(value) || /@truecircuits.com\s*$/.test(value) || /@trustic.eu\s*$/.test(value) || /@ubitechnology.com\s*$/.test(value) || /@uniquify.com\s*$/.test(value) || /@veriests.com\s*$/.test(value) || /@veriez.com\s*$/.test(value) || /@verific.com\s*$/.test(value) || /@vtech-inc.co.jp\s*$/.test(value) || /@verifore.jp\s*$/.test(value) || /@verilab.com\s*$/.test(value) || /@verisense.com\s*$/.test(value) || /@verisilicon.com\s*$/.test(value) || /@veritools.com\s*$/.test(value) || /@versysdesign.com\s*$/.test(value) || /@videantis.com\s*$/.test(value) || /@videantis.de\s*$/.test(value) || /@vivantecorp.com\s*$/.test(value) || /@voomtown.com\s*$/.test(value) || /@vpiphotonics.com\s*$/.test(value) || /@vworks.com\s*$/.test(value) || /@wavecomp.ai\s*$/.test(value) || /@wssi.com\s*$/.test(value) || /@xjtag.com\s*$/.test(value) || /@xpedion.com\s*$/.test(value) || /@xplm.com\s*$/.test(value) || /@xtreme-eda.com\s*$/.test(value) || /@yxi.com\s*$/.test(value) || /@zeland.com\s*$/.test(value) || /@zenasis.com\s*$/.test(value) || /@zsp.com\s*$/.test(value) || /@zuken.com\s*$/.test(value) || /@incusolution.com\s*$/.test(value) || /@atosolution.com\s*$/.test(value) || /@126.com\s*$/.test(value) || /@163.com\s*$/.test(value) || /@3ds.com\s*$/.test(value) || /@abelite-da.com\s*$/.test(value) || /@adapt-io.com\s*$/.test(value) || /@adelphia.net\s*$/.test(value) || /@adiva.com\s*$/.test(value) || /@advantest-ard.com\s*$/.test(value) || /@air.net\s*$/.test(value) || /@airmail.net\s*$/.test(value) || /@alatek.com\s*$/.test(value) || /@aldec.com\s*$/.test(value) || /@alessandroogheri.com\s*$/.test(value) || /@alibaba.com\s*$/.test(value) || /@aliyun.com\s*$/.test(value) || /@altium.com\s*$/.test(value) || /@altium.com.au\s*$/.test(value) || /@amiq.com\s*$/.test(value) || /@analogbits.com\s*$/.test(value) || /@analogix.com\s*$/.test(value) || /@anasift.com\s*$/.test(value) || /@andestech.com\s*$/.test(value) || /@ankasys.com\s*$/.test(value) || /@ansys.com\s*$/.test(value) || /@aol.com\s*$/.test(value) || /@apsimtech.com\s*$/.test(value) || /@arcadiainnovation.com\s*$/.test(value) || /@archelon.com\s*$/.test(value) || /@arteris.com\s*$/.test(value) || /@ascinc.com\s*$/.test(value) || /@asicdepot.com\s*$/.test(value) || /@asic-world.com\s*$/.test(value) || /@astc-design.com\s*$/.test(value) || /@atlanticbb.net\s*$/.test(value) || /@atoptech.com\s*$/.test(value) || /@att.net\s*$/.test(value) || /@att.yahoo.com\s*$/.test(value) || /@attbi.com\s*$/.test(value) || /@attglobal.net\s*$/.test(value) || /@aumraj.com\s*$/.test(value) || /@aurora.tech\s*$/.test(value) || /@ausdia.c
20505om\s*$/.test(value) || /@autodesk.com\s*$/.test(value) || /@autowb.com\s*$/.test(value) || /@avatar-da.com\s*$/.test(value) || /@averant.com\s*$/.test(value) || /@avery-design.com\s*$/.test(value) || /@awaveip.com\s*$/.test(value) || /@axiscorp.com\s*$/.test(value) || /@axisdesign.com\s*$/.test(value) || /@axissystems.com\s*$/.test(value) || /@basicisp.net\s*$/.test(value) || /@bcpl.net\s*$/.test(value) || /@bellatlantic.net\s*$/.test(value) || /@bellnet.ca\s*$/.test(value) || /@bellsouth.net\s*$/.test(value) || /@bestweb.net\s*$/.test(value) || /@bev.net\s*$/.test(value) || /@beyondsemi.com\s*$/.test(value) || /@blacksburg.net\s*$/.test(value) || /@blazenet.net\s*$/.test(value) || /@bluepearlsoftware.com\s*$/.test(value) || /@bluespec.com\s*$/.test(value) || /@brekersystems.com\s*$/.test(value) || /@broadcom.com\s*$/.test(value) || /@cableone.net\s*$/.test(value) || /@cad-design.com\s*$/.test(value) || /@cais.net\s*$/.test(value) || /@cantv.net\s*$/.test(value) || /@capu.net\s*$/.test(value) || /@cast-inc.com\s*$/.test(value) || /@ce.medione.net\s*$/.test(value) || /@central.cox.net\s*$/.test(value) || /@centurylink.com\s*$/.test(value) || /@ceva-dsp.com\s*$/.test(value) || /@cfdrc.com\s*$/.test(value) || /@charm.net\s*$/.test(value) || /@charter.net\s*$/.test(value) || /@chipglobe.com\s*$/.test(value) || /@chipmd.com\s*$/.test(value) || /@codasip.com\s*$/.test(value) || /@comcast.net\s*$/.test(value) || /@compuserve.com\s*$/.test(value) || /@Comsol.com\s*$/.test(value) || /@concentric.net\s*$/.test(value) || /@correctdesigns.com\s*$/.test(value) || /@cortus.com\s*$/.test(value) || /@coseda-tech.com\s*$/.test(value) || /@covad.net\s*$/.test(value) || /@cox.net\s*$/.test(value) || /@coxmail.com\s*$/.test(value) || /@credosemi.com\s*$/.test(value) || /@crosslink.net\s*$/.test(value) || /@csi.com\s*$/.test(value) || /@cst.com\s*$/.test(value) || /@cvcblr.com\s*$/.test(value) || /@cwseda.com\s*$/.test(value) || /@daum.net\s*$/.test(value) || /@dca.net\s*$/.test(value) || /@dcd.pl\s*$/.test(value) || /@defactotech.com\s*$/.test(value) || /@deltanet.com\s*$/.test(value) || /@designw.com\s*$/.test(value) || /@diakopto.com\s*$/.test(value) || /@digitalcircuitdesign.com\s*$/.test(value) || /@direcway.com \s*$/.test(value) || /@dmv.com\s*$/.test(value) || /@dolphin-design.fr\s*$/.test(value) || /@dslextreme.com\s*$/.test(value) || /@dspg.com\s*$/.test(value) || /@dynalith.com\s*$/.test(value) || /@earthlink.net\s*$/.test(value) || /@east.cox.net\s*$/.test(value) || /@easyic.ro\s*$/.test(value) || /@edaptive.com\s*$/.test(value) || /@edge.net\s*$/.test(value) || /@elcamino.de\s*$/.test(value) || /@elgris.com\s*$/.test(value) || /@elsys-eastern.com\s*$/.test(value) || /@email.com\s*$/.test(value) || /@empyrean.com.cn\s*$/.test(value) || /@empyrean-tech.com\s*$/.test(value) || /@emsn.com\s*$/.test(value) || /@enter.net\s*$/.test(value) || /@erols.com\s*$/.test(value) || /@esperanto.ai\s*$/.test(value) || /@etopus.com\s*$/.test(value) || /@eurekatech.com\s*$/.test(value) || /@excellicon.com\s*$/.test(value) || /@excite.com\s*$/.test(value) || /@ezy.net\s*$/.test(value) || /@fastmail.fm\s*$/.test(value) || /@fcc.net\s*$/.test(value) || /@fintronic.com\s*$/.test(value) || /@fishtail-da.com\s*$/.test(value) || /@flashcom.net\s*$/.test(value) || /@forthnet.gr\s*$/.test(value) || /@fract-tech.com\s*$/.test(value) || /@frobas.com\s*$/.test(value) || /@frontier.com\s*$/.test(value) || /@frontline.net\s*$/.test(value) || /@fsresult.com\s*$/.test(value) || /@ftlsystems.com\s*$/.test(value) || /@fullchannel.net\s*$/.test(value) || /@gaisler.com\s*$/.test(value) || /@Gateway.net\s*$/.test(value) || /@gemdt.com\s*$/.test(value) || /@gl.centurytel.net\s*$/.test(value) || /@gl.umbc.edu\s*$/.test(value) || /@gmail.co.in\s*$/.test(value) || /@gmail.com\s*$/.test(value) || /@gmail.hu\s*$/.test(value) || /@gmail.it\s*$/.test(value) || /@gmail.ru\s*$/.test(value) || /@gtei.bellatlantic.net\s*$/.test(value) || /@gti.net\s*$/.test(value) || /@guc-asic.com\s*$/.test(value) || /@gw.dmv.com\s*$/.test(value) || /@hanmail.net\s*$/.test(value) || /@hdl-dh.com\s*$/.test(value) || /@hisilicon.com\s*$/.test(value) || /@hotcom\s*$/.test(value) || /@hotmail.com\s*$/.test(value) || /@huawei.com\s*$/.test(value) || /@hypersilicon.com\s*$/.test(value) || /@ibextech.jp\s*$/.test(value) || /@ibm.net \s*$/.test(value) || /@icloud.com\s*$/.test(value) || /@icmanage.com\s*$/.test(value) || /@idx4.com\s*$/.test(value) || /@iearthlink.net\s*$/.test(value) || /@ihwy.com\s*$/.test(value) || /@ime.cas.cn\s*$/.test(value) || /@imgtec.com\s*$/.test(value) || /@incentia.com\s*$/.test(value) || /@incoresemi.com\s*$/.test(value) || /@infinisim.com\s*$/.test(value) || /@inno-logic.com\s*$/.test(value) || /@innosilicon.com\s*$/.test(value) || /@inphi.com\s*$/.test(value) || /@insighteda.com\s*$/.test(value) || /@integra.net\s*$/.test(value) || /@Integratedsoft.com\s*$/.test(value) || /@intelliprop.com\s*$/.test(value) || /@interaccess.com\s*$/.test(value) || /@internetmci.com\s*$/.test(value) || /@interrasystems.com\s*$/.test(value) || /@intusoft.com\s*$/.test(value) || /@ionet.net\s*$/.test(value) || /@i-plus.net\s*$/.test(value) || /@ip-maker.com\s*$/.test(value) || /@iroctech.com\s*$/.test(value) || /@ismtp.earthlink.net\s*$/.test(value) || /@isp.com\s*$/.test(value) || /@itol.com\s*$/.test(value) || /@ix.netcom.com\s*$/.test(value) || /@javelin-da.com\s*$/.test(value) || /@Jcmwave.com\s*$/.test(value) || /@jedat.co.jp\s*$/.test(value) || /@jtag.com\s*$/.test(value) || /@juno.com\s*$/.test(value) || /@kandou.com\s*$/.test(value) || /@kavcak.com\s*$/.test(value) || /@keysight.com\s*$/.test(value) || /@kulmeo.com\s*$/.test(value) || /@live.com\s*$/.test(value) || /@lorentzsolution.com\s*$/.test(value) || /@lowrisc.org\s*$/.test(value) || /@lucedaphotonics.com\s*$/.test(value) || /@m31tech.com\s*$/.test(value) || /@magillem.com\s*$/.test(value) || /@magma.com\s*$/.test(value) || /@maviss-design.com\s*$/.test(value) || /@mayahtt.com\s*$/.test(value) || /@mchsi.com\s*$/.test(value) || /@mciworldcom.net \s*$/.test(value) || /@mediacomcable.com\s*$/.test(value) || /@medione.net\s*$/.test(value) || /@megapathdsl.net\s*$/.test(value) || /@memscap.com\s*$/.test(value) || /@mentor.com\s*$/.test(value) || /@mentorg.com\s*$/.test(value) || /@mentorgraphics.com\s*$/.test(value) || /@methods2business.com\s*$/.test(value) || /@microeda.com\s*$/.test(value) || /@mindspring.com\s*$/.test(value) || /@mixel.com\s*$/.test(value) || /@morethanip.com\s*$/.test(value) || /@mosys.com\s*$/.test(value) || /@motivo.ai\s*$/.test(value) || /@msn.com\s*$/.test(value) || /@msol.co.jp\s*$/.test(value) || /@mti.com\s*$/.test(value) || /@mw.centurytel.net\s*$/.test(value) || /@mycad.com\s*$/.test(value) || /@nangate.com\s*$/.test(value) || /@nauticom.net\s*$/.test(value) || /@naver.com\s*$/.test(value) || /@netaddress.usa.net\s*$/.test(value) || /@netcom.ca\s*$/.test(value) || /@netcom.com \s*$/.test(value) || /@netscape.com\s*$/.test(value) || /@netzero.net\s*$/.test(value) || /@nimbic.com\s*$/.test(value) || /@njd.xo.com\s*$/.test(value) || /@nobug.ro\s*$/.test(value) || /@nptest.com\s*$/.test(value) || /@nsysinc.com\s*$/.test(value) || /@ntegra.net\s*$/.test(value) || /@ntlab.com\s*$/.test(value) || /@numeritech.com\s*$/.test(value) || /@nw.centurytel.net\s*$/.test(value) || /@nwlogic.com\s*$/.test(value) || /@oasis-ds.com\s*$/.test(value) || /@obsidiansoft.com\s*$/.test(value) || /@oea.com\s*$/.test(value) || /@olg.com\s*$/.test(value) || /@onespin-solutions.
20505com\s*$/.test(value) || /@opshub.com\s*$/.test(value) || /@optem.com\s*$/.test(value) || /@optimalcorp.com\s*$/.test(value) || /@Optiwave.com\s*$/.test(value) || /@optonline.net\s*$/.test(value) || /@oranek.com\s*$/.test(value) || /@oskitechnology.com\s*$/.test(value) || /@outblaze.com\s*$/.test(value) || /@outlook.com\s*$/.test(value) || /@pacbell.net \s*$/.test(value) || /@paradigm-works.com\s*$/.test(value) || /@paragon-ic.com\s*$/.test(value) || /@patmedia.net\s*$/.test(value) || /@peoplepc.com\s*$/.test(value) || /@perceptionsoftware.com\s*$/.test(value) || /@perfectvips.com\s*$/.test(value) || /@pgc.com\s*$/.test(value) || /@pgc.com.tw\s*$/.test(value) || /@phoenixsoftware.com\s*$/.test(value) || /@Photond.com\s*$/.test(value) || /@pipeline.com\s*$/.test(value) || /@pitsim.com\s*$/.test(value) || /@plda.com\s*$/.test(value) || /@prodesigncad.de\s*$/.test(value) || /@prodesign-europe.com\s*$/.test(value) || /@prodigy.net\s*$/.test(value) || /@prolific.com.tw\s*$/.test(value) || /@prolificinc.com\s*$/.test(value) || /@proptd.net\s*$/.test(value) || /@prosilog.com\s*$/.test(value) || /@prover.com\s*$/.test(value) || /@provino-tech.com\s*$/.test(value) || 20506 /@psi.net\s*$/.test(value) || /@ptc.com\s*$/.test(value) || /@ptd.net\s*$/.test(value) || /@pulsic.com\s*$/.test(value) || 20507 /@qdai.com\s*$/.test(value) || /@qis.net\s*$/.test(value) || /@qq.com\s*$/.test(value) || /@qwest.net\s*$/.test(value) || 20508 /@rachip.com\s*$/.test(value) || /@rackspace.com\s*$/.test(value) || /@randomlogiccorp.com\s*$/.test(value) || /@rcn.com\s*$/.test(value) || /@realintent.com\s*$/.test(value) || /@rediffmail.com\s*$/.test(value) || /@relay.psi.net\s*$/.test(value) || /@Remcom.com\s*$/.test(value) || /@remicro.com\s*$/.test(value) || /@reshape.com\s*$/.test(value) || /@roalogic.com\s*$/.test(value) || /@robustchip.com\s*$/.test(value) || /@rogers.com\s*$/.test(value) || /@rr.com\s*$/.test(value) || /@rsvhr.com\s*$/.test(value) || /@runtimeinc.com\s*$/.test(value) || /@rupayamail.com\s*$/.test(value) || /@s2cinc.com\s*$/.test(value) || /@s3group.com\s*$/.test(value) || /@safelogic.se\s*$/.test(value) || /@sagantec.com\s*$/.test(value) || /@sagantec.de\s*$/.test(value) || /@sagantec.nl\s*$/.test(value) || /@sandwork.com\s*$/.test(value) || /@sbcglobal.net\s*$/.test(value) || /@sbcglobal.yahoo.com\s*$/.test(value) || /@scianalog.com\s*$/.test(value) || /@sd.com\s*$/.test(value) || /@semifore.com\s*$/.test(value) || /@semtech.com\s*$/.test(value) || /@sequencedesign.com\s*$/.test(value) || /@sfmtech.com\s*$/.test(value) || /@shearwater.com\s*$/.test(value) || /@sicanvas.com \s*$/.test(value) || /@siemens.com\s*$/.test(value) || /@sierra-da.com\s*$/.test(value) || /@sifive.com\s*$/.test(value) || /@sifr.com\s*$/.test(value) || /@sii.co.jp\s*$/.test(value) || /@silexinsight.com\s*$/.test(value) || /@siliconcanvas.com\s*$/.test(value) || /@siliconcr.com\s*$/.test(value) || /@siliconds.com\s*$/.test(value) || /@silicontechnologiesinc.com\s*$/.test(value) || /@silvaco.com\s*$/.test(value) || /@simantis.com\s*$/.test(value) || /@sisoft.com\s*$/.test(value) || /@sk.sympatico.ca\s*$/.test(value) || /@smarthost.cox.com\s*$/.test(value) || /@snip.net\s*$/.test(value) || /@snowbush.com\s*$/.test(value) || /@so.centurytel.net\s*$/.test(value) || /@softmixedsignal.com\s*$/.test(value) || /@sonicsinc.com\s*$/.test(value) || /@sonnetsoftware.com\s*$/.test(value) || /@sprint.com\s*$/.test(value) || /@sprintmail.com \s*$/.test(value) || /@sprynet.com\s*$/.test(value) || /@starpower.net\s*$/.test(value) || /@stellacorp.co.jp\s*$/.test(value) || /@stonepillar.com\s*$/.test(value) || /@suddenlink.com\s*$/.test(value) || /@surewest.net\s*$/.test(value) || /@swva.net\s*$/.test(value) || /@sycon-design.com\s*$/.test(value) || /@sympatico.ca\s*$/.test(value) || /@synacor.com\s*$/.test(value) || /@syncad.com\s*$/.test(value) || /@synopsys.co.jp\s*$/.test(value) || /@synopsys.com\s*$/.test(value) || /@syntacore.com\s*$/.test(value) || /@syntest.com\s*$/.test(value) || /@syosil.com\s*$/.test(value) || /@takumi-solutions.com\s*$/.test(value) || /@tanner.com\s*$/.test(value) || /@tdasystems.com\s*$/.test(value) || /@tekstart.com\s*$/.test(value) || /@telus.net\s*$/.test(value) || /@tempusf.com\s*$/.test(value) || /@tension.com\s*$/.test(value) || /@terasystems.com\s*$/.test(value) || /@tessi.com\s*$/.test(value) || /@timingdesigner.com\s*$/.test(value) || /@tool.co.jp\s*$/.test(value) || /@toto.net\s*$/.test(value) || /@tracto-da.com \s*$/.test(value) || /@transeda.com\s*$/.test(value) || /@truecircuits.com\s*$/.test(value) || /@trustic.eu\s*$/.test(value) || /@tucows.com\s*$/.test(value) || /@txcorp.com\s*$/.test(value) || /@ubitechnology.com\s*$/.test(value) || /@uniquify.com\s*$/.test(value) || /@usa.net\s*$/.test(value) || /@usit.net\s*$/.test(value) || /@uu.net\s*$/.test(value) || /@veanlo.com\s*$/.test(value) || /@veriests.com\s*$/.test(value) || /@veriez.com\s*$/.test(value) || /@verific.com\s*$/.test(value) || /@verifore.jp\s*$/.test(value) || /@verilab.com\s*$/.test(value) || /@verisense.com\s*$/.test(value) || /@verisilicon.com\s*$/.test(value) || /@veritools.com\s*$/.test(value) || /@verizon.net\s*$/.test(value) || /@versysdesign.com\s*$/.test(value) || /@videantis.com\s*$/.test(value) || /@videantis.de\s*$/.test(value) || /@videotron.ca\s*$/.test(value) || /@vivantecorp.com\s*$/.test(value) || /@voomtown.com\s*$/.test(value) || /@vpiphotonics.com\s*$/.test(value) || /@vtech-inc.co.jp\s*$/.test(value) || /@vworks.com\s*$/.test(value) || /@wavecomp.ai\s*$/.test(value) || /@webstable.com\s*$/.test(value) || /@west.cox.net\s*$/.test(value) || /@wideopenwest.com\s*$/.test(value) || /@windstream.com\s*$/.test(value) || /@wockcy.com\s*$/.test(value) || /@worldnet.att.net \s*$/.test(value) || /@wssi.com\s*$/.test(value) || /@xjtag.com\s*$/.test(value) || /@xo.com\s*$/.test(value) || /@xpedion.com\s*$/.test(value) || /@xplm.com\s*$/.test(value) || /@xtreme-eda.com\s*$/.test(value) || /@yahoo.ca\s*$/.test(value) || /@yahoo.cn\s*$/.test(value) || /@yahoo.co.id\s*$/.test(value) || /@yahoo.co.in\s*$/.test(value) || /@yahoo.co.jp\s*$/.test(value) || /@yahoo.co.kr\s*$/.test(value) || /@yahoo.co.nz\s*$/.test(value) || /@yahoo.co.th\s*$/.test(value) || /@yahoo.co.uk\s*$/.test(value) || /@yahoo.com\s*$/.test(value) || /@yahoo.de\s*$/.test(value) || /@yahoo.dk\s*$/.test(value) || /@yahoo.es\s*$/.test(value) || /@yahoo.fr\s*$/.test(value) || /@yahoo.gr\s*$/.test(value) || /@yahoo.ie\s*$/.test(value) || /@yahoo.in\s*$/.test(value) || /@yahoo.it\s*$/.test(value) || /@yahoo.no\s*$/.test(value) || /@yahoo.pl\s*$/.test(value) || /@yahoo.ro\s*$/.test(value) || /@yahoo.se\s*$/.test(value) || /@yahoogroups.com\s*$/.test(value) || /@ymail.com\s*$/.test(value) || /@yopmail.com\s*$/.test(value) || /@yxi.com\s*$/.test(value) || /@zeland.com\s*$/.test(value) || /@zenasis.com\s*$/.test(value) || /@ziplink.net\s*$/.test(value) || /@zsp.com\s*$/.test(value) || /@zuken.com\s*$/.test(value) || /@empal.com\s*$/.test(value) || /@nate.com\s*$/.test(value) || /@paran.com\s*$/.test(value) || /@hitel.net\s*$/.test(value) || /@ednc.com\s*$/.test(value) || /@sailline.co.
20508kr\s*$/.test(value) || /@asml.com\s*$/.test(value)) { 20509 return false; 20510 }else{ 20511 return true; 20512 } 20513 }, "Invalid email. Email from this domain name is not allowed."); 20514 20515 jQuery.validator.addMethod("Student", function (value, element) { 20516 return this.optional(element) || /^\w+[\w-\.]*\@[students]{8,8}\.[adu]{3,3}\.[ac]{2,2}\.[ae]{2,2}$/.test(value); 20517 }, "Please specify the correct domain for your documents"); 20518 20519 jQuery(document).ready(function ($) { 20520 20521 $(".scroll-to-top").on("click", function () { 20522 $('body,html').animate({ 20523 scrollTop: 0, 20524 }, 2000 20525 ); 20526 }); 20527 20528 if(typeof $.fn.tooltip!="undefined"){ 20529 $('[data-toggle="tooltip"]').tooltip({html: true}); 20530 } 20531 20532 if ($('.cd-top').length > 0) { 20533 // browser window scroll (in pixels) after which the "back to top" link is shown 20534 var offset = 300, 20535 //browser window scroll (in pixels) after which the "back to top" link opacity is reduced 20536 offset_opacity = 1200, 20537 //duration of the top scrolling animation (in ms) 20538 scroll_top_duration = 700, 20539 //grab the "back to top" link 20540 $back_to_top = $('.cd-top'); 20541 20542 //hide or show the "back to top" link 20543 $(window).scroll(function () { 20544 ($(this).scrollTop() > offset) ? $back_to_top.addClass('cd-is-visible') : $back_to_top.removeClass('cd-is-visible cd-fade-out'); 20545 if ($(this).scrollTop() > offset_opacity) { 20546 $back_to_top.addClass('cd-fade-out'); 20547 } 20548 }); 20549 20550 //smooth scroll to top 20551 $back_to_top.on('click', function (event) { 20552 event.preventDefault(); 20553 $('body,html').animate({ 20554 scrollTop: 0, 20555 }, scroll_top_duration 20556 ); 20557 }); 20558 } 20559 }); 20560 20561 function IsinIframe () { 20562 try { 20563 return window.self !== window.top; 20564 } catch (e) { 20565 return true; 20566 } 20567 } 20568 function resizeIframe(obj) { 20569 obj.style.height = obj.contentWindow.document.documentElement.scrollHeight + 'px'; 20570 } 20571 function getUrlParameter(name) { 20572 name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]'); 20573 var regex = new RegExp('[\\?&]' + name + '=([^&#]*)'); 20574 var results = regex.exec(location.search); 20575 return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' ')); 20576 }; 20577 </script>
20577 20578<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
20578<script> 20579 20580 20581 $(document).ready(function() { 20582 20583 20584 $("#top").click(function() { // When arrow is clicked 20585 $("body,html").animate({ 20586 scrollTop: 0 // Scroll to top of body 20587 }, 500); 20588 }); 20589 20590 $(window).scroll(function() { 20591 if ($(this).scrollTop() >= 50) { // If page is scrolled more than 50px 20592 $("#top").fadeIn(200); // Fade in the arrow 20593 } else { 20594 $("#top").fadeOut(200); // Else fade out the arrow 20595 } 20596 }); 20597 20598 }); var num = 30; 20599 20600 $(window).bind('scroll', function () { 20601 if ($(window).scrollTop() > num) { 20602 20603 $('.sticky').addClass('stickyNav'); 20604 } else { 20605 $('.sticky').removeClass('stickyNav'); 20606 } 20607 }); 20608 20609 $('.navbar-nav>li>a, .navClose').on('click', function(){ 20610 $('.navbar-collapse').collapse('hide'); 20611 }); 20612 $('.slide, .btn-close-access').on('click', function(){ 20613 $('#accessibility-fade-in').toggleClass('show'); 20614 }); 20615 </script>
20615 20616 20617 20618
20618<script> 20619 document.addEventListener('DOMContentLoaded', function() { 20620 var newTitle = "CodeSecCon 2026 | Aug 19, 2026 | The Virtual Conference on Software Security"; 20621 20622 // Change <title> tag (browser tab title) 20623 document.title = newTitle; 20624 20625 // Change <meta property="og:title"> 20626 var metaTag = document.querySelector('meta[property="og:title"]'); 20627 if (metaTag) { 20628 metaTag.setAttribute('content', newTitle); 20629 console.log("Meta og:title updated to:", newTitle); 20630 } else { 20631 console.warn("Meta tag for og:title not found."); 20632 } 20633 }); 20634 </script>
20634 20635
20636<script type="text/javascript"> 20637 $(".header-content li.active").removeClass("active"); 20638 $(".header-content li a[href*='registration-form']").parent().addClass("active"); 20639 </script>
20639<script type="text/javascript"> 20640$(document).ready(function () { 20641 if(CustomGetCookie("ppc")==null){ 20642 // 20643 } else { 20644 $("#privacy_sticky").remove(); 20645 } 20646 20647 }); 20648function CustomGetCookie(name) { 20649 var v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)'); 20650 return v ? v[2] : null; 20651} 20652function CustomSetCookie(name, value, days) { 20653 var d = new Date; 20654 d.setTime(d.getTime() + 24*60*60*1000*days); 20655 document.cookie = name + "=" + value + ";path=/;expires=" + d.toGMTString(); 20656} 20657 20658function cookiePolicyReject() { 20659 CustomSetCookie("ppc", "2", 365); 20660 $("#privacy_sticky").remove(); 20661 //$("body").append(""); 20662} 20663</script>
20663 20664 20665 20666
20667<script> 20668 let applicationLang = "en"; 20669 let userCancellationUrl = "https://www.codeseccon.com/form/cancelUserRegistration"; 20670 let deleteUserUrl = "https://www.codeseccon.com/form/deleteUserRegistration"; 20671 let userEditRegistrationUrl = "https://www.codeseccon.com/en/form/editProfileV2?user_id=&ud_profile=0&mode=&acces_id="; 20672 let logoutUrl = "https://www.codeseccon.com/en/logout" 20673 20674 // VFC-18362 - show login popup upon login failure in corresponding page 20675 let loginFailureData = []; 20676 let showloginPopupOnPageLoad = 0; 20677 20678 // VFC-18169 - determine if popup should appear on page load to ask if registration is to be cancelled 20679 let cancelRegistrationNow = 0; 20680 20681 document.addEventListener('DOMContentLoaded', function () { 20682 const urlParams = new URLSearchParams(window.location.search); 20683 const alertType = urlParams.get('alert'); 20684 console.log('alertType'); 20685 if (alertType === 'delete-success') { 20686 alert('Your account has been deleted successfully'); 20687 } 20688 }); 20689 20690 20691 /** 20692 * Setup Alert|Confirm Modal popup Content 20693 * 20694 * @param string action_type 20695 * @param boolean shouldLoadModal 20696 * 20697 * @return void 20698 */ 20699 function setUpConfirmAlertPopupContent(action_type = 'cancel_registration', shouldLoadModal = false) { 20700 let confirmAlertModal = $('#confirm_alert_modal-d'); 20701 20702 if('cancel_registration' == action_type){ 20703 // setup modal properties 20704 $(confirmAlertModal).find('.confirm_alert_modal_title-d').text('Are you sure you want to cancel your registration?'); 20705 $(confirmAlertModal).find('.confirm_alert_modal_description-d').text('Cancelling your registration will remove your access to the event. If you proceed, you will no longer be able to participate or access event-related materials.'); 20706 20707 $(confirmAlertModal).find('.btn_cancel_action-d').attr('data-cancel_btn_text', 'Keep My Registration'); 20708 $(confirmAlertModal).find('.btn_cancel_action-d').text('Keep My Registration'); 20709 20710 $(confirmAlertModal).find('.btn_confirm_action-d').attr('data-confirm_action_type', 'cancel_registration'); 20711 $(confirmAlertModal).find('.btn_confirm_action-d').text('Cancel Registration'); 20712 20713 $(confirmAlertModal).find('.btn_confirm_action-d').attr('data-confirm_action_btn_text', 'Cancel Registration'); 20714 } 20715 20716 20717 if('delete_registration' == action_type){ 20718 20719 confirmAlertModal = $('#delete_alert_modal-d'); 20720 // setup modal properties 20721 $(confirmAlertModal).find('.confirm_alert_modal_title-d').text('Delete Account?'); 20722 $(confirmAlertModal).find('.confirm_alert_modal_description-d').text('Deleting your account will remove your access to the event.'); 20723 20724 $(confirmAlertModal).find('.btn_cancel_action-d').attr('data-cancel_btn_text', 'Keep My Account'); 20725 $(confirmAlertModal).find('.btn_cancel_action-d').text('Keep My Account'); 20726 20727 $(confirmAlertModal).find('.btn_confirm_action-d').attr('data-confirm_action_type', 'delete_registration'); 20728 $(confirmAlertModal).find('.btn_confirm_action-d').text('Delete Account'); 20729 20730 $(confirmAlertModal).find('.btn_confirm_action-d').attr('data-confirm_action_btn_text', 'Delete Account'); 20731 } 20732 20733 if(shouldLoadModal) 20734 { 20735 // VFC-18157 - show confirmation popup on all pages except at login page 20736 let currentPagePath = window.location.pathname; 20737 if(!currentPagePath.includes('login')){ 20738 $(confirmAlertModal).modal('show'); // display modal 20739 } 20740 } 20741 } 20742 20743 /** 20744 * Update Login Popup content based on action that triggerd it 20745 * 20746 * @param string actionType 20747 * @param boolean hasValidationFailed 20748 */ 20749 function updateUxOnLoginPopup(actionType = 'cancel_registration', hasValidationFailed = false) { 20750 let loginForm = $('body').find('#Main-Login-Frm'); 20751 let formModal = $(loginForm).parents('#LoginModal'); 20752 let formUrl = $(loginForm).attr('action'); 20753 20754 20755 // VFC - VFC-20150 - temporary fix if showing en link on kr view 20756 if ([10000559, 381].includes(app_id) && window.location.pathname.split('/')[1] === 'kr') { 20757 let updatedUrl = formUrl.replace('/en/', '/kr/'); // Replace 'en' with 'kr' 20758 $(loginForm).attr('action', updatedUrl); // Set the new action URL 20759 formUrl = updatedUrl; 20760 } 20761 formUrl = new URL(formUrl); 20762 20763 // remove existing params from Query string 20764 formUrl.searchParams.delete('edit_registration'); 20765 formUrl.searchParams.delete('cancel_registration'); 20766 formUrl.searchParams.delete('delete_registration'); 20767 20768 if('cancel_registration' == actionType){ 20769 $(formModal).attr('data-action_type', 'cancel_registration'); 20770 formUrl.searchParams.set("cancel_registration", "1"); 20771
20772 let modalTitleElm = $(formModal).find('.modal-title'); 20773 let formModalBodyElm = $(formModal).find('.modal-body'); 20774 let cancelUserRegistrationModalTitle = 'Cancel Registration' 20775 let cancelUserRegistrationModalDescriptParagraph = '<p id="cancel_user_desc_para-d">For your security, we need you to log in to confirm your cancellation request.</p>'; 20776 20777 $(modalTitleElm).attr('data-original_title', $.trim(modalTitleElm.text())); 20778 $(modalTitleElm).text(cancelUserRegistrationModalTitle); 20779 let cancelRegDescriptionParaElm = $(formModalBodyElm).find('#cancel_user_desc_para-d'); 20780 if(cancelRegDescriptionParaElm.length > 0){ 20781 // $(formModalBodyElm).remove('#cancel_user_desc_para-d'); 20782 $('#cancel_user_desc_para-d').remove(); 20783 } 20784 $(formModalBodyElm).prepend(cancelUserRegistrationModalDescriptParagraph); 20785 } 20786 20787 else if('delete_registration' == actionType){ 20788 20789 $(formModal).attr('data-action_type', 'delete_registration'); 20790 formUrl.searchParams.set("delete_registration", "1"); 20791 20792 let modalTitleElm = $(formModal).find('.modal-title'); 20793 let formModalBodyElm = $(formModal).find('.modal-body'); 20794 let cancelUserRegistrationModalTitle = 'Delete Account' 20795 let cancelUserRegistrationModalDescriptParagraph = '<p id="delete_user_desc_para-d">For your security, we need you to log in to confirm your delete request.</p>'; 20796 20797 $(modalTitleElm).attr('data-original_title', $.trim(modalTitleElm.text())); 20798 $(modalTitleElm).text(cancelUserRegistrationModalTitle); 20799 let cancelRegDescriptionParaElm = $(formModalBodyElm).find('#delete_user_desc_para-d'); 20800 if(cancelRegDescriptionParaElm.length > 0){ 20801 // $(formModalBodyElm).remove('#cancel_user_desc_para-d'); 20802 $('#delete_user_desc_para-d').remove(); 20803 } 20804 $(formModalBodyElm).prepend(cancelUserRegistrationModalDescriptParagraph); 20805 } 20806 else if('edit_profile' == actionType){ 20807 $(formModal).attr('data-action_type', 'edit_profile'); 20808 formUrl.searchParams.set("edit_my_registration", "1"); 20809 20810 let modalTitleElm = $(formModal).find('.modal-title'); 20811 let originalTitle = $(modalTitleElm).attr('data-original_title'); 20812 if (typeof originalTitle !== 'undefined') { // case attribute is already set 20813 $(modalTitleElm).text($.trim(originalTitle)); 20814 if($('#cancel_user_desc_para-d').length > 0){ 20815 $('#cancel_user_desc_para-d').remove(); 20816 } 20817 $(modalTitleElm).removeAttr('data-original_title'); 20818 } 20819 } 20820 else if('manage_account' == actionType){ 20821 $(formModal).attr('data-action_type', 'manage_account'); 20822 formUrl.searchParams.set("manage_account", "1"); 20823 20824 let modalTitleElm = $(formModal).find('.modal-title'); 20825 let originalTitle = $(modalTitleElm).attr('data-original_title'); 20826 if (typeof originalTitle !== 'undefined') { // case attribute is already set 20827 $(modalTitleElm).text($.trim(originalTitle)); 20828 if($('#cancel_user_desc_para-d').length > 0){ 20829 $('#cancel_user_desc_para-d').remove(); 20830 } 20831 $(modalTitleElm).removeAttr('data-original_title'); 20832 } 20833 } 20834 else{ 20835 // reset form title 20836 $(formModal).removeAttr('data-action_type'); // remove action type additional attribute 20837 20838 let modalTitleElm = $(formModal).find('.modal-title'); 20839 let originaTitle = $(modalTitleElm).attr('data-original_title'); 20840 if (typeof originaTitle !== 'undefined') { // case attribute is already set 20841 $(modalTitleElm).text($.trim(originaTitle)); 20842 if($('#cancel_user_desc_para-d').length > 0){ 20843 $('#cancel_user_desc_para-d').remove(); 20844 } 20845 $(modalTitleElm).removeAttr('data-original_title'); 20846 } 20847 } 20848 20849 // VFC-18362 - redirect back to same page; show error message in popup 20850 if(hasValidationFailed){ 20851 $(formModal).find('#ResponseBox').text(loginFailureData.LoginMsg); 20852 $(formModal).find('#ResponseBox').css({"display": "block"}); 20853 } 20854 20855 $(loginForm).attr('action', formUrl); // update form action 20856 } 20857 20858 $(function(event) { 20859 20860 if(cancelRegistrationNow){ 20861 setUpConfirmAlertPopupContent('cancel_registration', true); 20862 } 20863 20864 // VFC-18362 - show login popup upon login failure in corresponding page 20865 if(showloginPopupOnPageLoad){ 20866 let formModal = $('#LoginModal'); 20867 20868 // Check if loginFailureData exists and is not null/undefined before parsing 20869 if(loginFailureData && typeof loginFailureData === 'string'){ 20870 try { 20871 console.log(loginFailureData); 20872 loginFailureData = JSON.parse(loginFailureData); 20873 console.log('updateUxOnLoginPopup',loginFailureData); 20874 console.log('loginFailureData.cancel_registration:',loginFailureData.cancel_registration); 20875 if(loginFailureData.cancel_registration == 1 || loginFailureData.cancel_registration == '1'){ 20876 20877 updateUxOnLoginPopup('cancel_registration', true); // update UI|UX for cancel Registraton of popup 20878 } 20879 else if(loginFailureData && loginFailureData.edit_my_registration == 1){ 20880 updateUxOnLoginPopup('edit_profile', true); // update UI|UX for edit profile of popup 20881 } 20882 } catch(e) { 20883 console.error('Error parsing loginFailureData:', e); 20884 } 20885 } else if(loginFailureData && typeof loginFailureData === 'object'){ 20886 // loginFailureData is already an object, no need to parse 20887 console.log('updateUxOnLoginPopup',loginFailureData); 20888 console.log('loginFailureData.cancel_registration:',loginFailureData.cancel_registration); 20889 if(loginFailureData.cancel_registration == 1 || loginFailureData.cancel_registration == '1'){ 20890 20891 updateUxOnLoginPopup('cancel_registration', true); // update UI|UX for cancel Registraton of popup 20892 } 20893 else if(loginFailureData && loginFailureData.edit_my_registration == 1){ 20894 updateUxOnLoginPopup('edit_profile', true); // update UI|UX for edit profile of popup 20895 } 20896 } 20897 20898 $(formModal).modal('show'); 20899 } 20900 20901 // reset login form back to original 20902 $('body').on('click', '#LoginBtn', function(e){ 20903 let loginForm = $('body').find('#Main-Login-Frm'); 20904 if(loginForm.length > 0){ // form exists 20905 updateUxOnLoginPopup('simple_login'); // update UI|UX for simple Registraton of popup 20906 } 20907 }); 20908 20909 // VFC-15322 - Allow Registration Cancellation 20910 let canceRegistrationlLinkElm = $('body').find('.btn_cancel_registration-d'); 20911 let deleteRegistrationlLinkElm = $('body').find('.btn_delete_registration-d'); 20912 if(canceRegistrationlLinkElm.length > 0 || eventNotstarted){ 20913 // trigger confirm action for cancellation 20914 $('#confirm_alert_modal-d').on('click', '.btn_confirm_action-d', function(e){ 20915 let elm = $(this); 20916 let actionType = $(elm).attr('data-confirm_action_type'); 20917 let confirmAlertModal = $(elm).parents('#delete_alert_modal-d'); 20918 $(confirmAlertModal).modal('hide'); // hide confirmation modal 20919 20920 if('cancel_registration' == actionType){ 20921 $('#confirm_alert_modal-d').hide(); 20922 if(user_id == 0){ // user is not logged in 20923 e.preventDefault(); 20924 e.stopPropagation(); 20925 20926 let loginForm = $('body').find('#Main-Login-Frm'); 20927 if(loginForm.length > 0){ // form exists 20928 let formModal = $(loginForm).parents('#LoginModal'); 20929 updateUxOnLoginPopup('cancel_registration'); // update UI|UX for cancel Registraton of popup 20930 $(formModal).modal('show'); // show login form modal popup 20931 } 20932 return false;
20933 } 20934 20935 // make a ajax based server hit 20936 $.ajax({ 20937 url: userCancellationUrl, 20938 type: 'post', 20939 cache: false, 20940 success: function (response) { 20941 response = eval('(' + response + ')'); 20942 console.log('response:', response); 20943 if(response.success === false){ 20944 alert(response.message); 20945 } 20946 else{ 20947 logoutUrl = new URL(logoutUrl); 20948 logoutUrl.searchParams.set("cancel_attendee_registration", "1"); 20949 20950 window.top.location.href = logoutUrl; // logoff current user 20951 } 20952 } 20953 }); 20954 } 20955 }); 20956 20957 $('body').on('click', '.btn_cancel_registration-d', function(e){ 20958 setUpConfirmAlertPopupContent('cancel_registration', true); 20959 }); 20960 } 20961 20962 if(deleteRegistrationlLinkElm.length > 0){ 20963 // trigger confirm action for cancellation 20964 $('#delete_alert_modal-d').on('click', '.btn_confirm_action-d', function(e){ 20965 let elm = $(this); 20966 let actionType = $(elm).attr('data-confirm_action_type'); 20967 let confirmAlertModal = $(elm).parents('#delete_alert_modal-d'); 20968 $(confirmAlertModal).modal('hide'); // hide confirmation modal 20969 20970 if('delete_registration' == actionType){ 20971 if(user_id == 0){ // user is not logged in 20972 e.preventDefault(); 20973 e.stopPropagation(); 20974 20975 let loginForm = $('body').find('#Main-Login-Frm'); 20976 if(loginForm.length > 0){ // form exists 20977 let formModal = $(loginForm).parents('#LoginModal'); 20978 updateUxOnLoginPopup('delete_registration'); // update UI|UX for cancel Registraton of popup 20979 $(formModal).modal('show'); // show login form modal popup 20980 } 20981 return false; 20982 } 20983 20984 // make a ajax based server hit 20985 $.ajax({ 20986 url: deleteUserUrl, 20987 type: 'post', 20988 cache: false, 20989 success: function (response) { 20990 response = eval('(' + response + ')'); 20991 console.log('response:', response); 20992 if(response.success === false){ 20993 alert(response.message); 20994 } 20995 else{ 20996 logoutUrl = new URL(logoutUrl); 20997 logoutUrl.searchParams.set("delete_attendee_registration", "1"); 20998 20999 window.top.location.href = logoutUrl; // logoff current user 21000 } 21001 } 21002 }); 21003 } 21004 }); 21005 21006 $('body').on('click', '.btn_delete_registration-d', function(e){ 21007 setUpConfirmAlertPopupContent('delete_registration', true); 21008 }); 21009 } 21010 21011 21012 // VFC-15333 - CTA Edit in the registration form 21013 let userEditRegistrationLinkElm = $('body').find('.btn_edit_registration-d'); 21014 if(userEditRegistrationLinkElm.length > 0){ 21015 $('body').on('click', '.btn_edit_registration-d', function(e) { 21016 let elm = $(this); 21017 21018 if (user_id == 0) { // user is not logged in 21019 e.preventDefault(); 21020 e.stopPropagation(); 21021 21022 let loginForm = $('body').find('#Main-Login-Frm'); 21023 if(loginForm.length > 0){ // form exists 21024 let formModal = $(loginForm).parents('#LoginModal'); 21025 updateUxOnLoginPopup('edit_profile'); // update UI|UX for edit profile of popup 21026 $(formModal).modal('show'); // show login form modal popup 21027 } 21028 return false;
21029 } 21030 21031 window.location.href = userEditRegistrationUrl; // redirect user to edit profile page 21032 }); 21033 } 21034 21035 let userManageAccountLinkElm = $('body').find('.btn_manage_account-d'); 21036 if(userManageAccountLinkElm.length > 0){ 21037 $('body').on('click', '.btn_manage_account-d', function(e) { 21038 21039 let elm = $(this); 21040 21041 e.preventDefault(); 21042 e.stopPropagation(); 21043 21044 let loginForm = $('body').find('#Main-Login-Frm'); 21045 if(loginForm.length > 0){ // form exists 21046 let formModal = $(loginForm).parents('#LoginModal'); 21047 updateUxOnLoginPopup('manage_account'); // update UI|UX for edit profile of popup 21048 $(formModal).modal('show'); // show login form modal popup 21049 } 21050 return false; 21051 21052 // window.location.href = userEditRegistrationUrl; // redirect user to edit profile page 21053 }); 21054 } 21055 }); 21056</script>
21056 21057
21057<script type="text/javascript"> 21058 window.addEventListener('load', function() { 21059 (function (c, l, a, r, i, t, y) { 21060 c[a] = c[a] || function () { 21061 (c[a].q = c[a].q || []).push(arguments) 21062 }; 21063 t = l.createElement(r); 21064 t.async = 1; 21065 t.src = "https://www.clarity.ms/tag/" + i; 21066 y = l.getElementsByTagName(r)[0]; 21067 y.parentNode.insertBefore(t, y); 21068 })(window, document, "clarity", "script", "godh5n915b"); 21069 }); 21070 </script>
21070 21071</body> 21072 21073</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.