1$(document).ready(function () { 2 3 // âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 4 // PDF.js worker path (Sitecore media library) 5 // âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 6 if (typeof pdfjsLib !== 'undefined') { 7 pdfjsLib.GlobalWorkerOptions.workerSrc = 8 '/-/media/Themes/AlinmaNew/Portal/AlinmaNew/Scripts/pdf.worker.min.js'; 9 } 10 11 // âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 12 // i18n Translation Map 13 // âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 14 var isArabic = $('html').attr('dir') === 'rtl' || $('html').attr('lang') === 'ar'; 15 var i18n = { 16 en: { 17 fulfilledTitle: 'E-Form Fulfilled', 18 fulfilledDesc1: 'Your E-form has been fulfilled.', 19 fulfilledDesc2: 'The application will not be processed until the original copy of the document signed by the authorized signatory is received.', 20 referenceNumber: 'Reference Number', 21 preview: 'Preview', 22 save: 'Save', 23 print: 'Print', 24 backBtn: 'Back to Corporate E-Form', 25 pdfLoading: 'Loading preview...', 26 pdfError: 'Preview not available' 27 }, 28 ar: { 29 fulfilledTitle: 'ت٠إت٠ا٠اÙÙÙ ÙØ°Ø¬ Ø§ÙØ¥ÙÙØªØ±ÙÙÙ', 30 fulfilledDesc1: 'ت٠إت٠ا٠ÙÙ ÙØ°Ø¬Ù Ø§ÙØ¥ÙÙØªØ±ÙÙÙ Ø¨ÙØ¬Ø§Ø.', 31 fulfilledDesc2: 'ÙÙ ØªØªÙ Ù Ø¹Ø§ÙØ¬Ø© Ø§ÙØ·Ùب ØØªÙ ÙØªÙ Ø§Ø³ØªÙØ§Ù اÙÙØ³Ø®Ø© Ø§ÙØ£ØµÙÙØ© اÙÙ ÙÙØ¹Ø© Ù Ù ÙÙØ¨Ù اÙÙ ÙÙØ¶ Ø¨Ø§ÙØªÙÙÙØ¹.', 32 referenceNumber: 'Ø§ÙØ±Ù٠اÙ٠رجعÙ', 33 preview: '٠عاÙÙØ©', 34 save: 'ØÙظ', 35 print: 'طباعة', 36 backBtn: 'Ø§ÙØ¹Ùدة Ø¥ÙÙ ÙÙØØ© اÙÙ٠اذج Ø§ÙØ¥ÙÙØªØ±ÙÙÙØ©', 37 pdfLoading: 'جار٠تØÙ Ù٠اÙ٠عاÙÙØ©...', 38 pdfError: 'اÙ٠عاÙÙØ© ØºÙØ± Ù ØªØ§ØØ©' 39 } 40 }; 41 var t = isArabic ? i18n.ar : i18n.en; 42 43 // âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 44 // Shared PDF blob state (fetch once, reuse for save/print) 45 // âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 46 var pdfBlobUrl = null; 47 48 // âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 49 // Select2 float label: inject scoped styles once into <head> 50 // âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 51 (function injectSelect2FloatStyles() { 52 if ($('#eform-select2-float-style').length) return; 53 var style = [ 54 55 /* ââ 1. The Select2 container must fill the form-floating 56 wrapper exactly like a native <input> would ââ */ 57 '.form-floating > .select2-container {', 58 ' width: 100% !important;', 59 '}', 60 61 /* ââ 2. The selection box: fixed two-line height, always ââ */ 62 '.form-floating > .select2-container .select2-selection--single {', 63 ' height: 5rem;', /* ~two lines + label room */ 64 ' min-height: 5rem;',
65 ' display: flex;', 66 ' align-items: flex-end;', /* text sits at bottom of box */ 67 ' border: 1px solid #ced4da;', 68 ' border-radius: 0.375rem;', 69 ' padding: 0 2.5rem 0.75rem 0.75rem;', 70 ' box-sizing: border-box;', 71 ' position: relative;', 72 '}', 73 74 /* ââ 3. Arrow: pin to right-centre always ââ */ 75 '.form-floating > .select2-container .select2-selection__arrow {', 76 ' position: absolute;', 77 ' top: 50%;', 78 ' right: 0.75rem;', 79 ' transform: translateY(-50%);', 80 ' height: auto;', 81 '}', 82 83 /* ââ 4. Rendered text: wrap, no clip ââ */ 84 '.form-floating > .select2-container .select2-selection__rendered {', 85 ' line-height: 1.5;', 86 ' padding: 0;', 87 ' white-space: normal;', 88 ' word-break: break-word;', 89 ' overflow: visible;', 90 ' text-overflow: unset;', 91 ' color: #212529;', 92 ' width: 100%;', 93 '}', 94 95 /* ââ 5. Label DEFAULT: sit at top-left inside the box ââ */ 96 /* Mirrors exactly what Bootstrap does for its own inputs */ 97 '.form-floating > .select2-container ~ label {', 98 ' position: absolute;', 99 ' top: 0;', 100 ' left: 0;', 101 ' height: 100%;', 102 ' padding: 1rem 0.75rem;', 103 ' pointer-events: none;', 104 ' border: 1px solid transparent;', 105 ' transform-origin: 0 0;', 106 ' transition: opacity .1s ease-in-out, transform .1s ease-in-out;', 107 ' opacity: 1;', 108 ' transform: none;', /* label at rest: full size inside box */ 109 '}', 110 111 /* ââ 6. Label ACTIVE (value selected): raise + shrink ââ */ 112 '.form-floating.select2-float-active > .select2-container ~ label {', 113 ' opacity: .65;', 114 ' transform: scale(.85) translateY(-0.5rem) translateX(0.15rem);', 115 ' pointer-events: none;', 116 '}', 117 118 /* ââ 7. Active: push rendered text down so it clears label ââ */ 119 '.form-floating.select2-float-active > .select2-container .select2-selection--single {', 120 ' align-items: flex-end;', 121 ' padding-bottom: 0.5rem;', 122 ' padding-top: 0;', 123 '}' 124 125 ].join('\n'); 126 $('<style id="eform-select2-float-style">').text(style).appendTo('head'); 127}()); 128 129 // Toggle .select2-float-active on parent .form-floating 130 // based on whether the Select2 has a value. 131 function applySelect2FloatLabel($select) { 132 var $wrapper = $select.closest('.form-floating'); 133 if (!$wrapper.length) return; 134 135 function refresh() { 136 var val = $select.val(); 137 $wrapper.toggleClass('select2-float-active', 138 val !== null && val !== '' && val !== undefined); 139 } 140 141 refresh(); // run immediately for pre-selected values 142 143 $select.on('select2:select select2:unselect select2:clear change', function () { 144 refresh(); 145 }); 146 } 147 148 // âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 149 // EXISTING: number-only input handling (UNCHANGED) 150 // âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 151 var $inputs = $('.number-data-only'); 152 153 $inputs.on('input', function () { 154 $(this).val($(this).val().replace(/[^0-9]/g, '')); 155 }); 156 157 $inputs.on('keypress', function (e) { 158 var charCode = e.which || e.keyCode; 159 if (charCode < 48 || charCode > 57) { e.preventDefault(); } 160 }); 161 162 $inputs.on('paste', function (e) { 163 var pastedData = (e.originalEvent || e).clipboardData.getData('text'); 164 if (!/^[0-9]*$/.test(pastedData)) { e.preventDefault(); } 165 });
166 167 if($("input[data-sc-field-name='hidTType']").val() != "int") 168 { 169 const currencyData = [{ id: 'SAR', text: 'SAR' }]; 170 171 $('.remit-currency').select2({ 172 data: currencyData, 173 placeholder: '', 174 allowClear: true 175 }); 176 } 177 178 if($("input[data-sc-field-name='hidTType']").val() == "in") 179 { 180 const bankDataForInternal = [{ id: 'Alinma Bank', text: 'Alinma Bank' }]; 181 182 $('.ben-bank').select2({ 183 data: bankDataForInternal, 184 placeholder: '', 185 allowClear: true 186 }); 187 } 188 189 // âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 190 // EXISTING: Payment Purpose other field toggle (UNCHANGED) 191 // âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 192 $("select[data-sc-field-name='PaymentPurpose']").on("change", function () { 193 if ($(this).val() == "o") { 194 $('.ppurpose-other-div').show(); 195 $("input[data-sc-field-name='PaymentPurposeOther']").removeClass('opt'); 196 } else { 197 $('.ppurpose-other-div').hide(); 198 if (!$("input[data-sc-field-name='PaymentPurposeOther']").hasClass("opt")) { 199 $("input[data-sc-field-name='PaymentPurposeOther']").addClass('opt'); 200 } 201 } 202 }); 203 204 // âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 205 // EXISTING: Swift Clear button (UNCHANGED) 206 // âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 207 if ($(".btn-swift-clear").length == 1) { 208 $(".btn-swift-clear").on("click", function () { 209 $("div[data-sc-field-key='divBankDetails']").html(''); 210 $("input[data-sc-field-name='hidBank']").val(''); 211 $("input[data-sc-field-name='hidCurrency']").val(''); 212 $("input[data-sc-field-name='hidCountryCode']").val(''); 213 $(".row-bank").show("slow"); 214 $("input[data-sc-field-name='SwiftCode']").val(''); 215 }); 216 } 217 218 if($(".btn-eform-back").length == 1){ 219 $(".btn-eform-back").on("click", function (e) { 220 e.preventDefault(); 221 $(".eform-confirm").hide(); 222 $(".eform-input").show(); 223 $('#eform-review-card').remove(); 224 }); 225 } 226 227 // âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 228 // EXISTING: Swift Validate button (UNCHANGED) 229 // âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 230 if ($('.btn-swift').length == 1) { 231 $(".btn-swift").on("click", function () { 232 if ($("input[data-sc-field-name='SwiftCode']").val() == "") { 233 $("input[data-sc-field-name='SwiftCode']").css('border-color', 'red'); 234 return false; 235 } 236 $.ajax({
237 url: '/api/sitecore/EForm/gsc', 238 method: 'GET', 239 contentType: 'application/json', 240 data: { sc: $("input[data-sc-field-name='SwiftCode']").val() }, 241 beforeSend: function () { $("#alinmaLoader").addClass("active"); }, 242 success: function (data) { 243 if (data != null) { 244 if (data.bank_code != "") { 245 $("#alinmaLoader").removeClass("active"); 246 $("div[data-sc-field-key='divBankDetails']").html( 247 "<b> Bank Code: " + data.bank_code + 248 " | Country Code: " + data.country_code + 249 " | Currency: " + data.country_code 250 ); 251 $("input[data-sc-field-name='hidBank']").val(data.bank_code); 252 //$("input[data-sc-field-name='hidCurrency']").val(data.country_code); 253 $("input[data-sc-field-name='hidCountryCode']").val(data.country_code); 254 $(".row-bank").hide("slow"); 255 256 $.ajax({
257 url: '/api/sitecore/EForm/gcu', 258 method: 'GET', 259 contentType: 'application/json', 260 data: { cc: data.country_code }, 261 beforeSend: function () { $("#alinmaLoader").addClass("active"); }, 262 success: function (data) { 263 if (data != null && data.result.length > 0) { 264 $("#alinmaLoader").removeClass("active"); 265 266 // Append options â no .select2() re-call needed 267 $.each(data.result, function (i, item) { 268 $('.remit-currency').append( 269 $('<option>', { value: item.Code, text: item.cen }) 270 ); 271 }); 272 } else { 273 $("#alinmaLoader").removeClass("active"); 274 } 275 276 }, 277 error: function () { $("#alinmaLoader").removeClass("active"); } 278 }); 279 280 } else { 281 $("div[data-sc-field-key='divBankDetails']").html( 282 '<b> Invalid SWIFT Code. Please check again.</b>' 283 ); 284 $("input[data-sc-field-name='hidBank']").val(''); 285 $("input[data-sc-field-name='hidCurrency']").val(''); 286 $("input[data-sc-field-name='hidCountryCode']").val(''); 287 $("#alinmaLoader").removeClass("active"); 288 $(".row-bank").show("slow"); 289 } 290 } else { 291 $("#alinmaLoader").removeClass("active"); 292 } 293 }, 294 error: function () { $("#alinmaLoader").removeClass("active"); } 295 }); 296 }); 297 } 298 299 // âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 300 // Countries / Banks / Currencies 301 // One clean block â no duplication, no re-initialisation 302 // âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 303 if ($('select[data-sc-field-name="RemittanceCountry"]').length == 1) { 304 305 // Initialise ALL three Select2 instances ONCE on page load. 306 // Options are appended later via AJAX without re-calling .select2(). 307 $(".remit-country").select2({ placeholder: '', allowClear: true, minimumInputLength: 0 }); 308 applySelect2FloatLabel($(".remit-country")); 309 310 $(".remit-banks").select2({ placeholder: '', allowClear: true, minimumInputLength: 0 }); 311 applySelect2FloatLabel($(".remit-banks")); 312 313 $(".remit-currency").select2({ placeholder: '', allowClear: true, minimumInputLength: 0 }); 314 applySelect2FloatLabel($(".remit-currency")); 315 316 if($("input[data-sc-field-name='hidTType']").val() == "int") 317 { 318 LoadCountries(); 319 } 320 321 322 // Country change: reset banks then load new ones 323 $(".remit-country").on("change", function () { 324 325 var countryCode = $(this).val(); 326 327 // Clear all bank options, keep empty placeholder 328 $(".remit-banks").empty().append('<option label=" "></option>'); 329 $(".remit-currency").empty().append('<option label=" "></option>'); 330 331 // Reset Select2 value â no re-init, already initialised 332 $(".remit-banks").val(null).trigger('change'); 333 $(".remit-currency").val(null).trigger('change'); 334 335 // Reset float label 336 $(".remit-banks").closest('.form-floating').removeClass('select2-float-active'); 337 $(".remit-currency").closest('.form-floating').removeClass('select2-float-active'); 338 339 // If country was cleared, nothing more to do 340 if (!$(this).val()) { return; } 341 342 // Load banks for the selected country 343 $.ajax({
344 url: '/api/sitecore/EForm/gb', 345 method: 'GET', 346 contentType: 'application/json', 347 data: { cc: countryCode }, 348 beforeSend: function () { $("#alinmaLoader").addClass("active"); }, 349 success: function (data) { 350 if (data != null && data.result.length > 0) { 351 $("#alinmaLoader").removeClass("active"); 352 353 // Append options â no .select2() re-call needed 354 $.each(data.result, function (i, item) { 355 $('.remit-banks').append( 356 $('<option>', { value: item.code, text: item.name }) 357 ); 358 }); 359 360 // Load currencies 361 $.ajax({ 362 url: '/api/sitecore/EForm/gcu', 363 method: 'GET', 364 contentType: 'application/json', 365 data: { cc: countryCode }, 366 beforeSend: function () { $("#alinmaLoader").addClass("active"); }, 367 success: function (data) { 368 if (data != null && data.result.length > 0) { 369 $("#alinmaLoader").removeClass("active"); 370 371 // Append options â no .select2() re-call needed 372 $.each(data.result, function (i, item) { 373 $('.remit-currency').append( 374 $('<option>', { value: item.Code, text: item.cen }) 375 ); 376 }); 377 } else { 378 $("#alinmaLoader").removeClass("active"); 379 } 380 381 }, 382 error: function () { $("#alinmaLoader").removeClass("active"); } 383 }); 384 385 386 } else { 387 $("#alinmaLoader").removeClass("active"); 388 } 389 }, 390 error: function () { $("#alinmaLoader").removeClass("active"); } 391 }); 392 }); 393 394 } // end RemittanceCountry block 395 396 // âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 397 // EXISTING: Transaction Type change (UNCHANGED) 398 // âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 399 400 401 402 // âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 403 // MAIN FORM LOGIC 404 // âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 405 if (document.querySelector('input[data-sc-field-key="A1F87972F7FB4137DBA28BC847F09C5E"]') != null) { 406 407 var rqType = ''; 408 $(".eform-confirm").hide(); 409 $(".ppurpose-other-div").hide(); 410 $(".cust-bank-branch").prop('disabled', true); 411 412 /*$("select[data-sc-field-name='TransactionType']").on("change", function () { 413 if ($(this).val() == "internal") { 414 $("select[data-sc-field-name='BeneficiaryBank'] option[value='alinma']").prop('disabled', false); 415 $("select[data-sc-field-name='BeneficiaryBank']").val('alinma'); 416 } else { 417 $("select[data-sc-field-name='BeneficiaryBank'] option[value='alinma']").prop('disabled', true); 418 $("select[data-sc-field-name='BeneficiaryBank']").val(''); 419 } 420 });*/ 421 422 $(".remit-currency").on("change", function(){ 423 $("input[data-sc-field-name='hidCurrency']").val($(this).val()); 424 }) 425 426 $(".remit-country").on("change", function(){ 427 $("input[data-sc-field-name='hidCountryCode']").val($(this).children("option").filter(":selected").text()) 428 }) 429 430 $(".remit-banks").on("change", function(){ 431 $("input[data-sc-field-name='hidBank']").val($(this).children("option").filter(":selected").text()); 432 }) 433 434 var submit = document.querySelector('input[data-sc-field-key="A1F87972F7FB4137DBA28BC847F09C5E"]'); 435 var submitReqForDownload = document.querySelector('input[data-sc-field-key="A1F87972F7FB4137DBA28BB967F09C5E"]'); 436 437 /*$('.form-check-input').on('input change', function () { 438 checkAndEnableButton(submitReqForDownload); 439 });*/ 440 441 $('.form-control').on('input change', function () { 442 var $field = $(this); 443 if ($field.hasClass('opt')) { $field.css('border-color', ''); return; } 444 var value = $field.val(); 445 if (typeof value === 'string') { value = value.trim(); } 446 $field.css('border-color', (value && value !== '') ? '' : 'red'); 447 }); 448 449 if (submit) { 450 $('.error-div').hide(); 451 452 submit.onclick = function (e) { 453 e.preventDefault(); 454 455 if ($("input[data-sc-field-name='hidTType']").val() == "int" && 456 $("input[data-sc-field-name='SwiftCode']").val() != "") { 457 if ($("input[data-sc-field-name='hidBank']").val() == '' && 458 $("input[data-sc-field-name='hidCurrency']").val() == "" && 459 $("input[data-sc-field-name='hidCountryCode']").val() == "") { 460 return false; 461 } 462 } 463 464 if ($("input[data-sc-field-name='hidTType']").val() != "") { 465 rqType = $("input[data-sc-field-name='hidTType']").val(); 466 if (rqType == "in") { rqType = "internal"; } 467 else if (rqType == "s") { rqType = "sarie"; } 468 else if (rqType == "int") { rqType = "international"; } 469 } 470 471 if (!validateFormControls()) { return false; } 472 473 var requestType = rqType; 474 var CustomerBankBranch = $("input[data-sc-field-name='CustomerBankBranch']").val(); 475 var OrderingCustomerNameArabic = $("input[data-sc-field-name='OrderingCustomerNameArabic']").val(); 476 var CustomerAddress = $("input[data-sc-field-name='CustomerAddress']").val(); 477 var DebitAccount = $("input[data-sc-field-name='DebitAccount']").val(); 478 var Amount = $("input[data-sc-field-name='Amount']").val(); 479 var Currency = $("select[data-sc-field-name='Currency']").val(); 480 var BeneficiaryBank = $("select[data-sc-field-name='BeneficiaryBank'] option:selected").text(); 481 var IntRemitBank = $("select[data-sc-field-name='RemittanceBanks'] option:selected").text(); 482 var BeneficiaryBankCode = $("select[data-sc-field-name='BeneficiaryBank']").val(); 483 var BeneficiaryCustomerNameArabic = $("input[data-sc-field-name='BeneficiaryCustomerNameArabic']").val(); 484 var BeneficiaryAddress = $("input[data-sc-field-name='BeneficiaryAddress']").val(); 485 var BeneficiaryAccountNumber = $("input[data-sc-field-name='BeneficiaryAccountNumber']").val(); 486 var RemittanceTransferDetailsInfo = $("input[data-sc-field-name='RemittanceTransferDetailsInfo']").val(); 487 var PaymentPurpose = $("select[data-sc-field-name='PaymentPurpose']").val(); 488 var OtherReason = $("input[data-sc-field-name='PaymentPurposeOther']").val(); 489 var BeneficiaryCountry = $("select[data-sc-field-name='RemittanceCountry'] option:selected").text(); 490 var IntRemitCurrency = $("select[data-sc-field-name='RemittanceCurrency'] option:selected").text(); 491 var IntRemitBankCode = $("select[data-sc-field-name='RemittanceBanks'] option:selected").val(); 492 var recaptchaText = $(".hid-recaptcha").val(); 493 494 if (BeneficiaryBank == "") { 495 BeneficiaryBank = IntRemitBank; 496 if ($("input[data-sc-field-name='hidBank']").val() != "") { 497 BeneficiaryBank = $("input[data-sc-field-name='hidBank']").val(); 498 } 499 else if(rqType == "internal") 500 { 501 BeneficiaryBank = "Alinma Bank" 502 } 503 } 504 if (Currency == "" || Currency == undefined) { 505 Currency = IntRemitCurrency; 506 if ($("input[data-sc-field-name='hidCurrency']").val() != "") { 507 Currency = $("input[data-sc-field-name='hidCurrency']").val(); 508 } 509 } 510 if (BeneficiaryBankCode == "" || BeneficiaryBankCode == undefined) { 511 BeneficiaryBankCode = IntRemitBankCode; 512 if ($("input[data-sc-field-name='hidBank']").val() != "") { 513 BeneficiaryBankCode = $("input[data-sc-field-name='hidBank']").val(); 514 } 515 } 516 517 if(recaptchaText == "") 518 { 519 recaptchaText = "Test"; 520 } 521 522 var CusteFormRqPrcMngRq = { 523 Body: { 524 RqType: requestType, 525 BranchName: CustomerBankBranch, 526 CustName: OrderingCustomerNameArabic, 527 CustAddr: CustomerAddress, 528 AcctNum: DebitAccount,
529 Amt: Amount, 530 CurCode: Currency, 531 BenName: BeneficiaryCustomerNameArabic, 532 BenBankCode: BeneficiaryBankCode, 533 BenAddr: BeneficiaryAddress, 534 BenAcctNum: BeneficiaryAccountNumber, 535 BenBankName: BeneficiaryBank, 536 FundXferPurpose: PaymentPurpose, 537 FundXferDtls: RemittanceTransferDetailsInfo, 538 OtherReason: OtherReason, 539 BenCountry: BeneficiaryCountry 540 }, 541 CapText : recaptchaText 542 }; 543 544 $.ajax({ 545 url: '/api/sitecore/EForm/EFDReq', 546 method: 'POST', 547 contentType: 'application/json', 548 data: JSON.stringify(CusteFormRqPrcMngRq), 549 beforeSend: function () { $("#alinmaLoader").addClass("active"); }, 550 success: function (data) { 551 if (data != null) { 552 if (data.Success == "Y") { 553 $("#alinmaLoader").removeClass("active"); 554 $("input[data-sc-field-name='hidDocId']").val(data.DocId); 555 $("input[data-sc-field-name='hidPortalRef']").val(data.portalReference); 556 557 // Review card (international only) 558 559 $('#eform-review-card').remove(); 560 561 var purposeLabel = $("select[data-sc-field-name='PaymentPurpose'] option:selected").text(); 562 var displayBenBank = $("input[data-sc-field-name='hidBank']").val() !== '' 563 ? $("input[data-sc-field-name='hidBank']").val() 564 : $("select[data-sc-field-name='RemittanceBanks'] option:selected").text(); 565 566 if(displayBenBank == "") 567 { 568 displayBenBank = $("select[data-sc-field-name='BeneficiaryBank'] option:selected").text(); 569 } 570 var displayCurrency = $("input[data-sc-field-name='hidCurrency']").val() !== '' 571 ? $("input[data-sc-field-name='hidCurrency']").val() 572 : $("select[data-sc-field-name='RemittanceCurrency'] option:selected").text(); 573 574 function reviewRow(labelText, value) { 575 if (!value || value.trim() === '') return ''; 576 return '<div class="col-md-6 mb-3">' + 577 '<div class="details-label">' + $('<div>').text(labelText).html() + '</div>' + 578 '<div class="details-txt">' + $('<div>').text(value).html() + '</div>' + 579 '</div>'; 580 } 581 582 var lbl = { 583 custName: $("label[for$='cb86948d-f762-464f-9c6e-cb5160619077__Value']").text().trim(), 584 custAddress: $("label[for$='b1c9a763-1726-43f0-9e8d-a9dd20c326bd__Value']").text().trim(), 585 debitAcc: $("label[for$='3a6bf48d-1118-4d94-b550-7ca52087e094__Value']").text().trim(), 586 amount: $("label[for$='cb06132f-64c5-4408-9410-5b3e25c7bcdb__Value']").text().trim(), 587 debitCurrency: $("label[for$='20985ee7-ef33-4206-b1ef-110774052d0e__Value']").text().trim(), 588 swiftCode: $("label[for$='4354bb01-fdcf-4b3e-bb8a-1ba71ba930d8__Value']").text().trim(), 589 remitCountry: $("label[for$='7167206b-7392-4cf4-bed9-96f2678136b0__Value']").text().trim(), 590 remitBanks: $("label[for$='81a25c8c-c43c-41f3-9439-60eb772cf34b__Value']").text().trim(), 591 remitCurrency: $("label[for$='64deb308-280f-4558-a373-e47aca3a2670__Value']").text().trim(), 592 benName: $("label[for$='014b8d32-a860-41e7-9eed-e607eface426__Value']").text().trim(), 593 benAddress: $("label[for$='2c7b2fc2-d7c2-44c1-a0d9-629b7d8347a5__Value']").text().trim(), 594 benAccNo: $("label[for$='4b487615-db63-4a4b-92d9-76d47e9ab447__Value']").text().trim(), 595 remitDetails: $("label[for$='adb1bb3c-e5ed-477c-bc59-61a33036cf1e__Value']").text().trim(), 596 paymentPurpose: $("label[for$='eff2fa24-ca3b-4b10-a347-f51c4f03f38f__V
596alue']").text().trim(), 597 otherReason: $("label[for$='28b12e1c-1c72-4872-8ed9-01abd3629c38__Value']").text().trim() 598 }; 599 600 var remitterHeading = $(".eform-input .component-control:first h3").first().text().trim() || 'Remitter Details'; 601 var beneficiaryHeading = $(".eform-input .component-control:last h3").first().text().trim() || 'Beneficiary Details'; 602 603 var remitterRows = 604 reviewRow(lbl.custName, OrderingCustomerNameArabic) + 605 reviewRow(lbl.custAddress, CustomerAddress) + 606 reviewRow(lbl.debitAcc, DebitAccount) + 607 reviewRow(lbl.amount, Amount) + 608 reviewRow(lbl.debitCurrency, $("select[data-sc-field-name='Currency'] option:selected").text()); 609 610 var swiftVal = $("input[data-sc-field-name='SwiftCode']").val(); 611 var beneficiaryRows = 612 (swiftVal ? reviewRow(lbl.swiftCode, swiftVal) : '') + 613 reviewRow(lbl.remitCountry, BeneficiaryCountry) + 614 reviewRow(lbl.remitBanks, displayBenBank) + 615 reviewRow(lbl.remitCurrency, displayCurrency) + 616 reviewRow(lbl.benName, BeneficiaryCustomerNameArabic) + 617 reviewRow(lbl.benAddress, BeneficiaryAddress) + 618 reviewRow(lbl.benAccNo, BeneficiaryAccountNumber) + 619 reviewRow(lbl.remitDetails, RemittanceTransferDetailsInfo) + 620 reviewRow(lbl.paymentPurpose, purposeLabel) + 621 (PaymentPurpose === 'o' ? reviewRow(lbl.otherReason, OtherReason) : ''); 622 623 var reviewCard = 624 '<div id="eform-review-card" class="container my-3">' + 625 '<div class="details-card card">' + 626 '<div class="card-header"><span>Review Details</span></div>' + 627 '<div class="card-body"><div class="row">' + 628 '<div class="col-md-12 mb-3"><h3 class="color-accent">' + remitterHeading + '</h3></div>' + 629 remitterRows + 630 '<div class="col-md-12 mb-3 mt-2"><h3 class="color-accent">' + beneficiaryHeading + '</h3></div>' + 631 beneficiaryRows + 632 '</div></div>' + 633 '</div>' + 634 '</div>'; 635 636 $(".wizard--wrapper").after(reviewCard); 637 638 639 $(".eform-confirm").show(); 640 $(".eform-input").hide(); 641 642 } else { 643 644 if(data.portalReference != null) 645 { 646 $('.error-div').html(''); 647 if(data.portalReference == '500') 648 { 649 $('.error-div').html('<p> Error verifying the recaptcha security from Google'); 650 } 651 else if(data.portalReference == '404') 652 { 653 $('.error-div').html('<p> Captcha verification failed, kindly resubmit the form'); 654 } 655 } 656 657 $('.error-div').show(); 658 $("#alinmaLoader").removeClass("active"); 659 } 660 } else { 661 $("#alinmaLoader").removeClass("active"); 662 $('.error-div').show(); 663 } 664 }, 665 error: function () { 666 $("#alinmaLoader").removeClass("active"); 667 $('.error-div').show(); 668 } 669 }); 670 }; 671 672 $(submitReqForDownload).prop("disabled", true); 673 } 674 675 // Submit Request & Download Form button 676 if (submitReqForDownload) { 677 submitReqForDownload.onclick = function (e) { 678 e.preventDefault(); 679 $('.error-div').hide(); 680 681 var docId = $("input[data-sc-field-name='hidDocId']").val(); 682 var portalReqId = $("input[data-sc-field-name='hidPortalRef']").val(); 683 var chkt = $("input[data-sc-field-name='chkTerms']").prop('checked'); 684 var chkack = $("input[data-sc-field-name='chkAck']").prop('checked'); 685 686 var DocumentRs = { portalReference: portalReqId, DocId: docId, chkAck : chkack, chkTerms : chkt }; 687 688 $.ajax({
689 url: '/api/sitecore/EForm/EFSubmit', 690 method: 'POST', 691 contentType: 'application/json', 692 data: JSON.stringify(DocumentRs), 693 beforeSend: function () { $("#alinmaLoader").addClass("active"); }, 694 success: function (data) { 695 if (data.IsSuccess) { 696 $.ajax({ 697 url: '/api/sitecore/EForm/EFDwnld', 698 method: 'POST', 699 contentType: 'application/json', 700 data: JSON.stringify(DocumentRs), 701 xhrFields: { responseType: 'blob' }, 702 beforeSend: function () { $("#alinmaLoader").addClass("active"); }, 703 success: function (blob) { 704 $("#alinmaLoader").removeClass("active"); 705 706 if (pdfBlobUrl) { window.URL.revokeObjectURL(pdfBlobUrl); } 707 pdfBlobUrl = window.URL.createObjectURL(blob); 708 709 $(".eform-confirm").hide(); 710 $('#eform-review-card').hide(); 711 712 $('#eform-fulfilled').remove(); 713 $(".eform-confirm").after(buildFulfilledScreen(portalReqId)); 714 715 renderPdfPreview(pdfBlobUrl); 716 717 $('#eform-btn-save').on('click', function () { 718 var a = document.createElement('a'); 719 a.style.display = 'none'; 720 a.href = pdfBlobUrl; 721 a.download = portalReqId + '_request.pdf'; 722 document.body.appendChild(a); 723 a.click(); 724 a.remove(); 725 }); 726 727 $('#eform-btn-print').on('click', function () { 728 var w = window.open(pdfBlobUrl, '_blank'); 729 if (w) { w.onload = function () { w.focus(); w.print(); }; } 730 }); 731 732 $('#eform-btn-back').on('click', function () { 733 if (pdfBlobUrl) { window.URL.revokeObjectURL(pdfBlobUrl); pdfBlobUrl = null; } 734 window.location.href = '/corporate/e-form-dashboard'; 735 }); 736 }, 737 error: function () { 738 $("#alinmaLoader").removeClass("active"); 739 $('.error-div').show(); 740 } 741 }); 742 } 743 else 744 { 745 $("#alinmaLoader").removeClass("active"); 746 $('.error-div').show(); 747 } 748 }, 749 error: function () { 750 $("#alinmaLoader").removeClass("active"); 751 $('.error-div').show(); 752 } 753 }); 754 }; 755 } 756 757 } // end main form logic 758 759 // âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 760 // Build fulfilled screen HTML (i18n + dir-aware) 761 // âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 762 function buildFulfilledScreen(portalReqId) { 763 var dir = isArabic ? 'rtl' : 'ltr'; 764 return ( 765 '<div id="eform-fulfilled" dir="' + dir + '" class="container my-3 mt-5">' + 766 '<div class="row">' + 767 '<div class="col-md-8">' + 768 '<div class="wizard-confirmation--wrapper">' + 769 '<svg width="230" height="177" viewBox="0 0 230 177" fill="none" xmlns="http://www.w3.org/2000/svg">' + 770 '<path d="M1.21508 106.077L47.4551 61.3843L113.743 117.806L122.785 125.706L73.6365 175.782L1.21508 106.077Z" fill="url(#paint0_linear_263_1868)" fill-opacity="0.3"/>' + 771 '<path d="M54.2935 68.2712L97.5698 112.802C104.601 120.037 116.246 119.945 123.163 112.601L218.847 11.0001" stroke="#BB7B6A" stroke-width="20.4896" stroke-linecap="round"/>' + 772 '<defs><linearGradient id="paint0_linear_263_1868" x1="79.5399" y1="90.1537" x2="31.0193" y2="143.9" gradientUnits="userSpaceOnUse">' + 773 '<stop stop-color="#DF8C7A"/>' + 774 '<stop offset="1" stop-color="#DF8C7A" stop-opacity="0"/>' + 775 '</linearGradient></defs>' + 776 '</svg>' + 777 '<h2>' + $('<div>').text(t.fulfilledTitle).html() + '</h2>' + 778 '<p class="text-center">' + 779 $('<div>').text(t.fulfilledDesc1).html() + '<br/>' + 780 $('<div>').text(t.fulfilledDesc2).html() + 781 '</p>' + 782 '<p class="color-accent">' + 783 $('<div>').text(t.referenceNumber).html() + 784 ': #' + $('<div>').text(portalReqId).html() + 785 '</p>' + 786 '<div class="text-center">' + 787 '<a id="eform-btn-back" class="btn-border" href="javascript:;">' + 788 $('<div>').text(t.backBtn).html() + 789 '</a>' + 790 '</div>' + 791 '</div>' + 792 '</div>' + 793 '<div class="col-md-4">' + 794 '<div class="details-card card">' + 795 '<div class="card-header">' + 796 '<span>' + $('<div>').text(t.preview).html() + '</span>' + 797 '</div>' + 798 '<div class="card-body">' + 799 '<div class="eform--draft-wrapper">' + 800 '<div id="eform-pdf-preview-wrapper" class="eform--draft-img" ' + 801 'style="display:flex;align-items:center;justify-content:center;' + 802 'min-height:200px;background:#f5f5f5;overflow:hidden;">' + 803 '<span id="eform-pdf-loading-txt">' + $('<div>').text(t.pdfLoading).html() + '</span>' +
804 '<canvas id="eform-pdf-canvas" style="display:none;max-width:100%;height:auto;"></canvas>' + 805 '</div>' + 806 '<div class="btns-wrapper">' + 807 '<a id="eform-btn-save" class="btn-fourth" href="javascript:;">' + 808 '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20.5603 6.75001L17.25 3.43969C17.1112 3.2998 16.946 3.18889 16.764 3.11341C16.582 3.03792 16.3867 2.99938 16.1897 3.00001H4.5C4.10218 3.00001 3.72064 3.15804 3.43934 3.43935C3.15804 3.72065 3 4.10218 3 4.50001V19.5C3 19.8978 3.15804 20.2794 3.43934 20.5607C3.72064 20.842 4.10218 21 4.5 21H19.5C19.8978 21 20.2794 20.842 20.5607 20.5607C20.842 20.2794 21 19.8978 21 19.5V7.81032C21.0006 7.61326 20.9621 7.41805 20.8866 7.23602C20.8111 7.054 20.7002 6.88879 20.5603 6.75001ZM15.75 19.5H8.25V14.25H15.75V19.5ZM19.5 19.5H17.25V14.25C17.25 13.8522 17.092 13.4707 16.8107 13.1893C16.5294 12.908 16.1478 12.75 15.75 12.75H8.25C7.85218 12.75 7.47064 12.908 7.18934 13.1893C6.90804 13.4707 6.75 13.8522 6.75 14.25V19.5H4.5V4.50001H16.1897L19.5 7.81032V19.5ZM15 6.75001C15 6.94892 14.921 7.13969 14.7803 7.28034C14.6397 7.42099 14.4489 7.50001 14.25 7.50001H9C8.80109 7.50001 8.61032 7.42099 8.46967 7.28034C8.32902 7.13969 8.25 6.94892 8.25 6.75001C8.25 6.5511 8.32902 6.36033 8.46967 6.21968C8.61032 6.07903 8.80109 6.00001 9 6.00001H14.25C14.4489 6.00001 14.6397 6.07903 14.7803 6.21968C14.921 6.36033 15 6.5511 15 6.75001Z" fill="#002134"/></svg>' + 809 ' ' + $('<div>').text(t.save).html() + 810 '</a>' + 811 '<a id="eform-btn-print" class="btn-primary" href="javascript:;">' + 812 '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20.1253 6.75H18.75V3.75C18.75 3.55109 18.671 3.36032 18.5303 3.21967C18.3897 3.07902 18.1989 3 18 3H6C5.80109 3 5.61032 3.07902 5.46967 3.21967C5.32902 3.36032 5.25 3.55109 5.25 3.75V6.75H3.87469C2.565 6.75 1.5 7.75969 1.5 9V16.5C1.5 16.6989 1.57902 16.8897 1.71967 17.0303C1.86032 17.171 2.05109 17.25 2.25 17.25H5.25V20.25C5.25 20.4489 5.32902 20.6397 5.46967 20.7803C5.61032 20.921 5.80109 21 6 21H18C18.1989 21 18.3897 20.921 18.5303 20.7803C18.671 20.6397 18.75 20.4489 18.75 20.25V17.25H21.75C21.9489 17.25 22.1397 17.171 22.2803 17.0303C22.421 16.8897 22.5 16.6989 22.5 16.5V9C22.5 7.75969 21.435 6.75 20.1253 6.75ZM6.75 4.5H17.25V6.75H6.75V4.5ZM17.25 19.5H6.75V15H17.25V19.5ZM21 15.75H18.75V14.25C18.75 14.0511 18.671 13.8603 18.5303 13.7197C18.3897 13.579 18.1989 13.5 18 13.5H6C5.80109 13.5 5.61032 13.579 5.46967 13.7197C5.32902 13.8603 5.25 14.0511 5.25 14.25V15.75H3V9C3 8.58656 3.39281 8.25 3.87469 8.25H20.1253C20.6072 8.25 21 8.58656 21 9V15.75ZM18.75 10.875C18.75 11.0975 18.684 11.315 18.5604 11.5C18.4368 11.685 18.2611 11.8292 18.0555 11.9144C17.85 11.9995 17.6238 12.0218 17.4055 11.9784C17.1873 11.935 16.9868 11.8278 16.8295 11.6705C16.6722 11.5132 16.565 11.3127 16.5216 11.0945C16.4782 10.8762 16.5005 10.65 16.5856 10.4445C16.6708 10.2389 16.815 10.0632 17 9.9396C17.185 9.81598 17.4025 9.75 17.625 9.75C17.9234 9.75 18.2095 9.86853 18.4205 10.0795C18.6315 10.2905 18.75 10.5766 18.75 10.875Z" fill="#002134"/></svg>' + 813 ' ' + $('<div>').text(t.print).html() + 814 '</a>' + 815 '</div>' + 816 '</div>' + 817 '</div>' + 818 '</div>' + 819 '</div>' + 820 '</div>' + 821 '</div>' 822 ); 823 } 824 825 // âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 826 // Render PDF first page to canvas via PDF.js 827 // âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 828 function renderPdfPreview(blobUrl) { 829 if (typeof pdfjsLib === 'undefined') { 830 $('#eform-pdf-loading-txt').text(t.pdfError); 831 return; 832 } 833 pdfjsLib.getDocument(blobUrl).promise 834 .then(function (pdfDoc) { return pdfDoc.getPage(1); }) 835 .then(function (page) { 836 var canvas = document.getElementById('eform-pdf-canvas'); 837 var ctx = canvas.getContext('2d'); 838 var wrapper = document.getElementById('eform-pdf-preview-wrapper'); 839 var dpr = window.devicePixelRatio || 1; 840 var desiredWidth = wrapper.clientWidth || 300; 841 var viewport = page.getViewport({ scale: 1 }); 842 var scale = (desiredWidth / viewport.width) * dpr; 843 var scaledView = page.getViewport({ scale: scale }); 844 845 canvas.style.width = desiredWidth + 'px'; 846 canvas.style.height = Math.floor(scaledView.height / dpr) + 'px'; 847 canvas.width = scaledView.width; 848 canvas.height = scaledView.height; 849 850 return page.render({ canvasContext: ctx, viewport: scaledView }).promise 851 .then(function () { 852 $('#eform-pdf-loading-txt').hide(); 853 $('#eform-pdf-canvas').show(); 854 }); 855 }) 856 .catch(function () { 857 $('#eform-pdf-loading-txt').text(t.pdfError); 858 }); 859 } 860 861}); // end document.ready 862 863// âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 864// EXISTING: validateFormControls (UNCHANGED) 865// âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 866function validateFormControls() { 867 var hasError = false; 868 var swiftValidated = false; 869 $('.form-control').each(function () { 870 var $field = $(this); 871 var isOptional = $field.hasClass('opt'); 872 var value = $field.val(); 873 if (value !== null && typeof value === 'string') { value = value.trim(); } 874 if($("input[data-sc-field-name='SwiftCode']").val() == "") 875 { 876 if($("input[data-sc-field-name='hidBank']").val() != "" && $("input[data-sc-field-name='hidCurrency']").val() != "" 877 && $("input[data-sc-field-name='hidCountryCode']").val() != "" && $("input[data-sc-field-name='hidTType']").val() == "int") 878 { 879 swiftValidated = true; 880 } 881 } 882 if (isOptional || $field.is(":visible") == false || swiftValidated) { 883 $field.css('border-color', ''); 884 return; 885 } 886 887 if (!value || value === '' || value === null) { 888 $field.css('border-color', 'red'); 889 hasError = true; 890 } else { 891 $field.css('border-color', ''); 892 } 893 });
894 return !hasError; 895} 896 897// âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 898// EXISTING: checkAndEnableButton (UNCHANGED) 899// âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 900function checkAndEnableButton(subitBtn) { 901 var checkboxChecked = $('.form-check-input:checked').length > 1; 902 if (checkboxChecked) { 903 $(subitBtn).prop('disabled', false); 904 } else { 905 $(subitBtn).prop('disabled', true); 906 } 907} 908 909function LoadCountries() 910{ 911 // Load countries 912 $.ajax({ 913 url: '/api/sitecore/EForm/gc', 914 method: 'GET', 915 contentType: 'application/json', 916 beforeSend: function () { $("#alinmaLoader").addClass("active"); }, 917 success: function (data) { 918 if (data != null && data.result.length > 0) { 919 $("#alinmaLoader").removeClass("active"); 920 921 if($('html').attr('lang')=="en") 922 { 923 $.each(data.result, function (i, item) { 924 $('.remit-country').append( 925 $('<option>', { value: item.code, text: item.country_en }) 926 ); 927 }); 928 } 929 else 930 { 931 $.each(data.result, function (i, item) { 932 $('.remit-country').append( 933 $('<option>', { value: item.code, text: item.country_ar }) 934 ); 935 }); 936 } 937 // Append options â no .select2() re-call needed 938 939 940 941 } else { 942 $("#alinmaLoader").removeClass("active"); 943 } 944 }, 945 error: function () { $("#alinmaLoader").removeClass("active"); } 946 }); 947}
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.